From a27073be100a2fdd6a8e155e14b7074d18ae68f0 Mon Sep 17 00:00:00 2001 From: arsaboo Date: Sat, 4 Nov 2017 09:34:54 -0400 Subject: [PATCH 01/23] Added instructions to save video file using automation. --- source/_components/camera.ring.markdown | 35 ++++++++++++++----------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown index c383381eaf7..d495c74efce 100644 --- a/source/_components/camera.ring.markdown +++ b/source/_components/camera.ring.markdown @@ -32,19 +32,30 @@ Configuration variables: Currently it supports doorbell and stickup cameras. +## {% linkable_title Saving the videos captured by your Ring Door Bell %} -## {% linkable_title Saving locally the videos captured by your Ring Door Bell %} +You can save locally the latest video captured by your Ring Door Bell using the [downloader](/components/downloader) along with either an [automation](/components/automation) or [python_script](/components/python_script). First, enable the [downloader](/components/downloader) component in your configuration by adding the following to your `configuration.yaml`. -You can save locally the latest video captured by your Ring Door Bell by enabling the [downloader](/components/downloader) and the [python_scripts](/components/python_script) components. - - - Add to the `configuration.yaml` the `downloader` and `python_scripts`. Visit the component page for further details. - -```json -python_script: +```yaml downloader: download_dir: downloads ``` - - Create a file `ring_downloader.py` in the folder `/python_scripts` and give it this content: +Then you can use the following `action` in your automation (this will save the video file under `/downloads/ring_/`): + +```yaml +action: + - service: downloader.download_file + data_template: + url: "{{ states.camera.front_door.attributes.video_url }}" + subdir: "{{'ring_{}'.format(states.camera.front_door.attributes.friendly_name}}" + filename: "{{states.camera.front_door.attributes.friendly_name}}" +``` + +If you want to use `python_script`, enable it your `configuration.yaml` file first: +```yaml +python_script: +``` +You can then use the following `python_script` to save the video file: ```python # obtain ring doorbell camera object @@ -57,15 +68,9 @@ subdir_name = 'ring_{}'.format(ring_cam.attributes.get('friendly_name')) data = { 'url': ring_cam.attributes.get('video_url'), 'subdir': subdir_name, + 'filename': ring_cam.attributes.get('friendly_name') } # call downloader component to save the video hass.services.call('downloader', 'download_file', data) ``` - - - Start Home Assistant - - Call the server `python_script/ring_downloader` - -You should be able to see a video file saved under `//ring_/`. - -You can also automate the process by integrating it with the (automation)[/components/automation) component. From 51ba0eed98e26cf252df6ed3789e5cf2ace5180a Mon Sep 17 00:00:00 2001 From: arsaboo Date: Sat, 4 Nov 2017 12:59:30 -0400 Subject: [PATCH 02/23] Added missing parentheses --- source/_components/camera.ring.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown index d495c74efce..a667b4950f2 100644 --- a/source/_components/camera.ring.markdown +++ b/source/_components/camera.ring.markdown @@ -47,7 +47,7 @@ action: - service: downloader.download_file data_template: url: "{{ states.camera.front_door.attributes.video_url }}" - subdir: "{{'ring_{}'.format(states.camera.front_door.attributes.friendly_name}}" + subdir: "{{'ring_{}'.format(states.camera.front_door.attributes.friendly_name)}}" filename: "{{states.camera.front_door.attributes.friendly_name}}" ``` From 47c0165359ce924620daa3e699e79df81fd2b787 Mon Sep 17 00:00:00 2001 From: arsaboo Date: Sat, 4 Nov 2017 13:23:56 -0400 Subject: [PATCH 03/23] Simplified automation --- source/_components/camera.ring.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown index a667b4950f2..854c77f5519 100644 --- a/source/_components/camera.ring.markdown +++ b/source/_components/camera.ring.markdown @@ -47,7 +47,7 @@ action: - service: downloader.download_file data_template: url: "{{ states.camera.front_door.attributes.video_url }}" - subdir: "{{'ring_{}'.format(states.camera.front_door.attributes.friendly_name)}}" + subdir: "{{states.camera.front_door.attributes.friendly_name}}" filename: "{{states.camera.front_door.attributes.friendly_name}}" ``` From fced7ece08239a3bc2c5cd6eb0d19e4190213ff3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Nov 2017 22:16:08 -0800 Subject: [PATCH 04/23] Version bump to 0.58 --- _config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index 3c544f2b400..3f5b224ff88 100644 --- a/_config.yml +++ b/_config.yml @@ -139,12 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 57 -current_patch_version: 3 -date_released: 2017-11-11 +current_minor_version: 58 +current_patch_version: 0 +date_released: 2017-11-18 # 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: "#release-0573---november-11" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): From bac5eeeb8aac952068e23d5c0a6a48ce7e7473a9 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 17 Nov 2017 10:34:10 +0000 Subject: [PATCH 05/23] Added ref to the netdisco libraries --- source/_docs/installation/troubleshooting.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_docs/installation/troubleshooting.markdown b/source/_docs/installation/troubleshooting.markdown index 492bdf45940..29566bb36ec 100644 --- a/source/_docs/installation/troubleshooting.markdown +++ b/source/_docs/installation/troubleshooting.markdown @@ -72,3 +72,6 @@ After upgrading to a new version, you may notice your browser gets stuck at the Android Chrome chrome -> settings -> site settings -> storage -> search for your URL for Home Assistant-> "clear & reset" +#### {% linkable_title Not initializing discovery because could not install dependency netdisco %} + +If you see `Not initializing discovery because could not install dependency netdisco==x.y.z` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system. From 96e4dd71ee1d1790fac0f47cc429a23da5753bf7 Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Fri, 17 Nov 2017 11:36:39 +0000 Subject: [PATCH 06/23] Current (#4000) * Rename configuration_yaml_by_aneisch to configuration_yaml_by_aneisch.markdown * Rename configuration_yaml_by_cy1701 to configuration_yaml_by_cy1701.markdown * Rename configuration_yaml_by_mf_social to configuration_yaml_by_mf_social.markdown * Update configuration_yaml_by_mf_social.markdown * Rename configuration_yaml_by_stanvx to configuration_yaml_by_stanvx.markdown --- ...neisch => configuration_yaml_by_aneisch.markdown} | 0 ..._cy1701 => configuration_yaml_by_cy1701.markdown} | 0 source/_cookbook/configuration_yaml_by_mf_social | 12 ------------ .../configuration_yaml_by_mf_social.markdown | 12 ++++++++++++ ..._stanvx => configuration_yaml_by_stanvx.markdown} | 0 5 files changed, 12 insertions(+), 12 deletions(-) rename source/_cookbook/{configuration_yaml_by_aneisch => configuration_yaml_by_aneisch.markdown} (100%) rename source/_cookbook/{configuration_yaml_by_cy1701 => configuration_yaml_by_cy1701.markdown} (100%) delete mode 100644 source/_cookbook/configuration_yaml_by_mf_social create mode 100644 source/_cookbook/configuration_yaml_by_mf_social.markdown rename source/_cookbook/{configuration_yaml_by_stanvx => configuration_yaml_by_stanvx.markdown} (100%) diff --git a/source/_cookbook/configuration_yaml_by_aneisch b/source/_cookbook/configuration_yaml_by_aneisch.markdown similarity index 100% rename from source/_cookbook/configuration_yaml_by_aneisch rename to source/_cookbook/configuration_yaml_by_aneisch.markdown diff --git a/source/_cookbook/configuration_yaml_by_cy1701 b/source/_cookbook/configuration_yaml_by_cy1701.markdown similarity index 100% rename from source/_cookbook/configuration_yaml_by_cy1701 rename to source/_cookbook/configuration_yaml_by_cy1701.markdown diff --git a/source/_cookbook/configuration_yaml_by_mf_social b/source/_cookbook/configuration_yaml_by_mf_social deleted file mode 100644 index 6f6b4941f4f..00000000000 --- a/source/_cookbook/configuration_yaml_by_mf_social +++ /dev/null @@ -1,12 +0,0 @@ -+--- - +layout: page - +title: "Configuration.yaml by mf_social" - +description: "" - +date: 2017-11-15 13:08 -0700 - +sidebar: true - +comments: false - +sharing: true - +footer: true - +ha_category: Example configuration.yaml - +ha_external_link: https://github.com/mf-social/Home-Assistant - +--- diff --git a/source/_cookbook/configuration_yaml_by_mf_social.markdown b/source/_cookbook/configuration_yaml_by_mf_social.markdown new file mode 100644 index 00000000000..67eb9d16280 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_mf_social.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by mf_social" +description: "" +date: 2017-10-11 11:45 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/mf-social/Home-Assistant +--- diff --git a/source/_cookbook/configuration_yaml_by_stanvx b/source/_cookbook/configuration_yaml_by_stanvx.markdown similarity index 100% rename from source/_cookbook/configuration_yaml_by_stanvx rename to source/_cookbook/configuration_yaml_by_stanvx.markdown From 1b65feb07352e27bc744481fe46e8662b9e7e1fe Mon Sep 17 00:00:00 2001 From: Leonardo Bellettini Date: Fri, 17 Nov 2017 21:00:53 +0100 Subject: [PATCH 07/23] corrected typo (#4002) --- source/_components/sensor.thethingsnetwork.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.thethingsnetwork.markdown b/source/_components/sensor.thethingsnetwork.markdown index 76870e368ec..6dac17958f2 100644 --- a/source/_components/sensor.thethingsnetwork.markdown +++ b/source/_components/sensor.thethingsnetwork.markdown @@ -62,7 +62,7 @@ sensor: - platform: thethingsnetwork device_id: ha-demo values: - sensor_value: unit of measurment + sensor_value: unit of measurement voltage: V ``` From 1d6c309d4dee54671739dfb974161aaf99801ca7 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Sat, 18 Nov 2017 00:11:39 +0100 Subject: [PATCH 08/23] * Added "Trigger State Object" section (#3863) --- source/_docs/automation/templating.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index a53912dc46c..7f721876bd9 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -51,6 +51,14 @@ There are a few very important rules to remember when writing automation templat Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates. +## {% linkable_title Trigger State Object %} + +Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity could be one of the more common questions. Here are a few ways for the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers: + +* `trigger.from_state` will return the **previous** [state object](/docs/configuration/state_object/) of the entity. +* `trigger.to_state` will return the **new** [state object](/docs/configuration/state_object/) that triggered trigger. +* `states[trigger.to_state.domain][trigger.to_state.object_id]` will return the **current** [state object](/docs/configuration/state_object/) of the entity. + ## {% linkable_title Available Trigger Data %} The following tables show the available trigger data per platform. From ad2baa45a1c8940e0ae5dbc585d0a4165941dbeb Mon Sep 17 00:00:00 2001 From: nkrauss <33377513+nkrauss@users.noreply.github.com> Date: Sat, 18 Nov 2017 09:41:52 -0500 Subject: [PATCH 09/23] Added additional model (#4006) Tested and working with LC-60EQ10U --- source/_components/media_player.aquostv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index 2c764f46873..c9d7d2124d3 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -52,5 +52,6 @@ Currently known supported models: - LC-52LE925UN - LC-60LE925UN - LC-60LE857U +- LC-60EQ10U 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.aquostv.markdown). From b96a940e142df643c6be02a49b91c7e65067e1f6 Mon Sep 17 00:00:00 2001 From: Ari Lotter Date: Sat, 18 Nov 2017 04:09:32 -0500 Subject: [PATCH 10/23] Create device_tracker.hitron_coda.markdown (#3512) * Create device_tracker.hitron_coda.markdown * Fix minor grammar issues * :hammer: Processed review comments --- .../device_tracker.hitron_coda.markdown | 44 ++++++++++++++++++ source/images/supported_brands/hitron.png | Bin 0 -> 5581 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/device_tracker.hitron_coda.markdown create mode 100644 source/images/supported_brands/hitron.png diff --git a/source/_components/device_tracker.hitron_coda.markdown b/source/_components/device_tracker.hitron_coda.markdown new file mode 100644 index 00000000000..fecdc2fd5ed --- /dev/null +++ b/source/_components/device_tracker.hitron_coda.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Hitron CODA Routers" +description: "Instructions on how to integrate Hitron CODA Routers into Home Assistant." +date: 2017-10-03 15:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: hitron.png +ha_category: Presence Detection +ha_release: 0.58 +--- + +This component offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) +Router. + +To use a Hitron router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: hitron_coda + host: !secret router_ip + username: !secret router_username + password: !secret router_password +``` + +{% configuration %} +host: + description: The IP address of your router, e.g., `192.168.0.1`. + required: true + type: string +username: + description: The username to login into the router (user should have read access to the web interface of the router). Usually "cusadmin". + required: true + type: string +password: + description: The password for the specified username. Usually your WiFi password. + required: true + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/images/supported_brands/hitron.png b/source/images/supported_brands/hitron.png new file mode 100644 index 0000000000000000000000000000000000000000..bc553996251c5587467dd301064e52659a8728d7 GIT binary patch literal 5581 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 b(dz#J(-ypwl2vR^00000NkvXXu0mjfoF>7e literal 0 HcmV?d00001 From 635d0338451da62127c63d93d31a6f3a4c203448 Mon Sep 17 00:00:00 2001 From: Jeremy Williams Date: Sat, 18 Nov 2017 11:11:34 -0600 Subject: [PATCH 11/23] Add signal_strength monitor documentation (#3641) --- source/_components/sensor.arlo.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown index 72fc0ae36bb..309795f7952 100644 --- a/source/_components/sensor.arlo.markdown +++ b/source/_components/sensor.arlo.markdown @@ -26,6 +26,7 @@ sensor: - last_capture - total_cameras - battery_level + - signal_strength ``` Configuration variables: @@ -35,5 +36,6 @@ Configuration variables: - **last_capture**: Return the timestamp from the last video captured by your Arlo camera. - **total_cameras**: Return the number of recognized and active cameras linked on your Arlo account. - **battery_level**: Return the battery level of your Arlo camera. + - **signal_strength**: Return the wireless signal strength of your Arlo camera. If no **monitored_conditions** are specified, all of above will be enabled by default. From 1a2b45f3ffa7ec88923ca237dae88e935dbd3070 Mon Sep 17 00:00:00 2001 From: r4nd0mbr1ck <23737685+r4nd0mbr1ck@users.noreply.github.com> Date: Sat, 18 Nov 2017 19:01:07 +1100 Subject: [PATCH 12/23] Add new configuration variables for request_sync (#3807) * Add new configuration variables for request_sync * Update google_assistant.markdown Include note about initial sync with agent_user_id * Change to api_key - remove homegraph prefix * :pencil2: Small spelling/grammar fixes --- source/_components/google_assistant.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 23c1ce73397..15a3730096b 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -28,6 +28,8 @@ google_assistant: project_id: someproject-2d0b8 client_id: [long URL safe random string] access_token: [a different long URL safe random string] + agent_user_id: [a string to identify user] + api_key: [an API Key generated for the Google Actions project] exposed_domains: - switch - light @@ -43,6 +45,8 @@ google_assistant: * *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) * *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. * *access_token* (Required): Another different long random URL safe string. +* *agent_user_id* (Optional): A string to identify the user, e.g., email address. If not provided, the component will generate one. +* *api_key* (Optional): An API Key generated for the project from Google Console. See setup below. If not provided then the request_sync service is not exposed * *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include: - `switch` - `light` @@ -123,3 +127,10 @@ homeassistant: 2. Under the gear icon, click `Permissions` 3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role 4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7. +11. If you want to use the request_sync service in Home Assistant, then Enable Homegraph API for your project: + 1. Go to https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview + 2. Select your project and click Enable Homegraph API + 3. Go to Credentials and select API Key from Create Credentials + 4. Note down the generated API Key and use this in the configuration + +*Note:* The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then unlink the account from Home Control and relink. From 33d064393c087495e19376387f5b87420b1c1935 Mon Sep 17 00:00:00 2001 From: Matthew Donoughe Date: Sat, 18 Nov 2017 09:41:05 -0500 Subject: [PATCH 13/23] documentation for Lutron Caseta update (#3883) * initial documentation for caseta update * get zip from home-assistant.github.io --- source/_components/lutron_caseta.markdown | 10 +++++++++- source/assets/get_lutron_cert.zip | Bin 0 -> 2468 bytes 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 source/assets/get_lutron_cert.zip diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index c2a3f41f7c6..912bd82dc41 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -27,17 +27,25 @@ The currently supported Caseta devices are: When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g. a dimmer called 'Bedroom Lamp' becomes `light.bedroom_lamp` in Home Assistant. -To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your Smart Bridge: +To use Lutron Caseta devices in your installation, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [this script](/assets/get_lutron_cert.zip), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information. + +Once you have the three necessary files, place them in your configuration directory and add the following to your `configuration.yaml`: ```yaml # Example configuration.yaml entry lutron_caseta: host: IP_ADDRESS + keyfile: caseta.key + certfile: caseta.crt + ca_certs: caseta-bridge.crt ``` Configuration variables: - **host** (*Required*): The IP address of the Lutron Smart Bridge. +- **keyfile** (*Required*): The private key that Home Assistant will use to authenticate to the bridge. +- **certfile** (*Required*): The certificate chain that Home Assistant will use to authenticate to the bridge. +- **ca_certs** (*Required*): The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge.

