From 6bba7f9cfd6f17e33bb57ecfdaba189c286a1716 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 26 Aug 2017 19:22:46 +0200 Subject: [PATCH 01/49] Fix markdown for the table --- source/_components/media_player.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index e0a5fc8ff94..daa7b072c55 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -32,7 +32,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| | `entity_id` | yes | Target a specific media player. Defaults to all. | -| `volume_level` | no | Float for volume level | +| `volume_level` | no | Float for volume level | #### {% linkable_title Service `media_player/media_seek` %} @@ -62,4 +62,6 @@ Currently only supports Spotify. | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| -| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | +| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | + + From af1fff90ae12e35290e2db85626fc2872ad82619 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 26 Aug 2017 19:30:18 +0200 Subject: [PATCH 02/49] Add defaults --- source/_components/input_boolean.markdown | 8 +++++--- source/_components/input_select.markdown | 12 ++++++------ source/_components/input_slider.markdown | 14 ++++++++------ 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown index fa05489a7fa..61e82ff846c 100644 --- a/source/_components/input_boolean.markdown +++ b/source/_components/input_boolean.markdown @@ -13,6 +13,8 @@ ha_category: Automation The `input_boolean` component allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. +To enable input booleans in your installation, add the following lines to your `configuration.yaml`: + ```yaml # Example configuration.yaml entry input_boolean: @@ -25,9 +27,9 @@ input_boolean: Configuration variables: - **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. + - **name** (*Optional*): Friendly name of the input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to `False`. + - **icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index d41555c13ab..0f3aeec7ca5 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -14,7 +14,7 @@ ha_release: 0.13 The `input_select` component allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. -To enable this platform, add the following lines to your `configuration.yaml`: +To enable this platform in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -35,11 +35,11 @@ input_select: Configuration variables: -- **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **options** array: List of options to choose from -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. +- **[alias]** array (*Required*): Alias for the input. Multiple entries are allowed.. + - **name** (*Optional*): Friendly name of the input. + - **options** array (*Required*): List of options to choose from. + - **initial** (*Optional*): Initial value when Home Assistant starts. + - **icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. diff --git a/source/_components/input_slider.markdown b/source/_components/input_slider.markdown index beb458a5b25..c58fbbe6a36 100644 --- a/source/_components/input_slider.markdown +++ b/source/_components/input_slider.markdown @@ -14,6 +14,8 @@ ha_release: 0.16 The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the slider generate state events. These state events can be utilized as `automation` triggers as well. +To enable this input sliders in your installation, add the following lines to your `configuration.yaml`: + ```yaml # Example configuration.yaml entry input_slider: @@ -27,12 +29,12 @@ input_slider: Configuration variables: -- **[alias]** (*Required*): Alias for the slider input. -- **min** (*Required*): Minimum value for the slider. -- **max** (*Required*): Maximum value for the slider. -- **name** (*Optional*): Friendly name of the slider input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **step** (*Optional*): Step value for the slider. +- **[alias]** (*Required*): Alias for the slider input. Multiple entries are allowed. + - **min** (*Required*): Minimum value for the slider. + - **max** (*Required*): Maximum value for the slider. + - **name** (*Optional*): Friendly name of the slider input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. + - **step** (*Optional*): Step value for the slider. Defaults to 1. ## {% linkable_title Automation Examples %} From 639362448418e532baf5ca21d0da10c7f1e206b2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 26 Aug 2017 19:46:33 +0200 Subject: [PATCH 03/49] Update details --- source/_components/notify.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/notify.markdown b/source/_components/notify.markdown index 6279291a69a..6ef8c7c50db 100644 --- a/source/_components/notify.markdown +++ b/source/_components/notify.markdown @@ -48,7 +48,7 @@ action: ### {% linkable_title Test if it works %} -A simple way to test if you have set up your notify platform correctly is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service (*notify/xyz*) from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +A simple way to test if you have set up your notify platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. ```json { From f5451f64a3e556e315cc12130b3808784fe7dfc2 Mon Sep 17 00:00:00 2001 From: Phil Cole Date: Sat, 26 Aug 2017 20:07:14 +0100 Subject: [PATCH 04/49] Fix missing closed bracket in example code (#3251) --- source/developers/asyncio_categorizing_functions.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/asyncio_categorizing_functions.markdown b/source/developers/asyncio_categorizing_functions.markdown index bd3ff859b8b..6fe74ad359d 100644 --- a/source/developers/asyncio_categorizing_functions.markdown +++ b/source/developers/asyncio_categorizing_functions.markdown @@ -30,7 +30,7 @@ def async_look_my_coroutine(target): if result: print("hello {}".format(target)) -hass.loop.create_task(async_look_my_coroutine("world") +hass.loop.create_task(async_look_my_coroutine("world")) ``` In this example, we schedule the coroutine by calling `hass.loop.create_task`. This will add the coroutine to the queue of tasks to be run. When the event loop is running `async_look_my_coroutine` it will suspend the task when `yield from entity.async_turn_on()` is called. At that point a new task will be scheduled to execute `entity.async_turn_on()`. When that job has been executed, `async_look_my_coroutine` will resume. From 59a6bfcac3430d31a77261fb838db0623f9c1ed1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 26 Aug 2017 12:11:19 -0700 Subject: [PATCH 05/49] Update media_player.bluesound.markdown --- source/_components/media_player.bluesound.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.bluesound.markdown b/source/_components/media_player.bluesound.markdown index e0d81be772a..f711cbe8971 100644 --- a/source/_components/media_player.bluesound.markdown +++ b/source/_components/media_player.bluesound.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: bluesound.png ha_category: Media Player -featured: true +featured: false ha_release: 0.51 ha_iot_class: "Local Polling" --- From 53928f87d208f5bc06d1451eadd62bce1529414c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 26 Aug 2017 12:35:54 -0700 Subject: [PATCH 06/49] Add state_with_unit info --- source/_docs/configuration/templating.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index b1002f94f93..f05886a35a2 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -85,10 +85,15 @@ Home Assistant adds extensions to allow templates to access all of the current s [strp-format]: https://docs.python.org/3.4/library/datetime.html#strftime-and-strptime-behavior -

+

If your template uses an `entity_id` that begins with a number (example: `states.device_tracker.2008_gmc`) you must use a bracket syntax to avoid errors caused by rendering the `entity_id` improperly. In the example given, the correct syntax for the device tracker would be: `states.device_tracker['2008_gmc']`

