From f9b46aa7f5144db540542f3c54ba06a8ab8dec93 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 12 Mar 2017 11:52:44 +0100 Subject: [PATCH 01/44] Update media_player.samsungtv.markdown Minor clarification based on the samsungctl docs. --- source/_components/media_player.samsungtv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index c59a7b8c084..9f858821272 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -32,7 +32,7 @@ Configuration variables: - **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10`. - **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 55000. If set to 8001, the new websocket connection will be used (required for 2016+ TVs). - **name** (*Optional*): The name you would like to give to the Samsung Smart TV. -- **timeout** (*Optional*): The time-out for the communication with the TV. Defaults to 0. +- **timeout** (*Optional*): The time-out in seconds for the communication with the TV. Defaults to 0 (no timeout). - **mac** (*Optional*): The MAC address of the Samsung Smart TV, eg. `00:11:22:33:44:55:66`. Required for power on support via wake on lan. Currently known supported models: From 02f90f1ddd146033060767c42b421857960d6a89 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 13 Mar 2017 12:17:27 +0100 Subject: [PATCH 02/44] Update integrations --- source/help/talking-points.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/help/talking-points.markdown b/source/help/talking-points.markdown index 51ee75e564e..4c1a952f0c9 100644 --- a/source/help/talking-points.markdown +++ b/source/help/talking-points.markdown @@ -12,7 +12,7 @@ footer: true People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation. - [Numbers, numbers, numbers](/help/trivia/) and other details -- Over 400 implementations +- Over 600 implementations - Not depending on cloud services. We like to keep your privacy private - Control all your devices from a single, mobile-friendly, interface - Written in Python3 with 94% test coverage From 4be56dc97926697b047dd3d3c2474b7309c20c97 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 13 Mar 2017 12:22:47 +0100 Subject: [PATCH 03/44] Add CLT workshop --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index aca835fd48b..2c6f479ca2e 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -29,6 +29,7 @@ Have you found an issue in your Home Assistant installation? Please report it. R ### {% linkable_title Videos, interviews, talks, and alike %} +- [Home Assistant workshop](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop) at [CLT 2017](https://chemnitzer.linux-tage.de/2017/de/) - March 2017 - [Home Assistant with Paulus Schoutsen – Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Home Assistant - Erweiterungen (Platforms/Components)](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2016-puzzle) at [Puzzle ITC](https://www.puzzle.ch/de/) - December 2016 - [Automating Your Life - Home Automation](http://slides.com/teagan42/life_automation#/) at Develop Denver 2016 - August From 1fe29cf1b56a7059ea1af504e999fae706a17778 Mon Sep 17 00:00:00 2001 From: szaroubi Date: Mon, 13 Mar 2017 07:24:11 -0400 Subject: [PATCH 04/44] Fixed Type (#2244) --- source/_docs/ecosystem/ios/notifications.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/ios/notifications.markdown b/source/_docs/ecosystem/ios/notifications.markdown index 21e39368773..68854e1b4b9 100644 --- a/source/_docs/ecosystem/ios/notifications.markdown +++ b/source/_docs/ecosystem/ios/notifications.markdown @@ -12,4 +12,4 @@ redirect_from: /ecosystem/ios/notifications/ The `ios` notify platform enables sending push notifications to the Home Assistant iOS app. -The 'ios' component will automatically load the notify serivce. No extra configuration is needed or supported. +The 'ios' component will automatically load the notify service. No extra configuration is needed or supported. From cdadee5e1cd444200a446d019da872145a343949 Mon Sep 17 00:00:00 2001 From: Johan Eliasson Date: Mon, 13 Mar 2017 12:24:59 +0100 Subject: [PATCH 05/44] More documentation on Amazon Polly Component (#2242) * More documentation on Amazon Polly Component * Fixing indent and example --- source/_components/tts.amazon_polly.markdown | 57 +++++++++++++++++--- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/source/_components/tts.amazon_polly.markdown b/source/_components/tts.amazon_polly.markdown index 74a72492ac7..7433a526a74 100644 --- a/source/_components/tts.amazon_polly.markdown +++ b/source/_components/tts.amazon_polly.markdown @@ -15,7 +15,7 @@ ha_release: 0.37 The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. Polly is a paid service via Amazon Web Services. There is a [free tier](https://aws.amazon.com/polly/pricing/) for the first 12 months and then a charge per million characters afterwards. -To enable text-to-speech with Amazon Polly, add the following lines to your `configuration.yaml`: +To get started, add the following lines to your `configuration.yaml` (example for Amazon Polly): ```yaml # Example configuration.yaml entry @@ -29,9 +29,54 @@ tts: Configuration variables: -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. -- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. -- **profile_name** (*Optional*): A credentials profile name. For more information, please see the [boto3 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +| Parameter | Value | Description | +|---------------------|----------|-------------| +| `aws_access_key_id` | Required | Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name` | +| `aws_secret_access_key` | Required | Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. | +| `profile_name` | Optional | A credentials profile name. For more information, please see the [boto3 | +| `region_name` | Optional | The region identifier to connect to. The default is `us-east-1`. | +| `name` | Optional | Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + | +| `text_type` | text/ssml | text or ssml: Specify wherever to use text (default) or ssml markup | +## Usage +Say to all `media_player` device entities: +```yaml +- service: tts.amazon_polly_say + data_template: + message: 'Hello from Amazon Polly' +``` +or +```yaml +- service: tts.amazon_polly_say + data_template: + message: > + + Hello from Amazon Polly + +``` + +Say to the `media_player.living_room` device entity: + +```yaml +- service: tts.amazon_polly_say + data_template: + entity_id: media_player.living_room + message: > + + Hello from Amazon Polly + +``` + +Say with break: + +```yaml +- service: tts.amazon_polly_say + data_template: + message: > + + Hello from + + Amazon Polly + +``` From 8bdda546ee88540292c73b641c820ab927aee9ae Mon Sep 17 00:00:00 2001 From: Beat Date: Mon, 13 Mar 2017 12:26:08 +0100 Subject: [PATCH 06/44] Updated list of discoverable devices (#2240) Updated the device list from the source code and list the valid options for ignoring devices --- source/_components/discovery.markdown | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 0ab17fea3da..b0f0acb04cf 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -26,6 +26,10 @@ Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP d * Logitech media server (Squeezebox) * DirecTV * Apple TV + * Yeelight Sunflower Bulb + * Flux Led/MagicLight + * Linn / Openhome + * Denon Network Receivers It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user. @@ -43,6 +47,24 @@ Configuration variables: - **ignore** (*Optional*): A list of platforms that never will be automatically configured by `discovery`. +Valid values for ignore are: + * philips_hue: (Philips Hue) + * google_cast: (Google Chromecast) + * panasonic_viera: (Panasonic Viera) + * plex_mediaserver: (Plex media server) + * roku: (Roku media player) + * sonos: (Sonos Speakers) + * yamaha: (Yamaha media player) + * logitech_mediaserver: (Logitech media server - Squeezebox player) + * directv: (DirecTV) + * denonavr: (Denon Network Receivers) + * samsung_tv: (Samsung TV) + * yeelight: (Yeelight Sunflower Bulb) + * flux_led: (Flux Led/MagicLight) + * apple_tv: (Apple TV) + * openhome: (Linn / Openhome) + +

