From cc404acb2007d9c86f7df834a8ea510aa2f73fd2 Mon Sep 17 00:00:00 2001 From: mueslo Date: Fri, 9 Mar 2018 12:15:10 +0100 Subject: [PATCH 01/33] Add device_tracker.openwrt --- .../device_tracker.openwrt.markdown | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 source/_components/device_tracker.openwrt.markdown diff --git a/source/_components/device_tracker.openwrt.markdown b/source/_components/device_tracker.openwrt.markdown new file mode 100644 index 00000000000..4c319341590 --- /dev/null +++ b/source/_components/device_tracker.openwrt.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "OpenWRT" +description: "Instructions how to integrate OpenWRT routers into Home Assistant." +date: 2018-03-09 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: openwrt.png +ha_category: Presence Detection +ha_release: pre 0.7 +--- + +There are _multiple_ ways of integrating an OpenWRT router for presence detction. A broad distinction can be made between presence detection methods which actively scan for devices (by default every 12 seconds) and those that are notified by some external service on changes. It is essentially a problem of synchronizing states between two remote machines. + +* __active scanning__ + Scan for devices regularly. + * Advantages: + * robust on an unreliable set-up where the the router may not be reachable occasionally + * Disadvantages: + * average six-second delay between connecting and being registered as `home` + * lots of unnecessary network requests + * Examples: + * [ubus](/components/device_tracker.ubus/) + * [luci](/components/device_tracker.luci/) +* __passive/event-based__ + External services which notify Home Assistant of devices vie the [REST API endpoint](/developers/rest_api.markdown). + * Advantages: + * devices typically registered in under one second when they connect + * very few network requests + * Disadvantages: + * prone to missed events when connectivity between Home Assistant and the router is not guaranteed + * Examples: + * [openwrt_hass_devicetracker](https://github.com/mueslo/openwrt_hass_devicetracker) + * your own custom script + +### Event-based device tracker + +This can be achieved by running a simple shell script on the OpenWRT router which calls the appropriate Home Assistant service. An OpenWRT package which does this is listed above. As this method directly calls the [service API](/developers/rest_api.markdown#post-apiservicesltdomainltservice), no special configuration is necessary on the Home Assistant side, except for ensuring the device_tracker API is running, which is achieved by adding the following to your `configuration.yaml` file: + +```yaml +device_tracker: +``` + +To get the best of both worlds, you can combine the two approaches, running both a periodic device scanner and an event-based device tracker. + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From 4070d0a009e5c9f38f6dfa5fcf65b6f1875b37e2 Mon Sep 17 00:00:00 2001 From: mueslo Date: Fri, 9 Mar 2018 12:19:26 +0100 Subject: [PATCH 02/33] Update device_tracker.luci.markdown --- source/_components/device_tracker.luci.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/device_tracker.luci.markdown index 621f70a9054..16f8b5d7431 100644 --- a/source/_components/device_tracker.luci.markdown +++ b/source/_components/device_tracker.luci.markdown @@ -12,7 +12,7 @@ ha_category: Presence Detection ha_release: pre 0.7 --- -_This is one of the two ways we support OpenWRT. If you encounter problems, try [ubus](/components/device_tracker.ubus/)._ +_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/components/device_tracker.openwrt/)._ This is a presence detection scanner for OpenWRT using [luci](http://wiki.openwrt.org/doc/techref/luci). From 933c3b3cd2e7d9535bec1618f1ec84052ada93d4 Mon Sep 17 00:00:00 2001 From: mueslo Date: Fri, 9 Mar 2018 12:20:03 +0100 Subject: [PATCH 03/33] Update device_tracker.ubus.markdown --- .../_components/device_tracker.ubus.markdown | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index 3df045db24b..54e25ebd9b1 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -12,7 +12,58 @@ ha_category: Presence Detection ha_release: 0.7.6 --- -_This is one of the two ways we support OpenWRT. If you encounter problems, try [luci](/components/device_tracker.luci/)._ +_This is one of the multiple ways we support OpenWRT. If you encounter problems, see [openwrt](--- +layout: page +title: "OpenWRT (luci)" +description: "Instructions how to integrate OpenWRT routers into Home Assistant." +date: 2015-03-23 19:59 +sidebar: true +comments: false +sharing: true +footer: true +logo: openwrt.png +ha_category: Presence Detection +ha_release: pre 0.7 +--- + +_This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/components/device_tracker.openwrt/)._ + +This is a presence detection scanner for OpenWRT using [luci](http://wiki.openwrt.org/doc/techref/luci). + +

+This component requires a [workaround](https://github.com/home-assistant/home-assistant/issues/1258#issuecomment-252469880) when using luci with HTTPS and a self-signed certificate. +

+ +Before this scanner can be used you have to install the luci RPC package on OpenWRT: + +```bash +# opkg install luci-mod-rpc +``` + +To use this device tracker in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: luci + host: ROUTER_IP_ADDRESS + username: YOUR_ADMIN_USERNAME + password: YOUR_ADMIN_PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): The IP address of your router, e.g. `192.168.1.1`. +- **username** (*Required*): The username of an user with administrative privileges, usually `admin`. +- **password** (*Required*): The password for your given admin account. + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. + +

+Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. +

+ +)._ This is a presence detection scanner for [OpenWRT](https://openwrt.org/) using [ubus](http://wiki.openwrt.org/doc/techref/ubus). It scans for changes in `hostapd.*`, which will detect and report changes in devices connected to the access point on the router. From 7ba9794a09eb5da22e51cdca904c2b6fd180c996 Mon Sep 17 00:00:00 2001 From: mueslo Date: Fri, 9 Mar 2018 12:21:49 +0100 Subject: [PATCH 04/33] Update device_tracker.ubus.markdown --- source/_components/device_tracker.ubus.markdown | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index 54e25ebd9b1..5f9cb6206ba 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -12,20 +12,6 @@ ha_category: Presence Detection ha_release: 0.7.6 --- -_This is one of the multiple ways we support OpenWRT. If you encounter problems, see [openwrt](--- -layout: page -title: "OpenWRT (luci)" -description: "Instructions how to integrate OpenWRT routers into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: openwrt.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - _This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/components/device_tracker.openwrt/)._ This is a presence detection scanner for OpenWRT using [luci](http://wiki.openwrt.org/doc/techref/luci). From c8343de48ed17c8c805819e48f6004fdb3c3b017 Mon Sep 17 00:00:00 2001 From: mueslo Date: Fri, 9 Mar 2018 12:51:12 +0100 Subject: [PATCH 05/33] Add linkable heading --- source/_components/device_tracker.openwrt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.openwrt.markdown b/source/_components/device_tracker.openwrt.markdown index 4c319341590..a5e0f0c349a 100644 --- a/source/_components/device_tracker.openwrt.markdown +++ b/source/_components/device_tracker.openwrt.markdown @@ -35,7 +35,7 @@ There are _multiple_ ways of integrating an OpenWRT router for presence detction * [openwrt_hass_devicetracker](https://github.com/mueslo/openwrt_hass_devicetracker) * your own custom script -### Event-based device tracker +### {% linkable_title Event-based device tracker %} This can be achieved by running a simple shell script on the OpenWRT router which calls the appropriate Home Assistant service. An OpenWRT package which does this is listed above. As this method directly calls the [service API](/developers/rest_api.markdown#post-apiservicesltdomainltservice), no special configuration is necessary on the Home Assistant side, except for ensuring the device_tracker API is running, which is achieved by adding the following to your `configuration.yaml` file: From 3ca4b48dca858298661f1ebf8b7b6b4f729ea392 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 23 Mar 2018 21:11:53 +0100 Subject: [PATCH 06/33] :pencil2: Tweak --- source/_components/device_tracker.openwrt.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/device_tracker.openwrt.markdown b/source/_components/device_tracker.openwrt.markdown index a5e0f0c349a..2f4b0f5a18e 100644 --- a/source/_components/device_tracker.openwrt.markdown +++ b/source/_components/device_tracker.openwrt.markdown @@ -1,7 +1,7 @@ --- layout: page title: "OpenWRT" -description: "Instructions how to integrate OpenWRT routers into Home Assistant." +description: "Instructions on how to integrate OpenWRT routers into Home Assistant." date: 2018-03-09 12:00 sidebar: true comments: false @@ -12,7 +12,7 @@ ha_category: Presence Detection ha_release: pre 0.7 --- -There are _multiple_ ways of integrating an OpenWRT router for presence detction. A broad distinction can be made between presence detection methods which actively scan for devices (by default every 12 seconds) and those that are notified by some external service on changes. It is essentially a problem of synchronizing states between two remote machines. +There are _multiple_ ways of integrating an OpenWRT router for presence detection. A broad distinction can be made between presence detection methods which actively scan for devices (by default every 12 seconds) and those that are notified by some external service on changes. It is essentially a problem of synchronizing states between two remote machines. * __active scanning__ Scan for devices regularly. @@ -25,7 +25,7 @@ There are _multiple_ ways of integrating an OpenWRT router for presence detction * [ubus](/components/device_tracker.ubus/) * [luci](/components/device_tracker.luci/) * __passive/event-based__ - External services which notify Home Assistant of devices vie the [REST API endpoint](/developers/rest_api.markdown). + External services which notify Home Assistant of devices via the [REST API endpoint](/developers/rest_api.markdown). * Advantages: * devices typically registered in under one second when they connect * very few network requests From 874f7fb54f6005513a20c43e2e523bff442c0c11 Mon Sep 17 00:00:00 2001 From: Jordi Date: Thu, 5 Apr 2018 22:54:58 +0200 Subject: [PATCH 07/33] The distance is in fact measured in kilometers not meters --- source/_docs/configuration/templating.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index b8752c54ac5..e2c345df0fd 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -74,7 +74,7 @@ Home Assistant adds extensions to allow templates to access all of the current s - `utcnow()` will be rendered as UTC time. - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. - `as_timestamp()` will convert datetime object or string to UNIX timestamp -- `distance()` will measure the distance in meters between home, entity, coordinates. +- `distance()` will measure the distance in kilometers between home, entity, coordinates. - `closest()` will find the closest entity. - `float` will format the output as float. - `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format]. @@ -189,7 +189,7 @@ Closest to an entity: {{ closest(states.zone.school, 'group.children') }}{% endr Since closest returns a state, we can combine it with distance too. ```text -{% raw %}{{ closest(states).name }} is {{ distance(closest(states)) }} meters away.{% endraw %} +{% raw %}{{ closest(states).name }} is {{ distance(closest(states)) }} kilometers away.{% endraw %} ``` ## {% linkable_title Processing incoming data %} From e4e0e30ef540b9e5570dcb81a285d0308e677396 Mon Sep 17 00:00:00 2001 From: phispi Date: Sat, 21 Apr 2018 23:19:55 +0200 Subject: [PATCH 08/33] Mention possibility to support a "stop" group address. My KNX device has a "start" (down/up) and a "stop" group address. It works perfectly if I enter the "start" group address in "move_long_address" and "stop" in "move_short_address". However, I only found out because I found issue #10624. --- source/_components/cover.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cover.knx.markdown b/source/_components/cover.knx.markdown index cd620f15634..d6d3733c1e1 100644 --- a/source/_components/cover.knx.markdown +++ b/source/_components/cover.knx.markdown @@ -37,7 +37,7 @@ Configuration variables: - **name** (*Optional*): A name for this device used within Home Assistant. - **move_long_address**: KNX group address for moving the cover full up or down. -- **move_short_address** (*Optional*): KNX group address for moving the cover short time up or down. +- **move_short_address** (*Optional*): KNX group address for moving the cover short time up or down. If the KNX device has a stop group address you can use that here. - **position_address** (*Optional*): KNX group address for moving the cover to the dedicated position. - **position_state_address** (*Optional*): Separate KNX group address for requesting the current position of the cover. - **angle_address** (*Optional*): KNX group address for moving the cover to the dedicated angle. From b4fb6b7695470685abe7eadf0095cb0ef510cc7c Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Thu, 26 Apr 2018 00:28:19 +0100 Subject: [PATCH 09/33] Tidy Folder Watcher component page automation. The automation on this page was obviously created by the automation editor and was super-ugly!! --- source/_components/folder_watcher.markdown | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_components/folder_watcher.markdown b/source/_components/folder_watcher.markdown index 88b19937e0e..656c1097ea0 100644 --- a/source/_components/folder_watcher.markdown +++ b/source/_components/folder_watcher.markdown @@ -62,19 +62,19 @@ Automations can be triggered on filesystem event data using a `data_template`. T {% raw %} ```yaml -- action: - - data_template: - message: 'Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}' - title: New image captured! - data: - file: " {{ trigger.event.data.path }} " - service: notify.pushbullet - alias: New file alert - condition: [] - id: '1520092824697' - trigger: - - event_data: {"event_type":"created"} - event_type: folder_watcher - platform: event +#Send notification for new image (including the image itself) +alias: New file alert +trigger: + platform: event + event_type: folder_watcher + event_data: + event_type: created +action: + service: notify.notify + data_template: + title: New image captured! + message: "Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}" + data: + file: "{{ trigger.event.data.path }}" ``` {% endraw %} From f1cc2e0edfc606db945b79113a9780cba3211ec9 Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Fri, 11 May 2018 05:04:25 +0100 Subject: [PATCH 10/33] Update folder_watcher.markdown --- source/_components/folder_watcher.markdown | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/source/_components/folder_watcher.markdown b/source/_components/folder_watcher.markdown index 656c1097ea0..b590b01653a 100644 --- a/source/_components/folder_watcher.markdown +++ b/source/_components/folder_watcher.markdown @@ -63,18 +63,19 @@ Automations can be triggered on filesystem event data using a `data_template`. T {% raw %} ```yaml #Send notification for new image (including the image itself) -alias: New file alert -trigger: - platform: event - event_type: folder_watcher - event_data: - event_type: created -action: - service: notify.notify - data_template: - title: New image captured! - message: "Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}" - data: - file: "{{ trigger.event.data.path }}" +automation: +  alias: New file alert + trigger: +   platform: event +   event_type: folder_watcher +   event_data: +      event_type: created + action: +   service: notify.notify +   data_template: +     title: New image captured! +     message: "Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}" +     data: +       file: "{{ trigger.event.data.path }}" ``` {% endraw %} From 1123cf688480a8a2be9ab78646be74b06835e70c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 11 May 2018 22:25:33 +0200 Subject: [PATCH 11/33] Add articles from SmartHome University --- source/help/index.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index ab93fa10350..84b6d6b5d52 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -52,7 +52,9 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). - [​Home Assistant lets you automate your smart home without giving up privacy](https://www.the-ambient.com/features/home-assistant-automation-privacy-582) - May 2018 - [HackSpace magazine #6](https://s3-eu-west-1.amazonaws.com/rpi-magazines/issues/full_pdfs/000/000/013/original/HS_6_Digital_Optimised.pdf?1524495009) - May 2018 +- [SmartThings vs Home Assistant](https://smarthome.university/smartthings-vs-home-assistant/) - April 2018 - [The winners of the Thomas-Krenn-Awards 2018](https://www.thomas-krenn.com/de/tkmag/allgemein/die-gewinner-des-thomas-krenn-awards-2018-stehen-fest/) - March 2018 +- [Best of Open Source Smart Home: Home Assistant vs OpenHAB](https://smarthome.university/your-smart-home-platform-home-assistant-vs-openhab/) - February 2018 - [Hausautomations-Schaltzentrale Home Assistant auf Python-Basis](https://www.heise.de/ct/ausgabe/2017-26-Hausautomations-Schaltzentrale-Home-Assistant-3909532.html) - December 2017 - [Using Home Assistant the ARTIK Cloud](https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 - [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 From c4b17aa46764fae00893b8538707eb1d9ee5e48f Mon Sep 17 00:00:00 2001 From: Matt Schmitt Date: Fri, 11 May 2018 20:24:50 -0400 Subject: [PATCH 12/33] Add sample config HomeKit (#5351) --- source/_components/homekit.markdown | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 7ab434c8902..5ee71d0b971 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -23,6 +23,18 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap If you are upgrading Home Assistant from `0.65.x` and have used the HomeKit component, some accessories may not respond or may behave unusually. To fix these problems, you will need to remove the Home Assistant Bridge from your Home, stop Home Assistant and delete the `.homekit.state` file in your configuration folder and follow the Homekit [setup](#setup) steps again.

+```yaml +# Example configuration.yaml entry configuring HomeKit +homekit: + filter: + include_domains: + - alarm_control_panel + - light + entity_config: + alarm_control_panel.home: + code: 1234 +``` + {% configuration %} homekit: description: HomeKit configuration. @@ -44,7 +56,7 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap required: false type: string filter: - description: Filter entities to available in the `Home` app. ([Configure Filter](#configure-filter)) + description: Filters for entities to be included / excluded from HomeKit. ([Configure Filter](#configure-filter)) required: false type: map keys: @@ -69,13 +81,13 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap required: false type: map keys: - alarm_control_panel: - description: Additional options for `alarm_control_panel` entities. + '``': + description: Additional options for specific entities. required: false type: map keys: code: - description: Code to arm or disarm the alarm in the frontend. + description: Code to arm or disarm the alarm in the frontend. Only applicable for `alarm_control_panel` entities. required: false type: string default: '' From b84ddf52eff5fa3caeefd0f440cd5b6d6225db43 Mon Sep 17 00:00:00 2001 From: Thijs de Jong Date: Sat, 12 May 2018 15:04:39 +0200 Subject: [PATCH 13/33] fix spelling mistake (#5357) --- source/_posts/2018-05-11-release-69.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index a11190aa887..f5067aef6a8 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -13,7 +13,7 @@ og_image: /images/blog/2018-05-0.69/components.png -Not much time to write a great into this time as we're hanging out at PyCon! Some fixes for the Hue and Wink colors thanks to [@amelchio]. Initial foundation for users has landed, it's not anywhere near usable. We'll keep hacking on it. Google Assistant for Home Assistant Cloud now supports room hints. This will cause Google Assistant put the devices in the right groups when you link your account. +Not much time to write a great intro this time as we're hanging out at PyCon! Some fixes for the Hue and Wink colors thanks to [@amelchio]. Initial foundation for users has landed, it's not anywhere near usable. We'll keep hacking on it. Google Assistant for Home Assistant Cloud now supports room hints. This will cause Google Assistant put the devices in the right groups when you link your account. ## {% linkable_title New Platforms %} From 12ec83dc38354004965a0de73c28ad064dcd5a6a Mon Sep 17 00:00:00 2001 From: KaiboshOz <16894159+KaiboshOz@users.noreply.github.com> Date: Sun, 13 May 2018 00:32:46 +1000 Subject: [PATCH 14/33] Add fire_event details (#5356) Add the need for fire_event:true added per #14102 if expecting the included example to work. --- source/_components/system_log.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_components/system_log.markdown b/source/_components/system_log.markdown index ef3ba0f5ed2..c537ba79b09 100644 --- a/source/_components/system_log.markdown +++ b/source/_components/system_log.markdown @@ -27,6 +27,11 @@ max_entries: required: false type: int default: 50 +fire_event: + description: Whether events are fired (required when used for triggers). + required: false + type: string + default: false {% endconfiguration %} ## {% linkable_title Services %} @@ -55,7 +60,7 @@ The message ("Unable to find service..."), source (`core.py`) and level (`WARNIN ## {% linkable_title Examples %} -Here are some examples using the events posted by `system_log`. +Here are some examples using the events posted by `system_log`. `fire_event` must be set to `true` for these to work. ### {% linkable_title Counting Number of Warnings %} From eef07e33b7e47efcbcee54d80ffd4fe97519825e Mon Sep 17 00:00:00 2001 From: Colin Teubner Date: Sat, 12 May 2018 17:02:01 -0700 Subject: [PATCH 15/33] Update entity-registry.markdown --- source/_docs/configuration/entity-registry.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/configuration/entity-registry.markdown b/source/_docs/configuration/entity-registry.markdown index 6c75ad8dfed..1b63be4a710 100644 --- a/source/_docs/configuration/entity-registry.markdown +++ b/source/_docs/configuration/entity-registry.markdown @@ -42,9 +42,9 @@ light.study_ceiling: As a user, you can change the `entity_id` and add the `name` and `disabled_by` value to each entry. + - Changing the _first line_ of each entry will change the `entity_id` of the entity throughout Home Assistant. - - The value of `name` will override the name of the entity as given by the - integration. + - The value of `name` will override the _friendly name_ of the entity as given by the integration. _Added in Home Assistant 0.64._ - The key `disabled_by` can either be `hass` or `user`. This functionality From 5710f1b19187d5e1ab15be7d8fbb26b63f914826 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 13 May 2018 14:52:49 +0200 Subject: [PATCH 16/33] Update (add new screenshot and fix service name) (#5361) * Update (add new screenshot and fix service name) * Update link --- source/_components/notify.mqtt.markdown | 10 ++++++++-- .../images/screenshots/mqtt-notify-action.png | Bin 0 -> 35944 bytes source/images/screenshots/mqtt-notify.png | Bin 5657 -> 60697 bytes 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 source/images/screenshots/mqtt-notify-action.png diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index 3f2cb633a9e..d0718b11735 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -14,7 +14,7 @@ ha_iot_class: depends The MQTT notification support is different than the other [notification](/components/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. -**Call Service** section from the **Developer Tools** allows you to send MQTT messages. Choose *mqtt/publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +**Call Service** section from the **Developer Tools** allows you to send MQTT messages. Choose *mqtt.publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. ```json {"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0} @@ -24,7 +24,13 @@ The MQTT notification support is different than the other [notification](/compon

-Using the [REST API](/developers/rest_api/#post-apiservicesltdomainltservice) to send a message to a given topic. +The same will work for automations. + +

+ +

+ +Using the [REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) to send a message to a given topic. ```bash $ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ diff --git a/source/images/screenshots/mqtt-notify-action.png b/source/images/screenshots/mqtt-notify-action.png new file mode 100644 index 0000000000000000000000000000000000000000..bbb82abfb28391b8b7fd631be4974513f935ee24 GIT binary patch literal 35944 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 literal 0 HcmV?d00001 diff --git a/source/images/screenshots/mqtt-notify.png b/source/images/screenshots/mqtt-notify.png index 4c93fe1d14d75c3dd1a6f876f926f40cc95e9914..5b3f496ddf816581faa9febfde1698665b5a5f96 100644 GIT binary patch literal 60697 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

SnGT3?n3rx!k6L+< z(&s|r#`KpPW3N3wHsAJ`Qyt)NB}jV(jq?~|<89Bb$tW8~(++l@^|tkpYci0Madu8! z#^mI7k^53~lR*Pzd<^I>ky9llDe+Zr=Hxhym(C;(dPGn_$0u)@i4cQn%<*S0U23*+ zrLLHW^Ig_XMcsrLNQ&dNp)#s4(&I;e6!N>i*j_uWBs+=`Y?*Yi=v24vM&*_MR~Bif z_HO!?2)`*XPz9?7Sp6EM!P#Cn)Xd5jty}+znGB`e&E(|mOf8YTWae?l0T}xCVz|ImEr2-xC?fq*$H5ElP$f@C zq$e*JOiHV1OYxmd?xP($tYO1VUyT*bx zD(dE9C(rM^{5HNHkkA&qa#{FGW*2unW^ASmI|e?;bGXeY+$AGnB};bG*_zvrZ@_dqf+vtkR@BT2 zvj6Sue-Wi-ENJ{c&@^fdUWyWrf1oNuuC!qCUK~=}##I#!7xf?=LnZs_^Q(?BP;YejvQG}=tvhN~ zZkUpw#prjFdF#@NSy@?0s0fc+<(NMWWSL=Pk$_QR2+a)2;9OBW=X7Kw=(0u7=>KQI z>Y(R4qw~UjWM3X)%Tb2%yseILj*w5VB%&VQBo8W{shAT_+#lVcjTB^sKb0vTUerbi zsDR-IMc~SGuLxWTQz?gxlX*X)t)SFPeDcJPvRlb;%V`cgT_9uq{?wLCWiIr;S-G=J z12hahnFJGQfXTD6S4L_t`W2-4cs`1Ln5b5lNA~nbGkyj=um!J?!t!aehyLQCfV=2f zhC^un)0k*c+;_Rc1(h-b!HQz9xA#pZEuK7!p<|ZPhRp%D=u^aS0Vnv&*AAP_P?gO% z$aEYiMPQ3)KjZy=^mEW0{?JA{reFi{h!G|kJo{Urd;Q6L{|1}?P&zdCbMMxTb|uyV zV**^Nf}hGn3|R@z_4HKFMOu?x$~V4SIhbBvXW&4FBpMTxav2keK2yt}IFdneQc~LC z<%#cNWXYhI22O5K{Bznqd&P@s7=Ql1yj$MJqg4d*qb2og9kfbXriBTP@FQ3BzD zXAcyi<%F8h7aZg~LIenpdlXiAHxIriqZAPk{+q5y{!U{qGF5qC}Eu#qR zT91Bhm03k$rGSh_Kw8O1dvYuyD$4d&yseqpmoldxmKv?oQ>)$9tT828czeFj%QGey z`$@aE@BrVp0G=Vx6Zcok(vlKyPxj89tb^M|1dTX|Bq^Ykz6RWC7zres=^8X@+bY8h~YL&i|C)eEP;ze<&2NvU; zhhrd=`kdxni)vbbWN4M9PmW?q19{lo?w;qF@hxc;ndc;5#jgLOH zCL6VqF#$yWoZ{ryUjyHAc6E2Z_Ul`Rhx>2q*s0U$^di(Hd7nS`Da<%OwnkM&rB_B~ zrU}o>0$1(4w{N>`0ANm+0SamjMOhtnuS~stA(#FokP4dFy>1o zGY|#L7f-(Y3|)Ew&5`_i?!9n2W@m;#f}~SvK0OwGvRXiX9^^PA$N{%e@%O!dKyR`< zN~TW3_>b~51g$g)*0d=SHY9Vyo;`b7w`gI0Z1v&3+B<837EM0BycoqR4MU1H1`(1k zU%IC}ElznlLIca9!beB9%3r{-VjLTw(`od3@(3Z6CtF`%9pnB5XSMEp8B>0n$%G01 zF57k7kwm3S85c7lgoS+3v9ST%OnLAzj*pG3&(GV{>CE^l>J#Tmfxw+zr%dsCa%q{J zCagjxt6f;g*t>w(*99Z0b1+T8=O{6-P=q3;r)0g`l20 z&Q$5x1U`*3Ezz0EX@iZN@^M9pLHH8Jov*nUa$AUMyTUlfri%`C=DxOW-CDk`rjCxq zNAO5@Th3&-TpTwyHwzGS%hIou9PD~otXcTt+?YkG=FcK1Wm4X<^~#&m8S(w#1^-zk z)sLn~3`4Xujtt`Lid#n*gnp#UgqPWrxZ%7qQ$Dr4OCGWsm{S4a@5%HnWG>&R!dI6k zn~Wdt*LsJ~j~O$9;#}inS3ZR$_K%gpPK+i@x$H9t9t$(fnfn1qK_k4$iiF8w%@PwdF$Sa_Q}9nRN0`C<-( zOg^yX8lP&XRjyGB^+eKFS<5;daZRP*RI`0aC?=n)A=vJG{o=x>Ce6M;Vp479Gi)j| z+2SbQVZOetc(e2%%f`Jo(BJiSKfodM}L_iGM^;NW98Bgij* zmW-=3=;ChPy$>-R$->2Zj*dB;NzTxitT(?Io*x0nyVp~tJSxH>e22+CsLVt)9fJ40 zd-tZyjPhfXwX9_1p@Xr_Me{0gTDOXl-J+++Hwl!-@ z^BRgJJ8h^K329ir^Qfu5eC^}mnec56V`#cL9v}$adh{3*-UlKz#Xpw9*yKPC_<>kU z)1QeLlD3Qk@AeMm!$vVyL3odqKbAYaIlE8y&riAFpa1^Dhi!)sccT}fOx%0$-~=Sb zIGrfnU@)Hm6at2gc6Py&6W*EMef<1--kl`StJ_BZU(vxQR$2F-^ffo^#ISDQ3pRU(?pcy~`*EwHQ=%c6PbW;W*a!xOz`xQuz|ZE&jDpC@Uds z(4=7d!*ZU3DdU|e5`b0WUX8RpJ(edFcI;R*Nwtk0eg0jt7^!oTV*_wZ?feH*+Adza zSWsJPanY;V9bCD5x!~m@6d(qO7(Ofz1-+3`eZU6qsP@dSf0&u=k@I>j zeprh2N)wZaK!-=aK|yMr4+p$m>!7lk2`Z^Exn2$)1}vE2U>wegn|=V70Ac6BC$=J> zqNf2ky8I+)rqk+=h8JRbb0gwveu(9=F>Qb>YN8-lh@2z*d*l5%jtiS(N&IAA`TlR8 zQ!h-I;Ai;$+KZ)isVgQ&e*Vbe_MW9RIDe;wipuj=`KXlsDEXEeu^dL}wDShbW#lu_ zdCKYyrYNPE0)}0N72kma2bd(g)mzo8)FiQXXG&~^asn7WibXp7ZgjXZkpX5Fk<+LI zjldijC3yAzg9jU;bK#l=R#uvX>W05Pvzv>x4D%NV#04+Tc7uXLZ<@6E%$d1?F-HO$ zK$MHdYFBiC(X#mD9JiTSJwj6~)E&glhh8MG_k+}jAnVE-Z$7`Qr)6MZ8)+uH(*KL7 z-{O{r`>g1xm>%4zujO#uIwb!(^R_3NbXDNJ6FFdabiaj@yM~8HMrI+8lC2v$s45xP zSx2?BBUBIysnx|S1$~F?2xJAVPH60*J^-Kk^rwH%8tj9$I2ktQzf2oMcC6nz|Mt#~ zu{#1c9$P)>*|jNi7cNY}8A<#EAzrm~eyd;K!rWZkIi$QNfzWXTXuejF?%C>AgOuw9 z6RZquS01$`m6?8+;*fp#-yF3~Ivfw_q0Zpyq*Ny-s zv+VeVZLo5!f!4ob(Iop}fgsVCE!n;%#{cB7K{37gWgs##>j0A_8|#pXK7wXKTR#2c z+I|yC4t@JBcAX3TEPX>fGGb3|e|~uRppv=qv#jGzU=FdDzcU*NAzK@U}~qoJm<6C5&!Hc20y!zARW< z*wmT&3r^PL^=#|TJK`fsYgO7WCf26TE27*Mh_>6Y!=j{}v+&&W|JyBMqEQL=VIp~+$M7MO7X z@W9i}!@m(|cSh$+*Ad3+yH}jubT3n4XXe8&0iD_&*LVA>)jBF0O4_@su=Jg&Th+=5 zKP*-AJ!+{~k3LzS0@e#*E*jnF>upt4ClHJQwcJl`&&z=x_k>%f_!`St0`ZZ#mXwqu zBui-fRNL&~D?aQ^aU5kL*0MM!a+we-nHDbhyBa~tx&`WxpV5+*kE-APN{%QNj)2BrO!4!oofO~}qR8&IM)h4q_HFwdkwZwUxO#J|Cg0Ix)?JaZbwf-^V zsVPM5hW{Ao)~O~vg=Z5-3m8z0`(^NjC!1n=GioQv^k`I68k3Q{sdpr9*w(o8vCeDR zgbhM-8N`QX8;RUwS_b8ED{E`#|D5%xUXtQINJl3J%s7vJQiM$T0gTjbgX>8(Nkz5^ zBr1#S>GR;V!hj>SmbmOkR9_EOK7o826$TOMCW5gP`%Y#5?bt}=BGZ>V5Ww8?tG?Kv z(||t|u=>GWKn-PJGlolLI0kKA0`(8CIvW?JdO^TtkYmEE~+-Oz{dmmkw^_`APkB@)9pBK8IA zI`+iDamI`pGEU80%FtCsorrh=x1nDI8WDpN-1fWjcm?n4vf>9$ASu<}5lAetD}F!; z%4qoBAzuSF%VR%!^fnJoG;1h1Pg}?A;5ztsm|s!+mTjeHF%1)W0Sp?lkzC>yZeAsD zX(GVjW=Nl%arJlL4x>D7ivMc2(#Q`$Vq`MDDPjLE@ur$E@~dnK{( z2BEia)AQx6tUXfmZ0a%Xtf-T-@cKhS*iIH-AgAEz<#M)4&pSCeU8acJuCy=Kb${kY z-9ZHzrLp%ZRO4!E)>P)5o%<`14H9kGTYnrwxzn+7{alGyif8;}Px?i>;@>=ul!%ad0 z48R*II^@UG+nxq=0w;g-_U&lAAH-jWVM?|1{sRUaraa~J2d*xPhO`mHmG?tzkMOEs zJ@R&@ricOa!BbykW}b3?y%NcQvCk%|Y%wiBa7KZz_v*z9nQ(~)$p=M#feP&M%sn>u zngfI~f84X`zGe`bF)`Mz@yH&j&w`t#yjb?A@+Ry6<-Lqw8kYE*PU!`27Y zmod#QR25ZnUg8qwc}U3&c-;p0Lhup2EY~Q*w$eocH>E-)xR7A++zgIHI=3=#qO9%V zUVcsP6$-CZR}{7@_1rl@@Euqd-sRb}XTdR&P|+wq#G(YIw>@LP$b#|%T!8dN4G7Ps zWO&?=QvYp!egfTdCGx*16Hlin(qyKD3neAQ{#FywOj&8bw6lR<;Ww$fu=-6qXa{;7yZScj|PH8@m}q zl)oxA#D^HETG&95;(L+Ah3>xJxhM@3#FQp7_YE-oh=^wJXFFBZS?`)B$_y?PLVpaJ zVM!brTt1YMZ?TZ~5{vGRZo>d~3wluM51Ld`3ona-KD;T(8_C^y`5tw~_A;r0LxaMz3b> zraUn#R$IgJ_=)@-9h#?2ep3E<=kEJp7H4Uy^R>KUV|BB#vcScS-Ih5_dil=b#1t*r z3djpZD8ts_Rw^oiftmf%s+z5GaWNb-rY;Q`>O{uqrNL#H#2d_3=pjNoo^P}2r}nHX zJe@6>*Eg6EAtuGeLfhKRNI7aWb?P(IS;NapN+#J%sy>Ci_+Kkl*fZ}QHS_t^duZQ) zp;TOR&uUo1HGaT8By;&n!-A4ip|&)evVhAvrV)y(=dZ4=vR%0{);gq;JRr-t5ZP!y zU8>T+oJYRTNl5gKpFn!b9Q|E z!wcL0uj0-;uI9Y$<1u4IH$wJp(zGav%-E}u8Y)dBDn_-~zn=TQ=XF2NKhOM?rt>@J_dDP3^}Vjo_4$0R-vf!}FUTd^7N+ynt0l@OCigs#(JBrl zvaf<5ONldM@9fT&DUm>XVn;HJsGr`VYm733NQ?vbsg#E_-jC#dxvOO}3J9eZ`{I9svi zMWab1NZ&X7lW$d{!J8fFCdaMP4pGO;lgfVgEUPtVX)DoP03ymwCMui6RAxH z(wXZleqq6L#1DD3Jasx}pVCRx?!{d6GQ)i!^;kJjnVi-cJ(LE zja5F`#@kw5U$J{!vwV=cIh>EB~$DP9PYq9&eF%o9wS2n3({vw5YQ3F8diPkj5p;vaVbyPRw&wV9n3`c}uFZTIELw zvBG(SL2Za3V>($mMwA}NNU-ZtJ*p(lh=_50KP&|zRIrzux^`h}(nmoJr4LHMHjf0A zOoGOuih@M9z)agVZohf$VbC{v-HglO1l|aQA}u$*9i=aP)&Q6W;GJyVjrjRi(_L0I zlT(Uh8W>d+7noErujx)~+#Z8&{m1!;ysx&+1wB1Ip;(b`(@&Qk0Tms+dEQ{)AZaax{!`de=YssZ@&3*io?3rkC==BLirrnOL&~n zj*Z-9De}-@eoG2M@>5fn7GAl(oP{8hw?VvMUu2N+w}0wS#z6<(NIGY52(oxgf%?xn zP~q@Vs$sDS@t8%UXvD2udf}7<^GNuBN3|a9)Qot4oNgr{=NOqnW&*9ANR@86@g|>c zCjFXEAr%L?9>$C~ZvO^I+Jj8gKT>m{2AM}0E3QfG5^A=%JIqNl6^afik2Ex)*Dh}L zyN@^0jbP9eOm{Z=xzjFv0S<03!;I8k8m!sbQ>4F(r4TZ?K`RdsxZ^=)2#Mm&P9})- zLG&RWp=DXfrT|CvX5( zJ65s{-9R&ra!6)AgLsHTQJ*DCD!RN;YO0>uwQYfKpAK7qeAAK4%x`~@Ae%I##9@jg zo|2E;_wfaM&ZSP~5XcVY zOA-SL%qM?{=({A(FpWxiMW)c}tYl)C_-Gz4l+F5*#$qodT7Y zGpWX%?zC+`4isE>J0M~emkIhaidbFXQ!6{WVDiSYC2L6papEDS|4t$+28!3N1;I6t zVJn&YO=LhCj!j4D>kCTzn~wC#_JWb6VzG%=A zriPYFSBTuf_Q&A?Fd}EFm6VoRAzPy&5qc5rCAx5prn9@KCc91f3yog;DFO`L<>DG+cCGG+5lPu+?YI!(;<)`1j<&!-rklWfB%Q!` zO$INW5u=ZP^tysg0W((Gh64&_Hk0&45Y{uF87gh#%vmYOCM8c6RXFjrjazS)jH6v- zPImTO7+z{3KEUS!lwMIo-3!0-@I`YzQ#p`;1nbXXWpwAxK2O*3~WB^rW+;LPQ3l_s!1Ep5J1wuHC-gcH1ganN1;Phn~#o z35JRlqu2nBroP2faUMA=izdZ3*=i61#(>S6zapDN@f)oq3?X#BKmP%?be0qo#2?Wb z!l7h9*NgqH_u<-x^ahst9-?6l^=h|Khiz36p!AFHL+U>fvd>KchDuyP7N?CMm_;R8 z9aJ7|4)xZJH1KV! zlhuEPRPjz@cJlVDf$$R!)Gu{g;a0eY#NX7|+&qkH#NKsAE609kq)Enu2h(k4YgQ$3 zBll^2C5~I;Q=_|{@LIO#53pk@GApcYSxU8=((=U-d!Wj;t zF@cb$@zY5X=fxwFzChA4!^X}xjIG&KOY7(edpa+0NbqV4-m|AOw1A^3)x1TEq&J5E z$oi{f-U<*xc%rai;TIaLFsIFkp?t)MWgILVPji+!lKULk*s@DjxO$7xp52^hs&lke^EEh z!QoVPC5hW1Nh>7VS+nL(@9Wdm->q~TQ=Uc#P*h_qf|X_8Z9-zA3=n}; zM8uWzE@Y(uTKN54fz0rEP#vIs@VXn$3V$KDf)hw15uVU#fIiL?JCgBXBS*GPfApv) z2|o>5dnj_4z&xj4VB2qiUv(?m>kvLPgaJkD=-xCLA+S==JP@_aZ`p{*ae@;Qy^eU? z#Iix==RU@wTx3Wj21VQn{P9$mNZrqkknQrwh*kZ0~~%)nf<* z7se*$#l@428zb!s`V|? zKDjSk7_zz{$RN>eOr=bevS?`*(LY8B?`mosH8LsBP&gWrCW&Cz2@nq(8ij*-qt$_l z6DDlr3E_UWfi)%Cq9;$99^_3@^k#3(C$tHZ5RF+xT-;rf&6iA_F?Em`q%hk#o`f4p za|TUMgkl#1QUzuJ8KFL8YIzST9(^Mtjb+O!2R>2(A^6&fPX4#U&f{8?LpU|IeP$eei}sb0ghe3|&QziT^7#Yz@fUkm@f0T6b!Ps)83aMnyN4X zAy)0HMLG5H>2{G3p#9-X+H}lrYrMWmzo=17nqpZawn&_2#?`$VJ@d(paEF`=z>&4i zH-wtZxgjF0tL4__nj2Gpy%}nHZPsU5Iy;Px{QAU#l;-ygsw;Z=(jf42g;{9R<@wg+ zAECH#|Pia^j!= z`_fmdf-C)9M&~&EA71|-m%b^(FR#bMi1cRgtL0mJU`j0Yy)vz(v3$VhP6KvQ5JK!V zxEz-Hku-iH9HBy&kCcc=+Pckz+U`Sy3ibRA+y>2uNF+T^c$!e=^e4GKcl6@a!BR*C z1*PQ1lch+ZE55W`sf0HoUv^v7X_KagN92_KK4y zq=B2n0-<5rUKkspwF)f&N1kp$2Q}=b@6ZtpHd_x?eL695T}%>Q6I+9Wg|3XxcmM?i z?^5sRl{$$1Jsi;5h}(25w$9k4S=^Xld*O>y!I6;*Y`n*(NO?|U+?sG}N7|(&T>t~; zlTVk#oh5Rcq`qN&FS>uM1F44^wl9@lUUn=Abk+wC>iTz_w$-s*`GY-=@?%qjKJYtl z3$;vx!tj(rUr!GvkQlH6g7M_`goSlXCz=Go69F^Fq_H3S52_3k-JL^7XRa{Cj<|{$ z*?4NlM+`cdIRN5o)ZkfD^0QdnB8QL);FE$qCcgL zY86_#ut60^q`w16j`pkxYCVzQ` zK>S-A*I>m$+_j=w5LyeJCR^8EUvF-4Skk^@M{!dCFAlH%h!A8il>tYrxcZXO2^pBi z84U=1N*!xH>UqD$_?#Q}2RUQsEag9h?ZJZwBR}&1+-bACw)poWSCY)YFuSv-$blA6 zwX+tWWawyXA4#v@-rHhRWeIyzMv(!ki0vc#nD!@TsT=q-Gg9L|UPicE+(9EendFI+ z5R}*Oc0Y5!p4?PfRq;+w?ab}Y=07t#%9Prfp-3B8%_YyDxB8yH=iy1kabi~TPOyBL zF$M5hUAo0^$dH{hktDUF^~M7r4VoI$1S%u;FNEG2YA*5X=Xsq+A8ZP*QpVWf_uC^s zgM{PT@4k~UpWHTWk%@5~r`A9*+C{zqrBWX_h4j01dGOAi(zcf7AfyTbr@)R~VDf;E zE-g%PZTGDpw#+@}w3P{mVo-p+g;2RjmpBN;mvw1=LOX61lnp8Dmm*D(I)j%V;M3xr zF0-%#_4gl3qqUK450Q-G*(F>T%?*TZ4oGw$k$(@w( z#kn67$RrK{Tyg46FZGAlFo6w86X9#VCA4=UGv={@UjED{L+W?DUte<>zd~9O&paMB zy~q%G9^QdZQlf`BE~-vLk!fJa5%qL$gI z4lrX%jFUJ7lRy{Ua!nxvW@Oc=$ws!|vZ%1O)p+w&pbO|QacAEnP#&(oU4ZuG<+C&k zGU=*?k)8*WR%OXxL5Fx`k!GLUJ3MNH_ zpp1Z-z-nspa6xj(xb<0pR@0_oFwuwQe2p(xSPD8i8!<8wFpP9Mn3@M_Ce`6*con?C zmnRU7;9ZT&F`cQ6&&m~&Vlqu|BNZobVPB?|L6uUIQ-BwxqbN|r<6$AtB;GADTP)El zm31RU0~MF#u`tOcK&nzGScwslQBe~q(6(VN#2N#_0wvyt0RsIAHD+Uq`;*c5@?eZ^ zegG)p#YPpYK?Miy7ZmHv>CtzRe@_5+(_NhZ<1U&omsQMM_C4Cq@0+0ujTD zlK}V)rvbJCavI10Jg^tF=7zKucap8e9u41p_uakw_vu+os2qMf^cf1d0In^qjFqca zHL{SmPj9%7`__@CEBf{BJ@cji!e4%|p>$FBx01;ge1-+Mxg?Zf|He)QIm>!Dqp+K! zPkfr>=p6Z<`86^B>9o8ce5AN|X*FD&urLLXqlzw=l2HXU_T#CkQ$z#BlJL- zq7Ab;_vGw8K6~GCGJoM@sLVM=O4Frz4yQYCV{Acb7#?&?aNqAayP%+eDQo%yjuT8I zrNQl0)%ediDsSXMBy2n|FtVd<8$z99T`j zOhP@JGO^`iaHr488s^Zn5j8XE)pL}fKoRr@T8C3e+otjK}2&M$^QagH5xU3vrsx%j>SRRn?cuEM%l>GQV1a zEXkhj0bA94iTZV^CqtLbNql>Srzxi@M*#E+Thv}4dRgA#^?F)~m9_PciwnoO=6(n) zt}3x??o(Lmy+u=Xug}{2ETDs%wDwWaQ}jh;H#!-1<4bB2a>#sLZxYcmQ!j$B=(~@m z6&EZ3_Qeo&uUjjJ<&Sdj-(NtNh~7~T9?rp$o_|uY2NGmxQCQ>hii&wSR+A!~WYW=(bS4U@pO+Qm2_SmtZ)WYU}z0@hXwQo)PiiY6#wbm6w7B$La z{i{o#KEW`!Yf?kJ6JOXHEq(&!EDW=w!(2n=QU+M2?GGH7kyTs&&beTV)nms$KB}Ut z&N}ydW|_Sw_8Y76I;0=B#>q_geblS zO0MQ57K(`XwKX-xoE!ovvHc|dMCgp+0yK%vu*OL8rDw$Xu;`axz}Y5&0Em;G+#^Pc z6eoZjmN@hU=r_F)=N!a%0;}Lr7qd719z&7nk|Ow$!$Q(11bZq6Iz{7Ej_>GWiXk1P z!^Ws6k4sT5m-np>#d2;103lzH_(Fr}U;k?u!wgKorG&gKtsO8Up?~nrwGkSq$ObtZ zA%>biJLh+hk56hO_wz67eR%G3N+YL0`Il~;_#|^G$tV+JV|(K=6?gI`KT(77qD<{L zEkejiV)OFjAEU;T7qVZ5ymxm2pv0r$M7I8eah28;{xhaF^-3oKW{{v$OiH+7VXUbt zyi3F$y`m@}zEZ=k$#-^GawXOtM2%K_eC;7aPTpKQfh;`hNe0sY^WIhcLB3z``M@w` zgjb^e!ghPgAHSQnn+A<^t9Ue5sVgu^Nph?|UNUQ|_q{$EpO|i!4zzbKCr3Ptgogt6 zKIinj35kt}$2XEZ|4l=zrMEN4U6uww_G-qjqBjOZSL%5C)L0!!$?zkeR6O%ly*6y1xDew5IttcWa|A*{xJ=0tq8sECytzM}WV8%wSdo%tlcFl(GW5 zDqJiBW&F?BH6o&J{L2E41_cfyjAV2P-3`oPTu*p;Lhzv>%0VpF;^NZ>n5B4E!U=&t z0s~Ug>2}hTn?{w=x*~H{6a{B5Fiu!o)j3u3aZQfII+|1l<`$-`y^vv{Q2zcvMqXYB z$?1Ixu0(g_J7_sN)5eG784(kMyQ)KACCJAXRs?OdYxCu*Y&& zmJ-12NZHGbmBn!(hYszKQ~S*T7@QP&D~VW%QF`sboeD}H_*ka=z$TGCHAgp%r#mF8 z$WV@^1kOyU6D=kLCvMrf@K$kA(bs};r7RFK#VJ<;0?;#~IXkoB(L)`qGELC*43!2W zFr`4!2?+^{m?=WnWY5Ia?X|Cs{b9rU&&&?(Om&;4&Yw}Mh~IbrHw(n_-~YSaC%_(1 jEdw2>5C30(_^FeLSDaPpy0!z<_|L}rN2`;Tb2t1KE&ji$ literal 5657 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 From 8cbb2924ea104c9b6b618aa9bf5e8e0492537414 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 13 May 2018 18:48:27 +0200 Subject: [PATCH 17/33] Update name --- 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 5ffe63ba86e..7f3225bd73c 100644 --- a/source/_components/notify.markdown +++ b/source/_components/notify.markdown @@ -21,7 +21,7 @@ notify: api_key: ABCDEFG ``` -The **name** parameter is optional but needed if you want to use multiple platforms. The platform will be exposed as service `notify/`. The name will default to `notify` if not supplied. +The **name** parameter is optional but needed if you want to use multiple platforms. The platform will be exposed as service `notify.`. The name will default to `notify` if not supplied. ### {% linkable_title Service %} From 7a056ff288232a1d66441bc825bdec86dacdd4cb Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 13 May 2018 18:49:13 +0200 Subject: [PATCH 18/33] Make examples section --- source/_components/notify.mqtt.markdown | 35 ++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index d0718b11735..a1a33ef7e43 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -14,7 +14,7 @@ ha_iot_class: depends The MQTT notification support is different than the other [notification](/components/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. -**Call Service** section from the **Developer Tools** allows you to send MQTT messages. Choose *mqtt.publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +**Call Service** section from the service developer tool icon **Developer Tools** allows you to send MQTT messages. Choose *mqtt.publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. ```json {"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0} @@ -30,6 +30,11 @@ The same will work for automations.

+ +## {% linkable_title Examples %} + +### {% linkable_title REST API %} + Using the [REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) to send a message to a given topic. ```bash @@ -39,3 +44,31 @@ $ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ http://IP_ADDRESS:8123/api/services/mqtt/publish ``` +### {% linkable_title Automations %} + +Use as [`script`](/components/script/) in automations. + +{% raw %} +```yaml +automation: + alias: Send me a message when I get home + trigger: + platform: state + entity_id: device_tracker.me + to: 'home' + action: + service: script.notify_mqtt + data: + target: "me" + message: "I'm home" + +script: + notify_mqtt: + sequence: + - service: mqtt.publish + data_template: + payload: "{{ message }}" + topic: home/"{{ target }}" + retain: true +``` +{% endraw %} From a3fca3d49b3883f52cefc01146081695fe66b8f0 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 14 May 2018 13:19:49 +0100 Subject: [PATCH 19/33] Added upgrade instructions (#5350) * Added upgrade instructions * Make it a heading --- source/_docs/installation/windows.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown index 1c9ced30b04..7a6017c9ae1 100644 --- a/source/_docs/installation/windows.markdown +++ b/source/_docs/installation/windows.markdown @@ -29,3 +29,13 @@ Check this [video](https://www.youtube.com/watch?v=X27eVvuqwnY) for the installa

The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work.

+ +## {% linkable_title Updating %} + +To update Home Assistant, stop it and then run: + +```bash +C:\...\> pip3 install --upgrade homeassistant +``` + +Then start Home Assistant. From ca5675482ba3069ea68cfa39b1273cc539ba870b Mon Sep 17 00:00:00 2001 From: Codepadawan Date: Tue, 15 May 2018 00:52:15 +1000 Subject: [PATCH 20/33] Update notify.lametric.markdown (#5365) * Update notify.lametric.markdown * Minor changes --- source/_components/notify.lametric.markdown | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index cf50cffaa2e..4aafb83bc93 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -79,4 +79,21 @@ To add a notification sound or an icon override, it has to be done via service d data: sound: 'notification' icon: 'i51' +``` + +### {% linkable_title Only notify specific device %} + +If you have more than one La Metric device, you can specify which will recieve the message by adding `target:` to the service data: + +```yaml + action: + service: notify.lametric + data: + message: "Son has arrived at school!" + target: "Office LaMetric" + data: + sound: 'notification' + icon: 'i51' ``` + + If target is not specified, all LaMetric devices will be notified. From ececc90a1efd60f81329c8a9283c2f2ae5f80c69 Mon Sep 17 00:00:00 2001 From: Niklas Wagner Date: Tue, 15 May 2018 16:27:54 +0200 Subject: [PATCH 21/33] Fix duplicated title (#5366) --- source/_components/device_tracker.tesla.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.tesla.markdown b/source/_components/device_tracker.tesla.markdown index 68307d1057f..affbe9a1a85 100644 --- a/source/_components/device_tracker.tesla.markdown +++ b/source/_components/device_tracker.tesla.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Tesla" +title: "Tesla Device Tracker" description: "Instructions on for how to integrate Tesla into Home Assistant." date: 2017-08-02 12:20 sidebar: true From e92955002e69b12ca5c6c5ae3085936965556fd7 Mon Sep 17 00:00:00 2001 From: thehookup <38058757+thehookup@users.noreply.github.com> Date: Tue, 15 May 2018 10:45:01 -0400 Subject: [PATCH 22/33] url needed to be in 'singlequotes' (#5367) * url needed to be in 'singlequotes' url needed to be in 'singlequotes' * Don't point to 3rd party location --- source/_docs/ecosystem/ios/notifications/attachments.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/ios/notifications/attachments.markdown b/source/_docs/ecosystem/ios/notifications/attachments.markdown index 2138ae602d1..a164a542cc0 100644 --- a/source/_docs/ecosystem/ios/notifications/attachments.markdown +++ b/source/_docs/ecosystem/ios/notifications/attachments.markdown @@ -26,7 +26,7 @@ To expand a notification on 3D Touch devices simply force touch any notification message: "Something happened at home!"" data: attachment: - url: https://67.media.tumblr.com/ab04c028a5244377a0ab96e73915e584/tumblr_nfn3ztLjxk1tq4of6o1_400.gif + url: "https://github.com/home-assistant/home-assistant-assets/blob/master/logo-round-192x192.png" content-type: gif hide-thumbnail: false ``` From 415199ac151ebd0226c8983bd4a5ed303ace21ac Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 15 May 2018 17:08:19 +0200 Subject: [PATCH 23/33] Fix link and type (#5367) --- source/_docs/ecosystem/ios/notifications/attachments.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/ios/notifications/attachments.markdown b/source/_docs/ecosystem/ios/notifications/attachments.markdown index a164a542cc0..73c8887f9e1 100644 --- a/source/_docs/ecosystem/ios/notifications/attachments.markdown +++ b/source/_docs/ecosystem/ios/notifications/attachments.markdown @@ -26,8 +26,8 @@ To expand a notification on 3D Touch devices simply force touch any notification message: "Something happened at home!"" data: attachment: - url: "https://github.com/home-assistant/home-assistant-assets/blob/master/logo-round-192x192.png" - content-type: gif + url: "https://github.com/home-assistant/home-assistant-assets/blob/master/logo-round-192x192.png?raw=true" + content-type: png hide-thumbnail: false ``` From 642e8fcb9d62d668a8d0c8880bf3a292cc224086 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Wed, 16 May 2018 08:59:41 +0100 Subject: [PATCH 24/33] Adding in upgrade instructions (#5379) The upgrade steps got lost along the way, adding them back in. --- .../hassbian/installation.markdown | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/_docs/installation/hassbian/installation.markdown b/source/_docs/installation/hassbian/installation.markdown index c6e73879ef2..fcfa8b86793 100644 --- a/source/_docs/installation/hassbian/installation.markdown +++ b/source/_docs/installation/hassbian/installation.markdown @@ -64,3 +64,23 @@ You may need to adjust the country code depending upon where you are. A list of [etcher]: https://etcher.io/ [http://hassbian.local:8123]: http://hassbian.local:8123 [wifi-setup]: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md + +## {% linkable_title Updating %} + +The [Hassbian Scripts](https://github.com/home-assistant/hassbian-scripts) are the easiest way of updating both the host operating system, and Home Assistant. + +### {% linkable_title Updating Home Assistant %} + +SSH to your system as the user `pi` and run: + +```bash +$ sudo hassbian-config upgrade homeassistant +``` + +### {% linkable_title Updating the host operating system %} + +SSH to your system as the user `pi` and run: + +```bash +$ sudo hassbian-config upgrade hassbian +``` From 83aaf05c47ac68ce62998dd3c6e2e25dad65e0d3 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 16 May 2018 09:24:33 +0100 Subject: [PATCH 25/33] Update Centos Installation include dependencies I attempted to follow the documentation to install HASS on to Centos 7.5 minimal. I found gcc gcc-c++ were required for hass to complete the auto install of various python packages and systemd-devel for zwave. Figure this information/step should be included in the installation wiki for centos. --- source/_docs/installation/centos.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_docs/installation/centos.markdown b/source/_docs/installation/centos.markdown index aadd8dbf932..bf0c76c6eef 100644 --- a/source/_docs/installation/centos.markdown +++ b/source/_docs/installation/centos.markdown @@ -20,6 +20,11 @@ First of all install the software collection repository as root. For example, on ```bash $ yum install centos-release-scl ``` +Install some dependencies you'll need later. + +```bash +$ yum install gcc gcc-c++ systemd-devel +``` Then install the Python 3.6 package: From 1b3b6a1cae08d6fa3c947543817d27279916e1d6 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Wed, 16 May 2018 09:15:45 -0600 Subject: [PATCH 26/33] Stdout and stderr can be displayed in debug mode (#5376) --- source/_components/shell_command.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index 8c03c7c7af2..07a10b1261b 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -33,6 +33,8 @@ The commands can be dynamic, using templates to insert values for arguments. Whe Any service data passed into the service call to activate the shell command will be available as a variable within the template. +`stdout` and `stderr` output from the command are both captured and will be logged by setting the [log level](/components/logger/) to debug. + ```yaml # Apply value of a GUI slider to the shell_command From 6e1b48dd7b3d1682f762ef5fc7ac1e7b9847e657 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Wed, 16 May 2018 19:12:17 +0100 Subject: [PATCH 27/33] Adding entry for update config (#5374) * Adding entry for update config * :pencil2: Minor typo tweak --- source/_docs/z-wave/services.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown index b6c420a91bc..32cc108b997 100644 --- a/source/_docs/z-wave/services.markdown +++ b/source/_docs/z-wave/services.markdown @@ -35,6 +35,7 @@ The `zwave` component exposes multiple services to help maintain the network. Al | stop_network | Stops the Z-Wave network. | | test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." | | test_node | Tells the controller to send no-op command(s) to a specific node. Requires `node_id` field. You can specify amount of test_messages to send by specifying it with `messages` field. In theory, this could bring back nodes marked as "presumed dead" +| update_config | Attempt to update OZW configuration files from git to support newer devices | The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation. From 955448958144ebdc095bc6a2b2aa56f34613f9b6 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Wed, 16 May 2018 21:00:18 +0200 Subject: [PATCH 28/33] Removed deprecated options from example (#5375) --- source/_components/homematic.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 5deaa8311a4..da2efb78fc6 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -66,8 +66,6 @@ homematic: resolvenames: json username: Admin password: secret - primary: true - variables: true wired: host: 127.0.0.1 port: 2000 From 05b02569f998819fb764d454aa1ef4cfa91eb93d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 17 May 2018 23:26:13 +0200 Subject: [PATCH 29/33] Fix filename --- source/_components/device_tracker.google_maps.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.google_maps.markdown b/source/_components/device_tracker.google_maps.markdown index d05c9e35d2d..282f9ff406a 100644 --- a/source/_components/device_tracker.google_maps.markdown +++ b/source/_components/device_tracker.google_maps.markdown @@ -17,7 +17,7 @@ The `google_maps` platform allows you to detect presence using the unofficial AP You first need to create an additional Google account and share your location with that account. This platform will use that account to fetch the location of your device(s). You have to setup sharing through the Google Maps app on your mobile phone. You can find more information [here](https://support.google.com/accounts?p=location_sharing). -This platform will create a file named `google_maps_location_sharing.conf` where it caches your login session. +This platform will create a file named `.google_maps_location_sharing.cookies` where it caches your login session.

Since this platform is using an unofficial API with the help of [locationsharinglib](https://github.com/costastf/locationsharinglib), Google seems to block access to your data the first time you've logged in with this component. From 9a563d6703aca04838792d4bc5f5fa516c281cf8 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 18 May 2018 00:34:56 +0200 Subject: [PATCH 30/33] Minor modifications --- source/_components/device_tracker.google_maps.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/device_tracker.google_maps.markdown b/source/_components/device_tracker.google_maps.markdown index 282f9ff406a..206c2cc9bec 100644 --- a/source/_components/device_tracker.google_maps.markdown +++ b/source/_components/device_tracker.google_maps.markdown @@ -15,12 +15,14 @@ ha_iot_class: "Cloud Polling" The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). +## {% linkable_title Configuration %} + You first need to create an additional Google account and share your location with that account. This platform will use that account to fetch the location of your device(s). You have to setup sharing through the Google Maps app on your mobile phone. You can find more information [here](https://support.google.com/accounts?p=location_sharing). This platform will create a file named `.google_maps_location_sharing.cookies` where it caches your login session.

-Since this platform is using an unofficial API with the help of [locationsharinglib](https://github.com/costastf/locationsharinglib), Google seems to block access to your data the first time you've logged in with this component. +Since this platform is using an unofficial API with the help of [locationsharinglib](https://github.com/costastf/locationsharinglib), Google seems to block access to your data the first time you've logged in with this platform. This issue can be fixed by logging in with your new account and approving your login on the [Device Activity](https://myaccount.google.com/device-activity) page.

From 3a5ba531b19a2bc7733fd3bf47f230f9e3622102 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 18 May 2018 13:20:52 +0200 Subject: [PATCH 31/33] Improve config schema of the blackbird component (#5390) --- .../media_player.blackbird.markdown | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/source/_components/media_player.blackbird.markdown b/source/_components/media_player.blackbird.markdown index 99873f1cc04..fbd5fb20edc 100644 --- a/source/_components/media_player.blackbird.markdown +++ b/source/_components/media_player.blackbird.markdown @@ -21,7 +21,6 @@ To add a Blackbird device to your installation, add the following to your `confi # Example configuration.yaml entry media_player: - platform: blackbird - type: serial port: /dev/ttyUSB0 zones: 1: @@ -32,35 +31,31 @@ media_player: ``` {% configuration %} -type: - description: The type of device connection - serial or socket - required: true - type: string port: - description: The serial port to which Blackbird matrix switch is connected. Either port or host must be defined. - required: optional + description: The serial port to which Blackbird matrix switch is connected. [`port`](#port) and [`host`](#host) cannot be specified concurrently. + required: exclusive type: string host: - description: The IP address of the Blackbird matrix switch. Either port or host must be defined. - required: optional + description: The IP address of the Blackbird matrix switch. [`port`](#port) and [`host`](#host) cannot be specified concurrently. + required: exclusive type: string zones: - description: This is the list of zones available. Valid zones are 1,2,3,4,5,6,7,8. Each zone must have a name assigned to it. + description: This is the list of zones available. Valid zones are 1, 2, 3, 4, 5, 6, 7, 8. Each zone must have a name assigned to it. required: true type: int keys: name: description: The name of the zone. sources: - description: The list of sources available. Valid source numbers are 1,2,3,4,5,6,7,8. Each source number corresponds to the input number on the Blackbird matrix switch. Similar to zones, each source must have a name assigned to it. + description: The list of sources available. Valid source numbers are 1, 2, 3, 4, 5, 6, 7, 8. Each source number corresponds to the input number on the Blackbird matrix switch. Similar to zones, each source must have a name assigned to it. required: true type: int keys: name: description: The name of the source. -{% endconfiguration%} +{% endconfiguration %} -### {% linkable_title Service `BLACKBIRD_SETALLZONES` %} +### {% linkable_title Service `media_player.blackbird_set_all_zones` %} Set all zones to the same input source. This service allows you to immediately synchronize all the TVs in your home. Regardless of `entity_id` provided, all zones will be updated. From e2938eeb0bacbee212d11f44257c35e6b4edde21 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 18 May 2018 23:00:09 +0200 Subject: [PATCH 32/33] Add 0.69.1 --- _config.yml | 6 +++--- source/_posts/2018-05-11-release-69.markdown | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 45147f16caf..82cc130a69d 100644 --- a/_config.yml +++ b/_config.yml @@ -140,13 +140,13 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 69 -current_patch_version: 0 -date_released: 2018-05-11 +current_patch_version: 1 +date_released: 2018-05-12 # 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-0691---may-12" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index f5067aef6a8..d1655bce616 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -24,6 +24,12 @@ Not much time to write a great intro this time as we're hanging out at PyCon! So - Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) - Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) +## {% linkable_title Release 0.69.1 - May 12 %} + +- Fix loading of Matrix chatbot ([@tinloaf] - [#14346] - @tinloaf) + +- Fix color setting of tplink lights ([@amelchio] - [#14108]) ([matrix docs]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -303,6 +309,7 @@ rainmachine: [#14331]: https://github.com/home-assistant/home-assistant/pull/14331 [#14347]: https://github.com/home-assistant/home-assistant/pull/14347 [#14381]: https://github.com/home-assistant/home-assistant/pull/14381 +[#14108]: https://github.com/home-assistant/home-assistant/pull/14108 [@CM000n]: https://github.com/CM000n [@Danielhiversen]: https://github.com/Danielhiversen [@Hate-Usernames]: https://github.com/Hate-Usernames From 8bf9318186b73c05b02fae381b4783db7fbf8855 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 18 May 2018 23:17:40 +0200 Subject: [PATCH 33/33] Fix entry --- source/_posts/2018-05-11-release-69.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index d1655bce616..392dac5cc6a 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -26,9 +26,7 @@ Not much time to write a great intro this time as we're hanging out at PyCon! So ## {% linkable_title Release 0.69.1 - May 12 %} -- Fix loading of Matrix chatbot ([@tinloaf] - [#14346] - @tinloaf) - -- Fix color setting of tplink lights ([@amelchio] - [#14108]) ([matrix docs]) +- Fix loading of Matrix chatbot ([@tinloaf] - [#14346]) ([matrix docs]) ## {% linkable_title If you need help... %}