+## {% linkable_title Home Assistant template extensions %} + +In templates, besides the normal [state object methods and properties](/topics/state_object/), there are also some extra things available: + +- `states.sensor.temperature.state_with_unit` will print the state of the entity and, if available, the unit. ## {% linkable_title Examples %} From c5e9165258b986640cf7dc5392dd8b96ea250e20 Mon Sep 17 00:00:00 2001 From: PhracturedBlue Date: Sat, 26 Aug 2017 13:12:40 -0700 Subject: [PATCH 07/49] Optimistic Mode (was 'Timed cover') (#2948) * Open/Close/Stop are now optional * typo * Document timed-moves and optimistic mode * Update cover.template.markdown * Remove timed-movement --- source/_components/cover.template.markdown | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/_components/cover.template.markdown b/source/_components/cover.template.markdown index 46873b6e94c..8deb55da653 100644 --- a/source/_components/cover.template.markdown +++ b/source/_components/cover.template.markdown @@ -41,12 +41,18 @@ Configuration variables: - **stop_cover** (*Optional*): Defines an [action](/getting-started/automation/) to run when the cover is stopped. - **set_cover_position** (*Optional*): Defines an [action](/getting-started/automation/) to run when the cover is set to a specific value (between 0 and 100). - **set_cover_tilt_position** (*Optional*): Defines an [action](/getting-started/automation/) to run when the cover tilt is set to a specific value (between 0 and 100). - - **friendly_name** (*Optional*): Name to use in the frontend. - - **value_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the cover. Valid values are open/true or closed/false. Either `value_template` or `position_template` must be specified. - - **position_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the cover. Legal values are numbers between 0 (closed) and 100 (open). Either `value_template` or `position_template` must be specified. + - **value_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the cover. Valid values are open/true or closed/false. `value_template` and `position_template` cannot be specified concurrently. + - **position_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the cover. Legal values are numbers between 0 (closed) and 100 (open). `value_template` and `position_template` cannot be specified concurrently. + - **tilt_template** (*Optional*): Defines a [template](/topics/templating/) to get the tilt state of the cover. Legal values are numbers between 0 (closed) and 100 (open). + - **optimistic** (*Optional*): Force cover position to use optimistic mode. Value is either `true` or `false`. [See below](#optimistic-mode) for more details. + - **tilt_optimistic** (*Optional*): Force cover tilt position to use optimistic mode. Value is either `true` or `false`. [See below](#optimistic mode) for more details. - **icon_template** (*Optional*): Defines a [template](/topics/templating/) to specify which icon to use. Either `value_template` or `position_template` must be specified. + - **friendly_name** (*Optional*): Name to use in the frontend. - **entity_id** (*Optional*): Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the cover will try to update it's state. +## {% linkable_Optitmistic Mode %} + +In optmistic mode, the cover position state is maintained internally. This mode is automatically enabled if neither `value_template` or `position_template` are sepcified. Note that this is unlikely to be very reliable without some feedback mechanism, since there is otherwise no way to know if the cover is moving properly. The cover can be forced into optimistic mode by using the `optimistic` attribute. There is an equivalent mode for tilt-position that is enabled when `tilt_template` is not specified or when the `tilt-optimistic` attribute is used. ## {% linkable_title Examples %} From 0b3f8afee31c9a12d2222b8b59bb0312fb2497f6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 26 Aug 2017 22:27:38 +0200 Subject: [PATCH 08/49] Hotfix of Liquid exception, thrown by TravisCI: Unknown tag --- source/_components/cover.template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cover.template.markdown b/source/_components/cover.template.markdown index 8deb55da653..53f54856019 100644 --- a/source/_components/cover.template.markdown +++ b/source/_components/cover.template.markdown @@ -50,7 +50,7 @@ Configuration variables: - **friendly_name** (*Optional*): Name to use in the frontend. - **entity_id** (*Optional*): Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the cover will try to update it's state. -## {% linkable_Optitmistic Mode %} +## {% linkable_title Optitmistic Mode %} In optmistic mode, the cover position state is maintained internally. This mode is automatically enabled if neither `value_template` or `position_template` are sepcified. Note that this is unlikely to be very reliable without some feedback mechanism, since there is otherwise no way to know if the cover is moving properly. The cover can be forced into optimistic mode by using the `optimistic` attribute. There is an equivalent mode for tilt-position that is enabled when `tilt_template` is not specified or when the `tilt-optimistic` attribute is used. From 50ff5dec28520ff13bf3bc6f5283c424eeef7908 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Sat, 26 Aug 2017 22:31:33 +0200 Subject: [PATCH 09/49] Added doc for controlling two or more covers at once (#3013) * Added doc for controlling two or more covers at once Unresolved issues: - open_covers only available when all covers are closed -> Possible fix: allow third state for value_template (half open) - position value in detailed view are either 0 (closed) or 100 (open), neverthanless set_position works as intended * Added sensor and icon support * Added raw tags * Fix error Received invalid cover is_on state: . Expected: open, closed, true, false * Raw tags, Linkable title and assume_state Assume state allows buttons to alwalys be enabled if PR is accepted. * Update escaping --- source/_components/cover.template.markdown | 112 ++++++++++++++++++++- 1 file changed, 108 insertions(+), 4 deletions(-) diff --git a/source/_components/cover.template.markdown b/source/_components/cover.template.markdown index 53f54856019..2f10626e28d 100644 --- a/source/_components/cover.template.markdown +++ b/source/_components/cover.template.markdown @@ -24,7 +24,7 @@ cover: covers: garage_door: friendly_name: "Garage Door" - value_template: "{% raw %}{{is_state('sensor.garage_door > 0'}}{% endraw %}" + value_template: "{% raw %}'{{is_state('sensor.garage_door > 0'}}'{% endraw %}" open_cover: service: script.open_garage_door close_cover: @@ -63,12 +63,13 @@ In this section you will find some real life examples of how to use this cover. This example converts a garage door with a controllable switch and position sensor into a cover. ```yaml +{% raw %} cover: - platform: template covers: garage_door: friendly_name: 'Garage Door' - value_template: "{% raw %}{{ sensor.garage_door }}{% endraw %}" + value_template: "{{ sensor.garage_door }}" open_cover: service: switch.turn_on entity_id: switch.garage_door @@ -78,6 +79,109 @@ cover: stop_cover: service: switch.turn_on entity_id: switch.garage_door - icon_template: "{% raw %}{% if not is_state('sensor.garage_door', 'on') %}mdi:garage-open{% else %}mdi:garage{% endif %}{% endraw %}" - + icon_template: "{% if not is_state('sensor.garage_door', 'on') %}mdi:garage-open{% else %}mdi:garage{% endif %}"{% endraw %} +``` + +### {% linkable_title Multi Covers %} + +This example allows you to control two or more covers at once. + +```yaml +{% raw %} +homeassistant: + customize: + all_covers: + assume_state: true + +cover: + - platform: template + covers: + all_covers: + friendly_name: 'All Covers' + open_cover: + service: script.cover_all_open + close_cover: + service: script.cover_all_close + stop_cover: + service: script.cover_all_stop + set_cover_position: + service: script.cover_all_set_position + data_template: + position: "{{ position }}" + value_template: > + {% if is_state('sensor.all_covers', 'open') %} + open + {% else %} + closed + {% endif %} + + icon_template: > + {% if is_state('sensor.all_covers', 'open') %} + mdi:window-open + {% else %} + mdi:window-closed + {% endif %} + + entity_id: + - cover.bedroom + - cover.livingroom + +sensor: + - platform: template + sensors: + all_covers: + value_template: > + {% if is_state('cover.bedroom', 'open') %} + open + {% elif is_state('cover.livingroom', 'open') %} + open + {% else %} + closed + {% endif %} + + entity_id: + - cover.bedroom + - cover.livingroom + +script: + cover_all_open: + sequence: + - service: cover.open_cover + entity_id: cover.bedroom + - service: cover.open_cover + entity_id: cover.livingroom + cover_all_stop: + sequence: + - service: cover.stop_cover + entity_id: cover.bedroom + - service: cover.stop_cover + entity_id: cover.livingroom + cover_all_close: + sequence: + - service: cover.close_cover + entity_id: cover.bedroom + - service: cover.close_cover + entity_id: cover.livingroom + cover_all_set_position: + sequence: + - service: cover.set_cover_position + entity_id: cover.bedroom + data_template: + position: "{{ position }}" + - service: cover.set_cover_position + entity_id: cover.livingroom + data_template: + position: "{{ position }}" + +automation: + - alias: 'Close covers at night' + trigger: + - platform: sun + event: sunset + offset: '+00:30:00' + action: + service: cover.set_cover_position + entity_id: cover.all_covers + data_template: + position: 25{% endraw %} ``` From cd431654d9f898ba8f46216abb7af57e229d7dbc Mon Sep 17 00:00:00 2001 From: mauriciobonani Date: Sat, 26 Aug 2017 17:13:01 -0400 Subject: [PATCH 10/49] Add LIFX to note about transition (#3252) --- source/_cookbook/automation_sun.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown index db9d8dfe8ef..931972beaba 100644 --- a/source/_cookbook/automation_sun.markdown +++ b/source/_cookbook/automation_sun.markdown @@ -29,7 +29,7 @@ automation: #### {% linkable_title Natural wake up light %} -_Note, Philips Hue is currently the only light platform that support transitions._ +_Note, Philips Hue and LIFX are currently the only light platforms that support transitions._ ```yaml automation: From adb6fea5df1468403c3efd5fd716129379fae541 Mon Sep 17 00:00:00 2001 From: Tom Howe Date: Sat, 26 Aug 2017 22:29:29 +0100 Subject: [PATCH 11/49] Update debugging.markdown (#3249) Added example ssh command - it's not obvious that you need to log in as root! --- source/developers/hassio/debugging.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/developers/hassio/debugging.markdown b/source/developers/hassio/debugging.markdown index 4f557178286..d5dee3b6905 100644 --- a/source/developers/hassio/debugging.markdown +++ b/source/developers/hassio/debugging.markdown @@ -34,6 +34,11 @@ Step 3 in the link above, shows the path to the private key file `id_rsa` for yo Make sure when you are copying the public key to the root of the /boot partition of the SD card that you rename the file correctly with no `.pub` file extension.

