From 1bf79d69be2cd45d411d5970224d0b9a8cc17ee9 Mon Sep 17 00:00:00 2001 From: Jacob Tomlinson Date: Thu, 23 Mar 2017 20:51:03 +0000 Subject: [PATCH 01/39] Add metoffice --- source/_components/sensor.metoffice.markdown | 51 +++++++++++++++++++ source/_components/weather.metoffice.markdown | 34 +++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 source/_components/sensor.metoffice.markdown create mode 100644 source/_components/weather.metoffice.markdown diff --git a/source/_components/sensor.metoffice.markdown b/source/_components/sensor.metoffice.markdown new file mode 100644 index 000000000000..71be85467de3 --- /dev/null +++ b/source/_components/sensor.metoffice.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "Met Office Sensor" +description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." +date: 2017-03-23 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: metoffice.png +ha_category: Weather +ha_release: 0.41 +--- + +The `metoffice` sensor platform uses the Met Office's [DataPoint API][datapoint] for weather data. + +- Each sensor will be given the `device_id` of "Met Office [condition]" +- The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half-hour. + +To add the Met Office weather to your installation you'll need to register for a free api key at the link above and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: metoffice + api_key: "my-api-key" + monitored_conditions: + - weather + - temperature + - feels_like_temperature + - wind_speed + - wind_direction + - wind_gust + - visibility + - uv + - precipitation + - humidity +``` + +Your location will be detected from your home `latitude` and `longitude` settings. + +Configuration variables: + +- **api_key** (*Required*): Your personal API key from the [Datapoint website][datapoint]. + +

+This sensor is an alternative to the [`metoffice`](/components/weather.metoffice/) weather platform. +The weather platform is easier to configure but less customisable. +

+ +[datapoint]: http://www.metoffice.gov.uk/datapoint diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown new file mode 100644 index 000000000000..ba70579a9aef --- /dev/null +++ b/source/_components/weather.metoffice.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Met Office" +description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." +date: 2017-03-23 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: metoffice.png +ha_category: Weather +ha_release: 0.41 +--- + +The `metoffice` weather platform uses the Met Office's [DataPoint API][datapoint] for weather data. + +To add the Met Office weather platform to your installation you'll need to register for a free api key at the link above and then add the following to your `configuration.yaml` file: + +```yaml +weather: + - platform: metoffice + api_key: "my-api-key" +``` + +Configuration variables: + +- **api_key** (*Required*): Your personal API key from the [Datapoint website][datapoint]. + +

+This platform is an alternative to the [`metoffice`](/components/sensor.metoffice/) sensor. +The weather platform is easier to configure but less customisable. +

+ +[datapoint]: http://www.metoffice.gov.uk/datapoint From d5aa3a01f5b07a7b11e0508d25cd4c972ddd0f6c Mon Sep 17 00:00:00 2001 From: Jacob Tomlinson Date: Thu, 23 Mar 2017 20:53:15 +0000 Subject: [PATCH 02/39] Update logo --- source/_components/sensor.metoffice.markdown | 2 +- source/_components/weather.metoffice.markdown | 4 ++-- source/images/supported_brands/metoffice.jpg | Bin 0 -> 14111 bytes 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 source/images/supported_brands/metoffice.jpg diff --git a/source/_components/sensor.metoffice.markdown b/source/_components/sensor.metoffice.markdown index 71be85467de3..1272476b3315 100644 --- a/source/_components/sensor.metoffice.markdown +++ b/source/_components/sensor.metoffice.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: metoffice.png +logo: metoffice.jpg ha_category: Weather ha_release: 0.41 --- diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown index ba70579a9aef..8f524aea713d 100644 --- a/source/_components/weather.metoffice.markdown +++ b/source/_components/weather.metoffice.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: metoffice.png +logo: metoffice.jpg ha_category: Weather ha_release: 0.41 --- @@ -23,7 +23,7 @@ weather: ``` Configuration variables: - + - **api_key** (*Required*): Your personal API key from the [Datapoint website][datapoint].

diff --git a/source/images/supported_brands/metoffice.jpg b/source/images/supported_brands/metoffice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eadb9954b9ab9aa261357d263ad2d8c8fd376c0d GIT binary patch literal 14111 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�#tR`0;Lv<38>>-~a^-`!`!fe2h1l`N zLyk@8DHZfWa07hvROvFE^8()#Q1*xr9_#(Y4$fL9nA?Z_zIL7JYN9U@mTLo^^5@+a z^R!0Jm*!7e+}~X!B?gBGC~ zp1URKVf4XcX!iHdycEVqA!KZMjnE{(cji)IiYu<&&qf6>jC`nY@{#~s4qAWqAF}kn z=?1^F%lk%tDM*#%$>y}x6#N+m$HgN^A68)Evle=y!0xeCLrsxAHKT6Vc( zNk}1Y7e~H0=uD?I?&dUlp_wivCu!9a^SKHK)ZV$_(Pzr7TgWA`jSjaiHbO*c2s~c3S*Gq9o4tb`OVksP8a^V!oV<_h~!eM~o_K zA4KakRsIwRFrUl9*V~7N?@0Z@+=rQzpWxQ}=lrRZm&5p@|GZ2}yZ>us62W%~3t35* z_1~Q+h@EQMaB++ho5TKSjp*`xU)x2^OH%cr>`}oog3MKQ$)7Qw`yQ=asJ`@Y^Se-4-iaNx($#wIoHlrW$%RxwkXB4w~t^*&?0 z9dMnVy@OoTfQ#`U32@LDp3aT~LJB*)OMcXb=u=}i4P5exX#5o(K@gZ*=HKZ-5nIP$LOC%*RuNkB}!F$8fuSMZ0RhA8_W=JPiqaq5Rx6aV}OA#snOgje^E7a;R~{qJzQQ zrZ$4?S^78#&?~yzwk*a(S1o4j zKO%xRQ$`qhw4RK;%dz%waU%1PAE;cNNw3B)mZ-nD=X6hJI?u1s<88Yr&#&bMBs!JO z>>t;IJkLV`M+^^oz;AI|eE7uJeN;RIR!cIO0JY){l4~>qPS&q7F-(GF-)j;z<4)ui z<}x0xLyG}VNSyqwJ_H&IySZ`NsZkwpE4*;eLLVmP-VI^c3{+qn!)v4Io65C6)#{!) zNF*(lu&F)mjks#slK(PD81r-)5matx3qwLnleaw9?Io9Jxv#!@{b87~Wpa0&o9JX5 uV3)PDp0{dCFz literal 0 HcmV?d00001 From ab964866976362bd2ce57a2a72336fe9ba6757c9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 8 Apr 2017 17:06:52 -0700 Subject: [PATCH 03/39] Update metoffice version nr --- source/_components/sensor.metoffice.markdown | 2 +- source/_components/weather.metoffice.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.metoffice.markdown b/source/_components/sensor.metoffice.markdown index 1272476b3315..59dd4b8ff3bd 100644 --- a/source/_components/sensor.metoffice.markdown +++ b/source/_components/sensor.metoffice.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: metoffice.jpg ha_category: Weather -ha_release: 0.41 +ha_release: 0.42 --- The `metoffice` sensor platform uses the Met Office's [DataPoint API][datapoint] for weather data. diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown index 8f524aea713d..efd8b10daa63 100644 --- a/source/_components/weather.metoffice.markdown +++ b/source/_components/weather.metoffice.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: metoffice.jpg ha_category: Weather -ha_release: 0.41 +ha_release: 0.42 --- The `metoffice` weather platform uses the Met Office's [DataPoint API][datapoint] for weather data. From ce067ec5820e51a5d228b95952ffdd4ccb96058f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 8 Apr 2017 17:22:13 -0700 Subject: [PATCH 04/39] Add asyncio 101 video --- source/_includes/asides/developers_navigation.html | 1 + source/developers/asyncio.markdown | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_includes/asides/developers_navigation.html b/source/_includes/asides/developers_navigation.html index 6cbe7071ff57..3e0fd798eb83 100644 --- a/source/_includes/asides/developers_navigation.html +++ b/source/_includes/asides/developers_navigation.html @@ -47,6 +47,7 @@