It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address. diff --git a/source/assets/get_lutron_cert.zip b/source/assets/get_lutron_cert.zip new file mode 100644 index 0000000000000000000000000000000000000000..b3849e8a4120cd5d2e6eda0c985e064a715ffb89 GIT binary patch literal 2468 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 literal 0 HcmV?d00001 From af29799b40e1b62656fb8f87b19c51f263985462 Mon Sep 17 00:00:00 2001 From: Matt White Date: Sat, 18 Nov 2017 11:26:22 -0600 Subject: [PATCH 14/23] Add include/exclude filter to mqtt_statestream docs (#3893) * Add include/exclude filter to mqtt_statestream docs * :pencil2: Small changes --- source/_components/mqtt_statestream.markdown | 58 +++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown index 1fa88b4469f..5b7b832fe91 100644 --- a/source/_components/mqtt_statestream.markdown +++ b/source/_components/mqtt_statestream.markdown @@ -32,6 +32,12 @@ Configuration variables: Default is false. - **publish_timestamps** (*Optional*): Publish the last_changed and last_updated timestamps for the entity. Default is false. +- **exclude** (*Optional*): Configure which components should be excluded from recordings. See *Include/Exclude* section below for details. + - **entities** (*Optional*): The list of entity ids to be excluded from recordings. + - **domains** (*Optional*): The list of domains to be excluded from recordings. +- **include** (*Optional*): Configure which components should be included in recordings. If set, all other entities will not be recorded. + - **entities** (*Optional*): The list of entity ids to be included from recordings. + - **domains** (*Optional*): The list of domains to be included from recordings. ## Operation @@ -44,6 +50,56 @@ For example, with the example configuration above, if an entity called 'light.ma If that entity also has an attribute called `brightness`, the component will also publish the value of that attribute to `homeassistant/light/master_bedroom_dimmer/brightness`. -All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`. +All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`. The last_updated and last_changed values for the entity will be published to `homeassistant/light/master_bedroom_dimmer/last_updated` and `homeassistant/light/master_bedroom_dimmer/last_changed`, respectively. The timestamps are in ISO 8601 format - for example, `2017-10-01T23:20:30.920969+00:00`. + +## Include/exclude + +The **exclude** and **include** configuration variables can be used to filter the items that are published to MQTT. + +1\. If neither **exclude** or **include** are specified, all entities are published. + +2\. If only **exclude** is specified, then all entities except the ones listed are published. + +```yaml +# Example of excluding entities +mqtt_statestream: + base_topic: homeassistant + exclude: + domains: + - switch + entities: + - sensor.nopublish +``` +In the above example, all entities except for *switch.x* and *sensor.nopublish* will be published to MQTT. + +3\. If only **include** is specified, then only the specified entries are published. + +```yaml +# Example of excluding entities +mqtt_statestream: + base_topic: homeassistant + include: + domains: + - sensor + entities: + - lock.important +``` +In this example, only *sensor.x* and *lock.important* will be published. + +4\. If both **include** and **exclude** are specified then all entities specified by **include** are published except for the ones +specified by **exclude**. + +```yaml +# Example of excluding entities +mqtt_statestream: + base_topic: homeassistant + include: + domains: + - sensor + exclude: + entities: + - sensor.noshow +``` +In this example, all sensors except for *sensor.noshow* will be published. From 2be4e2df70f38d0bf6805e5a9173f334614e937f Mon Sep 17 00:00:00 2001 From: Julius Mittenzwei Date: Sat, 18 Nov 2017 18:15:05 +0100 Subject: [PATCH 15/23] Improvement of KNX climate component (#3903) * Documentation for https://github.com/home-assistant/home-assistant/pull/10388 * added note that the knx plattform is not supported on Windows. Reason: HAss on windows uses asyncio.ProactorEventLoop() which has poor UDP support. See related issue: https://github.com/home-assistant/home-assistant/issues/6820 * :pencil2: Fixed note markup --- source/_components/climate.knx.markdown | 35 ++++++++++++++++--------- source/_components/knx.markdown | 4 +++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index 1c740bba30c..b5b59a01e36 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -25,10 +25,11 @@ To use your KNX thermostats in your installation, add the following lines to you climate: - platform: knx name: HASS-Kitchen.Temperature - temperature_address: '6/2/1' - setpoint_address: '5/1/2' - target_temperature_address: '5/1/1' - operation_mode_address: '5/1/3' + temperature_address: '5/1/1' + setpoint_shift_address: '5/1/2' + setpoint_shift_state_address: '5/1/3' + target_temperature_address: '5/1/4' + operation_mode_address: '5/1/5' ``` Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode: @@ -38,12 +39,13 @@ Alternatively, if your device has dedicated binary group addresses for frost/nig climate: - platform: knx name: HASS-Kitchen.Temperature - temperature_address: '6/2/1' - setpoint_address: '5/1/2' - target_temperature_address: '5/1/1' - operation_mode_frost_protection_address: '5/1/3' - operation_mode_night_address: '5/1/4' - operation_mode_comfort_address: '5/1/5' + temperature_address: '5/1/1' + setpoint_shift_address: '5/1/2' + setpoint_shift_state_address: '5/1/3' + target_temperature_address: '5/1/4' + operation_mode_frost_protection_address: '5/1/5' + operation_mode_night_address: '5/1/6' + operation_mode_comfort_address: '5/1/7' ``` Configuration variables: @@ -51,7 +53,16 @@ Configuration variables: - **name** (*Optional*): A name for this device used within Home Assistant. - **temperature_address**: KNX group address for reading current room temperature from KNX bus. - **target_temperature_address**: KNX group address for reading current target temperature from KNX bus. -- **setpoint_address**: KNX group address for basis setpoint + +The `knx` component sets the desired target temperature by modifying the setpoint_shift. The module provides the following configuration options: + +* **setpoint_shift_address**: (*Optional*) KNX address for setpoint_shift +* **setpoint_shift_state_address**: (*Optional*) Explicit KNX address for reading setpoint_shift. +* **setpoint_shift_step**: (*Optional*) Defines for step size in Kelvin for each step of setpoint_shift. Default is 0.5 K. +* **setpoint_shift_min**: (*Optional*) Minimum value of setpoint shift. Default is "-6". +* **setpoint_shift_max**: (*Optional*) Maximum value of setpoint shift. Default is "6". + +The operation modes may be controlled with the following directives: - **operation_mode_address** (*Optional*): KNX address for operation mode (Frost protection/night/comfort). - **operation_mode_state_address** (*Optional*): Explicit KNX address for reading operation mode @@ -63,5 +74,3 @@ Configuration variables: - **operation_mode_comfort_address** (*Optional*): KNX address for switching on/off comfort mode. `operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` was specified. - - diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index b813ac3aee4..b48642e7ce5 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -18,6 +18,10 @@ The [KNX](http://www.knx.org) integration for Home Assistant allows you to conne The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this, it will send and receive commands to and from other devices to the KNX bus. +

+ Please note, the `knx` platform does not support Windows and needs at least python version 3.5. +

+ There is currently support for the following device types within Home Assistant: - [Binary Sensor](/components/binary_sensor.knx) From 0ed0151609f8628339dea38fe88a8ab7bde383d3 Mon Sep 17 00:00:00 2001 From: Eugenio Panadero Date: Sat, 18 Nov 2017 18:04:30 +0100 Subject: [PATCH 16/23] Add `state_template` docs and example for the universal media player (#3907) * Add state_template docs and example * fix template and adjust to doc standards * :pencil2: Some minor changes --- .../media_player.universal.markdown | 119 +++++++++++++++++- 1 file changed, 114 insertions(+), 5 deletions(-) diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown index 1d19ddadcf6..48d46311e67 100644 --- a/source/_components/media_player.universal.markdown +++ b/source/_components/media_player.universal.markdown @@ -51,18 +51,26 @@ Configuration variables: - **name** (*Required*): The name to assign the player - **children** (*Required*): Ordered list of child media players this entity will control +- **state_template** (*Optional*): A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like Switches or Input Booleans. - **commands** (*Optional*): Commands to be overwritten. Possible entries are *turn_on*, *turn_off*, *select_source*, *volume_set*, *volume_up*, *volume_down*, and *volume_mute*. - **attributes** (*Optional*): Attributes that can be overwritten. Possible entries are *is_volume_muted*, *state*, *source*, *source_list, and *volume_level*. The values should be an entity id and state attribute separated by a bar (\|). If the entity id's state should be used, then only the entity id should be provided. -The universal media player will primarily imitate one of its *children*. The first child in the list that is active (not idle/off) will be controlled the universal media player. The universal media player will also inherit its state from the first active child. Entities in the *children* list must be media players. +The Universal Media Player will primarily imitate one of its *children*. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the *children* list must be media players, but the state template can contain any entity. -It is recommended that the command *turn_on*, the command *turn_off*, and the attribute *state* all be provided together. The *state* attribute indicates if the Media Player is on or off. If *state* indicates the media player is off, this status will take precedent over the states of the children. If all the children are idle/off and *state* is on, the universal media player's state will be on. +It is recommended that the command *turn_on*, the command *turn_off*, and the attribute *state* all be provided together. The *state* attribute indicates if the Media Player is on or off. If *state* indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and *state* is on, the Universal Media Player's state will be on. It is also recommended that the command *volume_up*, the command *volume_down*, the command *volume_mute*, and the attribute *is_volume_muted* all be provided together. The attribute *is_volume_muted* should return either True or the on state when the volume is muted. The *volume_mute* service should toggle the mute setting. When providing *select_source* as a command, it is recommended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources. -Below is an example configuration. +## {% linkable_title Usage examples %} + +#### {% linkable_title Chromecast & Kodi control with switches %} + +In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The *turn_on* and *turn_off* commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The *select_source* command will be passed directly to an A/V receiver. + +The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status. + ```yaml media_player: @@ -112,6 +120,107 @@ media_player: ``` -In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The *turn_on* and *turn_off* commands will be redirected to the television and the volume commands will be redirected to an audio receiver. The *select_source* command will be passed directly to an A/V receiver. +#### {% linkable_title Kodi CEC-TV control %} -The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status. +In this example, a [Kodi Media Player](/components/media_player.kodi/) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV. + +We store the state of the attached TV in a hidden [Input Boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the Universal Media Player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). + +Because the Input Boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. + +In an Apple HomeKit scene, we can now expose this Universal Media Player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. + +The complete yaml config is: + +```yaml +homeassistant: + customize: + input_boolean.kodi_tv_state: + hidden: true + homebridge_hidden: true + media_player.kodi: + hidden: true + homebridge_hidden: true + media_player.kodi_tv: + friendly_name: Kodi + homebridge_name: Kodi + homebridge_media_player_switch: on_off + +input_boolean: + kodi_tv_state: + +media_player: +- platform: universal + name: Kodi TV + state_template: > + {% raw %}{% if (is_state('media_player.kodi', 'idle') and (is_state('input_boolean.kodi_tv_state', 'off') %} + off + {% else %} + {{ states('media_player.kodi') }} + {% endif %}{% endraw %} + children: + - media_player.kodi + commands: + turn_on: + service: media_player.turn_on + data: + entity_id: media_player.kodi + turn_off: + service: media_player.turn_off + data: + entity_id: media_player.kodi + attributes: + is_volume_muted: media_player.kodi|is_volume_muted + volume_level: media_player.kodi|volume_level + +- platform: kodi + name: Kodi + host: 192.168.1.10 + turn_on_action: + - service: input_boolean.turn_on + data: + entity_id: input_boolean.kodi_tv_state + - service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: activate + turn_off_action: + - service: input_boolean.turn_off + data: + entity_id: input_boolean.kodi_tv_state + - service: media_player.media_stop + data: + entity_id: media_player.kodi + - service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: standby + +automation: +- alias: Turn on the TV when Kodi is activated + trigger: + platform: state + entity_id: media_player.kodi_tv + from: 'off' + to: 'playing' + action: + - service: media_player.turn_on + entity_id: media_player.kodi_tv + +- alias: Turn off the TV when Kodi is in idle > 15 min + trigger: + platform: state + entity_id: media_player.kodi_tv + to: 'idle' + for: + minutes: 15 + action: + - service: media_player.turn_off + entity_id: media_player.kodi_tv +``` From c38c00b00df1d3a8341ff62bf3f7526c830b9a4f Mon Sep 17 00:00:00 2001 From: Fabrizio Furnari Date: Sat, 18 Nov 2017 11:07:09 +0100 Subject: [PATCH 17/23] ViaggiaTreno sensor documentation (#3924) * ViaggiaTreno sensor documentation * :pencil2: Spelling, grammar, styling, and configuration fixes --- .../_components/sensor.viaggiatreno.markdown | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 source/_components/sensor.viaggiatreno.markdown diff --git a/source/_components/sensor.viaggiatreno.markdown b/source/_components/sensor.viaggiatreno.markdown new file mode 100644 index 00000000000..d8ad4e16a00 --- /dev/null +++ b/source/_components/sensor.viaggiatreno.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "ViaggiaTreno Italian Railroads" +description: "Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant." +date: 2017-11-07 14:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: train.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: 0.58 +--- + +The `viaggiatreno` sensor will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API. + +To activate the sensor you need at least two parameters: the `train_id` and the `station_id`. + +The first is available just looking at the [ViaggiaTreno](http://viaggiatreno.it/) timetable, the latter can be obtained using the dedicated API endpoint: +`http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/` +(e.g., `http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/ROMA` will list all station names (with ids) that starts with *ROMA*). + +

+Note that the `station_id` is referred to the train's **departing station**. If a train number does not match with the station id, no data will be returned to the sensor. +

+ +Then add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: viaggiatreno + train_id: 12279 + station_id: S08409 +``` + +{% configuration %} +train_id: + description: The ID of the train. + required: true + type: int +station_id: + description: The ID of the starting station. + required: true + type: int +train_name: + description: The name of the sensor. Defaults to 'Train from '. + required: false + type: string +{% endconfiguration %} + +

+In a future implementation, the station name could be used to automatically search best-matching station id, without the need to specify it. +

+ +The public timetables are coming from [ViaggiaTreno](http://viaggiatreno.it). + +

+Instructions (in Italian) for the API are available at: +https://github.com/bluviolin/TrainMonitor/wiki/API-del-sistema-Viaggiatreno +

From 1af229c14629ccbb9f23ff5bce51064b61531d82 Mon Sep 17 00:00:00 2001 From: Vignesh Venkat Date: Sat, 18 Nov 2017 01:29:41 -0800 Subject: [PATCH 18/23] telegram_bot: Support for sending video (#3936) * telegram_bot: Support for sending video Documentation for video support. Very similar to photo/document. * :pencil2: Spelling & grammar fixes --- source/_components/notify.telegram.markdown | 29 +++++++++++++++++++++ source/_components/telegram_bot.markdown | 17 ++++++++++++ 2 files changed, 46 insertions(+) diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index 7df967d6289..ac89f6f23c7 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -156,6 +156,35 @@ homeassistant: ```

+### {% linkable_title Video support %} + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + title: Send a video + message: That's an example that sends a video. + data: + video: + - url: http://192.168.1.28/camera.mp4 + username: admin + password: secrete + - file: /tmp/video.mp4 + caption: Video Title xy + - url: http://somebla.ie/video.mp4 + caption: I.e. for a Title +``` + +Configuration variables: + +- **url** or **file** (*Required*): For local or remote path to a video. +- **caption** (*Optional*): The title of the video. +- **username** (*Optional*): Username for a URL which require HTTP authentication. +- **password** (*Optional*): Username for a URL which require HTTP authentication. +- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'. +- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. +- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. ### {% linkable_title Document support %} diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index c4d93c43bc5..be2dcff5e5c 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -52,6 +52,23 @@ Send a photo. | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | + +#### {% linkable_title Service `telegram_bot/send_video` %} +Send a video. + +| Service data attribute | Optional | Description | +|---------------------------|----------|--------------------------------------------------| +| `url` | no | Remote path to a video. | +| `file` | no | Local path to a video. | +| `caption` | yes | The title of the video. | +| `username` | yes | Username for a URL which requires HTTP basic authentication. | +| `password` | yes | Password for a URL which requires HTTP basic authentication. | +| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | +| `target` | yes | An array of pre-authorized chat_ids to send the notification to. Defaults to the first allowed chat_id. | +| `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | +| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | +| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | + #### {% linkable_title Service `telegram_bot/send_document` %} Send a document. From a90d5ebc24e85ddb5bb839a1414ca8715a7c1f34 Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 18 Nov 2017 11:09:04 +0200 Subject: [PATCH 19/23] Documentation for es5 / untranspiled JS (#3948) * Documentation for es5/es6 code * Update frontend.markdown * :pencil2: Small typo corrections --- source/_components/frontend.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index ee89044b2ed..40274f80623 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -19,6 +19,11 @@ frontend: ``` {% configuration %} + javascript_version: + description: "Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " + required: false + type: string + default: es5 themes: description: Allow to define different themes. See below for further details. required: false From 6630a5f54a2e3c33f0c798df05a7e9be4137b48a Mon Sep 17 00:00:00 2001 From: Corey Pauley Date: Sat, 18 Nov 2017 03:09:51 -0600 Subject: [PATCH 20/23] Added a brief explanation and screenshot of Alexa Skills Kit and slot type synonyms (#3995) * Added a brief explanation and screenshot of Alexa Skills Kit and slot type synonyms * :pencil2: Added missing comma --- source/_components/alexa.markdown | 7 +++++++ .../components/alexa/scene_slot_synonyms.png | Bin 0 -> 100030 bytes 2 files changed, 7 insertions(+) create mode 100644 source/images/components/alexa/scene_slot_synonyms.png diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index 179fb4076c1..bccf44f2e77 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -135,6 +135,13 @@ Custom slot type for scene support. The names must exactly match the scene names (minus underscores - amazon discards them anyway and we later map them back in with the template). +In the new Alexa Skills Kit, you can also create synonyms for slot type values, which can be used in place of the base value in utterances. Synonyms will be replaced with their associated slot value in the intent request sent to the Alexa API endpoint, but only if there are not multiple synonym matches. Otherwise, the value of the synonym that was spoken will be used. + +

+ +Custom slot values with synonyms. +

+ Add a sample utterance: ```text diff --git a/source/images/components/alexa/scene_slot_synonyms.png b/source/images/components/alexa/scene_slot_synonyms.png new file mode 100644 index 0000000000000000000000000000000000000000..48f9b0950e614da5417141b7294743d9bf38df8d GIT binary patch literal 100030 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
Zm;`|}-ZId?Aa1_lNe78X>-JN1~mZ3guZ7n?b- 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 z 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
    ;Nb#J`+wnKlt6fKfeX^=16H6fLZ`07uy} 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

    5Jn>J4qq%XZNzBjdf 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 z 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 literal 0 HcmV?d00001 From 40e4229f6894cfd3368516ac5debf58504645a9e Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Sat, 18 Nov 2017 17:31:24 +0100 Subject: [PATCH 21/23] Fix line endings on rainbird switch (#4009) --- source/_components/switch.rainbird.markdown | 92 ++++++++++----------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown index 44134393a61..5a8598c3021 100644 --- a/source/_components/switch.rainbird.markdown +++ b/source/_components/switch.rainbird.markdown @@ -1,46 +1,46 @@ ---- -layout: page -title: "Rain Bird Switch" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant." -date: 2017-08-25 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: rainbird.png -ha_category: Hub -ha_release: 0.57 -ha_iot_class: "Local Polling" ---- - -This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant. - -To enable stations as switches inside Home Assistant, add the following to your `configuration.yaml` file: - -```yaml -switch: - platform: rainbird - host: '1.1.1.1' - password: 'secretpassword' - sprinkler_1: - zone: 1 - friendly_name: "Front sprinklers" - trigger_time: 20 - scan_interval: 10 - sprinkler_2: - friendly_name: "Back sprinklers" - zone: 2 - trigger_time: 20 - scan_interval: 10 -``` - -Configuration variables: - -- **stickip** (*Required*): The IP address of your LNK WiFi Module. -- **password** (*Required*): The password for accessing the module. -- **zone** (*Required*): Station zone identifier. -- **friendly_name** (*Optional*): Just a friendly name for the station. -- **trigger_time** (*Required*): The default duration to sprinkle the zone. -- **scan_interval** (*Optional*): How fast to refresh the switch. - -Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active). +--- +layout: page +title: "Rain Bird Switch" +description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant." +date: 2017-08-25 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rainbird.png +ha_category: Hub +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + +This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant. + +To enable stations as switches inside Home Assistant, add the following to your `configuration.yaml` file: + +```yaml +switch: + platform: rainbird + host: '1.1.1.1' + password: 'secretpassword' + sprinkler_1: + zone: 1 + friendly_name: "Front sprinklers" + trigger_time: 20 + scan_interval: 10 + sprinkler_2: + friendly_name: "Back sprinklers" + zone: 2 + trigger_time: 20 + scan_interval: 10 +``` + +Configuration variables: + +- **stickip** (*Required*): The IP address of your LNK WiFi Module. +- **password** (*Required*): The password for accessing the module. +- **zone** (*Required*): Station zone identifier. +- **friendly_name** (*Optional*): Just a friendly name for the station. +- **trigger_time** (*Required*): The default duration to sprinkle the zone. +- **scan_interval** (*Optional*): How fast to refresh the switch. + +Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active). From 17d3be1616b04fb76562617c4ff0b01f0e74b800 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 18 Nov 2017 10:27:33 -0800 Subject: [PATCH 22/23] Rename wrongly named files --- ...rkdown => 2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown} | 0 ...ystem.markdown => 2017-09-25-new-hassio-build-system.markdown} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename source/_posts/{2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown => 2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown} (100%) rename source/_posts/{2019-09-25-new-hassio-build-system.markdown => 2017-09-25-new-hassio-build-system.markdown} (100%) diff --git a/source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown b/source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown similarity index 100% rename from source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown rename to source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown diff --git a/source/_posts/2019-09-25-new-hassio-build-system.markdown b/source/_posts/2017-09-25-new-hassio-build-system.markdown similarity index 100% rename from source/_posts/2019-09-25-new-hassio-build-system.markdown rename to source/_posts/2017-09-25-new-hassio-build-system.markdown From 70d3d0084b120997f218f8160dcc902b1f5be4ad Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 18 Nov 2017 12:19:10 -0800 Subject: [PATCH 23/23] Add release notes for 0.58 --- Gemfile.lock | 3 + ....markdown => switch.hikvisioncam.markdown} | 0 source/_posts/2017-11-18-release-58.markdown | 486 ++++++++++++++++++ .../images/blog/2017-11-0.58/components.png | Bin 0 -> 18349 bytes .../images/blog/2017-11-0.58/system_log.png | Bin 0 -> 23275 bytes 5 files changed, 489 insertions(+) rename source/_components/{switch.hikvision.markdown => switch.hikvisioncam.markdown} (100%) create mode 100644 source/_posts/2017-11-18-release-58.markdown create mode 100644 source/images/blog/2017-11-0.58/components.png create mode 100644 source/images/blog/2017-11-0.58/system_log.png diff --git a/Gemfile.lock b/Gemfile.lock index 5fc8a009c40..4a9684644f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -109,5 +109,8 @@ DEPENDENCIES sinatra (~> 1.4.2) stringex (~> 1.4) +RUBY VERSION + ruby 2.4.1p111 + BUNDLED WITH 1.15.4 diff --git a/source/_components/switch.hikvision.markdown b/source/_components/switch.hikvisioncam.markdown similarity index 100% rename from source/_components/switch.hikvision.markdown rename to source/_components/switch.hikvisioncam.markdown diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown new file mode 100644 index 00000000000..197e267cdfd --- /dev/null +++ b/source/_posts/2017-11-18-release-58.markdown @@ -0,0 +1,486 @@ +--- +layout: post +title: "0.58: More translations, faster frontend, system log" +description: "We now have 445 translators helping out and the frontend is receiving some polishing." +date: 2017-11-18 04:00:00 +date_formatted: "November 18, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-11-0.58/languages.png +--- + + + +

    +The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend. +

    + +## {% linkable_title Translation update %} + +Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. [@armills] and [@c727] are doing an amazing job managing this project. We've doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translaters are on top of their game and 79% is already translated. + +Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks! + +And because more translations is more better, [@robbiet480] has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages. + +[Learn more about how to help with translations](https://home-assistant.io/blog/2017/11/05/frontend-translations/) + +## {% linkable_title Frontend improvements continue %} + +Thanks to [@Andrey-git] we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it's opt-in but we're looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices. + +To try it once, add `?latest` to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this: + +``` +frontend: + javascript_version: latest +``` + +

    +For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend. +

    + +### {% linkable_title System log enhanced %} + +Our about screen that shows the error logs has gained a nice upgrade by [@postlund]. Now the 50 latest exceptions will be displayed with the option to get more information. + +

    + Screenshot of the about screen showing the system log. + Screenshot of the about screen showing the system log. +

    + +## {% linkable_title New Platforms %} + +- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform) +- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform) +- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) +- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform) +- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform) +- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform) +- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform) +- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform) + +## {% 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. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + + - `hass.states.is_state_attr(entity_id, attribute, value)` has been removed. The template version still exists. Unused method parameter `wait` has been removed from `hass.bus.async_fire` ([@balloob] - [#10305]) (breaking change) +- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) +- Lutron released a firmware updated for the Caseta system which removed our ability to connect to and control the bridge device over SSH, breaking compatibility with pylutron_caseta and Home Assistant. Component has been updated to work again, please see the docs on how to set it up. ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change) + +## {% linkable_title All changes %} + +- Bump python-miio for improved device support ([@syssi] - [#10294]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) +- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform) +- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform) +- Clean up core ([@balloob] - [#10305]) (breaking change) +- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) +- Move constants to setup.py ([@fabaff] - [#10312]) ([no_ip docs]) +- Add option to overwrite file to the downloader component ([@arsaboo] - [#10298]) ([downloader docs]) +- Use constants for HTTP headers ([@fabaff] - [#10313]) ([binary_sensor.aurora docs]) ([device_tracker.tplink docs]) ([device_tracker.upc_connect docs]) ([media_player.bluesound docs]) ([sensor.haveibeenpwned docs]) ([sensor.zamg docs]) ([telegram_bot.polling docs]) +- fix a import in test causing vs code to fail to discover ([@perosb] - [#10358]) +- Upgrade sqlalchemy to 1.1.15 ([@fabaff] - [#10330]) +- Move counter component ([@fabaff] - [#10332]) ([counter docs]) +- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform) +- Add heal_node and test_node services. ([@turbokongen] - [#10369]) ([zwave docs]) +- Addition of new binary sensor class 'plug' ([@echox] - [#10336]) ([binary_sensor docs]) +- Upgrae simplepush to 1.1.4 ([@fabaff] - [#10365]) ([notify.simplepush docs]) +- Update aiohttp to 2.3.1 ([@pvizeli] - [#10139]) +- Device model identification of the Xiaomi Philips Ceiling Lamp fixed. ([@syssi] - [#10401]) ([light.xiaomi_miio docs]) +- Zwave save cache to file now. ([@turbokongen] - [#10381]) +- Bump to 0.12.2 to fix urllib3 dependency ([@MisterWil] - [#10420]) ([abode docs]) +- Remove extra info from zwave entity states ([@armills] - [#10413]) ([zwave docs]) +- Fixes issue #10425 ([@robmarkcole] - [#10426]) ([sensor.london_air docs]) +- Add baudrate option to Serial sensor ([@dgomes] - [#10439]) ([sensor.serial docs]) (breaking change) +- Remove model info from state ([@balloob] - [#10399]) ([light.tradfri docs]) +- update tibber library ([@danielhiversen] - [#10460]) ([sensor.tibber docs]) +- update pywebpush==1.3.0 ([@perosb] - [#10374]) ([notify.html5 docs]) +- Fix slow WOL switch test ([@balloob] - [#10455]) +- Fix recorder stop on SQLite vacuuming error ([@milanvo] - [#10405]) +- Add include/exclude filter to mqtt_statestream ([@mw-white] - [#10354]) ([mqtt_statestream docs]) +- Upgrade to 0.1.2 ([@TopdRob] - [#10348]) ([notify.free_mobile docs]) +- Upgrade pyatv to 0.3.6 ([@TopdRob] - [#10349]) ([apple_tv docs]) +- Remove useless temp converting ([@pvizeli] - [#10465]) ([climate.homematic docs]) +- Upgrade apns2 to 0.3.0 ([@TopdRob] - [#10347]) ([notify.apns docs]) +- Improvement of KNX climate component ([@Julius2342] - [#10388]) ([knx docs]) ([climate.knx docs]) +- Updated gc100 package requirement to 1.0.3a ([@davegravy] - [#10484]) ([gc100 docs]) +- Remove lag from Harmony remote platform ([@amelchio] - [#10218]) ([remote docs]) ([remote.harmony docs]) +- Improve error handling. ([@cgtobi] - [#10482]) ([influxdb docs]) +- Upgrade psutil to 5.4.1 ([@fabaff] - [#10490]) ([sensor.systemmonitor docs]) +- Upgrade youtube_dl to 2017.11.06 ([@fabaff] - [#10491]) ([media_extractor docs]) +- Fix for telegram polling. (added pausing when error occurs) ([@sander76] - [#10214]) ([telegram_bot.polling docs]) +- add JSON processing capabilities to sensor_serial ([@dgomes] - [#10476]) ([sensor.serial docs]) +- upgrade to new pylutron_caseta with TLS ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change) +- Bump dev to 0.58.0.dev0 ([@fabaff] - [#10510]) +- OwnTracks Message Handling ([@ehagan] - [#10489]) ([device_tracker.owntracks docs]) +- Add support for Alexa intent slot synonyms. ([@kmdm] - [#10469]) +- Introduce media progress for Yamaha Musiccast devices ([@jalmeroth] - [#10256]) ([media_player.yamaha_musiccast docs]) +- Add an option to serve ES6 JS to clients ([@andrey-git] - [#10474]) +- Adapt to new yarl API ([@tinloaf] - [#10527]) ([tts.google docs]) +- Update nederlandse_spoorwegen.py to include platform information ([@hmmbob] - [#10494]) ([sensor.nederlandse_spoorwegen docs]) +- Pin yarl ([@tinloaf] - [#10528]) +- Support configuration of region (no service url neccessary ([@molobrakos] - [#10513]) ([volvooncall docs]) +- Fix import in tests ([@andrey-git] - [#10525]) +- Update axis.py ([@Kane610] - [#10412]) ([axis docs]) +- Add attribute to show who last un/set alarm (SPC) ([@mbrrg] - [#9906]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) +- Fixed Wink Quirky Aros bugs. ([@w1ll1am23] - [#10533]) ([climate.wink docs]) +- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform) +- telegram_bot: Support for sending videos ([@vickyg3] - [#10470]) ([telegram_bot docs]) ([notify.telegram docs]) +- Pre-construct frontend index.html ([@balloob] - [#10520]) +- notify.html5: use new json save and load functions ([@perosb] - [#10416]) ([notify.html5 docs]) +- Change to device state attributes ([@dgomes] - [#10536]) ([sensor.serial docs]) +- Google Assistant request sync service ([@r4nd0mbr1ck] - [#10165]) +- Optimize concurrent access to media player image cache ([@amelchio] - [#10345]) ([media_player docs]) +- webostv: set current source correctly ([@KapJI] - [#10548]) ([media_player.webostv docs]) +- Upgrade pysnmp to 4.4.2 ([@fabaff] - [#10539]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Fix and clean lametric ([@MartinHjelmare] - [#10391]) ([lametric docs]) ([notify.lametric docs]) +- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform) +- Better support for int types ([@ziotibia81] - [#10409]) ([sensor.modbus docs]) +- Don't use the 'id' field since it can be autogenerated (fixes #10551). ([@kmdm] - [#10554]) +- pad packets to multiple of 4 characters ([@SteveEdson] - [#10560]) ([switch.broadlink docs]) +- Move temperature display helper from components to helpers ([@fabaff] - [#10555]) ([climate docs]) ([weather docs]) ([climate.eq3btsmart docs]) +- webostv: Reduce default timeout to prevent log spamming ([@abmantis] - [#10564]) ([media_player.webostv docs]) +- Fix lametric sound ([@MartinHjelmare] - [#10562]) ([lametric docs]) ([notify.lametric docs]) +- Use a template for the Universal media player state ([@azogue] - [#10395]) ([media_player.universal docs]) +- Verisure: Added option to set installation giid ([@abjorshammar] - [#10504]) ([verisure docs]) +- Bump ring_doorbell to 0.1.7 ([@tchellomello] - [#10566]) ([ring docs]) +- Add code to enable discovery for mqtt cover ([@marthoc] - [#10580]) ([cover.mqtt docs]) +- Google Assistant for climate entities: Support QUERY and respect system-wide unit_system setting. ([@emosenkis] - [#10346]) +- turn service call handler into coroutine ([@NovapaX] - [#10576]) ([configurator docs]) +- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform) +- Tradfri unique identities ([@NovapaX] - [#10414]) ([tradfri docs]) +- Add panel build type ([@balloob] - [#10589]) +- Cloud updates ([@balloob] - [#10567]) +- Upgrade youtube_dl to 2017.11.15 ([@fabaff] - [#10592]) ([media_extractor docs]) +- Fix Yahoo Weather icons over SSL ([@OnFreund] - [#10602]) ([sensor.yweather docs]) +- Arlo - Fixes for updated library ([@jwillaz] - [#9892]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs]) +- Do not add panel from system_log ([@postlund] - [#10600]) ([system_log docs]) +- Fix ValueError exception ([@ziotibia81] - [#10596]) ([sensor.modbus docs]) +- Fix Hikvision (motion) switch bug ([@arsaboo] - [#10608]) ([switch.hikvisioncam docs]) +- Allow unicode when dumping yaml ([@andrey-git] - [#10607]) +- Support script execution for Alexa ([@micbase] - [#10517]) ([alexa.smart_home docs]) +- bump client version ([@wardcraigj] - [#10610]) ([alarm_control_panel.totalconnect docs]) +- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform) +- Modbus switch register support ([@ziotibia81] - [#10563]) ([switch.modbus docs]) +- Upgrade mypy to 0.550 ([@fabaff] - [#10591]) +- Small fix to be able to use mac and vendor in "device_tracker_new_device" event. ([@Boltgolt] - [#10537]) ([device_tracker docs]) +- add support for color temperature and color to Google Assistant ([@perosb] - [#10039]) +- Cleanup old stale restore feature ([@pvizeli] - [#10593]) ([light docs]) +- Correct input_datetime initial value parsing ([@colindunn] - [#10417]) ([input_datetime docs]) +- Change generic thermostat to control heating on mode change Off -> Auto ([@milanvo] - [#10601]) ([climate.generic_thermostat docs]) +- Improve WUnderground config validation ([@milanvo] - [#10573]) ([sensor.wunderground docs]) +- update hbmqtt to 0.9.1 ([@masarliev] - [#10611]) +- Allow to pass YandexTTS options via sevice call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) +- Snapcast: bump version and enable reconnect. ([@janLo] - [#10626]) ([media_player.snapcast docs]) +- Fix async missing decorators ([@armills] - [#10628]) +- Alexa slot synonym fix ([@devspacenine] - [#10614]) +- Adjust logging in downloader component ([@amelchio] - [#10622]) ([downloader docs]) +- Added sorted() to python_script ([@etsinko] - [#10621]) ([python_script docs]) +- Add loglinefetch for frontend API call ([@turbokongen] - [#10579]) +- Fixes AirVisual bug regarding incorrect location data ([@bachya] - [#10054]) ([sensor.airvisual docs]) +- Make MQTT reconnection logic more resilient and fix race condition ([@cezarsa] - [#10133]) ([mqtt docs]) +- Alexa improvements ([@robbiet480] - [#10632]) ([alexa.smart_home docs]) +- Print entity type in "too slow" warnings ([@andrey-git] - [#10641]) +- Bump pyatv to 0.3.8 ([@postlund] - [#10643]) ([apple_tv docs]) +- Implement entity and domain exclude/include for Alexa ([@robbiet480] - [#10647]) + +[#10039]: https://github.com/home-assistant/home-assistant/pull/10039 +[#10054]: https://github.com/home-assistant/home-assistant/pull/10054 +[#10089]: https://github.com/home-assistant/home-assistant/pull/10089 +[#10133]: https://github.com/home-assistant/home-assistant/pull/10133 +[#10139]: https://github.com/home-assistant/home-assistant/pull/10139 +[#10165]: https://github.com/home-assistant/home-assistant/pull/10165 +[#10195]: https://github.com/home-assistant/home-assistant/pull/10195 +[#10214]: https://github.com/home-assistant/home-assistant/pull/10214 +[#10218]: https://github.com/home-assistant/home-assistant/pull/10218 +[#10256]: https://github.com/home-assistant/home-assistant/pull/10256 +[#10286]: https://github.com/home-assistant/home-assistant/pull/10286 +[#10294]: https://github.com/home-assistant/home-assistant/pull/10294 +[#10298]: https://github.com/home-assistant/home-assistant/pull/10298 +[#10305]: https://github.com/home-assistant/home-assistant/pull/10305 +[#10312]: https://github.com/home-assistant/home-assistant/pull/10312 +[#10313]: https://github.com/home-assistant/home-assistant/pull/10313 +[#10330]: https://github.com/home-assistant/home-assistant/pull/10330 +[#10332]: https://github.com/home-assistant/home-assistant/pull/10332 +[#10336]: https://github.com/home-assistant/home-assistant/pull/10336 +[#10345]: https://github.com/home-assistant/home-assistant/pull/10345 +[#10346]: https://github.com/home-assistant/home-assistant/pull/10346 +[#10347]: https://github.com/home-assistant/home-assistant/pull/10347 +[#10348]: https://github.com/home-assistant/home-assistant/pull/10348 +[#10349]: https://github.com/home-assistant/home-assistant/pull/10349 +[#10354]: https://github.com/home-assistant/home-assistant/pull/10354 +[#10358]: https://github.com/home-assistant/home-assistant/pull/10358 +[#10365]: https://github.com/home-assistant/home-assistant/pull/10365 +[#10369]: https://github.com/home-assistant/home-assistant/pull/10369 +[#10374]: https://github.com/home-assistant/home-assistant/pull/10374 +[#10381]: https://github.com/home-assistant/home-assistant/pull/10381 +[#10388]: https://github.com/home-assistant/home-assistant/pull/10388 +[#10391]: https://github.com/home-assistant/home-assistant/pull/10391 +[#10395]: https://github.com/home-assistant/home-assistant/pull/10395 +[#10399]: https://github.com/home-assistant/home-assistant/pull/10399 +[#10401]: https://github.com/home-assistant/home-assistant/pull/10401 +[#10405]: https://github.com/home-assistant/home-assistant/pull/10405 +[#10409]: https://github.com/home-assistant/home-assistant/pull/10409 +[#10412]: https://github.com/home-assistant/home-assistant/pull/10412 +[#10413]: https://github.com/home-assistant/home-assistant/pull/10413 +[#10414]: https://github.com/home-assistant/home-assistant/pull/10414 +[#10416]: https://github.com/home-assistant/home-assistant/pull/10416 +[#10417]: https://github.com/home-assistant/home-assistant/pull/10417 +[#10420]: https://github.com/home-assistant/home-assistant/pull/10420 +[#10426]: https://github.com/home-assistant/home-assistant/pull/10426 +[#10439]: https://github.com/home-assistant/home-assistant/pull/10439 +[#10455]: https://github.com/home-assistant/home-assistant/pull/10455 +[#10460]: https://github.com/home-assistant/home-assistant/pull/10460 +[#10465]: https://github.com/home-assistant/home-assistant/pull/10465 +[#10469]: https://github.com/home-assistant/home-assistant/pull/10469 +[#10470]: https://github.com/home-assistant/home-assistant/pull/10470 +[#10474]: https://github.com/home-assistant/home-assistant/pull/10474 +[#10476]: https://github.com/home-assistant/home-assistant/pull/10476 +[#10478]: https://github.com/home-assistant/home-assistant/pull/10478 +[#10482]: https://github.com/home-assistant/home-assistant/pull/10482 +[#10484]: https://github.com/home-assistant/home-assistant/pull/10484 +[#10489]: https://github.com/home-assistant/home-assistant/pull/10489 +[#10490]: https://github.com/home-assistant/home-assistant/pull/10490 +[#10491]: https://github.com/home-assistant/home-assistant/pull/10491 +[#10492]: https://github.com/home-assistant/home-assistant/pull/10492 +[#10494]: https://github.com/home-assistant/home-assistant/pull/10494 +[#10504]: https://github.com/home-assistant/home-assistant/pull/10504 +[#10510]: https://github.com/home-assistant/home-assistant/pull/10510 +[#10513]: https://github.com/home-assistant/home-assistant/pull/10513 +[#10517]: https://github.com/home-assistant/home-assistant/pull/10517 +[#10520]: https://github.com/home-assistant/home-assistant/pull/10520 +[#10522]: https://github.com/home-assistant/home-assistant/pull/10522 +[#10525]: https://github.com/home-assistant/home-assistant/pull/10525 +[#10527]: https://github.com/home-assistant/home-assistant/pull/10527 +[#10528]: https://github.com/home-assistant/home-assistant/pull/10528 +[#10533]: https://github.com/home-assistant/home-assistant/pull/10533 +[#10536]: https://github.com/home-assistant/home-assistant/pull/10536 +[#10537]: https://github.com/home-assistant/home-assistant/pull/10537 +[#10539]: https://github.com/home-assistant/home-assistant/pull/10539 +[#10548]: https://github.com/home-assistant/home-assistant/pull/10548 +[#10554]: https://github.com/home-assistant/home-assistant/pull/10554 +[#10555]: https://github.com/home-assistant/home-assistant/pull/10555 +[#10560]: https://github.com/home-assistant/home-assistant/pull/10560 +[#10562]: https://github.com/home-assistant/home-assistant/pull/10562 +[#10563]: https://github.com/home-assistant/home-assistant/pull/10563 +[#10564]: https://github.com/home-assistant/home-assistant/pull/10564 +[#10566]: https://github.com/home-assistant/home-assistant/pull/10566 +[#10567]: https://github.com/home-assistant/home-assistant/pull/10567 +[#10573]: https://github.com/home-assistant/home-assistant/pull/10573 +[#10576]: https://github.com/home-assistant/home-assistant/pull/10576 +[#10578]: https://github.com/home-assistant/home-assistant/pull/10578 +[#10579]: https://github.com/home-assistant/home-assistant/pull/10579 +[#10580]: https://github.com/home-assistant/home-assistant/pull/10580 +[#10589]: https://github.com/home-assistant/home-assistant/pull/10589 +[#10591]: https://github.com/home-assistant/home-assistant/pull/10591 +[#10592]: https://github.com/home-assistant/home-assistant/pull/10592 +[#10593]: https://github.com/home-assistant/home-assistant/pull/10593 +[#10596]: https://github.com/home-assistant/home-assistant/pull/10596 +[#10600]: https://github.com/home-assistant/home-assistant/pull/10600 +[#10601]: https://github.com/home-assistant/home-assistant/pull/10601 +[#10602]: https://github.com/home-assistant/home-assistant/pull/10602 +[#10607]: https://github.com/home-assistant/home-assistant/pull/10607 +[#10608]: https://github.com/home-assistant/home-assistant/pull/10608 +[#10610]: https://github.com/home-assistant/home-assistant/pull/10610 +[#10611]: https://github.com/home-assistant/home-assistant/pull/10611 +[#10614]: https://github.com/home-assistant/home-assistant/pull/10614 +[#10621]: https://github.com/home-assistant/home-assistant/pull/10621 +[#10622]: https://github.com/home-assistant/home-assistant/pull/10622 +[#10626]: https://github.com/home-assistant/home-assistant/pull/10626 +[#10628]: https://github.com/home-assistant/home-assistant/pull/10628 +[#10632]: https://github.com/home-assistant/home-assistant/pull/10632 +[#10641]: https://github.com/home-assistant/home-assistant/pull/10641 +[#10643]: https://github.com/home-assistant/home-assistant/pull/10643 +[#10647]: https://github.com/home-assistant/home-assistant/pull/10647 +[#9682]: https://github.com/home-assistant/home-assistant/pull/9682 +[#9892]: https://github.com/home-assistant/home-assistant/pull/9892 +[#9906]: https://github.com/home-assistant/home-assistant/pull/9906 +[#9928]: https://github.com/home-assistant/home-assistant/pull/9928 +[#9946]: https://github.com/home-assistant/home-assistant/pull/9946 +[@Boltgolt]: https://github.com/Boltgolt +[@GenericStudent]: https://github.com/GenericStudent +[@Julius2342]: https://github.com/Julius2342 +[@Kane610]: https://github.com/Kane610 +[@KapJI]: https://github.com/KapJI +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MisterWil]: https://github.com/MisterWil +[@NovapaX]: https://github.com/NovapaX +[@OnFreund]: https://github.com/OnFreund +[@SteveEdson]: https://github.com/SteveEdson +[@TopdRob]: https://github.com/TopdRob +[@abjorshammar]: https://github.com/abjorshammar +[@abmantis]: https://github.com/abmantis +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@arilotter]: https://github.com/arilotter +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@cezarsa]: https://github.com/cezarsa +[@cgtobi]: https://github.com/cgtobi +[@colindunn]: https://github.com/colindunn +[@danielhiversen]: https://github.com/danielhiversen +[@davegravy]: https://github.com/davegravy +[@devspacenine]: https://github.com/devspacenine +[@dgomes]: https://github.com/dgomes +[@echox]: https://github.com/echox +[@ehagan]: https://github.com/ehagan +[@emosenkis]: https://github.com/emosenkis +[@etsinko]: https://github.com/etsinko +[@fabaff]: https://github.com/fabaff +[@fabfurnari]: https://github.com/fabfurnari +[@hmmbob]: https://github.com/hmmbob +[@hthiery]: https://github.com/hthiery +[@iMarkus]: https://github.com/iMarkus +[@jabesq]: https://github.com/jabesq +[@jalmeroth]: https://github.com/jalmeroth +[@janLo]: https://github.com/janLo +[@jwillaz]: https://github.com/jwillaz +[@kmdm]: https://github.com/kmdm +[@marthoc]: https://github.com/marthoc +[@masarliev]: https://github.com/masarliev +[@mbrrg]: https://github.com/mbrrg +[@mdonoughe]: https://github.com/mdonoughe +[@micbase]: https://github.com/micbase +[@milanvo]: https://github.com/milanvo +[@molobrakos]: https://github.com/molobrakos +[@mw-white]: https://github.com/mw-white +[@perosb]: https://github.com/perosb +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@r4nd0mbr1ck]: https://github.com/r4nd0mbr1ck +[@robbiet480]: https://github.com/robbiet480 +[@c727]: https://github.com/c727 +[@robmarkcole]: https://github.com/robmarkcole +[@sander76]: https://github.com/sander76 +[@syssi]: https://github.com/syssi +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@turbokongen]: https://github.com/turbokongen +[@vickyg3]: https://github.com/vickyg3 +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@ziotibia81]: https://github.com/ziotibia81 +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel.spc docs]: https://home-assistant.io/components/alarm_control_panel.spc/ +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[alexa.const docs]: https://home-assistant.io/components/alexa.const/ +[alexa.intent docs]: https://home-assistant.io/components/alexa.intent/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/ +[apple_tv docs]: https://home-assistant.io/components/apple_tv/ +[arlo docs]: https://home-assistant.io/components/arlo/ +[axis docs]: https://home-assistant.io/components/axis/ +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.aurora docs]: https://home-assistant.io/components/binary_sensor.aurora/ +[binary_sensor.spc docs]: https://home-assistant.io/components/binary_sensor.spc/ +[binary_sensor.vultr docs]: https://home-assistant.io/components/binary_sensor.vultr/ +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[climate.wink docs]: https://home-assistant.io/components/climate.wink/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/ +[cloud.const docs]: https://home-assistant.io/components/cloud.const/ +[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[config.zwave docs]: https://home-assistant.io/components/config.zwave/ +[configurator docs]: https://home-assistant.io/components/configurator/ +[counter docs]: https://home-assistant.io/components/counter/ +[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.hitron_coda docs]: https://home-assistant.io/components/device_tracker.hitron_coda/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[device_tracker.tile docs]: https://home-assistant.io/components/device_tracker.tile/ +[device_tracker.tplink docs]: https://home-assistant.io/components/device_tracker.tplink/ +[device_tracker.upc_connect docs]: https://home-assistant.io/components/device_tracker.upc_connect/ +[downloader docs]: https://home-assistant.io/components/downloader/ +[gc100 docs]: https://home-assistant.io/components/gc100/ +[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[input_datetime docs]: https://home-assistant.io/components/input_datetime/ +[knx docs]: https://home-assistant.io/components/knx/ +[lametric docs]: https://home-assistant.io/components/lametric/ +[light docs]: https://home-assistant.io/components/light/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[lutron_caseta docs]: https://home-assistant.io/components/lutron_caseta/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player docs]: https://home-assistant.io/components/media_player/ +[media_player.bluesound docs]: https://home-assistant.io/components/media_player.bluesound/ +[media_player.snapcast docs]: https://home-assistant.io/components/media_player.snapcast/ +[media_player.universal docs]: https://home-assistant.io/components/media_player.universal/ +[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/ +[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[mqtt.discovery docs]: https://home-assistant.io/components/mqtt.discovery/ +[mqtt.server docs]: https://home-assistant.io/components/mqtt.server/ +[mqtt_statestream docs]: https://home-assistant.io/components/mqtt_statestream/ +[neato docs]: https://home-assistant.io/components/neato/ +[no_ip docs]: https://home-assistant.io/components/no_ip/ +[notify.apns docs]: https://home-assistant.io/components/notify.apns/ +[notify.free_mobile docs]: https://home-assistant.io/components/notify.free_mobile/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/ +[notify.simplepush docs]: https://home-assistant.io/components/notify.simplepush/ +[notify.telegram docs]: https://home-assistant.io/components/notify.telegram/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[remote docs]: https://home-assistant.io/components/remote/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[ring docs]: https://home-assistant.io/components/ring/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/ +[sensor.haveibeenpwned docs]: https://home-assistant.io/components/sensor.haveibeenpwned/ +[sensor.lacrosse docs]: https://home-assistant.io/components/sensor.lacrosse/ +[sensor.london_air docs]: https://home-assistant.io/components/sensor.london_air/ +[sensor.modbus docs]: https://home-assistant.io/components/sensor.modbus/ +[sensor.neato docs]: https://home-assistant.io/components/sensor.neato/ +[sensor.nederlandse_spoorwegen docs]: https://home-assistant.io/components/sensor.nederlandse_spoorwegen/ +[sensor.pyload docs]: https://home-assistant.io/components/sensor.pyload/ +[sensor.serial docs]: https://home-assistant.io/components/sensor.serial/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/ +[sensor.viaggiatreno docs]: https://home-assistant.io/components/sensor.viaggiatreno/ +[sensor.vultr docs]: https://home-assistant.io/components/sensor.vultr/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/ +[sensor.zamg docs]: https://home-assistant.io/components/sensor.zamg/ +[spc docs]: https://home-assistant.io/components/spc/ +[switch.broadlink docs]: https://home-assistant.io/components/switch.broadlink/ +[switch.hikvisioncam docs]: https://home-assistant.io/components/switch.hikvisioncam/ +[switch.modbus docs]: https://home-assistant.io/components/switch.modbus/ +[switch.neato docs]: https://home-assistant.io/components/switch.neato/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[system_log docs]: https://home-assistant.io/components/system_log/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[tts docs]: https://home-assistant.io/components/tts/ +[tts.google docs]: https://home-assistant.io/components/tts.google/ +[tts.yandextts docs]: https://home-assistant.io/components/tts.yandextts/ +[vacuum.neato docs]: https://home-assistant.io/components/vacuum.neato/ +[verisure docs]: https://home-assistant.io/components/verisure/ +[volvooncall docs]: https://home-assistant.io/components/volvooncall/ +[vultr docs]: https://home-assistant.io/components/vultr/ +[weather docs]: https://home-assistant.io/components/weather/ +[weather.demo docs]: https://home-assistant.io/components/weather.demo/ +[websocket_api docs]: https://home-assistant.io/components/websocket_api/ +[zwave docs]: https://home-assistant.io/components/zwave/ diff --git a/source/images/blog/2017-11-0.58/components.png b/source/images/blog/2017-11-0.58/components.png new file mode 100644 index 0000000000000000000000000000000000000000..bc985562a5433ac9f1107a6367afb607c72fbb0c GIT binary patch literal 18349 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 literal 0 HcmV?d00001 diff --git a/source/images/blog/2017-11-0.58/system_log.png b/source/images/blog/2017-11-0.58/system_log.png new file mode 100644 index 0000000000000000000000000000000000000000..06b363917a07197e073c6c5432b61923f5bf1d07 GIT binary patch literal 23275 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 literal 0 HcmV?d00001