+You should then be able to SSH into your Hass.io device. On mac/linux, use: +``` +ssh root@hassio.local -p 22222 +``` + ## {% linkable_title Checking the logs %} ```bash From fb744131e516ebfd5757e3fbaab544de530b2150 Mon Sep 17 00:00:00 2001 From: mattie47 Date: Sun, 27 Aug 2017 21:39:30 +1200 Subject: [PATCH 12/49] Update media_player.braviatv.markdown (#3257) Updated instructions for those using Sony Bravia TVs older than 2013. This text is actually quite generic, however only applies to users with a Raspberry Pi or similar device which has HDMI-CEC functionality built in. Source of rewritten content: - from https://community.home-assistant.io/t/turning-a-tv-on-off-via-kodi-cec-libreelec-no-hass-device-attached/5944/2 - https://community.home-assistant.io/t/turning-a-tv-on-off-via-kodi-cec-libreelec-no-hass-device-attached/5944/3 --- .../media_player.braviatv.markdown | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/media_player.braviatv.markdown index 11ccf5247d0..4ddb417ae37 100644 --- a/source/_components/media_player.braviatv.markdown +++ b/source/_components/media_player.braviatv.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `braviatv` platform allows you to control a [Sony Bravia TV](http://www.sony.com). -Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. +Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further below. You will need to configure your TV to allow the Home Assistant for remote usage. To do that, ensure that your TV is turned on. Open the configuration popup on Home Assistant and enter a random PIN (for example 0000). After that, the TV will show you a PIN and Home Assistant will allow you to re-enter that PIN. Enter the PIN shown on your TV and Home Assistant will be able to control your Sony Bravia TV. @@ -38,3 +38,39 @@ You are also able to configure the TV manually by placing a `bravia.conf` file i ```json {"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}} ``` + +## For TVs older than 2013. + +Users of TVs older than 2013 still have several options for controlling their TV via Home Assistant. + +Unfortunately depending on desired goal, the outcome may have some undesired trade off. + +#### Using HDMI-CEC #### + +If you have a Raspberry Pi connected to your TV: + +```json +- platform: command_line + switches: + tv_rpi: + command_on: ssh root@[IP] "echo 'on 0' | cec-client -s" + command_off: ssh root@[IP] "echo 'standby 0' | cec-client -s" + command_state: ssh root@[IP] "echo 'pow 0' | cec-client -s |grep 'power status:'" + value_template: '{{ value == "power status: on" }}' +``` + +Using cec-client seems like a great method to turn your TV off/on, however the trade off is if you're using Kodi, it will no longer be able to control your TV using the TV Remote. + +This is because only one process can control the CEC functionality within the Raspberry Pi at a time, and running the above commands terminates the functionality inside libCEC within Kodi. Kodi must be restarted for TV remove functionality to work again. + +**Workaround:** + +If your desire is only to turn on your TV, the following "workaround" may be desirable: + +Change the 'on' command to a restart for Kodi - this doesn't reboot the Kodi device. + +Restarting Kodi will trigger a HDMI-CEC event to bring the TV out of standby. The following can replace your TV 'on' command. + +```json +command_on: ssh root@[IP] "systemctl restart kodi" +``` From 348c8b22701cb5a3e48be0ff4d49571ed3882ab9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 26 Aug 2017 23:38:29 +0200 Subject: [PATCH 13/49] Add new articles --- source/help/index.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index c8caa14fef9..faebabf17f5 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -46,8 +46,11 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). +- [Smart Home Home Assistant KNX Alexa Sprachsteuerung](http://onesmarthome.de/smart-home-home-assistant-knx-alexa-sprachsteuerung/) - August 2017 - [Episode #122: Home Assistant: Pythonic Home Automation](https://talkpython.fm/episodes/show/122/home-assistant-pythonic-home-automation) - July 2017 +- [Smart Home Home Assistant Konfiguration mit YAML](http://onesmarthome.de/smart-home-home-assistant-konfiguration/) - July 2017 - [Why can't we have the Internet of Nice Things?](https://opensource.com/article/17/7/home-automation-primer) - July 2017 +- [Smart Home Home Assistant Raspberry Pi Installation Hassbian](http://onesmarthome.de/smart-home-home-assistant-raspberry-pi-installation-hassbian/) - July 2017 - [Integrating Snips with Home Assistant](https://medium.com/snips-ai/integrating-snips-with-home-assistant-314723645c77) - June 2017 - [Jupiter Broadcasting - No Privacy Compromise Home Automation](http://www.jupiterbroadcasting.com/115566/no-privacy-compromise-home-automation/) - June 2017 - [Castálio Podcast - Episódio 102: Marcelo Mello - Red Hat e Automação Residencial com Home Assistant](https://youtu.be/hZq8ucpzjCs) - May 2017 From 90ff89c97fe412e1b0f0292f9745e7593ecbaa9a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 27 Aug 2017 11:44:50 +0200 Subject: [PATCH 14/49] Escape templates, convert titles to links, and other fixes --- .../media_player.braviatv.markdown | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/media_player.braviatv.markdown index 4ddb417ae37..cf6bd2a4172 100644 --- a/source/_components/media_player.braviatv.markdown +++ b/source/_components/media_player.braviatv.markdown @@ -33,44 +33,43 @@ Configuration variables: - **host** (*Required*): The IP of the Sony Bravia TV, eg. 192.168.0.10 - **name** (*Optional*): The name to use on the frontend. -You are also able to configure the TV manually by placing a `bravia.conf` file in your `.homeassistant` config directory with the following information - please update the details to match your setup: +You are also able to configure the TV manually by placing a `bravia.conf` file in your [configuration directory](/docs/configuration/) with the following information - please update the details to match your setup: ```json {"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}} ``` -## For TVs older than 2013. +## {% linkable_title For TVs older than 2013 %} -Users of TVs older than 2013 still have several options for controlling their TV via Home Assistant. +Users of TVs older than 2013 have another option for controlling their TV via Home Assistant. -Unfortunately depending on desired goal, the outcome may have some undesired trade off. - -#### Using HDMI-CEC #### +### {% linkable_title Using HDMI-CEC %} If you have a Raspberry Pi connected to your TV: -```json -- platform: command_line - switches: - tv_rpi: - command_on: ssh root@[IP] "echo 'on 0' | cec-client -s" - command_off: ssh root@[IP] "echo 'standby 0' | cec-client -s" - command_state: ssh root@[IP] "echo 'pow 0' | cec-client -s |grep 'power status:'" - value_template: '{{ value == "power status: on" }}' +```yaml +switch: + - platform: command_line + switches: + tv_rpi: + command_on: ssh root@[IP] "echo 'on 0' | cec-client -s" + command_off: ssh root@[IP] "echo 'standby 0' | cec-client -s" + command_state: ssh root@[IP] "echo 'pow 0' | cec-client -s |grep 'power status:'" + value_template: {% raw %}'{{ value == "power status: on" }}{% endraw %}' ``` -Using cec-client seems like a great method to turn your TV off/on, however the trade off is if you're using Kodi, it will no longer be able to control your TV using the TV Remote. +Using `cec-client` is a great method to turn your TV off/on, however the trade off is if you're using Kodi, it will no longer be able to control your TV using the TV Remote. -This is because only one process can control the CEC functionality within the Raspberry Pi at a time, and running the above commands terminates the functionality inside libCEC within Kodi. Kodi must be restarted for TV remove functionality to work again. +This is because only one process can control the CEC functionality within the Raspberry Pi at a time and running the above commands terminates the functionality inside libCEC within Kodi. Kodi must be restarted for TV remove functionality to work again. **Workaround:** If your desire is only to turn on your TV, the following "workaround" may be desirable: -Change the 'on' command to a restart for Kodi - this doesn't reboot the Kodi device. +Change the 'on' command to a restart for Kodi. This doesn't reboot the Kodi device. Restarting Kodi will trigger a HDMI-CEC event to bring the TV out of standby. The following can replace your TV 'on' command. -```json +```yaml command_on: ssh root@[IP] "systemctl restart kodi" ``` From db01226983a5363868b4943059365e6b7c4686a8 Mon Sep 17 00:00:00 2001 From: boojew Date: Sun, 27 Aug 2017 06:44:09 -0400 Subject: [PATCH 15/49] Update isy994.markdown (#3255) --- source/_components/isy994.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index bcdbc50d6f6..8cf050f2383 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -88,7 +88,7 @@ A device is created by creating a directory, with the name for the device, under * *HA.lock* will create a lock * *HA.switch* will create a switch -A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. +A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. The *status* program requires that you create a variable with the name of your choice. This variable will store the actual status of the new device and will be updated by the *action* program.