Development Guide

  • {% active_link /developers/asyncio/ Asynchronous Programming %}
      +
    • {% active_link /developers/asyncio_101/ Introduction to asyncio %}
    • {% active_link /developers/asyncio_categorizing_functions/ Categorizing Functions %}
    • {% active_link /developers/asyncio_working_with_async/ Working with Async %}
    • {% active_link /developers/asyncio_misc/ Miscellaneous %}
    • diff --git a/source/developers/asyncio.markdown b/source/developers/asyncio.markdown index 72cbb76c6c47..3cbee37c1b20 100644 --- a/source/developers/asyncio.markdown +++ b/source/developers/asyncio.markdown @@ -21,7 +21,7 @@ For a task to be able to suspend itself, all code that it calls has to have this The backwards compatible API works by scheduling a task from a different thread and blocking that thread until the task has been processed by the event loop. -### [Next step: Categorizing Functions »](/developers/asyncio_categorizing_functions/) +### [Next step: asyncio 101 »](/developers/asyncio_101/) [0.29]: https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks/ [ben]: https://github.com/bbangert/ From bc650ec6f80277020aee69874d9d6493820dbe38 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Sat, 8 Apr 2017 20:46:46 -0400 Subject: [PATCH 05/39] Update sensor.crimereports.markdown --- .../_components/sensor.crimereports.markdown | 31 ++++++------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/source/_components/sensor.crimereports.markdown b/source/_components/sensor.crimereports.markdown index 03cfec3675f5..4ffaf65dd88c 100644 --- a/source/_components/sensor.crimereports.markdown +++ b/source/_components/sensor.crimereports.markdown @@ -13,41 +13,28 @@ ha_release: 0.42 ha_iot_class: "Cloud Polling" --- -The `crimereports` sensor allows one to track reported incidents occurring in a Home Assistant zone. Incidents include anything reported to [Crime Reports](http://crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day. +The `crimereports` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Crime Reports](http://crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day. ## Configuration -To enable this sensor, add the following lines to your `configuration.yaml`. Your `zone` should be of sufficient size to capture incidents in your area. Your `home` zone is probably too small. +To enable this sensor, add the following lines to your `configuration.yaml`. Your `radius` should be of sufficient size to capture incidents in your area. ```yaml -zone: - - name: neighborhood - latitude: - longitude: - radius: - sensor: - platform: crimereports - zone: neighborhood + name: + radius: ``` Configuration options for the Crime Reports Sensor: -- **zone** (*Required*): The zone to monitor. +- **name** (*Required*): Name the sensor whatever you want. +- **radius** (*Required*): Radius in meters. +- **latitude** (*Optional*): Defaults to your home zone latitude. +- **longitude** (*Optional*): Defaults to your home zone longitude. - **include** (*Optional*): List of incident types to include. - **exclude** (*Optional*): List of incident types to exclude. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 30 minutes. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` - - Time period dictionary, e.g.: -
      update_interval:
      -        # At least one of these must be specified:
      -        days: 0
      -        hours: 0
      -        minutes: 3
      -        seconds: 30
      -        milliseconds: 0
      -    
      + ## Notes From 106c2d358e29e20681bf8227e5bdd97f875c6a47 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 8 Apr 2017 18:28:27 -0700 Subject: [PATCH 06/39] Update 2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown --- ...8-eddystone-beacons--lockitron-locks--total-connect.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown index 85548c41319c..9c8c5f015613 100644 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown @@ -13,7 +13,7 @@ og_image: /images/blog/2017-04-0.42/social.png -It's time for Home Assistant 0.43. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API. +It's time for Home Assistant 0.42. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API. On our social media front, we have crossed the 1000 likes on [our Facebook page][hass-fb]! Also on the social media front, the YouTube channel diyAutomate has been putting out a lot of great getting started videos about Home Assistant, [go check them out!][diyAutomate] From fe55411ca6f8ef8621bd0b387317f637497f5c1e Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Sun, 9 Apr 2017 08:39:53 +0200 Subject: [PATCH 07/39] Update mysensors (#2385) * Debug option has been deprecated. --- source/_components/mysensors.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_components/mysensors.markdown b/source/_components/mysensors.markdown index ab5e13f3cc28..e7e3ac4c8c45 100644 --- a/source/_components/mysensors.markdown +++ b/source/_components/mysensors.markdown @@ -36,7 +36,6 @@ mysensors: persistence_file: 'path/mysensors4.json' topic_in_prefix: 'mygateway1-out' topic_out_prefix: 'mygateway1-in' - debug: true optimistic: false persistence: true retain: true @@ -50,7 +49,7 @@ Configuration variables: - **tcp_port** (*Optional*): Specifies the port of the connected tcp ethernet gateway. Default is 5003. - **topic_in_prefix** (*Optional*): Set the prefix of the MQTT topic for messages coming from the MySensors gateway in to Home Assistant. Default is an empty string. - **topic_out_prefix** (*Optional*): Set the prefix of the MQTT topic for messages going from Home Assistant out to the MySensors gateway. Default is an empty string. -- **debug** (*Optional*): Enable or disable verbose debug logging. Default is false. +- **debug** (*DEPRECATED*): This option has been deprecated. Please remove this from your config is you have it included. Use the logger component to filter log messages on log level. - **persistence** (*Optional*): Enable or disable local persistence of sensor information. If this is disabled, then each sensor will need to send presentation messages after Home Assistant starts. Default is true. - **persistence_file** (*Optional*): The path to a file to save sensor information. The file extension determines the file type. Currently supported file types are 'pickle' and 'json'. - **version** (*Optional*): Specifies the MySensors protocol version to use. Supports 1.4, 1.5 and 2.0. Default is 1.4. From cb6ebf81311160984a6bf0ca6cd9839c192323a8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 9 Apr 2017 01:09:42 -0700 Subject: [PATCH 08/39] add the asyncio 101 page --- source/developers/asyncio_101.markdown | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 source/developers/asyncio_101.markdown diff --git a/source/developers/asyncio_101.markdown b/source/developers/asyncio_101.markdown new file mode 100644 index 000000000000..c88265119fd7 --- /dev/null +++ b/source/developers/asyncio_101.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Asyncio 101" +description: "An introduction to asyncio." +date: 2017-04-08 21:49 +sidebar: true +comments: false +sharing: true +footer: true +--- + +If you are not familiar yet with asyncio, please watch the below video. It's a great introduction by [Robert Smallshire][rob] in how and why asyncio works the way it does. + +
      + +
      + +### [Next step: Categorizing Functions »](/developers/asyncio_categorizing_functions/) + +[rob]: https://github.com/rob-smallshire \ No newline at end of file From e90e25261e73a7504eae302759cfd434e5e55c3f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 9 Apr 2017 01:14:51 -0700 Subject: [PATCH 09/39] Release 0.42.1 --- _config.yml | 6 +++--- .../2017-03-25-todo-volumio-workday.markdown | 1 + ...eacons--lockitron-locks--total-connect.markdown | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 07af064aef6d..1ca28a570dda 100644 --- a/_config.yml +++ b/_config.yml @@ -139,9 +139,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 42 -current_patch_version: 0 -date_released: 2017-04-08 +current_patch_version: 1 +date_released: 2017-04-09 # 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-0421---april-9" diff --git a/source/_posts/2017-03-25-todo-volumio-workday.markdown b/source/_posts/2017-03-25-todo-volumio-workday.markdown index ee84aa9f129e..ccdb7c5afcfc 100644 --- a/source/_posts/2017-03-25-todo-volumio-workday.markdown +++ b/source/_posts/2017-03-25-todo-volumio-workday.markdown @@ -45,6 +45,7 @@ The new format of the changelog which was introduced with 0.40 will provide a li ## 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. + ## All changes - Bugfix android camera autodiscovery settings ([@pvizeli] - [#6510]) diff --git a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown index 9c8c5f015613..78f979c959ef 100644 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown @@ -84,6 +84,17 @@ sensor: - volume ``` +## If you need help... +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## 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.42.1 - April 9 %} + +- Upgrade aiohttp to 2.0.6 +- Make discovery not cause startup warning + ## All changes - Flux led update lib ([@danielhiversen] - [#6763]) @@ -359,3 +370,6 @@ sensor: [@w1ll1am23]: https://github.com/w1ll1am23 [@wardcraigj]: https://github.com/wardcraigj [@wmalgadey]: https://github.com/wmalgadey +[forum]: https://community.home-assistant.io/ +[gitter]: https://gitter.im/home-assistant/home-assistant +[issue]: https://github.com/home-assistant/home-assistant/issues From 7b0efed0368c4f697b4b0037561226efc9bdf625 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 9 Apr 2017 12:07:09 +0200 Subject: [PATCH 10/39] Fix entity name --- source/getting-started/automation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 31812056d94c..2f420b19db4d 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -18,7 +18,7 @@ automation: - alias: Check sensor value and show notification trigger: platform: numeric_state - entity_id: sensor.random + entity_id: sensor.random_sensor above: 10 action: service: persistent_notification.create From 5e65c7cadc5c59019bddac1cc322d0d80426e140 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 9 Apr 2017 12:12:01 +0200 Subject: [PATCH 11/39] Add logo --- .../_components/sensor.crimereports.markdown | 2 +- .../images/supported_brands/crimereports.png | Bin 0 -> 102587 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 source/images/supported_brands/crimereports.png diff --git a/source/_components/sensor.crimereports.markdown b/source/_components/sensor.crimereports.markdown index 4ffaf65dd88c..1bb1b89d0529 100644 --- a/source/_components/sensor.crimereports.markdown +++ b/source/_components/sensor.crimereports.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true ha_category: Sensor -featured: false +logo: crimereports.png ha_release: 0.42 ha_iot_class: "Cloud Polling" --- diff --git a/source/images/supported_brands/crimereports.png b/source/images/supported_brands/crimereports.png new file mode 100644 index 0000000000000000000000000000000000000000..316060b040ded736f7915d1f8052589966cee9aa GIT binary patch literal 102587 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 RQ6>_Sn2@w!DZlpD{{thr*ZKee literal 0 HcmV?d00001 From fa00f21a1aaced7dc779102f8f5a3801c3c9d1db Mon Sep 17 00:00:00 2001 From: stanvx Date: Mon, 10 Apr 2017 05:03:46 +1000 Subject: [PATCH 12/39] Create configuration_yaml_by_stanvx (#2399) --- source/_cookbook/configuration_yaml_by_stanvx | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 source/_cookbook/configuration_yaml_by_stanvx diff --git a/source/_cookbook/configuration_yaml_by_stanvx b/source/_cookbook/configuration_yaml_by_stanvx new file mode 100644 index 000000000000..a40ec0e30bec --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_stanvx @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Stanvx" +description: "" +date: 2017-04-09 21:35 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/stanvx/Home-Assistant-Configuration +--- From 67475ff6709f8aa4f3cc26a4ac93c5f59ef5b3f9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 10 Apr 2017 13:41:18 +0200 Subject: [PATCH 13/39] Add note about Ontario (ON) --- source/_components/binary_sensor.workday.markdown | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 6dec6bc9ee33..580af7da0132 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -22,18 +22,21 @@ To enable the `workday` sensor in your installation, add the following to your ` binary_sensor: - platform: workday country: DE - province: BW ``` Configuration variables: - **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. -- **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation (defaults to None). -- **workdays** (*Optional*): List of workdays (defaults to mon, tue, wed, thu, fri). -- **excludes** (*Optional*): List of workday excludes (defaults to sat, sun, holiday). +- **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. +- **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. +- **excludes** (*Optional*): List of workday excludes. Defaults to `sat`, `sun`, `holiday`. Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. The keyword `holiday` is used for public holidays identified by the holidays module. +

      +If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then you need to wrap `ON` in quotes. Otherwise the value is evaluated as `True` (check the YAML documentation for further details) and the sensor will not work. +

      + Example usage for automation: ```yaml From 57848913d6c2c93a98ea58a2c64f268b099e48f5 Mon Sep 17 00:00:00 2001 From: tonire1702 Date: Mon, 10 Apr 2017 21:20:40 +0200 Subject: [PATCH 14/39] Update sensor.netatmo.markdown (#2404) --- source/_components/sensor.netatmo.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index 1aa1bc8fac89..da931ecd21cb 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -52,7 +52,7 @@ Configuration variables: - **sum_rain_1**: Rainfall in the last hour in mm. - **sum_rain_24**: Rainfall in mm from 00:00am - 23:59pm. - **WindAngle**: Wind angle - - **WingStrength**: Wind strength + - **WindStrength**: Wind strength - **GustAngle**: Wind gust angle - **GustStrength**: Wind gust strength - **min_temp**: Min temperature for today From c34e7e157963c29b1aade8e810bc2292f5bb5670 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 11 Apr 2017 08:28:09 +0200 Subject: [PATCH 15/39] Use 'verify_ssl' (fixes #2407) --- source/_components/camera.synology.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/camera.synology.markdown b/source/_components/camera.synology.markdown index a151cc3c449c..561f0d416099 100644 --- a/source/_components/camera.synology.markdown +++ b/source/_components/camera.synology.markdown @@ -49,5 +49,5 @@ camera: ```

      -Most users will need to set `valid_ssl` to false unless they have installed a valid SSL certificate in place of the built in self-signed certificate. +Most users will need to set `verify_ssl` to false unless they have installed a valid SSL certificate in place of the built in self-signed certificate.

      From 3cf770aec15b8540d0dcd8119f2b7d4e2ac78bd6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 11 Apr 2017 09:33:25 -0700 Subject: [PATCH 16/39] Release 0.42.3 --- _config.yml | 6 ++-- ...s--lockitron-locks--total-connect.markdown | 29 +++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/_config.yml b/_config.yml index 1ca28a570dda..8277e1a305e1 100644 --- a/_config.yml +++ b/_config.yml @@ -139,9 +139,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 42 -current_patch_version: 1 -date_released: 2017-04-09 +current_patch_version: 3 +date_released: 2017-04-11 # 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: "#release-0421---april-9" +patch_version_notes: "#release-0423---april-11" diff --git a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown index 78f979c959ef..814eccdfcb85 100644 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown @@ -95,6 +95,19 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrade aiohttp to 2.0.6 - Make discovery not cause startup warning +## {% linkable_title Release 0.42.1 - April 9 %} + + - Revert upgrade to aiothttp 2.0.6 + +## {% linkable_title Release 0.42.3 - April 11 %} + +- Fix Synology camera content type ([@balloob] - [#7010]) +- Fix two more instances of JSON parsing synology ([@balloob] - [#7014]) +- Bump pyalarmdotcom to support new version of aiohttp ([@Xorso] - [#7021]) +- Fix US states check (fixes #7015) ([@fabaff] - [#7017]) +- Plug file leak on LIFX unregister ([@amelchio] - [#7031]) +- Bugfix wait on start event ([@pvizeli] - [#7013]) + ## All changes - Flux led update lib ([@danielhiversen] - [#6763]) @@ -326,25 +339,32 @@ Experiencing issues introduced by this release? Please report them in our [issue [#6981]: https://github.com/home-assistant/home-assistant/pull/6981 [#6986]: https://github.com/home-assistant/home-assistant/pull/6986 [#6990]: https://github.com/home-assistant/home-assistant/pull/6990 +[#7010]: https://github.com/home-assistant/home-assistant/pull/7010 +[#7013]: https://github.com/home-assistant/home-assistant/pull/7013 +[#7014]: https://github.com/home-assistant/home-assistant/pull/7014 +[#7017]: https://github.com/home-assistant/home-assistant/pull/7017 +[#7021]: https://github.com/home-assistant/home-assistant/pull/7021 +[#7031]: https://github.com/home-assistant/home-assistant/pull/7031 +[@Xorso]: https://github.com/Xorso +[@amelchio]: https://github.com/amelchio +[@balloob]: https://github.com/balloob +[@fabaff]: https://github.com/fabaff +[@pvizeli]: https://github.com/pvizeli [@ChristianKuehnel]: https://github.com/ChristianKuehnel [@DavidMStraub]: https://github.com/DavidMStraub [@KlaasH]: https://github.com/KlaasH [@MartinHjelmare]: https://github.com/MartinHjelmare -[@Xorso]: https://github.com/Xorso [@aarya123]: https://github.com/aarya123 [@aequitas]: https://github.com/aequitas -[@amelchio]: https://github.com/amelchio [@andrey-git]: https://github.com/andrey-git [@armills]: https://github.com/armills [@aufano]: https://github.com/aufano -[@balloob]: https://github.com/balloob [@bdurrer]: https://github.com/bdurrer [@citruz]: https://github.com/citruz [@danielhiversen]: https://github.com/danielhiversen [@danieljkemp]: https://github.com/danieljkemp [@danielperna84]: https://github.com/danielperna84 [@diogos88]: https://github.com/diogos88 -[@fabaff]: https://github.com/fabaff [@geekofweek]: https://github.com/geekofweek [@goto100]: https://github.com/goto100 [@gurumitts]: https://github.com/gurumitts @@ -359,7 +379,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@micw]: https://github.com/micw [@nugget]: https://github.com/nugget [@pavoni]: https://github.com/pavoni -[@pvizeli]: https://github.com/pvizeli [@quadportnick]: https://github.com/quadportnick [@rytilahti]: https://github.com/rytilahti [@tantecky]: https://github.com/tantecky From 158f7b333f68d4b8de25726eba584c078829253e Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 12 Apr 2017 13:31:23 +0300 Subject: [PATCH 17/39] Add missing binary dependencies. (#2413) * Add missing binary dependencies. * Update development_environment.markdown --- source/developers/development_environment.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/developers/development_environment.markdown b/source/developers/development_environment.markdown index 0e972b6a7e84..f8ae40fba9de 100644 --- a/source/developers/development_environment.markdown +++ b/source/developers/development_environment.markdown @@ -27,8 +27,16 @@ $ git remote add upstream https://github.com/home-assistant/home-assistant.git Install the core dependencies. ```bash -$ sudo apt-get install python3-pip python3-dev libssl-dev +$ sudo apt-get install python3-pip python3-dev ``` + +#### {% linkable_title Platform dependencies %} + +In order to run `script/setup` below you will need some more dependencies. +```bash +$ sudo apt-get install libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev +``` +

      Different distributions have different package installation mechanisms and sometimes packages names as well. For example Centos would use: `sudo yum install epel-release && sudo yum install python34 python34-devel mysql-devel`

      From 3d7018c594b0df67e1f2e36d20df62696e484199 Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Wed, 12 Apr 2017 21:46:16 +0100 Subject: [PATCH 18/39] Update lets_encrypt.markdown (#2417) * Update lets_encrypt.markdown Fixed spelling mistakes, image link and (hopefully the last...) formatting error! * Update lets_encrypt.markdown --- .../certificates/lets_encrypt.markdown | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 5a6918009cba..20891800f5b5 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -9,8 +9,8 @@ sharing: true footer: true --- -

      -Before exposing your Home Aassistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page. +

      +Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page.

      @@ -19,7 +19,7 @@ This guide was added by mf_social on 16/03/2017 and was valid at the time of wri * You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network. * You know the internal IP address of your router and can access your router's configuration pages. * You have already set up a password for your Home Assistant instance, following the advice on this page: [http](https://home-assistant.io/docs/configuration/basic/) - * You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with an TLS/SSL certificate. + * You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with a TLS/SSL certificate. * You have a basic understanding of the phrases I have used so far. * You are not currently running anything on port 80 on your network (you'd know if you were). * If you are not using Home Assistant on a Debian/Raspian/Hassbian system you will be able to convert any of the terminology I use in to the correct syntax for your system. @@ -49,7 +49,7 @@ Now, to speak to the outside world your connection goes through a router. Your r So, when we want to connect to our Home Assistant instance from outside our network we will need to call the correct extension number, at the correct phone number, in the correct area code. -We will be looking for a system to run like this (in this example I will pretend our exernal IP is 12.12.12.12): +We will be looking for a system to run like this (in this example I will pretend our external IP is 12.12.12.12): ```text Outside world -> 12.12.12.12:8123 -> your router -> 192.168.0.200:8123 @@ -65,7 +65,7 @@ So, we can use a static IP to ensure that whenever our device running Home Assis We then have no control over our external IP, as our Service Provider will give us a new one at random intervals. To fix this we will use a service called DuckDNS which will give us a name for our connection (something like examplehome.duckdns.org) and behind the scenes will continue to update your external IP. So no matter how many times the IP address changes, typing examplehome.duckdns.org in to our browser will convert to the correct, up-to-date, IP address. This is covered in step 3 below. -To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 12:12:12:12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our SSL certificate our incoming call will be requesting port 443 (because that is the SSL port, like the SSH port is always 22), but our port forwarding rule will forward this to our HA instance on port 8123. When this guide is completed we will run something like this: +To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 12:12:12:12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our TSL/SSL certificate our incoming call will be requesting port 443 (because that is the SSL port, like the SSH port is always 22), but our port forwarding rule will forward this to our HA instance on port 8123. When this guide is completed we will run something like this: ```text Outside world -> https://examplehome.duckdns.org -> 12.12.12.12:443 -> your router -> 192.168.0.200:8123 @@ -86,7 +86,10 @@ $ ifconfig You will receive an ouput similar to the image below: -![alt tag](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/images/screenshots/ip-set.jpg) +

      + + Screenshot +

      Make a note of the interface name and the IP address you are currently on. In the picture it is the wireless connection that is highlighted, but with your setup it may be the wired one (eth0 or similar), make sure you get the correct information. @@ -128,7 +131,7 @@ $ sudo reboot When it comes back up check that you can SSH in to it again on the IP address you wrote down. -Make sure Home Assisstant is running and access it via the local network by typing the IP address and port number in to the browser: +Make sure Home Assistant is running and access it via the local network by typing the IP address and port number in to the browser: ```text http://192.168.0.200:8123. @@ -136,7 +139,7 @@ http://192.168.0.200:8123. All working? Hooray! You now have a static IP. This will now always be your internal IP address for your Home Assistant device. This will be known as YOUR-HA-IP for the rest of this guide. -### {% linkable_title 2 - Set up port forwarding without SSL and test connection %} +### {% linkable_title 2 - Set up port forwarding without TLS/SSL and test connection %} Log in to your router's configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching google for "port forwarding" and the name of your router may help. When you find it you will likely have options similar to: @@ -164,13 +167,13 @@ https://whatismyipaddress.com/ This will tell you your current external IP address -Type the external IP address in to the url bar with http:// in front and :8123 after like so (12.12.12.12 is my example!): +Type the external IP address in to the URL bar with http:// in front and :8123 after like so (12.12.12.12 is my example!): ```text http://12.12.12.12:8123 ``` -Can you see your Home Assisstant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you. +Can you see your Home Assistant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you. Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your wifi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. @@ -188,7 +191,7 @@ In the domains section pick a name for your subdomain, this can be anything you The URL you will be using later to access your Home Assistant instance from outside will be the subdomain you picked, followed by duckdns.org . For our example we will say our URL is examplehome.duckdns.org -On the top left of duckdns.org select the install option. Then pick your operating system from the list. In our example we will use a Raspberry Pi. In the dropdown box select the url you just created. +On the top left of duckdns.org select the install option. Then pick your operating system from the list. In our example we will use a Raspberry Pi. In the dropdown box select the URL you just created. Duckdns.org will now generate personalised instructions for you to follow so that your device can update their website every time your IP address changes. Carefully follow the instructions given on duckdns.org to set up your device. @@ -204,16 +207,16 @@ http://examplehome.duckdns.org:8123 What now happens behind the scenes is this: -- DuckDNS receives the request and forwards the request to your router's external IP address (which has been kept up to date by your device running Home Assisstant) +- DuckDNS receives the request and forwards the request to your router's external IP address (which has been kept up to date by your device running Home Assistant) - Your router receives the request on port 8123 and checks the port forwarding rules - It finds the rule you created in step 2 and forwards the request to your HA instance -- Your browser displays your Home Assisstant instance frontend. +- Your browser displays your Home Assistant instance frontend. Did it work? Super! -You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with SSL, read on to find out how. +You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with TLS/SSL, read on to find out how. -### {% linkable_title 4 - Obtain an TLS/SSL certificate from Let's Encrypt %} +### {% linkable_title 4 - Obtain a TLS/SSL certificate from Let's Encrypt %} First we need to set up another port forward like we did in step 2. Set your new rule to: @@ -236,7 +239,7 @@ Now SSH in to the device your Home Assistant is running on.

      If you're running the 'standard' setup on a Raspberry Pi the chances are you just logged in as the 'pi' user. If not, you may have logged in as the Home Assistant user. There are commands below that require the Home Assistant user to be on the `sudoers` list. If you are not using the 'standard' pi setup it is presumed you will know how to get your Home Assistant user on the `sudoers` list before continuing. If you are running the 'standard' pi setup, from your 'pi' user issue the following command (where `hass` is the Home Assistant user): -```bash +``` $ sudo adduser hass sudo ```

      @@ -262,7 +265,7 @@ $ wget https://dl.eff.org/certbot-auto $ chmod a+x certbot-auto ``` -Now we will run the certbot program to get our ssl certificate. You will need to include your email address and your DuckDNS url in the appropriate places: +Now we will run the certbot program to get our ssl certificate. You will need to include your email address and your DuckDNS URL in the appropriate places: ```text $ ./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org @@ -276,7 +279,7 @@ Confirm this file has been populated: $ ls /etc/letsencrypt/live/ ``` -This should show a folder named exactly after your DuckDNS url. +This should show a folder named exactly after your DuckDNS URL. Our Home Assistant user needs access to files within the letsencrypt folder, so issue the following commands to change the permissions. @@ -292,7 +295,7 @@ Did all of that go without a hitch? Wahoo! Your Let's Encrypt certificate is now

      Following on from Step 4 your SSH will still be in the certbot folder. If you edit your configuration files over SSH you will need to change to your `homeassistant` folder: -```bash +``` $ cd ~/.homeassistant ``` @@ -333,7 +336,7 @@ In step 3 we accessed our Home Assistant from the outside world with our DuckDNS https://examplehome.duckdns.org ``` -Note the S after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123. +Note the **S** after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123. You should now be able to see your Home Assistant instance via your DuckDNS URL, and importantly note that your browser shows the connection as secure. @@ -347,7 +350,7 @@ https://YOUR-HA-IP:8123 ...and accepting the browsers warning that you are connecting to an insecure site. This warning occurs because your certificate expects your incoming connection to come via your DuckDNS URL. It does not mean that your device has suddenly become insecure. -Some cases such as this are where your router does not allow 'loopback' or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and ignore the warnings. +Some cases such as this are where your router does not allow 'loopback' or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and safely ignore the warnings. If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. Instructions for creating your new webapp can be found here: @@ -504,7 +507,7 @@ Add the following sections to your configuration.yaml ```yaml shell_command: - renew_ssl: ./certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 + renew_ssl: ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 automation: - alias: 'Auto Renew SSL Cert' From a40f612533699f2d5c60f37c83c35160172d84a7 Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Wed, 12 Apr 2017 21:47:11 +0100 Subject: [PATCH 19/39] Update remote.markdown (#2418) Added a link to my guide for TLS/SSL certificates with HA. --- source/_docs/configuration/remote.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/remote.markdown b/source/_docs/configuration/remote.markdown index 273d92c2f959..8bcc7420d71e 100644 --- a/source/_docs/configuration/remote.markdown +++ b/source/_docs/configuration/remote.markdown @@ -16,7 +16,7 @@ The most common approach is to set up port forwarding from your router to port 8 A problem with making a port accessible is that some Internet Service Providers only offer dynamic IPs. This can cause you to lose access to Home Assistant while away. You can solve this by using a free Dynamic DNS service like [DuckDNS](https://www.duckdns.org/). -Remember: Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the [set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post. +Remember: Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the [set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post, or this [detailed guide](https://home-assistant.io/docs/ecosystem/certificates/lets_encrypt/) to using Let's Encrypt with HA. Protect your communication with a [self-signed certificate](/cookbook/tls_self_signed_certificate/) between your client and the Home Assistant instance. From 04d7252bac6c68f933a39944ba806bd5f8a3f062 Mon Sep 17 00:00:00 2001 From: Kitti L Date: Wed, 12 Apr 2017 23:06:42 +0200 Subject: [PATCH 20/39] Broken link - file header link to documentation (#2419) Suggests to update the link from: https://home-assistant.io/components/hello_state/ to https://home-assistant.io/cookbook/python_component_basic_state/ --- source/_cookbook/python_component_basic_state.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/python_component_basic_state.markdown b/source/_cookbook/python_component_basic_state.markdown index b2c1e838e568..623135363b06 100644 --- a/source/_cookbook/python_component_basic_state.markdown +++ b/source/_cookbook/python_component_basic_state.markdown @@ -23,7 +23,7 @@ To get started, create the file `/custom_components/hello_state.py` Support for showing text in the frontend. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/hello_state/ +https://home-assistant.io/cookbook/python_component_basic_state/ """ import logging From e9b074fa59d0ab21737d2632b88ac61fb0b6a71d Mon Sep 17 00:00:00 2001 From: Miha Lunar Date: Thu, 13 Apr 2017 03:21:45 +0200 Subject: [PATCH 21/39] Fixed typo (#2421) --- source/_docs/configuration/secrets.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index e3531c2db8ca..db62c0159f44 100644 --- a/source/_docs/configuration/secrets.markdown +++ b/source/_docs/configuration/secrets.markdown @@ -87,5 +87,5 @@ Please enter password for encrypted keyring: ```

      - If your are using the Python Keyring, [autostarting](/getting-started/autostart/) of Home Assistant will no longer work. + If you are using the Python Keyring, [autostarting](/getting-started/autostart/) of Home Assistant will no longer work.

      From e963a1853e5a07498718748d35f4621f33bc646c Mon Sep 17 00:00:00 2001 From: Niklas Date: Thu, 13 Apr 2017 13:46:19 +0200 Subject: [PATCH 22/39] add files to gitignore (#2422) * add html5_push_registrations.conf to gitignore * add additional files --- source/_docs/ecosystem/backup/backup_github.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 2af70720c5cd..da9a5521cd6d 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -77,6 +77,9 @@ harmony_media_room.conf pyozw.sqlite .* !/.gitignore +html5_push_registrations.conf +ip_bans.yaml +/icloud/* ``` More information on the layout of the file can be found in the [.gitignore manual](https://git-scm.com/docs/gitignore). From 33905f4100ca8903a9d84073e13b5b4547df1245 Mon Sep 17 00:00:00 2001 From: John Coggeshall Date: Thu, 13 Apr 2017 11:36:06 -0400 Subject: [PATCH 23/39] Add an example explaining complex notifications (#2424) The alert component docs were not clear at all on how to use a notification component that required something like `target` to function. The answer is to wrap it in a `group` notification component so this adds some documentation and examples on how to do that. --- source/_components/alert.markdown | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index 423d3bde7c23..393deab52388 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -46,6 +46,29 @@ Configuration variables: In this example, the garage door status (`input_boolean.garage_door`) is watched and this alert will be triggered when its status is equal to `on`. This indicates that the door has been opened. Because the `skip_first` option was set to `True`, the first notification will not be delivered immediately. However, every 30 minutes, a notification will be delivered until either `input_boolean.garage_door` no longer has a state of `on` or until the alert is acknowledged using the Home Assistant frontend. +For notifiers that require other parameters (such as `twilio_sms` which requires you specify a `target` parameter when sending the notification), you can use the `group` notification to wrap them for an alert. Simply create a `group` notification type with a single notification member (such as `twilio_sms`) specifying the required parameters other than `message` provided by the `alert` component: + +```yaml +- platform: group + name: john_phone_sms + services: + - service: twilio_sms + data: + target: !secret john_phone +``` + +```yaml +freshwater_temp_alert: + name: "Warning: I have detected a problem with the freshwater tank temperature" + entity_id: binary_sensor.freshwater_temperature_status + state: 'on' + repeat: 5 + can_acknowledge: true + skip_first: false + notifiers: + - john_phone_sms +``` + ### {% linkable_title Complex Alert Criteria %} By design, the `alert` component only handles very simple criteria for firing. That is, is only checks if a single entity's state is equal to a value. At some point, it may be desireable to have an alert with a more complex criteria. Possibly, when a battery percentage falls below a threshold. Maybe you want to disable the alert on certain days. Maybe the alert firing should depend on more than one input. For all of these situations, it is best to use the alert in conjunction with a `Template Binary Sensor`. The following example does that. From 471270574ea66d7e4971a9976bbe86a8e8cc5a7d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 14 Apr 2017 15:27:48 +0200 Subject: [PATCH 24/39] Use new myStrom logo --- source/images/supported_brands/mystrom.png | Bin 30980 -> 11112 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/supported_brands/mystrom.png b/source/images/supported_brands/mystrom.png index 51a50a3dd44de235841a298a1effca83c66a71c1..b2f1b5285f668c44c9c919c918ca576eb2ff372c 100644 GIT binary patch literal 11112 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 G;Qs+Uz!R_l From ca8b4958ab274e7022f42ab3f6be09096c766096 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 14 Apr 2017 15:29:08 +0200 Subject: [PATCH 25/39] Support Windows with lifx_legacy (#2353) As discussed in home-assistant/home-assistant#6820 --- source/_components/light.lifx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index ec2e8c068bb4..36c7a03b0dc2 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -15,7 +15,7 @@ ha_release: 0.12 The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) into Home Assistant. -_Please note, LIFX is currently not supported on Windows._ +_Please note, the `lifx` platform does not support Windows. The `lifx_legacy` platform (supporting basic functionality) can be used instead._ ```yaml # Example configuration.yaml entry From e0f45d22af827f8ac9c370e207e48538436bea12 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 14 Apr 2017 17:33:38 +0200 Subject: [PATCH 26/39] Only CSS3 color names are supported now (#2427) The "chucknorris" reference and SO link is amusing to developers but it's just a waste of users' time to put it in the documentation. Even worse, since home-assistant/home-assistant#2215, "chucknorris" is not even supported but will default to "white". --- source/_components/light.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 43f716fc692e..80c5a13cad90 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -38,7 +38,7 @@ Turns one light on or multiple lights on using [groups]({{site_root}}/components | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) | `color_temp` | yes | An INT in mireds representing the color temperature you want the light to be. -| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod` or [`chucknorris`](http://stackoverflow.com/questions/8318911/why-does-html-think-chucknorris-is-a-color). If your browser can display it, so can Home Assistant. +| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod`. All [`CSS3 color names`](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. | `flash` | yes | Tell light to flash, can be either value `short` or `long`. *not supported by Wink | `effect`| yes | Applies an effect such as `colorloop` or `random`. From c82ed066f0c4dfdd2bcd8a0d6ba5c81db052c6a8 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 14 Apr 2017 23:00:51 +0200 Subject: [PATCH 27/39] Remove backticks from link (#2428) These were accidentally copy/pasted from the previous version where the link was an actual color name. --- source/_components/light.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 80c5a13cad90..509f4a3143bb 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -38,7 +38,7 @@ Turns one light on or multiple lights on using [groups]({{site_root}}/components | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) | `color_temp` | yes | An INT in mireds representing the color temperature you want the light to be. -| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod`. All [`CSS3 color names`](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. +| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. | `flash` | yes | Tell light to flash, can be either value `short` or `long`. *not supported by Wink | `effect`| yes | Applies an effect such as `colorloop` or `random`. From 3581aced8b7ad2f027f2b896b95c06d7f4d3c003 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 14 Apr 2017 23:48:09 +0200 Subject: [PATCH 28/39] Minor changes --- source/_components/binary_sensor.flic.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown index 145401434d07..126eb15c0202 100644 --- a/source/_components/binary_sensor.flic.markdown +++ b/source/_components/binary_sensor.flic.markdown @@ -17,7 +17,7 @@ The `flic` platform allows you to connect with multiple [flic](https://flic.io) The platform does not directly interact with the buttons, but communicates with the flic service that manages the buttons. The service can run on the same instance as home assistant or any other reachable machine. For setup instructions visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). -### {% linkable_title Configuration %} +To use your flic buttons in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -27,15 +27,15 @@ binary_sensor: Configuration variables: -- **host** (*Optional*): The IP or hostname of the flic service server. (default: `localhost`) -- **port** (*Optional*): The port of the flic service. (default: `5551`) -- **discovery** (*Optional*): If `true`, the component is configured to constantly scan for new buttons. (default: `true`) +- **host** (*Optional*): The IP or hostname of the flic service server. Defaults to `localhost`. +- **port** (*Optional*): The port of the flic service. Defaults to `5551`. +- **discovery** (*Optional*): If `true` then the component is configured to constantly scan for new buttons. Defaults to `true`. - **ignored_click_types**: List of click types whose occurrence should not trigger and `flic_click` event. -- **timeout** (*Optional*): Maximum time in seconds an event can be queued locally on a button before discarding the event. (default: `3`) +- **timeout** (*Optional*): Maximum time in seconds an event can be queued locally on a button before discarding the event. Defaults to 3. #### {% linkable_title Discovery %} -If discovery is enabled, you can add a new button by pressing it for at least 7s. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. +If discovery is enabled, you can add a new button by pressing it for at least 7 seconds. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. #### {% linkable_title Timeout %} +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. From 08d0b6b0fb41a570a9c00b3834d7ee41163a710a Mon Sep 17 00:00:00 2001 From: Matt N Date: Sat, 15 Apr 2017 03:21:06 -0400 Subject: [PATCH 29/39] switch.zoneminder: Note that system:edit permission is required (#2433) See https://github.com/ZoneMinder/ZoneMinder/blob/48e2c5f6ecea2499f37985485c9c650b552abe89/web/api/app/Controller/MonitorsController.php#L125 --- source/_components/switch.zoneminder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/switch.zoneminder.markdown b/source/_components/switch.zoneminder.markdown index e9312a7ca09e..5b4702f32567 100644 --- a/source/_components/switch.zoneminder.markdown +++ b/source/_components/switch.zoneminder.markdown @@ -16,7 +16,7 @@ ha_release: 0.31 The `zoneminder` switch platform allows you to toggle the current function of all cameras attached to your [ZoneMinder](https://www.zoneminder.com) instance.

      -You must have the [ZoneMinder component](/components/zoneminder/) configured to use this. +You must have the [ZoneMinder component](/components/zoneminder/) configured to use this and if ZoneMinder authentication is enabled the account specified in the component configuration must have "Edit" permission for "System".

      To enable this switch, add the following lines to your `configuration.yaml` file: From 1de9a05ae70d2458f9ebe29156054b076b6c7d63 Mon Sep 17 00:00:00 2001 From: Martokk Date: Sun, 16 Apr 2017 02:04:02 -0500 Subject: [PATCH 30/39] Fixing MQTT Logging example (#2439) --- source/_docs/mqtt/logging.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/mqtt/logging.markdown b/source/_docs/mqtt/logging.markdown index d40f99cd7964..08b84f52777a 100644 --- a/source/_docs/mqtt/logging.markdown +++ b/source/_docs/mqtt/logging.markdown @@ -18,6 +18,6 @@ The [logger](/components/logger/) component allow the logging of received MQTT m logger: default: warning logs: - homeassistant.components.device_tracker.mqtt: debug + homeassistant.components.mqtt: debug ``` From 5c3ca43e77b56339b994b71c4c9c3588697e224f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 16 Apr 2017 09:49:29 +0200 Subject: [PATCH 31/39] Add icon option to default_view --- source/_components/group.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 731ab5827814..78005f8fb4cc 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -22,6 +22,7 @@ By default, every group appears in the HOME tab. If you create a group `default_ group: default_view: view: yes + icon: mdi:home entities: - group.kitchen - group.awesome_people From b143e161109acaf1a5a7a220b63359581eb1e395 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Apr 2017 10:35:03 -0700 Subject: [PATCH 32/39] Add iOS app announcement blog post and updated docs (#2441) --- source/_docs/ecosystem/ios.markdown | 11 ++--- source/_docs/ecosystem/ios/location.markdown | 4 ++ source/_includes/asides/docs_navigation.html | 40 +++++++++---------- source/_posts/2017-04-15-ios.markdown | 42 ++++++++++++++++++++ 4 files changed, 69 insertions(+), 28 deletions(-) create mode 100644 source/_posts/2017-04-15-ios.markdown diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown index 9a176f006bdf..66c842fc9a58 100644 --- a/source/_docs/ecosystem/ios.markdown +++ b/source/_docs/ecosystem/ios.markdown @@ -17,14 +17,9 @@ The Home Assistant for iOS app offers a companion app for iOS which is deeply in * Basic control of all Home Assistant entities * Integration with third party apps -

      -Currently, the app is only available via a closed beta. It will be on the App Store within the next few weeks. -

      - -

      - - An example of a Home Assistant group as seen in the iOS app. -

      +The app is available on the iOS App Store in every country that Apple supports. + +

      ## Basic requirements diff --git a/source/_docs/ecosystem/ios/location.markdown b/source/_docs/ecosystem/ios/location.markdown index ac344227c2b1..6ee15213b5ca 100644 --- a/source/_docs/ecosystem/ios/location.markdown +++ b/source/_docs/ecosystem/ios/location.markdown @@ -32,6 +32,10 @@ What's the real story on significant-change location updates? Who knows, because At launch, Home Assistant for iOS sets up geofences for all zones in your Home Assistant configuration. Enter and exit notifications are sent to Home Assistant. +### Configuration + +Add `track_ios: true` to your zone configurations to enable it for tracking in all connected iOS apps. + [apple-energy-guide]: https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/LocationBestPractices.html#//apple_ref/doc/uid/TP40015243-CH24-SW4 [apple-location-programming-guide]: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW9 [stackoverflow]: http://stackoverflow.com/a/13331625/486182 diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 5839ef04b861..553fb4821701 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -113,6 +113,26 @@

      Topics

    • {% active_link /docs/mqtt/processing_json/ Processing JSON %}
  • +
  • + {% active_link /docs/ecosystem/ios/ iOS %} +
      +
    • {% active_link /docs/ecosystem/ios/notifications/basic/ Basic notifications %}
    • +
        +
      • {% active_link /docs/ecosystem/ios/notifications/sounds/ Sounds %}
      • +
      • {% active_link /docs/ecosystem/ios/notifications/architecture/ Architecture %}
      • +
      • {% active_link /docs/ecosystem/ios/notifications/privacy_security_rate_limits/ Privacy, rate limiting and security %}
      • +
      +
    • Advanced notifications
    • +
        +
      • {% active_link /docs/ecosystem/ios/notifications/attachments/ Attachments %}
      • +
      • {% active_link /docs/ecosystem/ios/notifications/content_extensions/ Dynamic content %}
      • +
      • {% active_link /docs/ecosystem/ios/notifications/actions/ Actionable notifications %}
      • +
      • {% active_link /docs/ecosystem/ios/notifications/requesting_location_updates/ Requesting location updates %}
      • +
      +
    • {% active_link /docs/ecosystem/ios/location/ Location Tracking %}
    • +
    • {% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}
    • +
    +
  • {% active_link /docs/ecosystem/ Ecosystem %}
      @@ -162,26 +182,6 @@

      Topics

    • {% active_link /docs/ecosystem/notebooks/stats/ Statistics %}
  • -
  • - {% active_link /docs/ecosystem/ios/notifications/ iOS %} -
      -
    • {% active_link /docs/ecosystem/ios/notifications/basic/ Basic notifications %}
    • -
        -
      • {% active_link /docs/ecosystem/ios/notifications/sounds/ Sounds %}
      • -
      • {% active_link /docs/ecosystem/ios/notifications/architecture/ Architecture %}
      • -
      • {% active_link /docs/ecosystem/ios/notifications/privacy_security_rate_limits/ Privacy, rate limiting and security %}
      • -
      -
    • Advanced notifications
    • -
        -
      • {% active_link /docs/ecosystem/ios/notifications/attachments/ Attachments %}
      • -
      • {% active_link /docs/ecosystem/ios/notifications/content_extensions/ Dynamic content %}
      • -
      • {% active_link /docs/ecosystem/ios/notifications/actions/ Actionable notifications %}
      • -
      • {% active_link /docs/ecosystem/ios/notifications/requesting_location_updates/ Requesting location updates %}
      • -
      -
    • {% active_link /docs/ecosystem/ios/location/ Location Tracking %}
    • -
    • {% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}
    • -
    -
  • Remote access
      diff --git a/source/_posts/2017-04-15-ios.markdown b/source/_posts/2017-04-15-ios.markdown new file mode 100644 index 000000000000..aef1a8d40349 --- /dev/null +++ b/source/_posts/2017-04-15-ios.markdown @@ -0,0 +1,42 @@ +--- +layout: post +title: "1 year and 22 days ago I had an idea..." +description: "An Easter gift from Home Assistant for all iOS fans" +date: 2017-04-15 08:04:05 +0000 +date_formatted: "April 16, 2017" +author: Robbie Trencheny +author_twitter: robbie +comments: true +categories: Announcements +--- + +1 year and 22 days ago, or 387 days ago, on March 25th, 2016, I started a project to bring Home Assistant to the iPhone. + +I thought the existing notification and location solutions were lacking in one way or another and had wanted for _years_ to have a project I could call my own which would allow me to learn iOS development. What better way then implementing an extremely complex application like Home Assistant? + +I started with a lot of steam. I remember cranking out the initial work that night and showing Paulus who was astounded at how fast the UI was coming together. + +Little would I know how many problems I would create and uncover throughout the process. Writing a mobile app for a project that moves as fast as Home Assistant is... tricky, to say the least. In the time since I started writing the app, Home Assistant had 90 releases. I started writing the day before 0.16 was released. Now we are at 0.42.3. Time flies... + +I couldn't have completed the app without help and input from the community. By the end I had 700 beta testers, of which about 500 were very active in testing the app. + +I received emails and forum posts almost every day, even when the app would go without an update for weeks and sometimes months at a time as my life got busier and busier. + +I wanted this app to be done 9 months ago, at least, but my drive to add more and more features killed that idea. This really taught me the value of the MVP over the kitchen sink. + +It may not look the way that I wanted it to initially, with beautiful native UI components, but thats okay. What I really cared about is there. The notification and location engines are some of the most customizable and powerful available in an iOS app if I do say so myself. I made them this way to keep with the spirit of infinite flexibility that is enshrined in Home Assistant. + +Just because the app is released doesn't mean we are at the end of the road. It's only the beginning. There's plenty of bugs to fix still, improvements to make, features to add. Beta testing will continue, and if anything, be expanded. I do want to have a native UI someday, but that's pretty hard with how fast the project moves. + +The biggest request I have is for more developers on the project. As many of you know, I have my hands in many different parts of Home Assistant, from governance and organization to managing the forums to writing this app, managing the Homebridge plugin and even sometimes writing code for the actual core codebase! I can't do it all, and I'm still a new iOS developer who doesn't know all the best practices. + +The app is [open source](https://github.com/home-assistant/home-assistant-iOS), has been for the last few months when I first prepared to submit it to Apple for review. I invite Swift developers to come and join me in building it. Trust me, there's tons to do. + +**1 year and 22 days ago, on March 25th, 2016 I began work on Home Assistant for iOS.** + +**Today, April 16th, 2017, I am _extremely_ excited to announce that Home Assistant for iOS has been approved by Apple and is now available to download for ~~a monthly subscription starting at $9.99~~ free! (had to get a joke in here somewhere!) on the iOS App Store in every country.** + +

      + +Thanks for everything so far, I'm looking forward to the road that lies ahead for Home Assistant on iOS! + From 5e59bbeccbc9a5b4ef34d09a07999d466b41541f Mon Sep 17 00:00:00 2001 From: Marc Forth Date: Sun, 16 Apr 2017 21:02:03 +0100 Subject: [PATCH 33/39] Update lets_encrypt.markdown (#2436) One last shot at getting the screenshot image to actually display in the page! --- source/_docs/ecosystem/certificates/lets_encrypt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 20891800f5b5..caac6eb191c4 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -87,7 +87,7 @@ $ ifconfig You will receive an ouput similar to the image below:

      - + Screenshot

      From c73803e4ad18942e795c5bb4a992586b81b7fce0 Mon Sep 17 00:00:00 2001 From: Nikolas Beutler Date: Sun, 16 Apr 2017 23:07:59 +0200 Subject: [PATCH 34/39] typo typo --- source/_components/alexa.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index fd763355e977..c0526d856a83 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -357,7 +357,7 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - Hit "Next" - Test - Having passed all validations to reach this screen you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. -- To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Setings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". +- To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". [amazon-dev-console]: https://developer.amazon.com [flash-briefing-api]: https://developer.amazon.com/alexa-skills-kit/flash-briefing From 50e6ce4f529ec0a71721fbe8e5448979a733049d Mon Sep 17 00:00:00 2001 From: Nikolas Beutler Date: Sun, 16 Apr 2017 23:50:31 +0200 Subject: [PATCH 35/39] Update notifications.markdown --- .../_docs/ecosystem/ios/notifications.markdown | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/ios/notifications.markdown b/source/_docs/ecosystem/ios/notifications.markdown index 68854e1b4b9a..a90c35311814 100644 --- a/source/_docs/ecosystem/ios/notifications.markdown +++ b/source/_docs/ecosystem/ios/notifications.markdown @@ -12,4 +12,19 @@ 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 service. No extra configuration is needed or supported. +The 'ios' component will automatically load the notify service. +The service component can be called using `service: notify.ios.`. +Your device name can be found in the `ios.conf` file in the homeassistant configuration folder: +`{"devices": {"iphone": {"deviceId": "iphone", "pushToken": "", "permissions": ["location"], "battery": {"state": "Unplugged", "level": 100}, "pushSounds": [], "pushId": "", "app": {"buildNumber": 1, "bundleIdentifer": "io.robbie.HomeAssistant"}, "device": {"systemName": "iOS", "name": "iPhone", "systemVersion": "10.2.1", "localizedModel": "iPhone", "type": "iPhone 7", "model": "iPhone", "permanentID": ""}}}} + + +Configuration variables: +- **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`. +- **message** (*Required*): Your message to show up in the notification + +Example Automation: +```yaml +- service: notify.ios. + data_template: + message: "This is the message" +``` From b830c194a023b543715749995a2ebffe5544c1a8 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 16 Apr 2017 15:02:36 -0700 Subject: [PATCH 36/39] Fix syntax and clarify some things --- .../ecosystem/ios/notifications.markdown | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/source/_docs/ecosystem/ios/notifications.markdown b/source/_docs/ecosystem/ios/notifications.markdown index a90c35311814..c5e8f372543b 100644 --- a/source/_docs/ecosystem/ios/notifications.markdown +++ b/source/_docs/ecosystem/ios/notifications.markdown @@ -13,18 +13,12 @@ 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 service. -The service component can be called using `service: notify.ios.`. -Your device name can be found in the `ios.conf` file in the homeassistant configuration folder: -`{"devices": {"iphone": {"deviceId": "iphone", "pushToken": "", "permissions": ["location"], "battery": {"state": "Unplugged", "level": 100}, "pushSounds": [], "pushId": "", "app": {"buildNumber": 1, "bundleIdentifer": "io.robbie.HomeAssistant"}, "device": {"systemName": "iOS", "name": "iPhone", "systemVersion": "10.2.1", "localizedModel": "iPhone", "type": "iPhone 7", "model": "iPhone", "permanentID": ""}}}} +The service component can be called using `service: notify.ios_`. +Your device ID can be found in the `ios.conf` file in your configuration folder. The file is compressed JSON. You can view it easier by copying the file contents and pasting them into [JSONLint](http://jsonlint.com). - -Configuration variables: -- **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`. -- **message** (*Required*): Your message to show up in the notification - -Example Automation: -```yaml -- service: notify.ios. - data_template: - message: "This is the message" +In this example, the device ID is `robbiet480_7plus`, so the notify service to use is `notify.ios_robbiet480_7plus`: +```json +{"devices":{"robbiet480_7plus":{"app":{"bundleIdentifer":"io.robbie.HomeAssistant","versionNumber":1,"buildNumber":53},"pushSounds":[],"permissions":["location"],"deviceId":"robbiet480_7plus","device":{"type":"iPhone 7 Plus","systemName":"iOS","systemVersion":"10.3","permanentID":"AB9F02FE-6AC6-47B8-ADEB-5DD87B489156","localizedModel":"iPhone","name":"Robbie's iPhone 7 Plus","model":"iPhone"},"battery":{"state":"Full","level":100},"pushToken":"SECRET","pushId":"SECRET"}}} ``` + +You can find more information in the [Basic Notifications](https://home-assistant.io/docs/ecosystem/ios/notifications/basic/) documentation. From 226b538e9ba8f0f4e4e0b36be68b2c51c08c3fcf Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 16 Apr 2017 15:23:23 -0700 Subject: [PATCH 37/39] minor docs updates --- source/_docs/ecosystem/ios.markdown | 6 ++++-- source/_docs/ecosystem/ios/notifications/basic.markdown | 4 ++-- .../ecosystem/ios/notifications/content_extensions.markdown | 4 ++-- .../ios/notifications/requesting_location_updates.markdown | 2 +- source/_docs/ecosystem/ios/notifications/sounds.markdown | 2 +- source/_posts/2017-04-15-ios.markdown | 2 ++ 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown index 66c842fc9a58..5764aff2d827 100644 --- a/source/_docs/ecosystem/ios.markdown +++ b/source/_docs/ecosystem/ios.markdown @@ -24,7 +24,7 @@ The app is available on the iOS App Store in every country that Apple supports. ## Basic requirements * iOS device running at least iOS 9, but iOS 10 is greatly preferred. -* Home Assistant 0.31.1 or higher for push notification support. +* Home Assistant 0.42.4 or higher for push notification support. * SSL is strongly recommended. Self-signed SSL certificates will not work due to Apple's limitations. The `ios` component is the companion component for the Home Assistant iOS app. While not required, adding the `ios` component to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app. @@ -40,7 +40,9 @@ The `ios` component will automatically be loaded under the following circumstanc 1. The [`discovery`][discovery] component is enabled. 2. You have just installed the app and are at the getting started screen. -Automated discovery and component loaded can only happen at first install of the app. You may need to wait a few minutes for the iOS component to load as the `discovery` component only scans the network every 5 minutes. +Automated discovery and component loading only happens at first install of the app. You may need to wait a few minutes for the iOS component to load as the `discovery` component only scans the network every 5 minutes. + +After the first automated setup you need to add `ios:` to your configuration so that the component loads by default even after restarting Home Assistant. ### Manual Setup diff --git a/source/_docs/ecosystem/ios/notifications/basic.markdown b/source/_docs/ecosystem/ios/notifications/basic.markdown index 0400888a2c68..188454e259a4 100644 --- a/source/_docs/ecosystem/ios/notifications/basic.markdown +++ b/source/_docs/ecosystem/ios/notifications/basic.markdown @@ -34,7 +34,7 @@ automation: trigger: ... action: - service: notify.iOSApp + service: notify.ios_ data: message: "Something happened at home!" data: @@ -51,7 +51,7 @@ automation trigger: ... action: - service: notify.iOSApp + service: notify.ios_ data: message: "Something happened at home!" data: diff --git a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown index 8b9ec5b5053a..5cf4d5018b88 100644 --- a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown +++ b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown @@ -17,7 +17,7 @@ Will show a map with a red tipped pin at the coordinates given. The map will be centered at the coordinates given. ```yaml -service: notify.iOSApp +service: notify.ios_ data: message: Something happened at home! data: @@ -44,7 +44,7 @@ You can use the attachment parameters `content-type` and `hide-thumbnail` with c You can view an example [here](https://www.youtube.com/watch?v=LmYwpxPKW0g). ```yaml -service: notify.iOSApp +service: notify.ios_ data: message: Motion detected in the Living Room data: diff --git a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown b/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown index a014cb5334a2..ad30c68b5af5 100644 --- a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown +++ b/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown @@ -22,7 +22,7 @@ automation trigger: ... action: - service: notify.iOSApp + service: notify.ios_ data: message: "request_location_update" ``` diff --git a/source/_docs/ecosystem/ios/notifications/sounds.markdown b/source/_docs/ecosystem/ios/notifications/sounds.markdown index 7e0a96635237..5862f15c5f4f 100644 --- a/source/_docs/ecosystem/ios/notifications/sounds.markdown +++ b/source/_docs/ecosystem/ios/notifications/sounds.markdown @@ -19,7 +19,7 @@ Here is an example notification that uses one of the pre-installed sounds. trigger: ... action: - service: notify.iOSApp + service: notify.ios_ data: message: “Something happened at home!” data: diff --git a/source/_posts/2017-04-15-ios.markdown b/source/_posts/2017-04-15-ios.markdown index aef1a8d40349..5f5ba913b6bb 100644 --- a/source/_posts/2017-04-15-ios.markdown +++ b/source/_posts/2017-04-15-ios.markdown @@ -38,5 +38,7 @@ The app is [open source](https://github.com/home-assistant/home-assistant-iOS),

      +_Please note, you must have Home Assistant 0.42.4 or later installed for the app to function properly._ + Thanks for everything so far, I'm looking forward to the road that lies ahead for Home Assistant on iOS! From 83e5f9fa0b329efb03e52262026cea6d34f9a6e0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Apr 2017 15:11:36 -0700 Subject: [PATCH 38/39] Release 0.42.4 --- _config.yml | 6 +++--- ...beacons--lockitron-locks--total-connect.markdown | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 8277e1a305e1..89deae253512 100644 --- a/_config.yml +++ b/_config.yml @@ -139,9 +139,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 42 -current_patch_version: 3 -date_released: 2017-04-11 +current_patch_version: 4 +date_released: 2017-04-17 # 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: "#release-0423---april-11" +patch_version_notes: "#release-0424---april-17" diff --git a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown index 814eccdfcb85..b6beaa99e469 100644 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown @@ -108,6 +108,14 @@ Experiencing issues introduced by this release? Please report them in our [issue - Plug file leak on LIFX unregister ([@amelchio] - [#7031]) - Bugfix wait on start event ([@pvizeli] - [#7013]) +## {% linkable_title Release 0.42.4 - April 17 %} + +- Version bump to 0.42.4 ([@balloob]) +- Fix mysensors callback ([@MartinHjelmare] - [#7057]) +- Upgrade aiohttp to 2.0.7 ([@fabaff] - [#7106]) +- Make version number optional and a string to fix identify issue introduced in iOS 1.0.1 ([@robbiet480] - [#7141]) +- Fix for zwave RGB setting ([@armills] - [#7137]) + ## All changes - Flux led update lib ([@danielhiversen] - [#6763]) @@ -392,3 +400,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [forum]: https://community.home-assistant.io/ [gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues +[#7057]: https://github.com/home-assistant/home-assistant/pull/7057 +[#7106]: https://github.com/home-assistant/home-assistant/pull/7106 +[#7137]: https://github.com/home-assistant/home-assistant/pull/7137 +[#7141]: https://github.com/home-assistant/home-assistant/pull/7141 +[@robbiet480]: https://github.com/robbiet480 From 58846b8c002af309342aabfd6979beb9594e0cde Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 16 Apr 2017 16:48:00 -0700 Subject: [PATCH 39/39] Update push configuration doc --- source/_docs/ecosystem/ios.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown index 5764aff2d827..6959ade8f135 100644 --- a/source/_docs/ecosystem/ios.markdown +++ b/source/_docs/ecosystem/ios.markdown @@ -55,10 +55,10 @@ ios: Configuration variables: -- **push** (*Optional*): Push notification configuration. See the [iOS `notify` platform][ios-notify] for more information. +- **push** (*Optional*): Actionable push notifications configuration. See the [actionable notifications documentation][actionable-notifications] for more information. [discovery]: /components/discovery [device-tracker]: /components/device_tracker [zeroconf]: /components/zeroconf [notify]: /components/notify -[ios-notify]: /ecosystem/ios/notifications/ +[actionable-notifications]: /docs/ecosystem/ios/notifications/actions/