From a3e6606a1c7d3d028d7a6ef263117608c6e3acb6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 21 Apr 2020 17:27:27 -0700 Subject: [PATCH 1/9] 108.7 --- _config.yml | 4 +-- source/_posts/2020-04-08-release-108.markdown | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 3a9f638c958..2e5d934ace9 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 108 -current_patch_version: 6 -date_released: 2020-04-16 +current_patch_version: 7 +date_released: 2020-04-21 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown index 336103f1ca7..bf4c7f12098 100644 --- a/source/_posts/2020-04-08-release-108.markdown +++ b/source/_posts/2020-04-08-release-108.markdown @@ -543,6 +543,32 @@ These integrations have been removed. The websites for both have changed, causin [sonos docs]: /integrations/sonos/ [vizio docs]: /integrations/vizio/ +## Release 0.108.7 - April 21 + +- Fix setting up multiple UPSes with NUT in 0.108.x ([@bdraco] - [#34427]) ([nut docs]) +- Cloud do checks during setup ([@balloob] - [#33507]) ([cloud docs]) +- Rollback modbus to version 0.107.7 keep new functionality ([@janiversen] - [#34287]) ([modbus docs]) +- Ensure nexia state file is in a writable location ([@bdraco] - [#34325]) ([nexia docs]) +- Modify requirements for CameraStreamController in Alexa ([@ochlocracy] - [#34470]) ([alexa docs]) +- Fix cloud binary_sensor & TTS/STT ([@pvizeli] - [#34505]) + +[#33507]: https://github.com/home-assistant/core/pull/33507 +[#34287]: https://github.com/home-assistant/core/pull/34287 +[#34325]: https://github.com/home-assistant/core/pull/34325 +[#34427]: https://github.com/home-assistant/core/pull/34427 +[#34470]: https://github.com/home-assistant/core/pull/34470 +[#34505]: https://github.com/home-assistant/core/pull/34505 +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@janiversen]: https://github.com/janiversen +[@ochlocracy]: https://github.com/ochlocracy +[@pvizeli]: https://github.com/pvizeli +[alexa docs]: /integrations/alexa/ +[cloud docs]: /integrations/cloud/ +[modbus docs]: /integrations/modbus/ +[nexia docs]: /integrations/nexia/ +[nut docs]: /integrations/nut/ + ## All changes
From ecab77e35da6c528ec719f402cf7ce063687e64b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 22 Apr 2020 10:47:40 +0200 Subject: [PATCH 2/9] 0.108.8 (#13129) --- _config.yml | 4 ++-- source/_posts/2020-04-08-release-108.markdown | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 2e5d934ace9..d3d24e66756 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 108 -current_patch_version: 7 -date_released: 2020-04-21 +current_patch_version: 8 +date_released: 2020-04-22 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown index bf4c7f12098..9b9d0530cdb 100644 --- a/source/_posts/2020-04-08-release-108.markdown +++ b/source/_posts/2020-04-08-release-108.markdown @@ -569,6 +569,14 @@ These integrations have been removed. The websites for both have changed, causin [nexia docs]: /integrations/nexia/ [nut docs]: /integrations/nut/ +## Release 0.108.8 - April 22 + +- Bump hass-nabucasa 0.34.1 ([@pvizeli] - [#34480]) ([cloud docs]) + +[#34480]: https://github.com/home-assistant/core/pull/34480 +[@pvizeli]: https://github.com/pvizeli +[cloud docs]: /integrations/cloud/ + ## All changes
From dc85eb0d012f420feb333197ba7bd126e8057312 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 22 Apr 2020 11:50:47 +0200 Subject: [PATCH 3/9] Remove logo ref. from Ripple int. (#13123) --- source/_integrations/ripple.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ripple.markdown b/source/_integrations/ripple.markdown index 52f209cf638..221bf8359a8 100644 --- a/source/_integrations/ripple.markdown +++ b/source/_integrations/ripple.markdown @@ -1,7 +1,6 @@ --- title: Ripple description: Instructions on how to integrate ripple.com data within Home Assistant. -logo: ripple.png ha_category: - Finance ha_release: 0.47 From cc4da8af60af3e1da8cf0e2772d354485e7ec7d1 Mon Sep 17 00:00:00 2001 From: Addison Lynch Date: Wed, 22 Apr 2020 06:26:27 -0400 Subject: [PATCH 4/9] Add Panasonic TC-P50ST50 to Viera Documentation (#13127) --- source/_integrations/panasonic_viera.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown index 6761443451e..fb31a4683fc 100644 --- a/source/_integrations/panasonic_viera.markdown +++ b/source/_integrations/panasonic_viera.markdown @@ -12,6 +12,7 @@ The `panasonic_viera` platform allows you to control a Panasonic Viera TV. Currently known supported models: +- TC-P50ST50 - TC-P60S60 - TC-P65VT30 - TX-32AS520E From 2f52271d0004fc9180adb096af74dac4704cfcde Mon Sep 17 00:00:00 2001 From: bepsoccer Date: Wed, 22 Apr 2020 05:55:29 -0500 Subject: [PATCH 5/9] Zooz zen30 update (#13126) * Update Zooz Heading Update Zooz heading to better account for more devices. * Add Zen30 Config Added Zen30 CommandClass id="112" config * Add Scene config for Zen30 Add Scene config for Zen30 * Add Held/Release events for Zen30 Add Held/Release events for Zen30 --- source/_docs/z-wave/device-specific.markdown | 151 ++++++++++++++++++- 1 file changed, 149 insertions(+), 2 deletions(-) diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index feaf37bd625..e50db11b4d8 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -191,9 +191,9 @@ Triple tap on|2|4 5x tap off|1|6 5x tap on|2|6 -### Zooz Scene Capable On/Off and Dimmer Wall Switches (Zen21v2 & Zen22v2 - Firmware 3.0+ and Zen26 & Zen27 - Firmware 2.0+) +### Zooz Scene Capable On/Off and Dimmer Wall Switches (Zen21v2 & Zen22v2 - Firmware 3.0+, Zen26 & Zen27 - Firmware 2.0+, Zen30 Double Switch) -Many Zooz Zen26/27 switches that have been sold do not have firmware 2.0+. Contact Zooz to obtain the over the air firmware update instructions and new user manual for the switches. +Many Zooz switches that have been sold do not have the latest firmwares. Contact Zooz to obtain the over the air firmware update instructions and new user manual for the switches. Once the firmware is updated, the the new configuration parameters will have to be added to the `zwcfg` file. Replace the existing `COMMAND_CLASS_CONFIGURATION` with the one of the following options (depending on your model of switch): @@ -587,6 +587,138 @@ Zen27 (Dimmer): ``` +Zen30 (Double Switch): +```xml + + + LED Indicator Mode for Dimmer. Normal has the dimmer (top) LED indication on when the switch is off, off when the switch is on. Default: Normal + + + + + + + LED Indicator Mode for Relay. Normal has the relay (bottom) LED indication on when the switch is off, off when the switch is on. Default: Normal + + + + + + + LED Indicater color for Dimmer. White, Blue, Green or Red. Default: White + + + + + + + LED Indicater color for Relay. White, Blue, Green or Red. Default: White + + + + + + + LED Indicater Brightness for Dimmer. Bright (100%), Medium (60%) or Low (30%). Default: Medium + + + + + + LED Indicater Brightness for Relay. Bright (100%), Medium (60%) or Low (30%). Default: Medium + + + + + + LED Indicator Mode for Scene Control. Enable/Disable LED indicators next to the dimmer lighting up when a scene is selected. Default: disabled + + + + + Auto Turn-Off Timer for Dimmer. Sets the time (in minutes) after which you want the dimmer to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Dimmer. Sets the time (in minutes) after which you want the dimmer to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-Off Timer for Relay. Sets the time (in minutes) after which you want the relay to automatically turn off once it has been turned on. Range: 1-65535. Default: 0 (disabled) + + + Auto Turn-On Timer for Relay. Sets the time (in minutes) after which you want the relay to automatically turn on once it has been turned off. Range: 1-65535. Default: 0 (disabled) + + + On Off Status After Power Failure. Default: Restore both to prior state + + + + + + + + + + + + Ramp Rate Control for Dimmer. Adjust the ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. Note that 0 is instant. Default: 1 + + + Minimum Brightness. Set the minimum brightness level (in %) for your dimmer. You won't be able to dim the light below the set value. Default: 1 + + + Maximum Brightness. Set the maximum brightness level (in %) for your dimmer. You won't be able to add brightness to the light beyond the set value. Default: 99 + + + Double Tap Function for Dimmer. When set to full, turns light on to 100%. If set to maximum level, turns light on to % set in Parameter 15. Default: full + + + + + Enable/Disable Double-tap for Dimmer. Enables/Disables the double-tap fucntion and assign brightness to single tap. enabled: single tap turns on to maximum brightness level. disabled (last level): single tap returns to last brightness level. disabled (full/max level): single tap returns to full brightmess. Default: enabled + + + + + + Enable/Disable Load Control for Dimmer (Smart Bulb Setting). Enable or disable direct manual and Z-Wave control of the connected light (works great for smart bulb control). If disabled, the dimmer will no longer control the connected bulb directly but will still send on/off and brightness reports to the hub so you cn use them to create automations for your smart bulbs or other switches. Scenes and other functionality will still be available through the paddles. Default: manual disabled + + + + + + Enable/Disable Load Control for Relay (Smart Bulb Setting). Enable or disable direct manual and Z-Wave control of the connected light (works great for smart bulb control). If disabled, the relay will no longer control the connected bulb directly but will still send on/off and brightness reports to the hub so you cn use them to create automations for your smart bulbs or other switches. Scenes and other functionality will still be available through the paddles. Default: manual disabled + + + + + + Choose how many seconds it takes for the dimmer to go from 0% to 100% brightness when pressing and holding the paddle. Default: 4. + + + Default Brightness Level On for Dimmer. Set custom brightness level (in %) for the dimmer to come on to at single tap. Choose 0 for last brightness level. Default: 0. + + + Sets behavior of the dimmer when physical control is disabled + + + + + Sets behavior of the relay when physical control is disabled + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + +``` + For Zooz switches, you'll need to update (or possibly add) the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: ```xml @@ -597,6 +729,17 @@ For Zooz switches, you'll need to update (or possibly add) the `COMMAND_CLASS_CE ``` +For the Zooz Zen30 Double Switch, you'll need to add the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: +```xml + + + + + + + +``` + Go to the Z-Wave Network Management section in the Home Assistant Configuration, select the node which has just been updated and enable the scene support configuration parameter. Once this is complete, you should see the following `zwave.scene_activated` events: @@ -613,6 +756,10 @@ Triple tap on|2|7920 4x tap on|2|7980 5x tap off|1|8040 5x tap on|2|8040 +Held off|1|7800 +Held on|2|7800 +Released off|1|7740 +Released on|2|7740 ### HomeSeer Switches From e598f4047460c50a322ac1ffef4f574dbfb7f2ab Mon Sep 17 00:00:00 2001 From: "Michael A. Alderete" <4359+alderete@users.noreply.github.com> Date: Wed, 22 Apr 2020 04:14:15 -0700 Subject: [PATCH 6/9] Expand doc for webhook triggers (#13092) * Expand doc for webhook triggers Edit webhook trigger doc for clarity and grammar. Add explanation that using a webhook in a trigger automatically creates the webhook. * Add fenced code language hint --- source/_docs/automation/trigger.markdown | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index e946477df98..be745deb41a 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -341,7 +341,7 @@ Do not prefix numbers with a zero - using `'00'` instead of '0' for example will ### Webhook trigger -Webhook trigger fires when a web request is made to the webhook endpoint: `/api/webhook/`. This endpoint does not require authentication besides knowing the webhook id. You can either send encoded form or JSON data, available in the template as either `trigger.json` or `trigger.data`. URL query parameters are available in the template as `trigger.query`. +Webhook trigger fires when a web request is made to the webhook endpoint: `/api/webhook/`. The webhook endpoint is created automatically when you set it as the `webhook_id` in an automation trigger. ```yaml automation: @@ -350,9 +350,15 @@ automation: webhook_id: some_hook_id ``` -You could run the above automation by sending a POST HTTP request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. An example with no data sent to a SSL/TLS secured installation and using the command-line curl program is `curl -d "" https://your-home-assistant:8123/api/webhook/some_hook_id`. +You can run this automation by sending an HTTP POST request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. Here is an example using the **curl** command line program, with an empty data payload: -Note that each webhook can only be used in one automation at a time. +```shell +curl -d "" https://your-home-assistant:8123/api/webhook/some_hook_id +``` + +Webhook endpoints don't require authentication, other than knowing a valid webhook ID. You can send a data payload, either as encoded form data or JSON data. The payload is available in an automation template as either `trigger.json` or `trigger.data`. URL query parameters are available in the template as `trigger.query`. Remember to use an HTTPS URL if you've secured your Home Assistant installation with SSL/TLS. + +Note that a given webhook can only be used in one automation at a time. That is, only one automation trigger can use a specific webhook ID. ### Zone trigger From 60fb18cef1f05840e1e543e4a8423f19dfaeb160 Mon Sep 17 00:00:00 2001 From: Lance McCarthy Date: Wed, 22 Apr 2020 09:10:37 -0400 Subject: [PATCH 7/9] Update proliphix.markdown (#13131) Removed logo property from header, replaced by /brands/ repository. --- source/_integrations/proliphix.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/proliphix.markdown b/source/_integrations/proliphix.markdown index f9dcdd602a0..ce19e7be95a 100644 --- a/source/_integrations/proliphix.markdown +++ b/source/_integrations/proliphix.markdown @@ -1,7 +1,6 @@ --- title: Proliphix description: Instructions on how to integrate Proliphix thermostats within Home Assistant. -logo: proliphix.png ha_category: - Climate ha_release: 0.11 From e7c035018d2b41d0d800843416d796f9cf8e5b1f Mon Sep 17 00:00:00 2001 From: jjlawren Date: Wed, 22 Apr 2020 08:31:29 -0500 Subject: [PATCH 8/9] Rewrite Plex play_media service descriptions (#13121) --- source/_integrations/plex.markdown | 82 ++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 8dfeb8a36bd..26db3d91ae3 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -110,39 +110,79 @@ By default the Plex integration will create Media Player entities for all local, ### Service `play_media` -Plays a song, playlist, TV episode, or video on a connected client. +Plays a song, album, artist, playlist, TV show/season/episode, movie, or video on a connected client. + +Required fields within the `media_content_id` payloads are marked as such, others are optional. #### Music -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `artist_name`, `album_name`, `track_name`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"My Music\\", \\"artist_name\\" : \\"Adele\\", \\"album_name\\" : \\"25\\", \\"track_name\\" : \\"hello\\", \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `MUSIC` | MUSIC | +| Service data attribute | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `artist_name` (Required)
  • `album_name`
  • `track_name`
  • `track_number`
  • `shuffle` (0 or 1)
| +| `media_content_type` | `MUSIC` | + +##### Examples: +```yaml +entity_id: media_player.plex_player +media_content_type: MUSIC +media_content_id: '{ "library_name": "Music", "artist_name": "Adele", "album_name": "25", "track_name": "Hello" }' +``` +```yaml +entity_id: media_player.plex_player +media_content_type: MUSIC +media_content_id: '{ "library_name": "Music", "artist_name": "Stevie Wonder", "shuffle": "1" }' +``` #### Playlist -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `playlist_name`, `shuffle` (0 or 1). | { \\"playlist_name\\" : \\"The Best of Disco\\" \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `PLAYLIST` | PLAYLIST | +| Service data attribute | Description | +| ---------------------- | --------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | +| `media_content_id` | Quoted JSON containing:
  • `playlist_name` (Required)
  • `shuffle` (0 or 1)
| +| `media_content_type` | `PLAYLIST` | + +##### Example: +```yaml +entity_id: media_player.plex_player +media_content_type: PLAYLIST +media_content_id: '{ "playlist_name": "The Best of Disco", "shuffle": "1" }' +``` #### TV Episode -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `show_name`, `season_number`, `episode_number`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"Adult TV\\", \\"show_name\\" : \\"Rick and Morty\\", \\"season_number\\" : 2, \\"episode_number\\" : 5, \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `EPISODE` | EPISODE | +| Service data attribute | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `show_name` (Required)
  • `season_number`
  • `episode_number`
  • `shuffle` (0 or 1)
| +| `media_content_type` | `EPISODE` | + +##### Examples: +```yaml +entity_id: media_player.plex_player +media_content_type: EPISODE +media_content_id: '{ "library_name": "Adult TV", "show_name": "Rick and Morty", "season_number": 2, "episode_number": 5 }' +``` +```yaml +entity_id: media_player.plex_player +media_content_type: EPISODE +media_content_id: '{ "library_name": "Kid TV", "show_name": "Sesame Street", "shuffle": "1" }' +``` #### Video -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `video_name`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"Adult Movies\\", \\"video_name\\" : \\"Blade\\", \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `VIDEO` | VIDEO | +| Service data attribute | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | +| `media_content_id` | Quoted JSON containing:
  • `library_name` (Required)
  • `video_name` (Required)
| +| `media_content_type` | `VIDEO` | + +##### Example: +```yaml +entity_id: media_player.plex_player +media_content_type: VIDEO +media_content_id: '{ "library_name": "Adult Movies", "video_name": "Blade" }' +``` ### Compatibility From 1a896871013a2004356e79449656cce79d4218f7 Mon Sep 17 00:00:00 2001 From: Jay Date: Wed, 22 Apr 2020 08:32:08 -0500 Subject: [PATCH 9/9] Improve title, make minor corrections (#13091) The title on this page was rather unclear. Also made some cosmetic improvements. --- source/_integrations/manual.markdown | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index ed33d84527c..dc50cb28703 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -1,5 +1,5 @@ --- -title: Manual +title: Manual Alarm Control Panel description: Instructions on how to integrate manual alarms into Home Assistant. ha_category: - Alarm @@ -8,7 +8,7 @@ ha_quality_scale: internal ha_domain: manual --- -The `manual` alarm control panel platform enables you to set manual alarms in Home Assistant. +The `manual` alarm control panel platform enables you to create an alarm system in Home Assistant. ## Configuration @@ -85,37 +85,37 @@ armed_custom_bypass/armed_home/armed_away/armed_night/disarmed/triggered: ## State machine -The state machine of the manual alarm integration is complex but powerful. The +The state machine of the manual alarm integration is complex but powerful. The transitions are timed according to three values, **delay_time**, **pending_time** -and **trigger_time**. The values in turn can come from the default configuration +and **trigger_time**. The values in turn can come from the default configuration variable or from a state-specific override. When the alarm is armed, its state first goes to **pending** for a number of seconds equal to the destination state's **pending_time**, and then transitions to one of the "armed" states. Note that **code_template** never receives "pending" in the **to_state** variable; instead, -**to_state** contains the state which the user has requested. However, +**to_state** contains the state which the user has requested. However, **from_state** *can* contain "pending". When the alarm is triggered, its state goes to **pending** for a number of seconds equal to the previous state's **delay_time** plus the triggered -state's **pending_time**. Then the alarm transitions to the "triggered" -states. The code is never checked when triggering the alarm, so the +state's **pending_time**. Then the alarm transitions to the "triggered" +states. The code is never checked when triggering the alarm, so the **to_state** variable of **code_template** cannot ever contain "triggered" either; again, **from_state** *can* contain "triggered". The alarm remains in the "triggered" state for a number of seconds equal to the -previous state's **trigger_time**. Then, depending on **disarm_after_trigger**, -it goes back to either the previous state or **disarmed**. If the previous +previous state's **trigger_time**. Then, depending on **disarm_after_trigger**, +it goes back to either the previous state or **disarmed**. If the previous state's **trigger_time** is zero, the transition to "triggered" is entirely blocked and the alarm remains in the armed state. -Each of the settings is useful in different scenarios. **pending_time** gives +Each of the settings is useful in different scenarios. **pending_time** gives you some time to leave the building (for "armed" states) or to disarm the alarm (for the "triggered" state). **delay_time** can also be used to allow some time to disarm the alarm, but with -more flexibility. For example, you could specify a delay time for the +more flexibility. For example, you could specify a delay time for the "armed away" state, in order to avoid triggering the alarm while the garage door opens, but not for the "armed home" state. @@ -126,9 +126,9 @@ be used for example to sound the siren for a shorter time during the night. In the configuration example below: -- the disarmed state never triggers the alarm; -- the armed_home state will leave no time to leave the building or disarm the alarm; -- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. +- The `disarmed` state never triggers the alarm. +- The `armed_home` state will leave no time to leave the building or disarm the alarm. +- The other states will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. ```yaml # Example configuration.yaml entry