Chime Transport Adaptor¶
| Transport ID | Source | Requirements | Optional |
|---|---|---|---|
chime | chime.py | - | Alexa Devices Integration, Alexa Media Player Integration, RFLink, MQTT Siren etc. |
Notify using a sound of your choosing - for example a doorbell, barking dog, siren or recording. This works with a variety of devices, from cheap 433Mhz doorbell units to Amazon Echo devices.
You can mix and match any of these devices in a single notification call, and combine them with mobile_push, e-mail etc.
The range of tunes from modern devices gives a good alternative to being bothered with lots of push notifications. For example, if a PIR detects motion and the alarm panel is disarmed you could have a ping sound from Amazon Echos and chime devices.
Aliases¶
While you can construct an action call with a list of switches, device_ids, scripts etc and the names of tunes for them, it is much easier to configure this in one place using the alias definition.
So rather than remembering that the doorbell sound you like is called amzn_sfx_doorbell_chime_02 on Alexa, you can simply pass chime_tune: doorbell on each of your automations. This also means if you get bored with that doorbell sound, you can quickly change it one place for all automations that use it.
A doorbell notification can be sent to multiple devices just by selecting a tune ( see the Example Configuration below for how this can work.)
Another good reason is that when using multiple types of device, you can map their different terms to the same logical sound using simple alias names, for example doorbell. Then within notifications, you can ask for a doorbell sound and it will generated by each device in its own way.
In this example, a 433Mhz doorbell will go 'ding dong' and Alexa will play a doorbell noise when the chime_tune: doorbell is set on a notification, and if red_alert is set, it will use Alexa and a siren device.
chime_aliases:
doorbell:
alexa_devices:
tune: amzn_sfx_doorbell_chime_02
switch:
target: switch.chime_ding_dong
red_alert:
alexa_devices: amzn_sfx_scifi_alarm_04
siren:
tune: emergency
volume: 1.0
duration: 30
rest_command:
alias: Use the custom sound on the camera, defined in rest_command section
target: rest_command.camera_alarm_tune
data:
alarm_id: 12
For Alexa Devices, there's an additional benefit of using the aliases - it will automatically select all the Alexa device IDs ( those ugly 32 character hexadecimal ones ) if device discovery is left on, as is default. For everything else, you need to pass the list of target entity IDs in the notification action call.
The formal schema is published as Chime Aliases Definition. Validation of the config happens at start up by the chime transport, with errors sent to log with usually an explanation of which part of the config triggered the problem.
Device Types¶
Switch and Siren¶
Provide a list of switch, siren entities to use for chimes and it will call the switch.turn_on or siren.turn_on calls as appropriate.
Switches are simple binary affairs, however some sirens can also have a choice of tones, volume level and durations. The following generic chime tunings are passed to the siren.
| Chime Option | Siren Data Field |
|---|---|
| chime_tune | tone |
| chime_volume | volume |
| chime_duration | duration |
Supernotify passes on the data structure exactly as it is on the regular Home Assistant actions, see the documentation for those integrations below:
Switches are a little special, in that though they are binary on/off in Home Assistant, in practice even some of the cheap 433Mhz ones can take an additional melody code, its common to have different melodies represented by separate switch entities for the same underlying devices as in this example Byron device using the RFLink integration.
- platform: rflink
devices:
byron_0000_01:
name: Chime Tubular
byron_0000_02:
name: Chime Morning Dew
byron_0000_03:
name: Chime Big Ben
Scripts¶
Provide one or more script entity IDs, for example, script.call_bell_api.
Each script will be called with:
message- from the notificationtitle- optional on the notificationchime_tune- name of the chime if suppliedchime_duration- where passed in action data or defined in chime aliaschime_volume- where passed in action data or defined in chime alias
Additional variables can be configured when defining an alias using the variables attribute in data.
See also Script in HomeAssistant documentation.
Alexa Media Player¶
NOTE: Requires the Alexa Media Player integration to be installed on Home Assistant.
Supply media_player entities as targets and this transport will make appropriate media_player.play_media action calls to them, passing the sound name provided in tune field.
See https://github.com/alandtse/alexa_media_player/wiki#known-available-sounds for a list of known tunes that work with Alexa devices.
Alexa Devices¶
This supports the newer built-in Alexa Devices integration introduced in 2025.
The list of sounds can be found on the Alexa API, after authenticating, or on the Home Assistant source code. It includes a generous helping of Halloween specific sounds.
One oddity of this integration is that although it generates traditional entity IDs for notifying Alexa devices, sending a sound ( or command ) requires a long and obscure device_id (a 32 character random hexadecimal pseudo-UUID). While you can find these from the Devices section of the Alexa Devices integration config, or using the Action feature of Developer Tools and switching to yaml mode, by default Supernotify automatically register all Alexa devices - if you don't want this, switch off device_discovery at the transport or delivery level.
Sometimes you may end up with odd devices like headphones or firesticks that Alexa knows about but don't make sense for HomeAssistant usage, and also may have duplication if a group has been created inside the Alexa app ( which then appears to Home Assistant as another Alexa device even though its really a group of them. The weird devices can be disabled from the Alexa Devices integration config. Within Supernotify, you can use device_model_select and device_manufacturer_select to control the list - these take a single value, list of values, or include and exclude mappings, where values are plain strings or regular expressions. Chime transport has a default exclusion for Alexa Groups, specifying either an include or exclude list will switch off defaulting for both values.
Example¶
transports:
chime:
delivery_defaults:
target:
- media_player.kitchen_echo
- media_player.bedroom
- ffff0000eeee1111dddd2222cccc3333 # Alexa Devices device_id
options:
device_discovery: True
device_model_select:
exclude: Speaker Group
chime_aliases:
doorbell: #alias
alexa_devices: # integration domain or label ( if label then domain must be a key in the config )
tune: amzn_sfx_cat_meow_1x_01
media_player:
# resolves to media_player/play_media with sound configured for this path
tune: home/amzn_sfx_doorbell_chime_02
# entity_id list defaults to `target` of transport default or action call
# this entry can also be shortcut as `media_player: home/amzn_sfx_doorbell_chime_02`
media_player_alt:
# Not all the media players are Amazon Alexa based, so override for other flavours
tune: raindrops_and_roses.mp4
target:
- media_player.hall_custom # domain inferred from target
switch:
# resolves to switch/turn_on with entity id switch.ding_dong
target: switch.chime_ding_dong
siren_except_bedroom:
# resolves to siren/turn_on with tune bleep and default volume/duration
tune: bleep
domain: siren # domain must be explicit since key is label not domain and no explicit targets
siren_bedroom:
alias: Short and quiet burst for just the bedroom siren
domain: siren
tune: bleep
target: siren.bedroom
volume: 0.1
duration: 5
script:
alias: Run a Home Assistant script defined elsewhere in config
target: script.pull_bell_cord
data:
duration: 25
rest_command:
alias: call a rest api passing data to the templated URL
target: rest_command.api_call_to_camera_alarm
data:
alarm_tone: 14
red_alert:
# non-dict defaults to a dict with a single key `tune`
alexa_devices: scifi/amzn_sfx_scifi_alarm_04
siren: emergency
Rest Commands¶
Assuming this command is set up in the Home Assistant configuration:
rest_commands:
camera_siren:
url: "http://10.111.10.202/ISAPI/Event/triggers/notifications/AudioAlarm/{{hik_alarm_code|default('11')}}/test?format=json"
method: put
username: !secret hik_user
password: !secret hik_password
authentication: digest
This chime alias in the transport definition will make it available as chime_tune: siren in notifications.
```yaml
transports:
chime:
delivery_defaults:
options:
chime_aliases:
siren:
rest_command:
target: rest_command.camera_siren
data:
alarm_code: 11
The same tune could also define MQTT sirens, or Amazon Echo devices making siren noises, so one call with chime_tune: siren and the whole house erupts.
Scenarios¶
Chimes work well with scenarios, you can easily add a chime for all critical notifications without having to change any of the automations. See Scenarios and Recipes for more details.
References¶
Home Assistant Core¶
- Supported Integrations
- Alexa Devices
- Alexa Media Player
- Group
- Media Player
- RESTful Command
- RFLink
- RFXCOM RFXtrx
- Scripts
- Siren
- Switch