From 17f394fbb0561f725645aa1f331acf23918d01b8 Mon Sep 17 00:00:00 2001 From: Jeremy Bunting Date: Sun, 27 Aug 2017 03:45:54 -0700 Subject: [PATCH 16/49] minor typo correction (#3256) 'Developers' was misspelled. --- source/_components/notify.ciscospark.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/notify.ciscospark.markdown index 6892b4192e0..db3e736beaf 100644 --- a/source/_components/notify.ciscospark.markdown +++ b/source/_components/notify.ciscospark.markdown @@ -14,9 +14,9 @@ ha_release: "0.40" The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). -To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Devleopers](https://developer.ciscospark.com/index.html) +To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Developers](https://developer.ciscospark.com/index.html) -At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Devleopers](https://developer.ciscospark.com/index.html). Just look in the Doumentation under Rooms. +At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Developers](https://developer.ciscospark.com/index.html). Just look in the Doumentation under Rooms. To enable the Cisco Spark notification in your installation, add the following to your `configuration.yaml` file: From c2db0fa3549971f76699ac0166e3c941d47d3a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Qui=C3=A9not?= Date: Sun, 27 Aug 2017 12:51:34 +0200 Subject: [PATCH 17/49] fix "Retrieving the Access Token" broken link (#3259) --- source/_components/vacuum.xiaomi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/vacuum.xiaomi.markdown b/source/_components/vacuum.xiaomi.markdown index fb9fede1cfa..586baa0bccb 100644 --- a/source/_components/vacuum.xiaomi.markdown +++ b/source/_components/vacuum.xiaomi.markdown @@ -17,7 +17,7 @@ The `xiaomi` vacuum platform allows you to control the state of your [Xiaomi Mi Current supported features are `turn_on`, `pause`, `stop`, `return_to_home`, `turn_off` (stops goes to dock), `locate`, `clean_spot`, `set_fanspeed` and even remote control your robot. -Please follow the instructions on [Retrieving the Access Token](/xiaomi/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. +Please follow the instructions on [Retrieving the Access Token](/components/xiaomi/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. To add a vacuum to your installation, add the following to your `configuration.yaml` file: From 86107b87553096ac53e7153a6f6e13dd2dd81bcb Mon Sep 17 00:00:00 2001 From: Phil Cole Date: Sun, 27 Aug 2017 11:57:48 +0100 Subject: [PATCH 18/49] Spelling correction (#3254) --- source/developers/development_guidelines.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/development_guidelines.markdown b/source/developers/development_guidelines.markdown index 9c14e75d705..46eb7f3c852 100644 --- a/source/developers/development_guidelines.markdown +++ b/source/developers/development_guidelines.markdown @@ -27,7 +27,7 @@ Those points may require that you adjust your IDE or editor settings. ## {% linkable_title Our recommandations %} -For some cases [PEPs](https://www.python.org/dev/peps/) don't make a statement. This section covers our recommandations about the code style. Those points were collected from the exisiting code and based on what contributors and developers were using the most. This is basically a majority decision, thus you may not agree with it. But we would like to encourage you follow those recommandations to keep the code unified. +For some cases [PEPs](https://www.python.org/dev/peps/) don't make a statement. This section covers our recommendations about the code style. Those points were collected from the exisiting code and based on what contributors and developers were using the most. This is basically a majority decision, thus you may not agree with it. But we would like to encourage you follow those recommandations to keep the code unified. ### {% linkable_title Quotes %} From e43d637b2a917e53efa988459980b78d21100b11 Mon Sep 17 00:00:00 2001 From: Olaf Conradi Date: Sun, 27 Aug 2017 19:57:56 +0200 Subject: [PATCH 19/49] clarify that the pin numbers are from BCM mode (#3264) This took me a long time to figure out why it did not work. --- source/_components/binary_sensor.rpi_gpio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/binary_sensor.rpi_gpio.markdown b/source/_components/binary_sensor.rpi_gpio.markdown index 8af41e2a9b1..99a7eda5eb4 100644 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ b/source/_components/binary_sensor.rpi_gpio.markdown @@ -29,7 +29,7 @@ binary_sensor: Configuration variables: - **ports** array (*Required*): Array of used ports. - - **port: name** (*Required*): Port numbers and corresponding names. + - **port: name** (*Required*): Port numbers (BCM mode pin numbers) and corresponding names. - **pull_mode** (*Optional*): The internal pull to use (UP or DOWN). Default is UP. - **bouncetime** (*Optional*): The time in milliseconds for port debouncing. Default is 50ms. - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). From 371245a261591e1d422dee34d057a52c813b8b24 Mon Sep 17 00:00:00 2001 From: Greg Stevenson Date: Sun, 27 Aug 2017 20:33:39 +0100 Subject: [PATCH 20/49] Typo fix on scripts page (#3265) --- source/_docs/scripts/editor.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/editor.markdown b/source/_docs/scripts/editor.markdown index e5cc30c2272..a69ae296923 100644 --- a/source/_docs/scripts/editor.markdown +++ b/source/_docs/scripts/editor.markdown @@ -25,4 +25,4 @@ The script editor reads and writes to the file `scripts.yaml` in your [configura script: !include scripts.yaml ``` -The conten that was under `script:` should now be moved to `scripts.yaml` to be editable. +The content that was under `script:` should now be moved to `scripts.yaml` to be editable. From 1ba86e8b087b28c219dbacdbb0555df0bb2a6084 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 27 Aug 2017 14:30:57 -0700 Subject: [PATCH 21/49] Fix canonical urls and blog post dates --- plugins/filters.rb | 76 +++++++++++++++++++ ...lassifying-the-internet-of-things.markdown | 2 +- ...-bloomsky-splunk-and-garage-doors.markdown | 2 +- ...your-hub-should-be-local-and-open.markdown | 2 +- ...asonic-gtfs-and-config-validation.markdown | 2 +- .../2016-04-17-updated-documentation.markdown | 2 +- ...2016-04-19-to-infinity-and-beyond.markdown | 2 +- ...luetooth-lg-webos-tvs-and-roombas.markdown | 4 +- ...otifications-hue-fake-unification.markdown | 4 +- ...2016-10-24-explaining-the-updater.markdown | 4 +- source/_posts/2016-12-19-thank-you.markdown | 2 +- source/_posts/2017-02-04-babyphone.markdown | 4 +- 12 files changed, 91 insertions(+), 15 deletions(-) create mode 100644 plugins/filters.rb diff --git a/plugins/filters.rb b/plugins/filters.rb new file mode 100644 index 00000000000..5eacd7b8cf4 --- /dev/null +++ b/plugins/filters.rb @@ -0,0 +1,76 @@ +module Jekyll + module AssetFilter + # Octopress filters + # Copyright (c) 2014 Brandon Mathis + + # MIT License + + # Permission is hereby granted, free of charge, to any person obtaining + # a copy of this software and associated documentation files (the + # "Software"), to deal in the Software without restriction, including + # without limitation the rights to use, copy, modify, merge, publish, + # distribute, sublicense, and/or sell copies of the Software, and to + # permit persons to whom the Software is furnished to do so, subject to + # the following conditions: + + # The above copyright notice and this permission notice shall be + # included in all copies or substantial portions of the Software. + + # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + + def site_url + 'https://home-assistant.io' + end + + # Prepend a url with the full site url + # + # input - a url + # + # Returns input with all urls expanded to include the full site url + # e.g. /images/awesome.gif => http://example.com/images/awesome.gif + # + def full_url(input) + expand_url(input, site_url) + end + + # Prepends input with a url fragment + # + # input - An absolute url, e.g. /images/awesome.gif + # url - The fragment to prepend the input, e.g. /blog + # + # Returns the modified url, e.g /blog + # + def expand_url(input, url=nil) + url ||= root + + url = if input.start_with?("http", url) + input + else + File.join(url, input) + end + + smart_slash(url) + end + + # Ensure a trailing slash if a url ends with a directory + def smart_slash(input) + if !(input =~ /\.\w+$/) + input = File.join(input, '/') + end + input + end + + # Convert url input into a standard canonical url by expanding urls and + # removing url fragments ending with `index.[ext]` + def canonical_url(input) + full_url(input).sub(/index\.\w+$/i, '') + end + end +end + +Liquid::Template.register_filter(Jekyll::AssetFilter) diff --git a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown index e346e352169..932cf42f78c 100644 --- a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown +++ b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown @@ -2,7 +2,7 @@ layout: post title: "Classifying the Internet of Things" description: "" -date: 2016-02-11 22:31:00 -0800 +date: 2016-02-12 22:31:00 UTC date_formatted: "February 12, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown index 19f9169fb6f..de5e7e7760b 100644 --- a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown +++ b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown @@ -2,7 +2,7 @@ layout: post title: "0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors" description: "Home Assistant 0.13 brings test coverage to a whopping 90% and adds a whole bunch of new components." -date: 2016-02-12 22:15:00 -0800 +date: 2016-02-13 22:15:00 UTC date_formatted: "February 13, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown index 653665fbeb9..d56e8b0d3c7 100644 --- a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown +++ b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown @@ -2,7 +2,7 @@ layout: post title: "Your hub should be local and open" description: "Running a hub that depends on the cloud is a risk that can cost you your home automation." -date: 2016-04-04 21:11:00 -0700 +date: 2016-04-05 21:11:00 UTC date_formatted: "April 5, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown index 3b5dfa4c65f..33c8d3e97c5 100644 --- a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown +++ b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown @@ -2,7 +2,7 @@ layout: post title: "0.17: Onkyo, Panasonic, GTFS and config validation" description: "Home Assistant 0.17 has arrived." -date: 2016-04-08 23:10:00 -0700 +date: 2016-04-09 23:10:00 UTC date_formatted: "April 9, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-17-updated-documentation.markdown b/source/_posts/2016-04-17-updated-documentation.markdown index 8d87f518ef1..e0e956e4f0e 100644 --- a/source/_posts/2016-04-17-updated-documentation.markdown +++ b/source/_posts/2016-04-17-updated-documentation.markdown @@ -2,7 +2,7 @@ layout: post title: "Updated documentation" description: "We have reorganised our documentation which should make it easier to get started and develop for Home Assistant." -date: 2016-04-16 23:09:00 -0700 +date: 2016-04-17 23:09:00 UTC date_formatted: "April 17, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown b/source/_posts/2016-04-19-to-infinity-and-beyond.markdown index 46f411bdd27..e8b0e0ffd2d 100644 --- a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown +++ b/source/_posts/2016-04-19-to-infinity-and-beyond.markdown @@ -2,7 +2,7 @@ layout: post title: "To Infinity and Beyond 🚀" description: "The state of Home Assistant: past, present, future." -date: 2016-04-18 22:44:00 -0700 +date: 2016-04-19 22:44:00 UTC date_formatted: "April 19, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown b/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown index fbfce7cbc9b..14794081d8a 100644 --- a/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown +++ b/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown @@ -2,8 +2,8 @@ layout: post title: "0.18: Bluetooth, LG WebOS TVs and Roombas." description: "Home Assistant 0.18 has arrived." -date: 2016-04-19 23:10:00 -0700 -date_formatted: "April 21, 2016" +date: 2016-04-20 23:10:00 UTC +date_formatted: "April 20, 2016" author: Paulus Schoutsen author_twitter: balloob comments: true diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown index 1901422103b..de09817dbde 100644 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown @@ -2,8 +2,8 @@ layout: post title: "0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant" description: "HTML5 push notifications and grouping support, Configuration validations and checking, cover, climate and fan." -date: 2016-08-27 20:30:25 -0700 -date_formatted: "August 27, 2016" +date: 2016-08-28 20:30:25 UTC +date_formatted: "August 28, 2016" author: Robbie Trencheny author_twitter: Robbie comments: true diff --git a/source/_posts/2016-10-24-explaining-the-updater.markdown b/source/_posts/2016-10-24-explaining-the-updater.markdown index fd920bd0d31..86937e279dc 100644 --- a/source/_posts/2016-10-24-explaining-the-updater.markdown +++ b/source/_posts/2016-10-24-explaining-the-updater.markdown @@ -2,8 +2,8 @@ layout: post title: "Explaining the Updater" description: "An update to the recent updater component changes" -date: 2016-10-24 21:30:00 -0700 -date_formatted: "October 24, 2016" +date: 2016-10-25 21:30:00 UTC +date_formatted: "October 25, 2016" author: Paulus Schoutsen author_twitter: balloob comments: true diff --git a/source/_posts/2016-12-19-thank-you.markdown b/source/_posts/2016-12-19-thank-you.markdown index 805ea6c4265..54644bb167a 100644 --- a/source/_posts/2016-12-19-thank-you.markdown +++ b/source/_posts/2016-12-19-thank-you.markdown @@ -2,7 +2,7 @@ layout: post title: "Thank You" description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." -date: 2016-12-18 21:04:05 -0800 +date: 2016-12-19 21:04:05 UTC date_formatted: "December 19, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2017-02-04-babyphone.markdown b/source/_posts/2017-02-04-babyphone.markdown index 057e80b968a..1c51f99c921 100644 --- a/source/_posts/2017-02-04-babyphone.markdown +++ b/source/_posts/2017-02-04-babyphone.markdown @@ -2,8 +2,8 @@ layout: post title: "Smart Baby Monitor" description: "How to build your own smart baby monitor" -date: 2017-02-04 00:00:00 +0100 -date_formatted: "February 4, 2017" +date: 2017-02-03 01:00:00 UTC +date_formatted: "February 3, 2017" author: Pascal Vizeli comments: true categories: How-To From 0dee2c22d901cf8b4f97223beb9ac7b25d99f202 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 27 Aug 2017 16:07:08 -0700 Subject: [PATCH 22/49] Update events.markdown --- source/_docs/configuration/events.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index 5219757d73f..852758dcba2 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -73,7 +73,7 @@ Event `platform_discovered` is fired when a new platform has been discovered by Field | Description ----- | ----------- `service` | The service that is discovered. Example: `zwave`. -`discovered` | Information that is discovered. Can be a dict, tuple etc. Example: `(192.168.1.10, 8889)`. +`discovered` | Dictionary containing discovery information. Example: `{ "host": "192.168.1.10", "port": 8889}`. ### {% linkable_title Event `component_loaded` %} From 6f959cd16246a3ce1e1fba7a94e8e403d9baf5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Ryrl=C3=A9n?= Date: Mon, 28 Aug 2017 11:22:01 +0200 Subject: [PATCH 23/49] Update z-wave.markdown (#3262) * Update z-wave.markdown spent way to long time to find this, so thought about document it down. * Minor change --- source/_docs/z-wave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index ace82273a5f..f88936d7a6f 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -18,7 +18,7 @@ There is currently support for climate, covers, lights, locks, sensors, switches As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. -There is one dependency you will need to have installed ahead of time: +There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): ```bash $ sudo apt-get install libudev-dev From 7653ebf721198e79b926f3e5950370ab5d2498e8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 28 Aug 2017 09:21:43 -0700 Subject: [PATCH 24/49] Release 0.52.1 --- _config.yml | 6 ++--- .../_posts/2017-08-26-release-0-52.markdown | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 9f482b4a630..ff5e1e7a0dc 100644 --- a/_config.yml +++ b/_config.yml @@ -140,11 +140,11 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 52 -current_patch_version: 0 -date_released: 2017-08-26 +current_patch_version: 1 +date_released: 2017-08-28 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#" +patch_version_notes: "#release-0521---august-28" # Minor release (Example #release-0431---april-25): diff --git a/source/_posts/2017-08-26-release-0-52.markdown b/source/_posts/2017-08-26-release-0-52.markdown index b68304f1125..e3977ba7a20 100644 --- a/source/_posts/2017-08-26-release-0-52.markdown +++ b/source/_posts/2017-08-26-release-0-52.markdown @@ -48,6 +48,17 @@ script: !include scripts.yaml - Add support for Prowl notifications. ([@mbrrg] - [#9028]) ([notify.prowl docs]) (new-platform) - Add worldtidesinfo sensor component ([@aetolus] - [#8860]) ([sensor.worldtidesinfo docs]) (new-platform) +## {% linkable_title Release 0.52.1 - August 28 %} + +- Close stream request once we end up with proxy ([@foxel] - [#9110]) +- Fix issue #9116 in pushbullet ([@danielhiversen] - [#9128]) ([notify.pushbullet docs]) +- bug fix pushbullet ([@danielhiversen] - [#9139]) ([notify.pushbullet docs]) +- Fix import for foscam ([@sdague] - [#9140]) ([camera.foscam docs]) +- Bump aioautomatic to prevent leaking exceptions ([@armills] - [#9148]) ([device_tracker.automatic docs]) +- Wrap state when iterating a domain in templates ([@balloob] - [#9157]) +- Prevent iCloud exceptions in logfile ([@mjj4791] - [#9179]) ([device_tracker.icloud docs]) +- bump ecobee version to fix issue 9190 ([@nkgilley] - [#9191]) ([ecobee docs]) ([climate.ecobee docs]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -374,3 +385,16 @@ usps: [forum]: https://community.home-assistant.io/ [issue]: https://github.com/home-assistant/home-assistant/issues [discord]: https://discord.gg/c5DvZ4e +[#9110]: https://github.com/home-assistant/home-assistant/pull/9110 +[#9128]: https://github.com/home-assistant/home-assistant/pull/9128 +[#9139]: https://github.com/home-assistant/home-assistant/pull/9139 +[#9140]: https://github.com/home-assistant/home-assistant/pull/9140 +[#9148]: https://github.com/home-assistant/home-assistant/pull/9148 +[#9157]: https://github.com/home-assistant/home-assistant/pull/9157 +[#9179]: https://github.com/home-assistant/home-assistant/pull/9179 +[#9191]: https://github.com/home-assistant/home-assistant/pull/9191 +[@foxel]: https://github.com/foxel +[@sdague]: https://github.com/sdague +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/ +[device_tracker.icloud docs]: https://home-assistant.io/components/device_tracker.icloud/ From 2d9d267e1398083a56c4d6745316cc31b64b7415 Mon Sep 17 00:00:00 2001 From: githubbuh <30601455+githubbuh@users.noreply.github.com> Date: Tue, 29 Aug 2017 12:47:04 -0700 Subject: [PATCH 25/49] icon behavior when name is also specified (#3272) expanded the icon narrative to indicate expected behavior with both name and icon are provided. --- source/_components/group.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/group.markdown b/source/_components/group.markdown index ea8d1f7c221..1e5294e8cc5 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -58,7 +58,7 @@ Configuration variables: - **view** (*Optional*): If yes then the entry will be shown as a view (tab) at the top. - **name** (*Optional*): Name of the group. -- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If it's not a view, then the icon shows when this group is used in another group. +- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If the group is a view and both name and icon have been specified, the icon will appear at the top of the fronted and the name will be displayed as the mouse-over text. If it's not a view, then the icon shows when this group is used in another group. - **control** (*Optional*): Set value to `hidden`. If hidden then the group switch will be hidden. - **entities** (*Required*): array or comma delimited string, list of entities to group. From b6a3cb08c05da335ca69b2a19a54377d860003d3 Mon Sep 17 00:00:00 2001 From: slimatic Date: Wed, 30 Aug 2017 06:48:00 -0400 Subject: [PATCH 26/49] Fixed small typo (#3277) --- source/_components/notify.twitter.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/notify.twitter.markdown b/source/_components/notify.twitter.markdown index fe5c5d657b5..f63810e68eb 100644 --- a/source/_components/notify.twitter.markdown +++ b/source/_components/notify.twitter.markdown @@ -13,7 +13,7 @@ ha_release: 0.12 --- -The `twitter` platform uses [Twitter](https://twitter.com) to delivery notifications from Home Assistant. +The `twitter` platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. Go to [Twitter Apps](https://apps.twitter.com/app/new) and create an application. Visit "Keys and Access Tokens" of the application to get the details ("Consumer Key", "Consumer Secret", "Access Token" and "Access Token Secret" which needs to be generated). From 324acb9af7399a6836cd29fc368d2622b85af4da Mon Sep 17 00:00:00 2001 From: n0dyjeff Date: Wed, 30 Aug 2017 10:36:31 -0700 Subject: [PATCH 27/49] Update sensor.version.markdown (#3279) --- source/_components/sensor.version.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.version.markdown b/source/_components/sensor.version.markdown index adaad745bd8..3f8eaa196e4 100644 --- a/source/_components/sensor.version.markdown +++ b/source/_components/sensor.version.markdown @@ -56,7 +56,7 @@ sensor: command: "cat /home/homeassistant/.homeassistant/.HA_VERSION" ``` -You might think that a [`rest` sensor](/components/sensor.rest/) could work to but it will not as Home Assistant is not ready when the sensor get initialized. +You might think that a [`rest` sensor](/components/sensor.rest/) could work, too, but it will not as Home Assistant is not ready when the sensor get initialized. ```yaml sensor: From b186860baeebfba928fef06fb025789796f9d229 Mon Sep 17 00:00:00 2001 From: Jonathan Weinberg Date: Thu, 31 Aug 2017 11:31:51 -0400 Subject: [PATCH 28/49] Update ZHA link to Hue Thief (#3284) Link to the Hue Thief does not show up as a clickable link. This should resolve. --- source/_components/zha.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index a3f5fabf83d..2e4a749b970 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -42,4 +42,4 @@ Configuration variables: - **usb_path** (*Required*): Path to the serial device for the radio. - **database_path** (*Required*): Path to the database which will keep persistent network data. -To add new devices to the network, call the `permit` service on the `zha` domain, and then follow the device instructions for doing a scan or factory reset. In case you want to add Philips Hue bulbs that have previously been added to another bridge, have a look at: https://github.com/vanviegen/hue-thief +To add new devices to the network, call the `permit` service on the `zha` domain, and then follow the device instructions for doing a scan or factory reset. In case you want to add Philips Hue bulbs that have previously been added to another bridge, have a look at: [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) From 02aa254a3cafa96fa427d1ad56736e7200982a41 Mon Sep 17 00:00:00 2001 From: mukundv Date: Fri, 1 Sep 2017 03:06:25 +1000 Subject: [PATCH 29/49] Added JS9000 (#3286) The component doesnt work with JS9000. Added this to the list of tested and not working models. --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index c0c93d45376..23121583a87 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -61,6 +61,7 @@ Currently tested but not working models: - J5200 - Unable to see state and unable to control - JU7000 - Unable to see state and unable to control (but port 8001 *is* open) - JU7500 - Unable to see state and unable to control +- JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). From 8f41ba4b646c2aedd55c651f44a347c784d332dd Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 31 Aug 2017 19:12:18 +0200 Subject: [PATCH 30/49] Add link to Linux Magazine --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index faebabf17f5..a2750554c69 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -46,6 +46,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). +- [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 - [Smart Home Home Assistant KNX Alexa Sprachsteuerung](http://onesmarthome.de/smart-home-home-assistant-knx-alexa-sprachsteuerung/) - August 2017 - [Episode #122: Home Assistant: Pythonic Home Automation](https://talkpython.fm/episodes/show/122/home-assistant-pythonic-home-automation) - July 2017 - [Smart Home Home Assistant Konfiguration mit YAML](http://onesmarthome.de/smart-home-home-assistant-konfiguration/) - July 2017 From 1ec94ddcda530f82d37a879437c610838f72b69d Mon Sep 17 00:00:00 2001 From: Ioan Loosley Date: Thu, 31 Aug 2017 18:15:03 +0100 Subject: [PATCH 31/49] Added Linux Magazine (#3285) * Add files via upload * Delete Linux_Magazine_international_logo.png * Added Linux mag logo * Added Linux magazine link * Fix link --- source/images/press/LinuxMagazine.png | Bin 0 -> 3082 bytes source/index.html | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 source/images/press/LinuxMagazine.png diff --git a/source/images/press/LinuxMagazine.png b/source/images/press/LinuxMagazine.png new file mode 100644 index 0000000000000000000000000000000000000000..d548fc01ce962af9d38fc286cd0178854486a43c GIT binary patch literal 3082 zcmV+l4E6JgP)_+Xs@>)eZJLF^ZK6gy!QJKqn+K4OCLWsHy7>hd}RE6X>w3VxYm3tT3J~(`m#_kxjvcD zB7kgF&yVAej*jCI>i3kHZ=dtz^82zdI5~+<)MzUuV1mWPg?LdqJv}XTJd};iZ`j;? zhbCnxY`*;#C&2@@w?8ONn6!msW8=-z$8T)hG{4S!AH)j;2^Uc7b_`cyB45kx?EcyK z^Be2sNQ8UWQYNekpoMpKK4#D)xR%?bmh%A!^GS;KD68elEQB`qZmWAIQwx)D9)T5d zbMqD_!Z9GsFfDy8gf`j@etW3aJ#5khCf`*yP(s2rK+7>1?n%p8qzS6{j8y_9BwPc4JzWT* z5N=_+o1hGE{()gsl!U7hOcQt_ghiU52sp3JZhjK3Mj$e_x_XTh;lbpy*-em#w+&56 z60RY5w@WSO12$=bEFef?drlIrW*{Vu;^w5;LfFG*H$j@#>~`;1pNE8N01&a%li`B_ z3FiVX(*!nw5)#fcs^({yCh(}`9Ha?s10^J!XJ9p~YU^{)oF70d+4e`>a$ri5a2|nP zmS~<@6AmKd1 zq_`E^L>@o+CnwJV=Hm$PO(*AaRir?|d4x#<78=f#kW4#VZiRBSW1occ3_LudYF>@| z<=ha&brsJ&2YqQsI4`Eml}rD(EeCR`ai<0MJTz@8>Ssy9)r6#zZu2A^moRzc)HuRL zpv0G%O2P#bf_J9s_tv%b$Yr1;%iOowu}{JU0urz;Yx|lGQ!QX?384R{Zyy+uWYZ!A z5-uRHPpeKp>hTjZlhPzQS4Y*12kD-}%#ek$sK^FyRwUAq# z+J;X@CE)@Cb$xXOFHFrflkmD}Nd9E-FQd=FuQCmkm|7hsy(~$%8emdq=>jJM^M@EF z_w3~gzdF{`k22A4Fkej@xgt+$YIT@A<(7o2Nz;UC=cYp*N^k13l!-jz7@Ms|CR*6^ zK`BxR1gpblUaDZ$*Uep7UUK^M&)(j?lMR4P0d6$RuFzE_5a_l+@)p!R*^%(O*jdkD&iE?KuS0s0*uue$3vTlu%H-Ogjcp0Ei7J* zUx&8azWZLZy7oKmdzUVq4?r_k5prl4J;{tbq#UPf!ZMnqOq17SLi;4pvl~!nne1m% zNI0x4uKKEbb5!Sl;qBbx9L9&>Kh?}Vod7y1+_qc^G7iiPO8-Uzd!$ z3W4?W;aY@n1FcuTzO&%Ghkvzdk99@X{)2~wG8_VNooa!+FlaJ?5cBTbx4FDujr zO!}jG^$n!DhCCdan!105?~xtedh+_{=+TIbX-VyPTa8w2U!`%bRCM6l78kDOA3OMN zG(znNC*h_DN5|(v9@jfAFORfMTI5VO$?(3AHLL1F2q8txG9*Bu_u^w*ZQ;M;6W)Jp_e>n?%AX&63nk`fIv|(S;R(5nY=J>5>5v@r%-u_&TXTC_NaX zYg4_H3nZ@EyHhX1F7i>~a>%H=@PLGyKtO<#Z5+}BP1j-&UL2!;PPCQ2Z3fy5pTn_9 z^ACbA1jc*Gew?CBq1E(8t?=#eSqbl#-6N=LxuW2aKI&@WS1M>ij3*FC5Wxb8()JSS zei}3k$N{Z)boA9FZ3RLg%pUtoY9u#m;`|tTzef0j60A5@=W7kMspQghQXz1nw{Sq< zp^PTN9<(w$29kx!Wr7ypy*AWrAg1o`NqPWb ze~>~q3(vLUqfzv6ZtiEJ^XY^^pat8LfCWWZ{aW+<#N;ueHRbQPMS?PI<#+0z&FhU~ z+8N9RX3i8SuHgXT+*Papw6q`Z(NT$39U`SH4M-is6^-~KV*_xM@$1iED#Jt ztLhJuaN+Q^8ZV^1ao)x2AU3`D^wZ`7L7!{Nq|Vt5@QoVJbKlnq_tET2}k^|Eh6cjZf70N1=w}l-5SR7u7$ntMOV^;9w6X z=l%ixy&6nLXfqHk$7KBLkZ1>0&P~GAPrTV7@u2lyN;?LG1M&KY59sgJYcgW;k?Z(k zW@hHw;r)w9xbY?5FV#OUtMNvbF91_hOiucH!A!=_)%Z}6?C&Y}jD(vI@;yJ)d?4RX z(@ai~4#5`oN%3Yfey&KiTX3I9xCtcR^`Xg`>hHzLYGrOBzekfZ8>pN?#Y`2GvBbS0 z;U<`PKOdT$x3Wx5@%IpLp~*RH=YSpUof}3bBMC?7{+^hett@|Uf0*B!Mw2nG%|cm| zk%S}CZu+mIi~L@uzc=Y6Wnwa}Wj~b&CgXiIJ}GN5l5j*Be-B#kr7VAMl1j=-n2f-u zLy~>zVZKQ?V&w0M$(ic!jcZ9+Nt5xLVE_a~`_bb(lW@fU3B^Q|l+|G}l5m8rfQ(g1 z8O%f^rI9nM!(=4k2v>sA=#nzz%1~yN(|0n6$wrEEZzW|FOh%Mh{m|e!BH;+B4*X@PO~-LQDvcR3l(0ZWired.com logo OpenSource.com logo + + Linux Magazine logo + From 43890d7996d22f8bf12feb53639673158736d077 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 1 Sep 2017 16:16:18 +0200 Subject: [PATCH 32/49] New config option "timeout" + additional receivers (#3289) --- source/_components/media_player.denonavr.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown index 5fba91daf5e..b95cf5899b3 100644 --- a/source/_components/media_player.denonavr.markdown +++ b/source/_components/media_player.denonavr.markdown @@ -27,6 +27,7 @@ Supported devices: - Marantz M-CR603 - Marantz M-RC610 - Marantz SR5008 +- Marantz SR6007 - SR6010 - Marantz NR1604 - Other Denon AVR receivers (untested) - Marantz receivers (experimental) @@ -44,6 +45,7 @@ media_player: host: IP_ADDRESS name: NAME show_all_sources: True / False + timeout: POSITIVE INTEGER zones: - zone: Zone2 / Zone3 name: NAME @@ -54,6 +56,7 @@ Configuration variables: - **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. - **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. - **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case this option could help. +- **timeout** (*Optional*): Timeout for HTTP requests to the receiver. Defaults to 2 seconds if not provided. - **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3 - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as suffix is taken. From 3d26a4f893aa24ee3c1f9b5708d799ae12cf8d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Fri, 1 Sep 2017 22:03:00 +0200 Subject: [PATCH 33/49] Update notify.pushbullet.markdown (#3270) * Update notify.pushbullet.markdown * Minor changes --- source/_components/notify.pushbullet.markdown | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/_components/notify.pushbullet.markdown b/source/_components/notify.pushbullet.markdown index 83b512b437a..0ba8c606f3f 100644 --- a/source/_components/notify.pushbullet.markdown +++ b/source/_components/notify.pushbullet.markdown @@ -84,6 +84,21 @@ action: - **file** (*Required*): File to send with Pushbullet. + +### {% linkable_title File URL support %} + +```yaml +action: + service: notify.NOTIFIER_NAME + data: + title: Send file + message: This is a file URL + data: + file_url: https://cdn.pixabay.com/photo/2014/06/03/19/38/test-361512_960_720.jpg +``` + +- **file_url** (*Required*): File to send with Pushbullet. +

Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them.

From 2112525d2a20f7bfb3e7af9c4e45183acd8b47a3 Mon Sep 17 00:00:00 2001 From: Reza Moallemi Date: Sat, 2 Sep 2017 15:21:53 +0430 Subject: [PATCH 34/49] Add documentation for set_options service call (#3292) * Add documentation for set_options service call * Minor changes --- source/_components/input_select.markdown | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index 0f3aeec7ca5..e8cf94f94d1 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -37,7 +37,7 @@ Configuration variables: - **[alias]** array (*Required*): Alias for the input. Multiple entries are allowed.. - **name** (*Optional*): Friendly name of the input. - - **options** array (*Required*): List of options to choose from. + - **options** array (*Required*): List of options to choose from. - **initial** (*Optional*): Initial value when Home Assistant starts. - **icon** (*Optional*): Icon for entry. @@ -71,6 +71,22 @@ automation: option: Paulus ``` +To dynamically set the `input_select` options you can call `input_select.set_options`. The following example can be used in an automation rule: + +```yaml +# Example configuration.yaml entry +automation: + - alias: example automation + trigger: + platform: event + event_type: MY_CUSTOM_EVENT + action: + - service: input_select.set_options + data: + entity_id: input_select.who_cooks + options: ["Item A", "Item B", "Item C"] +``` + ### {% linkable_title Scenes %} To specify a target option in a [Scene](/components/scene/) you have to specify the target as `option` attribute: From 4e1c04c95175614f52b62eef6aee338c0d8e23cb Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 2 Sep 2017 21:53:47 +0100 Subject: [PATCH 35/49] Update Z-Wave documentation to mention Wake (#3291) * Update Z-Wave documentation to mention Wake Adding a note that battery powered devices need to be awake to update their settings, since this trips up many folks new to Z-Wave * Updated documentation as per discussion --- source/_docs/z-wave.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index f88936d7a6f..603f2e6179f 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -101,6 +101,10 @@ An easy script to generate a random key: cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' ``` +### {% linkable_title Battery Powered Devices %} + +Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details. + ### {% linkable_title Events %} #### {% linkable_title zwave.network_complete %} From b714fe0af734cd041a1557562e6f8da43a1c7da2 Mon Sep 17 00:00:00 2001 From: John Date: Sun, 3 Sep 2017 23:37:56 +1200 Subject: [PATCH 36/49] added home folder creation as not there by default (#3297) added home folder creation as not there by default --- source/_docs/installation/freenas.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index b333f400d2d..acf67bb0b88 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -31,6 +31,11 @@ Install Home Assistant itself. Create an `/etc/rc.local` file to enable Home Assistant to start when the jail starts. The command in `/etc/rc.local` can also be run in a terminal session but Home Assistant will exit when that session is closed. + +```bash +# cd / && mkdir /home && /home/.homeassistant/ +``` + ```bash # /usr/local/bin/hass --open-ui --config /home/.homeassistant/ & ``` From 085a0e7e37295b0e5fd1d4d115ba1936ba1ca591 Mon Sep 17 00:00:00 2001 From: Phill Price Date: Sun, 3 Sep 2017 20:41:21 +0100 Subject: [PATCH 37/49] Spelling change (#3299) conection > connection --- source/_docs/ecosystem/certificates/lets_encrypt.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 7853f24bd95..a88c559a248 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -33,7 +33,7 @@ Steps we will take: - 2 - Set up port forwarding without TLS/SSL and test connection - 3 - Set up a DuckDNS account - 4 - Obtain a TLS/SSL certificate from Let's Encrypt - - 5 - Check the incoming conection + - 5 - Check the incoming connection - 6 - Clean up port forwards - 7 - Set up a sensor to monitor the expiry date of the certificate - 8 - Set up an automatic renewal of the TLS/SSL certificate @@ -290,7 +290,7 @@ $ sudo chmod 755 /etc/letsencrypt/archive/ Did all of that go without a hitch? Wahoo! Your Let's Encrypt certificate is now ready to be used with Home Assistant. Move to step 5 to put it all together -### {% linkable_title 5 - Check the incoming conection %} +### {% linkable_title 5 - Check the incoming connection %}

Following on from Step 4 your SSH will still be in the certbot folder. If you edit your configuration files over SSH you will need to change to your `homeassistant` folder: From 939088c4a708afc6681ee1ddcd7ecd32acba0dc5 Mon Sep 17 00:00:00 2001 From: Vasiley <25254807+Vasiley@users.noreply.github.com> Date: Mon, 4 Sep 2017 13:58:40 -0500 Subject: [PATCH 38/49] Add Vasiley configuration (#3308) --- .../_cookbook/configuration_yaml_by_vasiley.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 source/_cookbook/configuration_yaml_by_vasiley.markdown diff --git a/source/_cookbook/configuration_yaml_by_vasiley.markdown b/source/_cookbook/configuration_yaml_by_vasiley.markdown new file mode 100644 index 00000000000..5334be04d30 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_vasiley.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Vasiley" +description: "" +date: 2017-09-04 13:50 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/Vasiley/Home-Assistant-Main +--- From e7f6dadf54d41150e848e425a045d1fe09e195a4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 4 Sep 2017 16:04:45 -0700 Subject: [PATCH 39/49] Update frontend.markdown --- source/developers/frontend.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown index a8310b06c96..d04292eeb88 100755 --- a/source/developers/frontend.markdown +++ b/source/developers/frontend.markdown @@ -63,7 +63,7 @@ While you are developing, you need to have Rollup running to have changes you ma ```bash $ cd homeassistant/components/frontend/www_static/home-assistant-polymer -$ npm run js_dev +$ npm run dev ``` The source code for the frontend can be found in two different directories: From e2dbcfe9ea84859766a2294dc47992545e0a1a95 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 4 Sep 2017 23:03:35 -0700 Subject: [PATCH 40/49] Update rss_feed_template.markdown --- source/_components/rss_feed_template.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 178f3434b05..7ecbc599a3e 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -19,6 +19,8 @@ For example, on Android, the app "Simple RSS Widget" can be used to display temp ```yaml # Example configuration.yml entry rss_feed_template: + # Accessible on /api/rss_template/garden + # Example: https://localhost:8123/api/rss_template/garden garden: requires_api_password: False title: "Garden {% raw %}{{ as_timestamp(now())|timestamp_custom('%H:%m', True) }}{% endraw %}" From 293658a94be2e87058bbcb2cce6cb9e8c28de798 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 4 Sep 2017 23:06:21 -0700 Subject: [PATCH 41/49] Update rss_feed_template.markdown --- source/_components/rss_feed_template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 7ecbc599a3e..78145d901bf 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "RSS feed template" -description: "Instructions how to setup an RSS feed for sensor information and other." +description: "Use this component to generate RSS feeds showing your latest data." date: 2017-04-11 20:42 sidebar: true comments: false From 21ca7ad8dc466a61f3846c3ca482f62af358c6b8 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 5 Sep 2017 19:48:44 +0100 Subject: [PATCH 42/49] Dim (and brighten) lights via a remote (#3309) * Dim (and brighten) lights via a remote As per chat in the Discord, these are the scripts, automations, and input_sliders to allow a light to be dimmed and brightened by holding down the down or up button on an appropriate remote. This has been extended to use input_sliders for the dim/brighten step, and for the minimum and maximum brightness levels. * Updates Replacing pointless data_templates with just data, complying with preferred formatting standards ;) * Further updates More fixes ;) --- .../dim_and_brighten_lights.markdown | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 source/_cookbook/dim_and_brighten_lights.markdown diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown new file mode 100644 index 00000000000..aa630c738a4 --- /dev/null +++ b/source/_cookbook/dim_and_brighten_lights.markdown @@ -0,0 +1,164 @@ +--- +layout: page +title: "Dim (and brighten) lights via a remote" +description: "The scripts and automations to allow you to use a remote to dim and brighten a light" +date: 2017-09-04 22:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Automation Examples +--- + +This requires both a light on a dimmer, and a z-wave remote control that sends one scene when a button is held, and another when released. This ensures that the scripts (which follow) are stopped, avoiding the risks of a script that never ends. + +In the following automation, replace `zwave.YOURCONTROLLER` with the actual entity ID of your controller. For the controller this was written for scene ID `13` was sent when the up button was held, and `15` when released. Similarly scene `14` when the down button was held, and `16` when released. You'll need to use the scene IDs that are sent by your remote if different. + +```yaml +automation: + + - alias: 'Make the lights go bright' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 13 + entity_id: zwave.YOURCONTROLLER + action: + - service: script.turn_on + data: + entity_id: script.light_bright + + - alias: 'Stop the bright just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 15 + entity_id: zwave.YOURCONTROLLER + action: + - service: script.turn_off + data: + entity_id: script.light_bright + - service: script.turn_off + data: + entity_id: script.light_bright_pause + + - alias: 'Make the lights go dim' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 14 + entity_id: zwave.YOURCONTROLLER + action: + - service: script.turn_on + data: + entity_id: script.light_dim + + - alias: 'Stop the dim just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 16 + entity_id: zwave.YOURCONTROLLER + action: + - service: script.turn_off + data: + entity_id: script.light_dim + - service: script.turn_off + data: + entity_id: script.light_dim_pause +``` + +There are 2 variables that control the speed of the change for the scripts below. The first is the `step` - smaller steps create a smoother transition. The second is the delay, smaller delays will create a faster transition. + +To allow flexibility, we'll use an [input_slider](/components/input_slider/) for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). We're also using a slider to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). + +```yaml +input_slider: + light_step: + name: 'Step the lights this much' + initial: 3 + min: 1 + max: 64 + step: 1 + + light_minimum: + name: 'No dimmer than this' + initial: 5 + min: 1 + max: 255 + step: 1 + + light_maximum: + name: 'No brighter than this' + initial: 255 + min: 5 + max: 255 + step: 1 +``` + +Now the scripts. There are 2 pairs of scripts. The first steps the light brighter, up to the maximum, and the second provides the delay between steps. These call each other until both are stopped. The second pair do the same for dimming. + +```yaml +# Replace YOURLIGHT with the actual light entity +script: + light_bright: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOURLIGHT + brightness: >- + {% set current = states.light.YOURLIGHT.attributes.brightness|int %} + {% set step = states.input_slider.light_step.state|int %} + {% set next = current + step %} + {% if next > states.input_slider.light_maximum.state|int %} + {% set next = states.input_slider.light_maximum.state|int %} + {% endif %} + {{ next }} + + - service: script.turn_on + data: + entity_id: script.light_bright_pause + + light_bright_pause: + sequence: + - delay: + milliseconds: 5 + - service: script.turn_on + data: + entity_id: script.light_bright + + light_dim: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOURLIGHT + brightness: >- + {% set current = states.light.YOURLIGHT.attributes.brightness|int %} + {% set step = states.input_slider.light_step.state|int %} + {% set next = current - step %} + {% if next < states.input_slider.light_minimum.state|int %} + {% set next = states.input_slider.light_minimum.state|int %} + {% endif %} + {{ next }} + + - service: script.turn_on + data: + entity_id: script.light_dim_pause + + light_dim_pause: + sequence: + - delay: + milliseconds: 5 + - service: script.turn_on + data: + entity_id: script.light_dim +``` + From 6e154db323a35b25f9085c06d0e69ccfbfe87699 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 6 Sep 2017 04:52:23 +1000 Subject: [PATCH 43/49] Update rss_feed_template.markdown (#3314) Use a capital M in the timestamp to show current minute instead of current month --- source/_components/rss_feed_template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 78145d901bf..804c3bbe4aa 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -23,7 +23,7 @@ rss_feed_template: # Example: https://localhost:8123/api/rss_template/garden garden: requires_api_password: False - title: "Garden {% raw %}{{ as_timestamp(now())|timestamp_custom('%H:%m', True) }}{% endraw %}" + title: "Garden {% raw %}{{ as_timestamp(now())|timestamp_custom('%H:%M', True) }}{% endraw %}" items: - title: "Outside temperature" description: "{% raw %}{% if is_state('sensor.temp_outside','unknown') %}---{% else %}{{states.sensor.temp_outside.state}} °C{% endif %}{% endraw %}" From 3c6ff37c0382291a023584fb5fba08debcd9a455 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Tue, 5 Sep 2017 16:49:44 -0400 Subject: [PATCH 44/49] Minor clarification in USPS component (#3316) --- source/_components/usps.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/usps.markdown b/source/_components/usps.markdown index af9b12c4f8c..6f92cc8e779 100644 --- a/source/_components/usps.markdown +++ b/source/_components/usps.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- The `usps` platform allows one to track deliveries and inbound mail from the [US Postal Service (USPS)](https://www.usps.com/). -In addition to having a USPS account, you will need to complete the "Opt-In" process by clicking "Get Started Now" on [this page](https://my.usps.com/mobileWeb/pages/intro/start.action). You must also "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see inbound mail. +In addition to having a USPS account, you will need to complete the "Opt-In" process for packages by clicking "Get Started Now" on [this page](https://my.usps.com/mobileWeb/pages/intro/start.action). You must also "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see inbound mail. To enable this component, add the following lines to your `configuration.yaml`: From 6ae0daf2d58c444544a1bd68fd31adfed34c1f9c Mon Sep 17 00:00:00 2001 From: Jamie Shaw Date: Tue, 5 Sep 2017 21:59:47 +0100 Subject: [PATCH 45/49] Remove "Changing the icon" (#3305) Text was copy and pasted verbatim from Template Sensor page, the Template Binary Sensor does not currently support the icon_template feature. --- source/_components/binary_sensor.template.markdown | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index b09f67aab64..58922bc704b 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -96,19 +96,6 @@ binary_sensor: - sensor.kitchen_co_status - sensor.wardrobe_co_status ``` -### {% linkable_title Change the icon %} - -This example shows how to change the icon based on the day/night cycle. - -```yaml -sensor: - - platform: template - sensors: - day_night: - friendly_name: 'Day/Night' - value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'{% endraw %} - icon_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'{% endraw %} -``` ### {% linkable_title Is anyone home? %} From 7f4361962fc9a80c6939c8b7c5c41e4149f81106 Mon Sep 17 00:00:00 2001 From: Dale Higgs Date: Tue, 5 Sep 2017 17:16:03 -0500 Subject: [PATCH 46/49] Revert "Dim (and brighten) lights via a remote" (#3317) * Revert "Remove "Changing the icon" (#3305)" This reverts commit 6ae0daf2d58c444544a1bd68fd31adfed34c1f9c. * Revert "Minor clarification in USPS component (#3316)" This reverts commit 3c6ff37c0382291a023584fb5fba08debcd9a455. * Revert "Update rss_feed_template.markdown (#3314)" This reverts commit 6e154db323a35b25f9085c06d0e69ccfbfe87699. * Revert "Dim (and brighten) lights via a remote (#3309)" This reverts commit 21ca7ad8dc466a61f3846c3ca482f62af358c6b8. --- .../dim_and_brighten_lights.markdown | 164 ------------------ 1 file changed, 164 deletions(-) delete mode 100644 source/_cookbook/dim_and_brighten_lights.markdown diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown deleted file mode 100644 index aa630c738a4..00000000000 --- a/source/_cookbook/dim_and_brighten_lights.markdown +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: page -title: "Dim (and brighten) lights via a remote" -description: "The scripts and automations to allow you to use a remote to dim and brighten a light" -date: 2017-09-04 22:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -This requires both a light on a dimmer, and a z-wave remote control that sends one scene when a button is held, and another when released. This ensures that the scripts (which follow) are stopped, avoiding the risks of a script that never ends. - -In the following automation, replace `zwave.YOURCONTROLLER` with the actual entity ID of your controller. For the controller this was written for scene ID `13` was sent when the up button was held, and `15` when released. Similarly scene `14` when the down button was held, and `16` when released. You'll need to use the scene IDs that are sent by your remote if different. - -```yaml -automation: - - - alias: 'Make the lights go bright' - initial_state: 'on' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - scene_id: 13 - entity_id: zwave.YOURCONTROLLER - action: - - service: script.turn_on - data: - entity_id: script.light_bright - - - alias: 'Stop the bright just there' - initial_state: 'on' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - scene_id: 15 - entity_id: zwave.YOURCONTROLLER - action: - - service: script.turn_off - data: - entity_id: script.light_bright - - service: script.turn_off - data: - entity_id: script.light_bright_pause - - - alias: 'Make the lights go dim' - initial_state: 'on' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - scene_id: 14 - entity_id: zwave.YOURCONTROLLER - action: - - service: script.turn_on - data: - entity_id: script.light_dim - - - alias: 'Stop the dim just there' - initial_state: 'on' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - scene_id: 16 - entity_id: zwave.YOURCONTROLLER - action: - - service: script.turn_off - data: - entity_id: script.light_dim - - service: script.turn_off - data: - entity_id: script.light_dim_pause -``` - -There are 2 variables that control the speed of the change for the scripts below. The first is the `step` - smaller steps create a smoother transition. The second is the delay, smaller delays will create a faster transition. - -To allow flexibility, we'll use an [input_slider](/components/input_slider/) for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). We're also using a slider to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). - -```yaml -input_slider: - light_step: - name: 'Step the lights this much' - initial: 3 - min: 1 - max: 64 - step: 1 - - light_minimum: - name: 'No dimmer than this' - initial: 5 - min: 1 - max: 255 - step: 1 - - light_maximum: - name: 'No brighter than this' - initial: 255 - min: 5 - max: 255 - step: 1 -``` - -Now the scripts. There are 2 pairs of scripts. The first steps the light brighter, up to the maximum, and the second provides the delay between steps. These call each other until both are stopped. The second pair do the same for dimming. - -```yaml -# Replace YOURLIGHT with the actual light entity -script: - light_bright: - sequence: - - service: light.turn_on - data_template: - entity_id: light.YOURLIGHT - brightness: >- - {% set current = states.light.YOURLIGHT.attributes.brightness|int %} - {% set step = states.input_slider.light_step.state|int %} - {% set next = current + step %} - {% if next > states.input_slider.light_maximum.state|int %} - {% set next = states.input_slider.light_maximum.state|int %} - {% endif %} - {{ next }} - - - service: script.turn_on - data: - entity_id: script.light_bright_pause - - light_bright_pause: - sequence: - - delay: - milliseconds: 5 - - service: script.turn_on - data: - entity_id: script.light_bright - - light_dim: - sequence: - - service: light.turn_on - data_template: - entity_id: light.YOURLIGHT - brightness: >- - {% set current = states.light.YOURLIGHT.attributes.brightness|int %} - {% set step = states.input_slider.light_step.state|int %} - {% set next = current - step %} - {% if next < states.input_slider.light_minimum.state|int %} - {% set next = states.input_slider.light_minimum.state|int %} - {% endif %} - {{ next }} - - - service: script.turn_on - data: - entity_id: script.light_dim_pause - - light_dim_pause: - sequence: - - delay: - milliseconds: 5 - - service: script.turn_on - data: - entity_id: script.light_dim -``` - From fa69ddbd6ca8e1494875eaf8844bee857587d7a5 Mon Sep 17 00:00:00 2001 From: SupahNoob Date: Wed, 6 Sep 2017 15:33:40 -0500 Subject: [PATCH 47/49] fix sublist in Server States (#3318) --- source/developers/websocket_api.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/developers/websocket_api.markdown b/source/developers/websocket_api.markdown index cfb0d8e5f94..fb538f7e89b 100644 --- a/source/developers/websocket_api.markdown +++ b/source/developers/websocket_api.markdown @@ -21,11 +21,11 @@ Connect your websocket implementation to `ws://localhost:8123/api/websocket`. 1. Client connects 2. Authentication phase starts - a. If no further authentication necessary for the user: go to 3 - b. Server sends `auth_required` message - c. Client sends `auth` message - d. If `auth` message correct: go to 3. - e. Server sends `auth_invalid`. Go to 6. + - If no further authentication necessary for the user: go to 3 + - Server sends `auth_required` message + - Client sends `auth` message + - If `auth` message correct: go to 3. + - Server sends `auth_invalid`. Go to 6. 3. Send `auth_ok` message 4. Authentication phase ends. 5. Command phase starts. From d53a51f5041efea5a68e205801a13de23719e6e7 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Thu, 7 Sep 2017 14:23:22 +0100 Subject: [PATCH 48/49] Dim (and brighten) lights via a remote (#3319) * Dim (and brighten) lights via a remote Hopefully this one won't break everything ;) * Changes as requested * Updates Other than the last point, done. The last part I've left, as these aren't strictly independent parts - the section after the comma is the explanation for how the "lever" works. * Updates You snuck those in while I was editing ;) * Update dim_and_brighten_lights.markdown --- .../dim_and_brighten_lights.markdown | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 source/_cookbook/dim_and_brighten_lights.markdown diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown new file mode 100644 index 00000000000..ee3f24ff80c --- /dev/null +++ b/source/_cookbook/dim_and_brighten_lights.markdown @@ -0,0 +1,163 @@ +--- +layout: page +title: "Dim (and brighten) lights via a remote" +description: "The scripts and automations to allow you to use a remote to dim and brighten a light" +date: 2017-09-06 18:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Automation Examples +--- + +This requires both a dimmable light, and a Z-Wave remote control that sends one scene when a button is held, and another when released. This ensures that the scripts (which follow) are stopped, avoiding the risks of a script that never ends. + +In the following automation, replace `zwave.YOUR_REMOTE` with the actual entity ID of your controller. For the controller this was written for scene ID 13 was sent when the up button was held, and 15 when released. Similarly, scene 14 when the down button was held, and 16 when released. You'll need to use the scene IDs that are sent by your remote if different. + +```yaml +automation: + + - alias: 'Make the lights go bright' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 13 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_on + data: + entity_id: script.light_bright + + - alias: 'Stop the bright just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 15 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_off + data_template: + entity_id: script.light_bright + - service: script.turn_off + data: + entity_id: script.light_bright_pause + + - alias: 'Make the lights go dim' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 14 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_on + data: + entity_id: script.light_dim + + - alias: 'Stop the dim just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 16 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_off + data_template: + entity_id: script.light_dim + - service: script.turn_off + data: + entity_id: script.light_dim_pause +``` + +There are 2 variables that control the speed of the change for the scripts below. The first is the `step`, small steps create a smooth transition. The second is the delay, larger delays will create a slower transition. + +To allow flexibility, an [Input Slider](/components/input_slider/) is used for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). Two additional [Input Sliders](/components/input_slider/) are used to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). + +```yaml +input_slider: + light_step: + name: 'Step the lights this much' + initial: 20 + min: 1 + max: 64 + step: 1 + + light_minimum: + name: 'No dimmer than this' + initial: 5 + min: 1 + max: 255 + step: 1 + + light_maximum: + name: 'No brighter than this' + initial: 255 + min: 50 + max: 255 + step: 1 +``` + +Now the scripts. There are 2 pairs of scripts. The first steps the light brighter to the maximum and the second provides the delay. These call each other until both are stopped. The second pair does the same for dimming. + +```yaml +# Replace YOURLIGHT with the actual light entity +script: + light_bright: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOUR_LIGHT + brightness: >- + {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} + {% set step = states('input_slider.light_step')|int %} + {% set next = current + step %} + {% if next > states('input_slider.light_maximum')|int %} + {% set next = states('input_slider.light_maximum')|int %} + {% endif %} + {{ next }}{% endraw %} + + - service: script.turn_on + data: + entity_id: script.light_bright_pause + + light_bright_pause: + sequence: + - delay: + milliseconds: 1 + - service: script.turn_on + data: + entity_id: script.light_bright + + light_dim: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOUR_LIGHT + brightness: >- + {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} + {% set step = states('input_slider.light_step')|int %} + {% set next = current - step %} + {% if next < states('input_slider.light_minimum')|int %} + {% set next = states('input_slider.light_minimum')|int %} + {% endif %} + {{ next }}{% endraw %} + + - service: script.turn_on + data: + entity_id: script.light_dim_pause + + light_dim_pause: + sequence: + - delay: + milliseconds: 1 + - service: script.turn_on + data: + entity_id: script.light_dim +``` From 6456f6489fdc02fbced53bca8fced98013692756 Mon Sep 17 00:00:00 2001 From: julesverhaeren Date: Thu, 7 Sep 2017 15:51:14 +0200 Subject: [PATCH 49/49] update kodi URL (#3323) https://home-assistant.io/components/mediaplayer.kodi/ => https://home-assistant.io/components/media_player.kodi/ --- source/_cookbook/automation_kodi_dynamic_input_select.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/automation_kodi_dynamic_input_select.markdown b/source/_cookbook/automation_kodi_dynamic_input_select.markdown index fff67e60d8e..040d4f1284e 100644 --- a/source/_cookbook/automation_kodi_dynamic_input_select.markdown +++ b/source/_cookbook/automation_kodi_dynamic_input_select.markdown @@ -10,7 +10,7 @@ footer: true ha_category: Automation Examples --- -This requires a [Kodi](/components/mediaplayer.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media. +This requires a [Kodi](/components/media_player.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media. Option filling is done in an [AppDaemon](https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/) app, which listens for events that are triggered with the results of the Kodi JSONRPC API queries when scripts run. This application also listens to the selection box and calls the play media service with the corresponding parameters.