Home Assistant must be on the same network as the devices for uPnP discovery to work. If running Home Assistant in a Docker container use switch `--net=host` to put it on the host's network. From b3e4c4474228a993ed17607bc6ef479a40783eba Mon Sep 17 00:00:00 2001 From: Brahma Fear Date: Mon, 13 Mar 2017 14:32:44 -0400 Subject: [PATCH 07/44] Commas to fix MD links (#2252) --- ...2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown index ef12fa15331..19c1af0d076 100644 --- a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown +++ b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown @@ -17,7 +17,7 @@ It's time for version 0.40 already! For this version, the main focus was on perf Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits. -Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to [@dale3h], [@CCOSTAN], [@skalavala] [@rrubin0] [@brahmafear] [@bassclarinetl2] and [@torn8o]! These are all people that hang out in our [main chat channel] and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇 +Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to [@dale3h], [@CCOSTAN], [@skalavala], [@rrubin0], [@brahmafear], [@bassclarinetl2], and [@torn8o]! These are all people that hang out in our [main chat channel] and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇 And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the [EFF] via the sale of [our t-shirts][hass-shirt]! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again! From 14240cce429d9cb13344467374f995018ee90462 Mon Sep 17 00:00:00 2001 From: R Huish Date: Mon, 13 Mar 2017 19:49:19 +0000 Subject: [PATCH 08/44] RFLink: Added 'Device Incorrectly Identified' text (#2250) * Added 'Device Incorrectly Identified' text * Corrected Typo --- source/_components/rflink.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_components/rflink.markdown b/source/_components/rflink.markdown index 43fe9c4b609..e33633485f4 100644 --- a/source/_components/rflink.markdown +++ b/source/_components/rflink.markdown @@ -94,6 +94,9 @@ Wildcards only work at the end of the ID, not in the middle of front! Even though a lot of devices are supported by Rflink, not all have been tested/implemented. If you have a device supported by Rflink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. +### {% linkable_title Device Incorrectly Identified %} + +If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). http://www.nemcon.nl/blog2/faq#RFFind. ### {% linkable_title Technical overview %} From ec5e81199df2129b9629b3635fe5fe565f11a812 Mon Sep 17 00:00:00 2001 From: Aaron Wolen Date: Mon, 13 Mar 2017 15:50:04 -0400 Subject: [PATCH 09/44] List Python3 version of Gstreamer bindings (#2246) On Raspian Jessie `python-gst-1.0` installs Gstreamer with Python2.7 bindings. Relevant discussion [here](https://community.home-assistant.io/t/snapcast-tts/10824). --- source/_components/media_player.gstreamer.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.gstreamer.markdown b/source/_components/media_player.gstreamer.markdown index 5b50029da7a..c77e8c40496 100644 --- a/source/_components/media_player.gstreamer.markdown +++ b/source/_components/media_player.gstreamer.markdown @@ -37,7 +37,7 @@ And then install the following system dependencies: Debian/Ubuntu/Rasbian: ```bash -sudo apt-get install python-gst-1.0 \ +sudo apt-get install python3-gst-1.0 \ gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \ gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ gstreamer1.0-tools From 1efe756681fc93011c39671ef60219c758235929 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 07:17:24 +0100 Subject: [PATCH 10/44] Add missing entries (fixes #2224) --- source/_includes/asides/docs_navigation.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 5b4ddd810d0..31f98e68405 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -179,6 +179,8 @@

  • {% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}
  • +
  • {% active_link /docs/ecosystem/nginx/ NGINX %}
  • +
  • {% active_link /docs/ecosystem/scenegen/ scenegen %}
  • From f6deade7a4d77835872998f6db31eed0d0ba89cb Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 07:19:02 +0100 Subject: [PATCH 11/44] Add Synology --- source/_includes/asides/docs_navigation.html | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 31f98e68405..570697ab600 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -181,6 +181,7 @@
  • {% active_link /docs/ecosystem/nginx/ NGINX %}
  • {% active_link /docs/ecosystem/scenegen/ scenegen %}
  • +
  • {% active_link /docs/ecosystem/synology/ Synology %}
  • From 3f5f65a882d958f2b52e9c8033f8536492bb59b9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 07:38:02 +0100 Subject: [PATCH 12/44] Update note --- source/_components/light.yeelightsunflower.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/light.yeelightsunflower.markdown index 8db047f6c9f..324ee4b2e8d 100644 --- a/source/_components/light.yeelightsunflower.markdown +++ b/source/_components/light.yeelightsunflower.markdown @@ -11,10 +11,11 @@ ha_category: Light ha_release: 0.39 --- -The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. -Note that the "Yeelight Sunflower" bulbs are not the same as the "Yeelight WiFi" bulbs. +The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. -### {% linkable_title Example configuration %} +

    +The "Yeelight Sunflower" bulbs are not the same as the "Yeelight WiFi" bulbs. +

    To enable your lights, add the following lines to your `configuration.yaml` file: @@ -37,4 +38,3 @@ When the hub is loaded, your lights will appear as devices with their Zigbee IDs The Yeelight Sunflower hub supports SSDP discovery, but that has not been built into the platform. Let the developer know if that would be helpful to you.

    - From a8d88cf251d24c2ceb0171e035d84b26449947ec Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 07:45:30 +0100 Subject: [PATCH 13/44] Fix link (fixes #2199) --- .../2017-02-25-config-panel-and-state-restoration.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown index 3961d94ae9d..161699d373e 100644 --- a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown +++ b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown @@ -297,7 +297,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [aurora]: https://home-assistant.io/components/binary_sensor.aurora/ [netmonitor]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/ [itach]: https://home-assistant.io/components/remote.itach/ -[sunflowers]: https://home-assistant.io/components/light.yeelight-sunflower +[sunflowers]: https://home-assistant.io/components/light.yeelightsunflower/ [kodi]: https://home-assistant.io/components/media_player.kodi/ [myq]: https://home-assistant.io/components/cover.myq/ [oemt]: https://home-assistant.io/components/climate.oem/ From 0ec19f6015772ce16994bab10bc00c0c8051f468 Mon Sep 17 00:00:00 2001 From: Josh Wyse Date: Tue, 14 Mar 2017 05:38:42 -0400 Subject: [PATCH 14/44] Improved grammar/spelling in influxdb markdown (#2257) Fixed some spelling errors and tweaked some incorrect or awkward grammar. Added some markup around specific names/values for readability and consistency with existing documentation. --- source/_components/influxdb.markdown | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index c1382750bff..4c69b010c1a 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -2,7 +2,7 @@ layout: page title: "InfluxDB" description: "Record events in InfluxDB." -date: 2015-12-06 13:08 +date: 2017-03-13 22:09 sidebar: true comments: false sharing: true @@ -27,7 +27,7 @@ You will still need to create a database named `home_assistant` via InfluxDB's w Configuration variables: -- **host** (*Optional*): IP address of your database host, eg. 192.168.1.10. Defaults to `localhost`. +- **host** (*Optional*): IP address of your database host, e.g. 192.168.1.10. Defaults to `localhost`. - **port** (*Optional*): Port to use. Defaults to 8086. - **username** (*Optional*): The username of the database user. - **password** (*Optional*): The password for the database user account. @@ -35,8 +35,8 @@ Configuration variables: - **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. -- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in the singel same measurement. -- **blacklist** (*Optional*): List of entities not logged to InfluxDB. +- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. +- **blacklist** (*Optional*): List of entities that should not be logged to InfluxDB. - **whitelist** (*Optional*): List of the entities (only) that will be logged to InfluxDB. If not set, all entities will be logged. Values set by the **blacklist** option will prevail. - **tags** (*Optional*): Tags to mark the data. @@ -44,23 +44,23 @@ Configuration variables: Starting with 0.36 the InfluxDB component has a new schema to store values in the InfluxDB databases. -- There will not be any tags/fields named time anymore. +- There will no longer be any tags/fields named `time`. - All numeric fields (int/float/bool) will be stored as float inside InfluxDB database. - All string fields corresponding to state attributes will be renamed as `FIELDNAME_str`, where `FIELDNAME` is the state attribute, to avoid type conflicts. -- All string fields corresponding to a state will be renamed as state (former value). -- Fields named value will always be stored as float. -- Fields named state will always be stored as string. +- All string fields corresponding to a state will be renamed as `state` (former value). +- Fields named `value` will always be stored as float. +- Fields named `state` will always be stored as string. ### {% linkable_title Migration script %} -If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before first regular start of `hass` version 0.36. +If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before the first regular start of `hass` version 0.36. These are the steps the script will perform: 1. Create a new database (called `DBNAME__old`) to store old data. 2. Copy data from `DBNAME` database to `DBNAME__old` database. 3. Empty `DBNAME` database (using `drop` then `create`). `DBNAME` database is now considered as the new database. 4. For each measurement of `DBNAME__old` database: - 1. Read all points from the current measuremnt (by group of `1000` points by default) and convert them. + 1. Read all points from the current measurement (in groups of 1000 points by default) and convert them. 2. Send group of points to `DBNAME` database. 5. Delete the `DBNAME__old` database if needed. @@ -94,7 +94,7 @@ optional arguments: - If you run the script with only the `-h` option, you will get a help printout with a short explanation of the different options. - The host option defaults to `'127.0.0.1'`. - The port option defaults to `8086`. -- You should be able to omit username and password, if InfluxDB authentication is disabled, which it is by default. +- You should be able to omit username and password if InfluxDB authentication is disabled, which it is by default. - The step option defaults to `1000`. From e9aa4894af531e7174bc4025008a165c0ea76240 Mon Sep 17 00:00:00 2001 From: Kyle R Date: Tue, 14 Mar 2017 04:40:25 -0500 Subject: [PATCH 15/44] Update notify.twilio_sms.markdown (#2249) --- source/_components/notify.twilio_sms.markdown | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 6931d2507eb..73d21af8e2a 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -18,12 +18,17 @@ To use this notification platform in your installation, add the following to you ```yaml # Example configuration.yaml entry +twilio: + account_sid: "abc" + auth_token: "xyz" + notify: - - name: NOTIFIER_NAME + - name: sms platform: twilio_sms - account_sid: ACCOUNT_SID_FROM_TWILIO - auth_token: AUTH_TOKEN_FROM_TWILIO - from_number: E164_PHONE_NUMBER + from_number: "+1111" + - name: call + platform: twilio_call + from_number: "+1111" ``` Configuration variables: From d75387f3439fdeee0d3bf1c1b8ee7042d5601382 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 10:51:09 +0100 Subject: [PATCH 16/44] Add twilio component and update platforms --- .../_components/notify.twilio_call.markdown | 15 ++------- source/_components/notify.twilio_sms.markdown | 13 ++------ source/_components/twilio.markdown | 33 +++++++++++++++++++ 3 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 source/_components/twilio.markdown diff --git a/source/_components/notify.twilio_call.markdown b/source/_components/notify.twilio_call.markdown index 9458a14ca0c..9caf251d046 100644 --- a/source/_components/notify.twilio_call.markdown +++ b/source/_components/notify.twilio_call.markdown @@ -9,18 +9,13 @@ sharing: true footer: true logo: twilio.png ha_category: Notifications -ha_release: "0.37" +ha_release: 0.37 --- -The `twilio` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). +The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). Passed message will be read by Text-To-Speech service. -This component is just an adaptation from the Twilio SMS notification platform and won't exist without it. - -Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers. -Calls are limited to 10 minutes and will play a short trial message before your message runs. - -Upgraded accounts have no limitation. +The requirement is that you have setup [Twilio](/components/twilio/). To use this notification platform in your installation, add the following to your `configuration.yaml` file: @@ -29,15 +24,11 @@ To use this notification platform in your installation, add the following to you notify: - name: NOTIFIER_NAME platform: twilio_call - account_sid: ACCOUNT_SID_FROM_TWILIO - auth_token: AUTH_TOKEN_FROM_TWILIO from_number: E164_PHONE_NUMBER ``` Configuration variables: -- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. -- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. - **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 73d21af8e2a..81c9570311f 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -18,23 +18,14 @@ To use this notification platform in your installation, add the following to you ```yaml # Example configuration.yaml entry -twilio: - account_sid: "abc" - auth_token: "xyz" - notify: - - name: sms + - name: NOTIFIER_NAME platform: twilio_sms - from_number: "+1111" - - name: call - platform: twilio_call - from_number: "+1111" + from_number: E164_PHONE_NUMBER ``` Configuration variables: -- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. -- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. - **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown new file mode 100644 index 00000000000..6c4e040cbad --- /dev/null +++ b/source/_components/twilio.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Twilio" +description: "Instructions how to add Twilio notifications to Home Assistant." +date: 2016-05-14 14:14 +sidebar: true +comments: false +sharing: true +footer: true +logo: twilio.png +ha_category: Notifications +ha_release: "0.20" +--- + +The `twilio` component enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). + +Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers. +Calls are limited to 10 minutes and will play a short trial message before your message runs. Upgraded accounts have no limitation. + +To use this notification component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +twilio: + account_sid: ACCOUNT_SID_FROM_TWILIO + auth_token: AUTH_TOKEN_FROM_TWILIO +``` + +Configuration variables: + +- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. +- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. + From c1f94faab6aff8f1a7f53679c77689a71d2b7593 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 11:15:09 +0100 Subject: [PATCH 17/44] Update category --- source/_components/notify.twilio_sms.markdown | 2 ++ source/_components/twilio.markdown | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 81c9570311f..1e35c14866e 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -14,6 +14,8 @@ ha_release: "0.20" The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). +The requirement is that you have setup [Twilio](/components/twilio/). + To use this notification platform in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown index 6c4e040cbad..250fc3a0ce7 100644 --- a/source/_components/twilio.markdown +++ b/source/_components/twilio.markdown @@ -8,8 +8,8 @@ comments: false sharing: true footer: true logo: twilio.png -ha_category: Notifications -ha_release: "0.20" +ha_category: Hub +ha_release: "0.40" --- The `twilio` component enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). From f0503a30882fa28d4f262fd4ab88e62eb30efe62 Mon Sep 17 00:00:00 2001 From: Brahma Fear Date: Tue, 14 Mar 2017 06:16:00 -0400 Subject: [PATCH 18/44] Quotes added to example (#2245) The automation 2 / action / data_template example does not adhere to the **must** directive to wrap single line templates in some form of quote. --- source/_docs/automation/templating.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 1a9927fc2c4..a53912dc46c 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -35,7 +35,7 @@ automation 2: service_template: >{% raw %} notify.{{ trigger.topic.split('/')[-1] }}{% endraw %} data_template: - message: {% raw %}{{ trigger.payload }}{% endraw %} + message: {% raw %}'{{ trigger.payload }}'{% endraw %} ``` ## {% linkable_title Important Template Rules %} From 1dfc659fa62c1f687b0ada2743bf2efd5f83da63 Mon Sep 17 00:00:00 2001 From: Josh Anderson Date: Tue, 14 Mar 2017 10:19:05 +0000 Subject: [PATCH 19/44] Document notify.webostv icon configuration (#2188) * Document notify.webos icon configuration * Add full automation example with overridden icon * Grammar fix --- source/_components/notify.webostv.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_components/notify.webostv.markdown b/source/_components/notify.webostv.markdown index 24ab68a53a5..537039581dd 100644 --- a/source/_components/notify.webostv.markdown +++ b/source/_components/notify.webostv.markdown @@ -33,6 +33,7 @@ Configuration variables: - **host** (*Required*): The IP of the LG WebOS Smart TV, e.g. 192.168.0.10 - **name** (*Required*): The name you would like to give to the LG WebOS Smart TV. - **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`. +- **icon** (*Optional*): The path to an image file to use as the icon in notifications. If provided, this image will override the Home Assistant logo. A possible automation could be: @@ -49,3 +50,20 @@ automation: data: message: "You should open a window! (Livingroom Co2: {{ states.sensor.netatmo_livingroom_co2.state }}ppm)" ``` + +The icon can be overridden for individual notifications by providing a path to an alternative icon image to use: + +```yaml +automation: + - alias: Front door motion + trigger: + platform: state + entity_id: binary_sensor.front_door_motion + state: 'on' + action: + service: notify.livingroom_tv + data: + message: "Movement detected: Front Door" + data: + icon: "/home/homeassistant/images/doorbell.png" + ``` From c872eaf6e050dd2f5f529106e7f99d23aa69d9a8 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 20:30:04 +0100 Subject: [PATCH 20/44] Update category (move to system monitoring) --- source/_components/binary_sensor.apcupsd.markdown | 2 +- source/_components/sensor.apcupsd.markdown | 3 ++- source/_components/sensor.nut.markdown | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/_components/binary_sensor.apcupsd.markdown b/source/_components/binary_sensor.apcupsd.markdown index 946c0112062..6c599b75b15 100644 --- a/source/_components/binary_sensor.apcupsd.markdown +++ b/source/_components/binary_sensor.apcupsd.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: apcupsd.png -ha_category: Binary Sensor +ha_category: System Monitor ha_release: 0.13 ha_iot_class: "Local Polling" --- diff --git a/source/_components/sensor.apcupsd.markdown b/source/_components/sensor.apcupsd.markdown index d7e6ae6ae36..57478d821ba 100644 --- a/source/_components/sensor.apcupsd.markdown +++ b/source/_components/sensor.apcupsd.markdown @@ -8,7 +8,8 @@ comments: false sharing: true footer: true logo: apcupsd.png -ha_category: Sensor +ha_release: 0.13 +ha_category: System Monitor --- The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command. diff --git a/source/_components/sensor.nut.markdown b/source/_components/sensor.nut.markdown index a5a70788c28..63489b4c65c 100644 --- a/source/_components/sensor.nut.markdown +++ b/source/_components/sensor.nut.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: nut.png -ha_category: Sensor +ha_category: System Monitor ha_version: 0.34 --- From dd736f1ea108a2e7be15e7f6e05b74508dd6d84c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Mar 2017 20:33:28 +0100 Subject: [PATCH 21/44] Update category (move to diy) --- source/_components/sensor.onewire.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index 5595f7a3607..3ce5ba497b4 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: onewire.png -ha_category: Sensor +ha_category: DIY ha_release: 0.12 --- From 20035f7c074aecfc344fca3608d1b394b290bd59 Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Wed, 15 Mar 2017 02:16:13 -0400 Subject: [PATCH 22/44] Updated device_tracker.unifi documentation to cover the option 'verify_ssl'. (#2263) --- source/_components/device_tracker.unifi.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown index f1586d50948..49fd805edd8 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -32,5 +32,6 @@ Configuration variables: - **username** (*Required*: The username of an user with administrative privileges, usually `admin`. - **password** (*Required*): The password for your given admin account. - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard) +- **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True'. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From a3c91e417e3f2200b12285f7e6ccfc48a13838a7 Mon Sep 17 00:00:00 2001 From: AlucardZero Date: Wed, 15 Mar 2017 02:16:38 -0400 Subject: [PATCH 23/44] Tiny typo fix (#2261) --- source/_docs/z-wave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 85c4ae3fdb2..e8fc9a96b6c 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -82,7 +82,7 @@ Configuration variables: - **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. - **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format: - **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. - - **ignored** (*Optional*): Ignore this entitiy completely. It won't be shown in the Web Interface and no events are generated for it. + - **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. - **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False. - **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds. - **debug** (*Optional*): Print verbose z-wave info to log. Defaults to False. From 0b6c5cfe44f75c646b702929dbba038fa7696c7d Mon Sep 17 00:00:00 2001 From: Johannes K Date: Wed, 15 Mar 2017 07:17:51 +0100 Subject: [PATCH 24/44] Extended Synology-section (#2260) Added explanation regarding network-settings and instructions on how to update HA on Docker running on Synology NAS --- source/_docs/installation/docker.markdown | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index f52f3716091..4b3d8de4633 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -53,9 +53,19 @@ The steps would be: * Click on "Advanced Settings" * Set "Enable auto-restart" if you like * Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount point" has to be "/config", so that Home Assistant will use it for the configs and logs. +* Within "Network" select "Use same network as Docker Host" * Confirm the "Advanced Settings" * Click on "Next" and then "Apply" -* Your Home Assistant within Docker should now run :) +* Your Home Assistant within Docker should now run + +Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following: +* Go to the Docker-app and move to "Image"-section +* Download the "homeassistant/home-assistant" image - don't care, that it is already there +* wait until the system-message/-notification comes up, that the download is finished (there is no progress bar) +* Move to "Container"-section +* Stop your container if it's running +* Right-click on it and select "Action"->"Clear". You won't loose any data, as all files are stored in your config-directory +* Start the container again - it will then boot up with the new Home Assistant image ### {% linkable_title Restart %} From 7da0f4ab69ef62b2bcabf20b03f177436dc41fe9 Mon Sep 17 00:00:00 2001 From: Stephen Edgar Date: Thu, 16 Mar 2017 05:06:18 +1100 Subject: [PATCH 25/44] s/dsm/dms (#2264) --- source/_components/sensor.synologydsm.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/sensor.synologydsm.markdown index 4b194a9df14..2953f4b016b 100644 --- a/source/_components/sensor.synologydsm.markdown +++ b/source/_components/sensor.synologydsm.markdown @@ -14,7 +14,7 @@ ha_iot_class: depends --- -This `synologydms` sensor allows getting various statistics from your [Synology NAS](https://www.synology.com). +This `synologydsm` sensor allows getting various statistics from your [Synology NAS](https://www.synology.com). To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file: From 5927a8d4d52517d7d333c502a102b902b61232d5 Mon Sep 17 00:00:00 2001 From: Beat Date: Wed, 15 Mar 2017 19:07:07 +0100 Subject: [PATCH 26/44] clarification (#2265) The explanation of the elevation property did not metion the default configuration --- source/_components/sun.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sun.markdown b/source/_components/sun.markdown index 1e2924c2160..025daf1bff9 100644 --- a/source/_components/sun.markdown +++ b/source/_components/sun.markdown @@ -11,7 +11,7 @@ logo: home-assistant.png ha_category: Weather --- -The sun component will use your current location to track if the sun is above or below the horizon.The sun can be used within automation as [a trigger with an optional offset to simulate dawn/dusk][automation-trigger]. +The sun component will use your current location to track if the sun is above or below the horizon. The sun can be used within automation as [a trigger with an optional offset to simulate dawn/dusk][automation-trigger]. [automation-trigger]: /getting-started/automation-trigger/#sun-trigger @@ -22,7 +22,7 @@ sun: Configuration variables: -- **elevation** (*Optional*): The (physical) elevation of your location, in metres above sea level. If omitted will be retrieved from Google Maps. +- **elevation** (*Optional*): The (physical) elevation of your location, in metres above sea level. Defaults to the `elevation` in `configuration.yaml`, which is retrieved from Google Maps if not set.

    From c093a92ae1db23f2d43d24f8bb4f5b56f67e8d6e Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Thu, 16 Mar 2017 06:52:56 +0100 Subject: [PATCH 27/44] Changes for home-assistant/home-assistant#6584 (#2259) Remove the broadcast configuration variable. --- source/_components/light.lifx.markdown | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index d4be5e91192..e50d445296c 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -19,12 +19,8 @@ The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) int # Example configuration.yaml entry light: - platform: lifx - broadcast: 192.168.1.255 + server: 192.168.1.10 ``` Configuration variables: - **server** (*Optional*): Your server address. Only needed if using more than one network interface. Omit if you are unsure. -- **broadcast** (*Optional*): The broadcast address, set to reach all LIFX bulbs. - -If there is an issue with lights not showing up when Home Assistant is restarted, add broadcast to your configuration. - From 05d3796c2a2bc44771752a6a940c82fded8d335c Mon Sep 17 00:00:00 2001 From: patock Date: Thu, 16 Mar 2017 02:26:16 -0400 Subject: [PATCH 28/44] Add usage linking to notify components (#2267) Added a note linking to the notification components for SMS and Phone, since additional configuration is required to get twilio working other than just getting the account SID and token placed in the config. --- source/_components/twilio.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown index 250fc3a0ce7..56c7afd5c06 100644 --- a/source/_components/twilio.markdown +++ b/source/_components/twilio.markdown @@ -31,3 +31,5 @@ Configuration variables: - **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. - **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. +### {% linkable_title Usage %} +After configuring the base Twilio component, add and configure either or both of the [twilio SMS](https://home-assistant.io/components/notify.twilio_sms/) and [twilio Phone](https://home-assistant.io/components/notify.twilio_call) components to utilize the notification functionality. From c784e9b29f8d2e6ffef3d7f54af4fc267e5d28f7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 15 Mar 2017 23:52:03 -0700 Subject: [PATCH 29/44] Release 0.40.1 --- _config.yml | 6 ++--- ...se-any-android-phone-as-ip-camera.markdown | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 0c9b301a4ce..333f044a7d7 100644 --- a/_config.yml +++ b/_config.yml @@ -128,9 +128,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 40 -current_patch_version: 0 -date_released: 2017-03-11 +current_patch_version: 1 +date_released: 2017-03-16 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. -patch_version_notes: "#" +patch_version_notes: "#release-0401---march-16" diff --git a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown index 19c1af0d076..b3bbc24662e 100644 --- a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown +++ b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown @@ -69,6 +69,18 @@ twilio: ### Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. +### {% linkable_title Release 0.40.1 - March 16 %} + +- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) +- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) +- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) +- Fix hydroquebec ([@titilambert] - [#6574]) +- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) +- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) +- since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626]) +- Fix Osram Lightify colors ([@deisi] - [#6598]) +- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) + ## All changes @@ -295,3 +307,16 @@ Experiencing issues introduced by this release? Please report them in our [issue [issue]: https://github.com/home-assistant/home-assistant/issues [EFF]: https://www.eff.org [hass-shirt]: https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/ +[#6532]: https://github.com/home-assistant/home-assistant/pull/6532 +[#6552]: https://github.com/home-assistant/home-assistant/pull/6552 +[#6574]: https://github.com/home-assistant/home-assistant/pull/6574 +[#6577]: https://github.com/home-assistant/home-assistant/pull/6577 +[#6580]: https://github.com/home-assistant/home-assistant/pull/6580 +[#6593]: https://github.com/home-assistant/home-assistant/pull/6593 +[#6598]: https://github.com/home-assistant/home-assistant/pull/6598 +[#6602]: https://github.com/home-assistant/home-assistant/pull/6602 +[#6626]: https://github.com/home-assistant/home-assistant/pull/6626 +[@deisi]: https://github.com/deisi +[@goofz]: https://github.com/goofz +[@iamtpage]: https://github.com/iamtpage +[@jnewland]: https://github.com/jnewland From 9a6a8e67ff70fdc741384c52faafdfb3c24a3378 Mon Sep 17 00:00:00 2001 From: boojew Date: Thu, 16 Mar 2017 06:25:37 -0400 Subject: [PATCH 30/44] Update sensor.hydroquebec.markdown (#2127) --- source/_components/sensor.hydroquebec.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.hydroquebec.markdown b/source/_components/sensor.hydroquebec.markdown index d49ecdf9ba6..8a6de8310a3 100644 --- a/source/_components/sensor.hydroquebec.markdown +++ b/source/_components/sensor.hydroquebec.markdown @@ -38,8 +38,8 @@ sensor: Configuration variables: -- **username** (*Required*): The App Token for your account. -- **password** (*Required*): The App Token for your account. +- **username** (*Required*): Username used to log into the HydrpQuebec site. +- **password** (*Required*): Password used to log into the HydrpQuebec site. - **monitored_variables** array (*Required*): Variables to monitor. - **period_total_bill** : Current period bill - **period_length**: Current period length From 8aa3cd829083d78ef7213fae27125ed159fe04ca Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 16 Mar 2017 11:27:31 +0100 Subject: [PATCH 31/44] Fix typos --- source/_components/sensor.hydroquebec.markdown | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/source/_components/sensor.hydroquebec.markdown b/source/_components/sensor.hydroquebec.markdown index 8a6de8310a3..afa3d113232 100644 --- a/source/_components/sensor.hydroquebec.markdown +++ b/source/_components/sensor.hydroquebec.markdown @@ -26,20 +26,12 @@ sensor: - period_total_bill - period_length - period_total_days - - period_mean_daily_bill - - period_mean_daily_consumption - - period_total_consumption - - period_lower_price_consumption - - period_higher_price_consumption - - yesterday_total_consumption - - yesterday_lower_price_consumption - - yesterday_higher_price_consumption ``` Configuration variables: -- **username** (*Required*): Username used to log into the HydrpQuebec site. -- **password** (*Required*): Password used to log into the HydrpQuebec site. +- **username** (*Required*): Username used to log into the Hydro-Québec site. +- **password** (*Required*): Password used to log into the Hydro-Québec site. - **monitored_variables** array (*Required*): Variables to monitor. - **period_total_bill** : Current period bill - **period_length**: Current period length From f3b57f7259254b250de399c1a77b9e1a0ccdf647 Mon Sep 17 00:00:00 2001 From: Markus Peter Date: Thu, 16 Mar 2017 12:08:09 +0100 Subject: [PATCH 32/44] Documentation for kwb component (#2209) * Create sensor.kwb.markdown * Layout changes * Added variable documentation Also, here's a nice KWB logo: http://www.schneider-haustechnik.at/images/logo_kwb.png * Update sensor.kwb.markdown Changed ordering and fixed some formatting. * Update sensor.kwb.markdown Spelling --- source/_components/sensor.kwb.markdown | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 source/_components/sensor.kwb.markdown diff --git a/source/_components/sensor.kwb.markdown b/source/_components/sensor.kwb.markdown new file mode 100644 index 00000000000..3c1b22fcd4d --- /dev/null +++ b/source/_components/sensor.kwb.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "KWB Easyfire Sensor" +description: "Instructions how to integrate the KWB Easyfire sensor into Home Assistant." +date: 2017-03-06 14:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.40 +--- + +The `kwb` component integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (http://www.kwbheizung.de/de/produkte/kwb-comfort-3.html) into Home Assistant. + +Direct connection via serial (RS485) or via telnet terminal server is supported. The serial cable has to be attached to the control unit port 25 (which is normally used for detached control terminals). + +Since this serial protocol is proprietary and closed, only most temperature sensors and a few control relays are supported, the rest is still WIP (see https://www.mikrocontroller.net/topic/274137). + +Direct connection via serial port: +```yaml +# Example configuration.yaml entry +- platform: kwb + name: kwb + device: "/dev/ttyUSB0" + type: serial + raw: False +``` + +Telnet terminal server with a serial-ethernet converter: +```yaml +# Example configuration.yaml entry + - platform: kwb + name: kwb + host: + port: 23 + type: tcp + raw: False +``` + +Configuration variables: + +*Required if used with a serial-ethernet converter* + +- **host**: The IP-address of the serial server +- **port**: The TCP-port of the serial server +- **type**: tcp + +*Required if used directly with a serial port* + +- **device**: The serial device of the machine +- **type**: serial + +*Optional for both cases* + +- **name**: The name of the device used in the frontend +- **raw**: Should the raw serial output be shown as a sensor From 8c5f21a82490c571bd7f0a269aa5f208ef88cefe Mon Sep 17 00:00:00 2001 From: Markus Peter Date: Thu, 16 Mar 2017 14:54:03 +0100 Subject: [PATCH 33/44] Current (#2270) * KWB Logo added * Fixed Logo --- source/_components/sensor.kwb.markdown | 2 +- source/images/supported_brands/kwb.png | Bin 0 -> 82274 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 source/images/supported_brands/kwb.png diff --git a/source/_components/sensor.kwb.markdown b/source/_components/sensor.kwb.markdown index 3c1b22fcd4d..c53b43e8c27 100644 --- a/source/_components/sensor.kwb.markdown +++ b/source/_components/sensor.kwb.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: home-assistant.png +logo: kwb.png ha_category: Sensor ha_iot_class: "Local Polling" ha_release: 0.40 diff --git a/source/images/supported_brands/kwb.png b/source/images/supported_brands/kwb.png new file mode 100644 index 0000000000000000000000000000000000000000..dabb8fab11ac2025ef50a009693ba5249bcb57ad GIT binary patch literal 82274 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

    K~f-?FYZ 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 z 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

    x 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 literal 0 HcmV?d00001 From b4151238b80198ca4a539f9595efa77747141f6c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 16 Mar 2017 15:42:34 +0100 Subject: [PATCH 34/44] Minor format changes --- source/_components/sensor.comed_hourly_pricing.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.comed_hourly_pricing.markdown b/source/_components/sensor.comed_hourly_pricing.markdown index 31480bc0635..05bef462697 100644 --- a/source/_components/sensor.comed_hourly_pricing.markdown +++ b/source/_components/sensor.comed_hourly_pricing.markdown @@ -13,10 +13,12 @@ ha_release: "0.40" ha_iot_class: "Cloud Polling" --- -The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. +The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. There are two price feeds available: the 5-minute price and current hour average price. +To use this sensor in your installation, add the following to your `configuration.yaml` file: + ```yaml # Example configuration.yaml entry sensor: @@ -33,5 +35,5 @@ Configuration variables: - **five_minute**: The latest 5-minute price in cents. - **current_hour_average**: The latest current hour average price in cents. - **name** (*Optional*): Custom name for the sensor. - - **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh. + - **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh. From c9abc456001a655940f20bf1137c0392796d7306 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 16 Mar 2017 15:49:22 +0100 Subject: [PATCH 35/44] Add category --- source/_components/sensor.sma.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.sma.markdown b/source/_components/sensor.sma.markdown index 99ef3984a0a..b2c9bfdcd19 100644 --- a/source/_components/sensor.sma.markdown +++ b/source/_components/sensor.sma.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -ha_category: +ha_category: Energy logo: sma.png ha_iot_class: "Local Polling" ha_release: 0.36 From e73fd82e743ccd59615f76e0c0ac53be9507807e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 16 Mar 2017 20:18:43 +0100 Subject: [PATCH 36/44] Add more articles --- source/help/index.markdown | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/help/index.markdown b/source/help/index.markdown index 2c6f479ca2e..e68ae61dedd 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -27,14 +27,13 @@ Have you found an issue in your Home Assistant installation? Please report it. R - [Issue tracker home-assistant.io](https://github.com/home-assistant/home-assistant.io/issues) (Website and documentation) - [Feature requests Home Assistant](https://community.home-assistant.io/c/feature-requests) -### {% linkable_title Videos, interviews, talks, and alike %} +### {% linkable_title Videos, talks, workshops and alike %} - [Home Assistant workshop](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop) at [CLT 2017](https://chemnitzer.linux-tage.de/2017/de/) - March 2017 -- [Home Assistant with Paulus Schoutsen – Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Home Assistant - Erweiterungen (Platforms/Components)](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2016-puzzle) at [Puzzle ITC](https://www.puzzle.ch/de/) - December 2016 - [Automating Your Life - Home Automation](http://slides.com/teagan42/life_automation#/) at Develop Denver 2016 - August - [Building Online Communities: Home Assistant](https://medium.com/@gitter/building-online-communities-home-assistant-8818dff671ad#.och4x4rhx) - July 2016 -- [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) ([Slides](https://docs.google.com/presentation/d/1PUnOpeFZxNj4LEjaohGqH_1hOGQGuS5yRHD1ThHr6nk/edit?usp=sharing)) - June 2016 +- [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) ([Slides](https://docs.google.com/presentation/d/1PUnOpeFZxNj4LEjaohGqH_1hOGQGuS5yRHD1ThHr6nk/edit?usp=sharing)) - June 2016 - [Awaken your home: Python and the Internet of Things](https://www.youtube.com/watch?v=Cfasc9EgbMU&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=1) at PyCon 2016 - June 2016 - [Automating your Home with Home Assistant](https://www.youtube.com/watch?v=4-6rTwKl6ww&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=2) at OpenIoT 2016 - March 2016 @@ -42,10 +41,13 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? ### {% linkable_title Media coverage %} +- [Home Assistant with Paulus Schoutsen – Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 +- [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016 - [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016 - [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016 +- [Home Assistant – Open Source Python Home Automation Platform](http://www.automatedhome.co.uk/new-products/home-assistant-open-source-python-home-automation-platform.html) - January 2015 ### {% linkable_title Site Search %} From 9fa0b49b810cc7889dd5bf844fdc27dc35f0d699 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 16 Mar 2017 20:49:41 +0100 Subject: [PATCH 37/44] Add additional article --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index e68ae61dedd..8e68210e01c 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -44,6 +44,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? - [Home Assistant with Paulus Schoutsen – Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 - [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 +- [Secure home automation, without clouds or dedicated hubs](http://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016 - [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016 - [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016 From b1e3425d1d20e892cbe35c99ddff9ee42920a345 Mon Sep 17 00:00:00 2001 From: johnappletree Date: Fri, 17 Mar 2017 08:02:34 +0100 Subject: [PATCH 38/44] added python-yaml to apt-get line (#2276) Added missing necessary package. --- source/_components/media_player.firetv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown index 56798dd11db..aab8c253e0f 100644 --- a/source/_components/media_player.firetv.markdown +++ b/source/_components/media_player.firetv.markdown @@ -28,7 +28,7 @@ Steps to configure your Amazon Fire TV stick with Home Assistant: - From the main (Launcher) screen, select Settings. - Select System > About > Network. - The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment. - - `apt-get install swig libssl-dev python-dev libusb-1.0-0` + - `apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml` - `pip install flask` - `pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz` - `pip install firetv[firetv-server]` From 64c4abbf34ccd3bdfb4fc5938f71ce9d3a6daf48 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 17 Mar 2017 08:04:35 +0100 Subject: [PATCH 39/44] Add article --- source/help/index.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index 8e68210e01c..b72d3c061a5 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -41,6 +41,8 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? ### {% linkable_title Media coverage %} +- [10 open source software tools for developing IoT applications](http://www.cbronline.com/news/internet-of-things/10-open-source-software-tools-developing-iot-applications/) - March 2017 +- [A Look at HASSbian: Raspberry Pi for Home Automation](http://www.piboards.com/2017/03/07/a-look-at-hassbian-raspberry-pi-for-home-automation/)- March 2017 - [Home Assistant with Paulus Schoutsen – Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 - [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 From 049ea17ef327b61017ee0a304490fe05578d7f0c Mon Sep 17 00:00:00 2001 From: Kyle R Date: Fri, 17 Mar 2017 04:31:14 -0500 Subject: [PATCH 40/44] Fix ambiguous wording (#2268) * Fix ambiguous wording The line made it seem like there may be more optional parameters, but there isn't any. * Update joaoapps_join.markdown --- source/_components/joaoapps_join.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index 44ac2587f7c..ca6ea4650c2 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -37,7 +37,7 @@ Configuration variables: - **device_id** (*Required*): The Id of your device. - **api_key** (*Required*): The API key for Join. -The notify service has a few optional parameters such as icon and small icon. You can use them like so: +The notify service has two optional parameters: `icon` and `small icon`. You can use them like so: ```json {"message":"Hello!","title":"From Hass","data":{"icon":"https://goo.gl/KVqcYi","smallicon":"http://goo.gl/AU4Wf1"}} From 0104219b719379d24bef92cf20b10088c4405c01 Mon Sep 17 00:00:00 2001 From: Touliloup Date: Fri, 17 Mar 2017 10:45:04 +0100 Subject: [PATCH 41/44] EH5300 as supported Samsung TV Addition of the Samsung EH5300 TV as supported TV for the Samsung TV Remote component. --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 9f858821272..75b386d7867 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -44,6 +44,7 @@ Currently known supported models: - ES6800 - F6300 - F6500 +- EH5300 - EH5600 - F6400AF - D6505 From c7a23644de077ec36b9ca8f02f3b11aedda5be2a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 17 Mar 2017 13:31:22 +0100 Subject: [PATCH 42/44] Fix configuration sample --- source/_components/binary_sensor.bbb_gpio.markdown | 12 ++++++------ source/_components/switch.bbb_gpio.markdown | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/_components/binary_sensor.bbb_gpio.markdown b/source/_components/binary_sensor.bbb_gpio.markdown index 7d8cb35055e..3a11b6cd6ac 100644 --- a/source/_components/binary_sensor.bbb_gpio.markdown +++ b/source/_components/binary_sensor.bbb_gpio.markdown @@ -19,12 +19,12 @@ To use your BeagleBone Black's GPIO in your installation, add the following to y ```yaml # Example configuration.yaml entry binary_sensor: - - platform: bbb_gpio - pins: - P8_12: - name: Door - GPIO0_26: - name: Window + - platform: bbb_gpio + pins: + P8_12: + name: Door + GPIO0_26: + name: Window ``` Configuration variables: diff --git a/source/_components/switch.bbb_gpio.markdown b/source/_components/switch.bbb_gpio.markdown index 58022c11f3e..a77ac8560f7 100644 --- a/source/_components/switch.bbb_gpio.markdown +++ b/source/_components/switch.bbb_gpio.markdown @@ -19,12 +19,12 @@ To use yourBeagleBone Black's GPIO in your installation, add the following to yo ```yaml # Example configuration.yaml entry switch: - - platform: bbb_gpio - pins: - GPIO0_7: - name: LED Red - P9_12: - name: LED Green + - platform: bbb_gpio + pins: + GPIO0_7: + name: LED Red + P9_12: + name: LED Green ``` Configuration variables: From 1a08bf7a48b0c3a04401eec49395bbc5d91d92fe Mon Sep 17 00:00:00 2001 From: godloth Date: Fri, 17 Mar 2017 09:23:56 -0400 Subject: [PATCH 43/44] added mandatory information ( contract # ) (#2280) * added mandatory information ( contract # ) added :- **contract** (required since HA 4.0) Your contract number with Hydro-Quebec and contract: 'CONTRACT#' (NOTE:works with the ' ' ,insert your contract in between) * Minor formatting fix. --- source/_components/sensor.hydroquebec.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.hydroquebec.markdown b/source/_components/sensor.hydroquebec.markdown index afa3d113232..0784fee0f84 100644 --- a/source/_components/sensor.hydroquebec.markdown +++ b/source/_components/sensor.hydroquebec.markdown @@ -22,6 +22,7 @@ sensor: - platform: hydroquebec username: MYUSERNAME password: MYPASSWORD + contract: 'CONTRACT#' (NOTE:works with the ' ' ,insert your contract in between) monitored_variables: - period_total_bill - period_length @@ -32,6 +33,7 @@ Configuration variables: - **username** (*Required*): Username used to log into the Hydro-Québec site. - **password** (*Required*): Password used to log into the Hydro-Québec site. +- **contract** (required since HA 4.0) Your contract number with Hydro-Québec - **monitored_variables** array (*Required*): Variables to monitor. - **period_total_bill** : Current period bill - **period_length**: Current period length From 0e92aacf6e5b6bb098be761151e99376939878f1 Mon Sep 17 00:00:00 2001 From: Beat Date: Fri, 17 Mar 2017 16:06:42 +0100 Subject: [PATCH 44/44] Feature component search (#2275) * * added search box to the component overview page. * minor fixes in the javascript * minor fix: spaces --- sass/custom/_paulus.scss | 15 ++++ source/components/index.html | 140 +++++++++++++++++++++++++++-------- 2 files changed, 125 insertions(+), 30 deletions(-) diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 0f870b81f88..a0467c869e6 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -330,6 +330,21 @@ p.note { -moz-transition-property: -moz-transform, opacity; transition-property: transform, opacity; } + + + .component-search{ + margin-bottom: 24px; + + input{ + width: 100%; + padding: 10px; + + background-color: #fefefe; + border-radius: 2px; + border: 1px solid; + border-color: #7c7c7c #c3c3c3 #ddd; + } + } } @media only screen and (max-width: $lap-end) { diff --git a/source/components/index.html b/source/components/index.html index 251a74a201b..96487db996a 100644 --- a/source/components/index.html +++ b/source/components/index.html @@ -52,24 +52,33 @@ Support for these components is provided by the Home Assistant community. Other -

    - {% for component in components %} - {% if component.ha_category %} - {% assign sliced_version = component.ha_release | split: '.' %} - {% assign minor_version = sliced_version[1]|plus: 0 %} - -
    - {% if component.logo %} - - {% endif %} -
    -
    {{ component.title }}
    -
    {{ component.ha_category }}
    -
    - {% endif %} - {% endfor %} +
    + +
    + {% for component in components %} + {% if component.ha_category %} + {% assign sliced_version = component.ha_release | split: '.' %} + {% assign minor_version = sliced_version[1]|plus: 0 %} + +
    + {% if component.logo %} + + {% endif %} +
    +
    {{ component.title }}
    +
    {{ component.ha_category }}
    +
    + {% endif %} + {% endfor %} +
    @@ -85,20 +94,32 @@ Support for these components is provided by the Home Assistant community.