From 6ceb6fb58d3f3517ec93f6a102bbdce2d3fb5430 Mon Sep 17 00:00:00 2001 From: Matthew Donoughe Date: Thu, 19 Jul 2018 20:52:54 -0400 Subject: [PATCH 01/39] update caseta docs for pylutron_caseta 0.5.0 --- source/_components/lutron_caseta.markdown | 4 ++-- source/assets/get_lutron_cert.zip | Bin 2468 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 source/assets/get_lutron_cert.zip diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index 9783766c89d..b3de8f2abd6 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -25,9 +25,9 @@ The currently supported Caseta devices are: - Scenes as Home Assistant [scenes](/components/scene.lutron_caseta/) - Lutron shades as Home Assistant [covers](/components/cover.lutron_caseta/) -When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g., a dimmer called 'Bedroom Lamp' becomes `light.bedroom_lamp` in Home Assistant. +When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g., a dimmer called 'Lamp' in a room called 'Bedroom' becomes `light.bedroom_lamp` in Home Assistant. -To use Lutron Caseta devices in your installation, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [this script](/assets/get_lutron_cert.zip), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information. +To use Lutron Caseta devices in your installation, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [get_lutron_cert.py](https://github.com/gurumitts/pylutron-caseta/blob/master/get_lutron_cert.py), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information. Once you have the three necessary files, place them in your configuration directory and add the following to your `configuration.yaml`: diff --git a/source/assets/get_lutron_cert.zip b/source/assets/get_lutron_cert.zip deleted file mode 100644 index b3849e8a4120cd5d2e6eda0c985e064a715ffb89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2468 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 From 794aac0997c419fbe5819182037900817c27c9e2 Mon Sep 17 00:00:00 2001 From: Matthew Donoughe Date: Thu, 19 Jul 2018 21:05:36 -0400 Subject: [PATCH 02/39] update caseta docs to align with standards --- source/_components/lutron_caseta.markdown | 24 +++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index b3de8f2abd6..4a42d97b16f 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -40,12 +40,24 @@ lutron_caseta: ca_certs: caseta-bridge.crt ``` -Configuration variables: - -- **host** (*Required*): The IP address of the Lutron Smart Bridge. -- **keyfile** (*Required*): The private key that Home Assistant will use to authenticate to the bridge. -- **certfile** (*Required*): The certificate chain that Home Assistant will use to authenticate to the bridge. -- **ca_certs** (*Required*): The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge. +{% configuration %} + host: + required: true + description: The IP address of the Lutron Smart Bridge. + type: string + keyfile: + required: true + description: The private key that Home Assistant will use to authenticate to the bridge. + type: string + certfile: + required: true + description: The certificate chain that Home Assistant will use to authenticate to the bridge. + type: string + ca_certs: + required: true + description: The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge. + type: string +{% endconfiguration %}

It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address. From a4e039a09dac93f4ca050c97a3183d4da374a0fd Mon Sep 17 00:00:00 2001 From: James Crook Date: Wed, 8 Aug 2018 16:48:44 +0100 Subject: [PATCH 03/39] Add examples for whitelist_external_dirs Added examples for whitelist_external_dirs as I found it difficult to figure out a) it had to follow homeassistant: b) drop the last slash for the directory i.e. /tmp/exampledir NOT /tmp/exampledir/ --- source/_docs/configuration/basic.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 3ac38b00a2f..d92e5a9c097 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -20,6 +20,9 @@ homeassistant: unit_system: metric time_zone: America/Los_Angeles name: Home + whitelist_external_dirs: + - /home/user/HASS/.homeassistant/dumping-ground + - /tmp ``` Configuration variables: From 739389c312d238b40fb4f51fcc65a2cf8e53f6c5 Mon Sep 17 00:00:00 2001 From: dbrowndan Date: Wed, 8 Aug 2018 17:14:26 -0700 Subject: [PATCH 04/39] Expand ecobee documentation for set_hold_mode service Added some notes explaining how to access your custom ecobee "Comfort Settings" when using set_hold_mode --- source/_components/climate.ecobee.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.ecobee.markdown b/source/_components/climate.ecobee.markdown index b92b001f379..4b46bf3a9cf 100644 --- a/source/_components/climate.ecobee.markdown +++ b/source/_components/climate.ecobee.markdown @@ -245,7 +245,7 @@ canceled. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | 'temp', 'home', 'away', 'sleep', etc., None +| `hold_mode` | no | `temp`, `home`, `away`, `sleep`, `None`, etc. NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are 'smart1', 'smart2', 'smart3', etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app MAY NOT MATCH the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct 'smartX' hold_mode IDs. ### {% linkable_title Service `set_temperature` %} From 366911691a9fe3d159843da8d9ed589d53c0527b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 11 Aug 2018 09:04:43 +0200 Subject: [PATCH 05/39] Add initila rc blogpost --- _config.yml | 8 +- source/_posts/2018-08-17-release-76.markdown | 286 +++++++++++++++++++ 2 files changed, 290 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2018-08-17-release-76.markdown diff --git a/_config.yml b/_config.yml index 41f8bb5eacb..905f48a3a53 100644 --- a/_config.yml +++ b/_config.yml @@ -141,14 +141,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 75 -current_patch_version: 3 -date_released: 2018-08-09 +current_minor_version: 76 +current_patch_version: 0 +date_released: 2018-08-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. # Major release: -patch_version_notes: "#release-0753---august-9" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown new file mode 100644 index 00000000000..90c7cf44afb --- /dev/null +++ b/source/_posts/2018-08-17-release-76.markdown @@ -0,0 +1,286 @@ +--- +layout: post +title: "0.76: TBD - UPDATE DATE" +description: "TBD" +date: 2018-08-11 00:01:00 +date_formatted: "August 17, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-08-0.76/components.png +--- + + + +### This release has a migration, initial startup will take some time. + +## {% linkable_title New Platforms %} + +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- RitAssist / FleetGO support ([@depl0y] - [#15780]) ([device_tracker docs]) (new-platform) +- Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) +- Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) +- Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) +- Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) +- Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) + +## {% linkable_title New Features %} + +- Add and restore context in recorder ([@balloob] - [#15859]) (new-feature) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) + +## {% linkable_title All changes %} + +- Add kodi unique id based on discovery ([@rytilahti] - [#15093]) ([media_player.kodi docs]) +- Better handling of Yi camera being disconnected ([@bachya] - [#15754]) ([camera.yi docs]) +- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) (new-platform) +- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- Add disallow_untyped_calls to mypy check. ([@andrey-git] - [#15661]) ([persistent_notification docs]) +- Update pyozw to 0.4.9 ([@turbokongen] - [#15758]) ([zwave docs]) +- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- Round precipitation forecast to 1 decimal place ([@priiduonu] - [#15759]) ([weather.openweathermap docs]) +- Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) +- Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) +- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- Fix docstrings ([@fabaff] - [#15770]) ([onboarding docs]) +- Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) +- Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) +- Expose internal states and fixed on/off state of Dyson Fans ([@soraxas] - [#15716]) ([fan.dyson docs]) +- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- Add support for STATES of vacuums ([@cnrd] - [#15573]) ([vacuum docs]) ([vacuum.xiaomi_miio docs]) +- Add support for STATE_AUTO of generic_thermostat ([@niklaswa] - [#15678]) ([climate.generic_thermostat docs]) +- Revert "Add support for STATE_AUTO of generic_thermostat (#15678)" ([@awarecan] - [#15783]) ([climate.generic_thermostat docs]) +- RitAssist / FleetGO support ([@depl0y] - [#15780]) ([device_tracker docs]) (new-platform) +- Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) +- Update pymediaroom to 0.6.4 ([@dgomes] - [#15786]) ([media_player.mediaroom docs]) +- Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) +- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) ([vacuum.demo docs]) +- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Upgrade voluptuous-serialize to 2.0.0 ([@awarecan] - [#15763]) ([config docs]) +- Upgrade pylint to 2.1.0 ([@scop] - [#15811]) ([binary_sensor.bayesian docs]) ([binary_sensor.threshold docs]) ([calendar.todoist docs]) ([light.group docs]) ([sensor.min_max docs]) ([sensor.statistics docs]) +- Upgrade pytest to 3.7.1 and pytest-timeout to 1.3.1 ([@scop] - [#15809]) +- Add support for 2 Tahoma IO awning covers ([@fucm] - [#15660]) ([tahoma docs]) ([cover.tahoma docs]) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Upgrade youtube_dl to 2018.08.04 ([@fabaff] - [#15837]) ([media_extractor docs]) +- Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) +- Remove 'volume' from return dict ([@mattwing] - [#15842]) ([sensor.alpha_vantage docs]) +- Upgrade shodan to 1.9.0 ([@fabaff] - [#15839]) ([sensor.shodan docs]) +- Add max_gps_accuracy option to Google Maps ([@PrimusNZ] - [#15833]) ([device_tracker docs]) +- Fix bt_home_hub_5 device tracker ([@ahobsonsayers] - [#15096]) ([device_tracker docs]) +- Change to call_service async_stop non-blocking to allow service call finish ([@awarecan] - [#15803]) +- Try to fix coveralls unstable result ([@awarecan] - [#15800]) +- Add different pop 012501 ID ([@turbokongen] - [#15838]) ([zwave docs]) +- Fix error when Series missing 'episodeFileCount' or 'episodeCount' ([@psike] - [#15824]) ([sensor.sonarr docs]) +- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- Upgrade holidays to 0.9.6 ([@fabaff] - [#15831]) ([binary_sensor.workday docs]) +- Upgrade pysnmp to 4.4.5 ([@fabaff] - [#15854]) ([device_tracker docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Fix HomeKit test ([@cdce8p] - [#15860]) +- Do not make internet connection during tests ([@balloob] - [#15858]) +- Upgrade pylint to 2.1.1 ([@scop] - [#15872]) +- Upgrade asynctest to 0.12.2 ([@fabaff] - [#15869]) +- Upgrade Sphinx to 1.7.6 ([@fabaff] - [#15868]) +- Upgrade requests_mock to 1.5.2 ([@fabaff] - [#15867]) +- Update based upon forum post ([@DubhAd] - [#15876]) ([device_tracker docs]) +- Upgrade netdisco to 2.0.0 ([@fabaff] - [#15885]) +- Follow changes to netdisco, separating DLNA into DLNA_DMS and DLNA_DMR ([@StevenLooman] - [#15877]) ([media_player.dlna_dmr docs]) +- Upgrade pylast to 2.4.0 ([@fabaff] - [#15886]) ([sensor.lastfm docs]) +- Add auth/authorize endpoint ([@balloob] - [#15887]) +- Upgrade locationsharinglib to 2.0.11 ([@fabaff] - [#15902]) ([device_tracker docs]) +- Refactor data entry flow ([@awarecan] - [#15883]) +- Add HomematicIP Cloud smoke detector device ([@mxworm] - [#15621]) ([binary_sensor.homematicip_cloud docs]) +- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- Add realtime true/false switch for Waze ([@mountainsandcode] - [#15228]) ([sensor.waze_travel_time docs]) +- Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) +- Some typing related fixes ([@scop] - [#15899]) +- Misc cleanups ([@scop] - [#15907]) ([device_tracker docs]) ([sensor.irish_rail_transport docs]) +- Update radiotherm to 1.4.1 ([@craftyguy] - [#15910]) ([climate.radiotherm docs]) +- Fix bug in translations upload script ([@armills] - [#15922]) +- Add and restore context in recorder ([@balloob] - [#15859]) (new-feature) +- Add IndieAuth 4.2.2 redirect uri at client id ([@balloob] - [#15911]) ([auth docs]) +- deCONZ - Add support for sirens ([@Kane610] - [#15896]) ([deconz docs]) ([switch.deconz docs]) +- Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) +- :pencil2: Corrects typo in code comments ([@frenck] - [#15923]) ([binary_sensor.homematicip_cloud docs]) + +[#13742]: https://github.com/home-assistant/home-assistant/pull/13742 +[#14028]: https://github.com/home-assistant/home-assistant/pull/14028 +[#14749]: https://github.com/home-assistant/home-assistant/pull/14749 +[#15081]: https://github.com/home-assistant/home-assistant/pull/15081 +[#15083]: https://github.com/home-assistant/home-assistant/pull/15083 +[#15093]: https://github.com/home-assistant/home-assistant/pull/15093 +[#15096]: https://github.com/home-assistant/home-assistant/pull/15096 +[#15228]: https://github.com/home-assistant/home-assistant/pull/15228 +[#15273]: https://github.com/home-assistant/home-assistant/pull/15273 +[#15439]: https://github.com/home-assistant/home-assistant/pull/15439 +[#15511]: https://github.com/home-assistant/home-assistant/pull/15511 +[#15573]: https://github.com/home-assistant/home-assistant/pull/15573 +[#15621]: https://github.com/home-assistant/home-assistant/pull/15621 +[#15660]: https://github.com/home-assistant/home-assistant/pull/15660 +[#15661]: https://github.com/home-assistant/home-assistant/pull/15661 +[#15678]: https://github.com/home-assistant/home-assistant/pull/15678 +[#15715]: https://github.com/home-assistant/home-assistant/pull/15715 +[#15716]: https://github.com/home-assistant/home-assistant/pull/15716 +[#15740]: https://github.com/home-assistant/home-assistant/pull/15740 +[#15751]: https://github.com/home-assistant/home-assistant/pull/15751 +[#15752]: https://github.com/home-assistant/home-assistant/pull/15752 +[#15754]: https://github.com/home-assistant/home-assistant/pull/15754 +[#15757]: https://github.com/home-assistant/home-assistant/pull/15757 +[#15758]: https://github.com/home-assistant/home-assistant/pull/15758 +[#15759]: https://github.com/home-assistant/home-assistant/pull/15759 +[#15763]: https://github.com/home-assistant/home-assistant/pull/15763 +[#15766]: https://github.com/home-assistant/home-assistant/pull/15766 +[#15767]: https://github.com/home-assistant/home-assistant/pull/15767 +[#15768]: https://github.com/home-assistant/home-assistant/pull/15768 +[#15769]: https://github.com/home-assistant/home-assistant/pull/15769 +[#15770]: https://github.com/home-assistant/home-assistant/pull/15770 +[#15780]: https://github.com/home-assistant/home-assistant/pull/15780 +[#15783]: https://github.com/home-assistant/home-assistant/pull/15783 +[#15786]: https://github.com/home-assistant/home-assistant/pull/15786 +[#15800]: https://github.com/home-assistant/home-assistant/pull/15800 +[#15803]: https://github.com/home-assistant/home-assistant/pull/15803 +[#15804]: https://github.com/home-assistant/home-assistant/pull/15804 +[#15809]: https://github.com/home-assistant/home-assistant/pull/15809 +[#15811]: https://github.com/home-assistant/home-assistant/pull/15811 +[#15814]: https://github.com/home-assistant/home-assistant/pull/15814 +[#15824]: https://github.com/home-assistant/home-assistant/pull/15824 +[#15831]: https://github.com/home-assistant/home-assistant/pull/15831 +[#15833]: https://github.com/home-assistant/home-assistant/pull/15833 +[#15837]: https://github.com/home-assistant/home-assistant/pull/15837 +[#15838]: https://github.com/home-assistant/home-assistant/pull/15838 +[#15839]: https://github.com/home-assistant/home-assistant/pull/15839 +[#15842]: https://github.com/home-assistant/home-assistant/pull/15842 +[#15854]: https://github.com/home-assistant/home-assistant/pull/15854 +[#15858]: https://github.com/home-assistant/home-assistant/pull/15858 +[#15859]: https://github.com/home-assistant/home-assistant/pull/15859 +[#15860]: https://github.com/home-assistant/home-assistant/pull/15860 +[#15867]: https://github.com/home-assistant/home-assistant/pull/15867 +[#15868]: https://github.com/home-assistant/home-assistant/pull/15868 +[#15869]: https://github.com/home-assistant/home-assistant/pull/15869 +[#15872]: https://github.com/home-assistant/home-assistant/pull/15872 +[#15876]: https://github.com/home-assistant/home-assistant/pull/15876 +[#15877]: https://github.com/home-assistant/home-assistant/pull/15877 +[#15883]: https://github.com/home-assistant/home-assistant/pull/15883 +[#15885]: https://github.com/home-assistant/home-assistant/pull/15885 +[#15886]: https://github.com/home-assistant/home-assistant/pull/15886 +[#15887]: https://github.com/home-assistant/home-assistant/pull/15887 +[#15896]: https://github.com/home-assistant/home-assistant/pull/15896 +[#15899]: https://github.com/home-assistant/home-assistant/pull/15899 +[#15902]: https://github.com/home-assistant/home-assistant/pull/15902 +[#15907]: https://github.com/home-assistant/home-assistant/pull/15907 +[#15910]: https://github.com/home-assistant/home-assistant/pull/15910 +[#15911]: https://github.com/home-assistant/home-assistant/pull/15911 +[#15922]: https://github.com/home-assistant/home-assistant/pull/15922 +[#15923]: https://github.com/home-assistant/home-assistant/pull/15923 +[@DubhAd]: https://github.com/DubhAd +[@Kane610]: https://github.com/Kane610 +[@MatMaul]: https://github.com/MatMaul +[@PrimusNZ]: https://github.com/PrimusNZ +[@StevenLooman]: https://github.com/StevenLooman +[@ahobsonsayers]: https://github.com/ahobsonsayers +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@benoitlouy]: https://github.com/benoitlouy +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@cnrd]: https://github.com/cnrd +[@craftyguy]: https://github.com/craftyguy +[@depl0y]: https://github.com/depl0y +[@dgomes]: https://github.com/dgomes +[@fabaff]: https://github.com/fabaff +[@foxel]: https://github.com/foxel +[@frenck]: https://github.com/frenck +[@fucm]: https://github.com/fucm +[@ioangogo]: https://github.com/ioangogo +[@jesserizzo]: https://github.com/jesserizzo +[@mattwing]: https://github.com/mattwing +[@mountainsandcode]: https://github.com/mountainsandcode +[@mxworm]: https://github.com/mxworm +[@niklaswa]: https://github.com/niklaswa +[@priiduonu]: https://github.com/priiduonu +[@psike]: https://github.com/psike +[@rafale77]: https://github.com/rafale77 +[@robmarkcole]: https://github.com/robmarkcole +[@rytilahti]: https://github.com/rytilahti +[@salbertson]: https://github.com/salbertson +[@scop]: https://github.com/scop +[@soraxas]: https://github.com/soraxas +[@thomasdelaet]: https://github.com/thomasdelaet +[@turbokongen]: https://github.com/turbokongen +[auth docs]: /components/auth/ +[binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ +[binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ +[binary_sensor.openuv docs]: /components/binary_sensor.openuv/ +[binary_sensor.threshold docs]: /components/binary_sensor.threshold/ +[binary_sensor.velbus docs]: /components/binary_sensor.velbus/ +[binary_sensor.workday docs]: /components/binary_sensor.workday/ +[calendar.todoist docs]: /components/calendar.todoist/ +[camera.yi docs]: /components/camera.yi/ +[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[config docs]: /components/config/ +[cover.tahoma docs]: /components/cover.tahoma/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[fan.dyson docs]: /components/fan.dyson/ +[fan.velbus docs]: /components/fan.velbus/ +[http docs]: /components/http/ +[image_processing.facebox docs]: /components/image_processing.facebox/ +[light.deconz docs]: /components/light.deconz/ +[light.group docs]: /components/light.group/ +[light.velbus docs]: /components/light.velbus/ +[media_extractor docs]: /components/media_extractor/ +[media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.mediaroom docs]: /components/media_player.mediaroom/ +[media_player.pjlink docs]: /components/media_player.pjlink/ +[notify docs]: /components/notify/ +[onboarding docs]: /components/onboarding/ +[openuv docs]: /components/openuv/ +[persistent_notification docs]: /components/persistent_notification/ +[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ +[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/ +[sensor.irish_rail_transport docs]: /components/sensor.irish_rail_transport/ +[sensor.lastfm docs]: /components/sensor.lastfm/ +[sensor.min_max docs]: /components/sensor.min_max/ +[sensor.opensky docs]: /components/sensor.opensky/ +[sensor.openuv docs]: /components/sensor.openuv/ +[sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.shodan docs]: /components/sensor.shodan/ +[sensor.snmp docs]: /components/sensor.snmp/ +[sensor.sonarr docs]: /components/sensor.sonarr/ +[sensor.statistics docs]: /components/sensor.statistics/ +[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ +[switch.amcrest docs]: /components/switch.amcrest/ +[switch.deconz docs]: /components/switch.deconz/ +[switch.snmp docs]: /components/switch.snmp/ +[switch.velbus docs]: /components/switch.velbus/ +[tahoma docs]: /components/tahoma/ +[vacuum docs]: /components/vacuum/ +[vacuum.demo docs]: /components/vacuum.demo/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[velbus docs]: /components/velbus/ +[weather.openweathermap docs]: /components/weather.openweathermap/ +[zwave docs]: /components/zwave/ From 1e59ae039f8096018a16f9e7956170b81ec01092 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Aug 2018 14:15:33 +0200 Subject: [PATCH 06/39] Update 2018-08-17-release-76.markdown --- source/_posts/2018-08-17-release-76.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 90c7cf44afb..e65745d3398 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -15,6 +15,8 @@ og_image: /images/blog/2018-08-0.76/components.png ### This release has a migration, initial startup will take some time. +Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) + ## {% linkable_title New Platforms %} - deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) From fd2cce0370fbbbaefa970d585a6807859e126d6b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Aug 2018 14:15:51 +0200 Subject: [PATCH 07/39] Update 2018-08-17-release-76.markdown --- source/_posts/2018-08-17-release-76.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index e65745d3398..223a3865794 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -17,6 +17,8 @@ og_image: /images/blog/2018-08-0.76/components.png Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) +Please report your migration time in the #beta channel on discord. + ## {% linkable_title New Platforms %} - deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) From 427bc5b5d69b4a54bc5a2f065f72d62cc89cf411 Mon Sep 17 00:00:00 2001 From: James Crook Date: Mon, 13 Aug 2018 16:31:34 +0100 Subject: [PATCH 08/39] updated the example I changed one of the example whitelists, as it was an already white listed directory. --- source/_docs/configuration/basic.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index d92e5a9c097..2c085217a6c 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -21,7 +21,7 @@ homeassistant: time_zone: America/Los_Angeles name: Home whitelist_external_dirs: - - /home/user/HASS/.homeassistant/dumping-ground + - /usr/var/dumping-ground - /tmp ``` From cc7714c74ad88795b84f85e6cc22452bd67ea4d5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Aug 2018 09:16:42 +0200 Subject: [PATCH 09/39] Add setup section (#6014) --- .../sensor.worldtidesinfo.markdown | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.worldtidesinfo.markdown b/source/_components/sensor.worldtidesinfo.markdown index 1b5dca31857..471a09566b4 100644 --- a/source/_components/sensor.worldtidesinfo.markdown +++ b/source/_components/sensor.worldtidesinfo.markdown @@ -14,6 +14,12 @@ ha_release: 0.52 The `worldtidesinfo` sensor platform uses details from [World Tides](https://www.worldtides.info/) to provide information about the prediction for the tides for any location in the world. +## {% linkable_title Setup %} + +Get your API key from your account at [https://www.worldtides.info/](https://www.worldtides.info/). + +## {% linkable_title Configuration %} + To use this sensor, add the following to your `configuration.yaml` file: ```yaml @@ -23,10 +29,25 @@ sensor: api_key: YOUR_API_KEY ``` -Configuration variables: - -- **api_key** (*Required*): Your API key for https://www.worldtides.info/. -- **name** (*Optional*): Name to use in the frontend. -- **latitude** (*Optional*): Latitude of the location to display the tides. Defaults to the latitude in your `configuration.yaml` file. -- **longitude** (*Optional*): Longitude of the location to display the tides. Defaults to the longitude in your `configuration.yaml` file. +{% configuration %} +api_key: + description: Your API key. + required: true + type: string +name: + description: Name to use in the frontend. + required: false + type: string + default: WorldTidesInfo +latitude: + description: Latitude of the location to display the tides. + required: false + type: float + default: "The latitude in your `configuration.yaml` file." +longitude: + description: Longitude of the location to display the tides. + required: false + type: float + default: "The longitude in your `configuration.yaml` file." +{% endconfiguration %} From a1c50eaa0aa04ea861a62c5aa2a2a32e5a9da315 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 14 Aug 2018 19:00:58 +0100 Subject: [PATCH 10/39] Adding link to Hassbian scripts (#6018) * Adding link to Hassbian scripts Making it more likely people using Hassbian won't break their installs by installing in the same venv as HA * :pencil2: Tweak --- source/_docs/ecosystem/hadashboard.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_docs/ecosystem/hadashboard.markdown b/source/_docs/ecosystem/hadashboard.markdown index 87c06d166dd..8f06247ee0d 100755 --- a/source/_docs/ecosystem/hadashboard.markdown +++ b/source/_docs/ecosystem/hadashboard.markdown @@ -37,6 +37,4 @@ HADashboard is a modular, skinnable dashboard for [Home Assistant](/) that is in Glassic Theme

- - -For full installation instructions see the HADashboard section in the [AppDaemon Project Documentation](http://appdaemon.readthedocs.io/en/stable/DASHBOARD_INSTALL.html) +For full installation instructions see the HADashboard section in the [AppDaemon Project Documentation](http://appdaemon.readthedocs.io/en/stable/DASHBOARD_INSTALL.html). If you're using Hassbian, then the [Hassbian scripts](https://github.com/home-assistant/hassbian-scripts/blob/dev/docs/appdaemon.md) make it easy to install AppDaemon. From 1d61e5b6a7d68bd465d2a2b1c6598bf134ec95a9 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 14 Aug 2018 19:01:11 +0100 Subject: [PATCH 11/39] Adding link to Hassbian scripts (#6017) * Adding link to Hassbian scripts Making it more likely people using Hassbian won't break their installs by installing in the same venv as HA * :pencil2: Tweak --- source/_docs/ecosystem/appdaemon.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index f327433108d..3d6d6e13e85 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -107,4 +107,4 @@ Of course, if I wanted to make this App or its predecessor reusable, I would hav In addition, Apps can write to `AppDaemon`'s log files, and there is a system of constraints that allows you to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. -For full installation instructions, see the [AppDaemon Project Documentation pages](http://appdaemon.readthedocs.io/en/stable/). +For full installation instructions, see the [AppDaemon Project Documentation pages](http://appdaemon.readthedocs.io/en/stable/). If you're using Hassbian, then the [Hassbian scripts](https://github.com/home-assistant/hassbian-scripts/blob/dev/docs/appdaemon.md) make it easy to install. From f3b2e9082dc8c0b15be328c83dd6e448a02ff713 Mon Sep 17 00:00:00 2001 From: rafale77 Date: Tue, 14 Aug 2018 01:55:08 +0800 Subject: [PATCH 12/39] Update amcrest.markdown (#5216) * Update amcrest.markdown * :pencil2: Minor tweaks --- source/_components/amcrest.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/amcrest.markdown b/source/_components/amcrest.markdown index 9c0aad4929e..220ab96d17f 100644 --- a/source/_components/amcrest.markdown +++ b/source/_components/amcrest.markdown @@ -46,7 +46,7 @@ Configuration variables: - **host** (*Required*): The IP address or hostname of your camera. If using a hostname, make sure the DNS works as expected. - **username** (*Required*): The username for accessing your camera. - **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". +- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". In the case of multi-camera setups, this is highly recommended as camera id number will be randomly changed at each reboot if a name is not allocated. - **port** (*Optional*): The port that the camera is running on. The default is 80. - **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. - **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *snapshot*. From 574111a72054950ce7de640b01c60b458d35201d Mon Sep 17 00:00:00 2001 From: rafale77 Date: Tue, 14 Aug 2018 02:03:46 +0800 Subject: [PATCH 13/39] Update to reflect new pull under review (#5217) * Update to reflect new pull under review Addresses multi-camera setups with naming issues * Update switch.amcrest.markdown * Update switch.amcrest.markdown * :rocket: Trigger rebuild * :pencil2: Tweaks * :pencil2: Rewording --- source/_components/switch.amcrest.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/switch.amcrest.markdown b/source/_components/switch.amcrest.markdown index d9ed4564b22..d494df7b02b 100644 --- a/source/_components/switch.amcrest.markdown +++ b/source/_components/switch.amcrest.markdown @@ -16,3 +16,7 @@ ha_iot_class: "Local Polling" The `amcrest` switch platform lets you control settings of [Amcrest IP Camera](https://home-assistant.io/components/camera.amcrest/) through Home Assistant. Switches will be configured automatically. Please refer to the [component](/components/amcrest/) configuration on how to setup. + +

+In previous versions, switch devices in setups with multiple cameras, would not have specific entity ID causing them to change randomly after each Home Assistant restart. The current version adds the name of the camera at the end of the switch entity ID, making it more specific and consistent and causes the name option to be required in a multi-camera system. This behavior matches the sensor behavior of the Amcrest component. Because of this, older automations may require updates to the entity ID. +

From 002833d557b22aac5ce3ce4368a2400aa2016cd0 Mon Sep 17 00:00:00 2001 From: Oscar Tin Yiu Lai Date: Tue, 14 Aug 2018 08:53:58 +1000 Subject: [PATCH 14/39] added docs for added attributes for dyson fan (#5938) --- source/_components/fan.dyson.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/fan.dyson.markdown b/source/_components/fan.dyson.markdown index d1ae60c6381..c3480135efb 100644 --- a/source/_components/fan.dyson.markdown +++ b/source/_components/fan.dyson.markdown @@ -22,3 +22,12 @@ You have first to setup the [Dyson component](/components/dyson/) - Pure Cool link (desk and tower) - Pure Hot+cool link (but heating is not yet supported) + +### {% linkable_title Attributes %} + +The are several attributes that can be useful for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `is_night_mode` | A boolean that indicates if the night mode of the fan device is on. +| `is_auto_mode` | A boolean that indicates if the auto mode of the fan device is on. From c315ed2f8088ad517b22cc9c989472e59e9c4fd1 Mon Sep 17 00:00:00 2001 From: cgtobi Date: Mon, 13 Aug 2018 20:51:16 +0200 Subject: [PATCH 15/39] Add documentation for new RMV public transport sensor (#5947) * Initial documentation for the rmvtransport sensor. * Fix name * Fix typo * Added missing variable description for max number of journeys. * Minor wording fix * Fix setting names after code change. * Use configuration tag syntax. * Add logo. * Update logo file name. * Fix liquid syntax error. * Fix config setting name. * :pencil2: Markdown tweaks --- .../_components/sensor.rmvtransport.markdown | 101 ++++++++++++++++++ source/images/supported_brands/RMV.png | Bin 0 -> 12964 bytes 2 files changed, 101 insertions(+) create mode 100644 source/_components/sensor.rmvtransport.markdown create mode 100644 source/images/supported_brands/RMV.png diff --git a/source/_components/sensor.rmvtransport.markdown b/source/_components/sensor.rmvtransport.markdown new file mode 100644 index 00000000000..e6584282bda --- /dev/null +++ b/source/_components/sensor.rmvtransport.markdown @@ -0,0 +1,101 @@ +--- +layout: page +title: "RMV" +description: "Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant." +date: 2018-08-02 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: RMV.png +ha_category: Transport +ha_release: 0.76 +ha_iot_class: "Cloud Polling" +--- + +The `rvmtransport` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Rhein-Main area public transport network. Additional details such as the line number and destination are present in the attributes. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rmvtransport + next_departure: + - station: STATION_OR_STOP_ID +``` + +{% configuration %} +name: + description: Name to use in the frontend. + required: false + default: The default is the station name. + type: string +stationId: + description: ID of the stop or station, e.g. 3000010. Visit [the RMV OpenData web site](https://opendata.rmv.de) to find a list of valid IDs. + required: true + type: string +destinations: + description: "One or multiple final stop names, e.g., 'Frankfurt (Main) Hauptbahnhof' or ['Frankfurt (Main) Hauptbahnhof','Frankfurt (Main) Stadion']. This can be used to only consider a particular direction of travel." + required: false + type: [string] +lines: + description: "One or more line numbers, e.g., `'S8'` or `['S8', 'RB33', '41']`" + required: false + default: The default is the station name. + type: [string, int] +products: + description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." + required: false + default: Defaults to all. + type: [string] +time_offset: + description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. + required: false + default: The defaults is 0. + type: int +max_journeys: + description: Specify the maximal number of journeys. + required: false + default: The default is 5. + type: string +{% endconfiguration %} + +## {% linkable_title Examples %} + +### {% linkable_title Full configuration %} + +The example below shows a full configuration with three sensors that showcase the various configuration options. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rmvtransport + next_departure: + - station: 3000010 + time_offset: 5 + destinations: + - 'Frankfurt (Main) Flughafen Regionalbahnhof' + - 'Frankfurt (Main) Stadion' + products: + - 'RB' + - 'RE' + - 'Bus' + - 'S' + - station: 3006907 + products: 'Bus' + destinations: ['Wiesbaden Dernsches Gelände', 'Mainz Hauptbahnhof'] + name: Destination + - station: 3006904 + lines: 'S8' + max_journeys: 5 + products: 'S' +``` + +The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away. + +The second sensor returns bus departures from Wiesbaden Hauptbahnhof going to Dernsches Gelände and Mainz Hauptbahnhof. To retrieve the time of the second departure, you would use states.sensor.ENTITY_NAME.attributes.departures[1].time. + +The third sensor returns all S-Bahn trains from Mainz Hauptbahnhof for line S8. diff --git a/source/images/supported_brands/RMV.png b/source/images/supported_brands/RMV.png new file mode 100644 index 0000000000000000000000000000000000000000..250e90e4d4b2970aff5fa85df4cb15e947a2e674 GIT binary patch literal 12964 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 literal 0 HcmV?d00001 From dcd8f5526d3b28804c492949b771500b3d57e645 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Mon, 13 Aug 2018 21:15:29 +0200 Subject: [PATCH 16/39] Improve deCONZ switch platform documentation (#5986) --- source/_components/switch.deconz.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/switch.deconz.markdown b/source/_components/switch.deconz.markdown index e55a875cc8e..1b7a1b3e3f8 100644 --- a/source/_components/switch.deconz.markdown +++ b/source/_components/switch.deconz.markdown @@ -15,10 +15,12 @@ ha_iot_class: "Local Push" See the [deCONZ main component](/components/deconz/) for configuration instructions. -The `Entity Id` names will be `switch.device_name`, where `device_name` is defined in deCONZ. +Switches are devices like power plugs and sirens. Note that devices in the switch platform identify as lights, so there is a manually curated list that defines which "lights" are switches. +The `Entity Id` names will be `switch.device_name`, where `device_name` is defined in deCONZ. + #### {% linkable_title Verified supported switches %} - Innr SP120 From 5f473bd7bba79061503f37cb1ee7ba8c8fd71c82 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 14 Aug 2018 08:22:14 +0200 Subject: [PATCH 17/39] Add Mozilla SSL docs (#6013) * Add Mozilla SSL docs * Update http.markdown --- source/_components/http.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 0616476bf07..557c87681dd 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -42,6 +42,7 @@ Configuration variables: - **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. If using a reverse proxy with the `use_x_forwarded_for` option enabled, requests proxied to Home Assistant with a trusted `X-Forwarded-For` header will appear to come from the IP given in that header instead of the proxy IP. - **ip_ban_enabled** (*Optional*): Flag indicating whether additional IP filtering is enabled. Defaults to False. - **login_attempts_threshold** (*Optional*): Number of failed login attempt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. +- **ssl_profile** (*Optional*): The [Mozilla SSL profile](https://wiki.mozilla.org/Security/Server_Side_TLS) to use. Either `modern` or `intermediate`. Default is `modern`. Only lower if you are experiencing integrations causing SSL handshake errors. The sample below shows a configuration entry with possible values: From d8aaf57988b6cf7dfa613b376cc56a91c6676ec2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 14 Aug 2018 22:14:54 +0200 Subject: [PATCH 18/39] Update post --- source/_posts/2018-08-17-release-76.markdown | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 223a3865794..c5a27912a32 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -13,9 +13,18 @@ og_image: /images/blog/2018-08-0.76/components.png -### This release has a migration, initial startup will take some time. +The auth system is entering release candidate status 🎉. It will be enabled by default starting the next release (0.76) but you can already easily enable it now: -Report 1: Migration took 15 minutes for 30 days history. (DB: Postgres; Raspberry Pi 3; Ubuntu 16.04; venv installation) +```yaml +homeassistant: + # add this part + auth_providers: + - type: homeassistant + # uncomment this to enable API password + # - type: legacy_api_password +``` + +### This release has a migration, initial startup can take ~20 minutes (depends on size DB) Please report your migration time in the #beta channel on discord. From 02a8bf9602f6982b66a0244410e09241b5ad3630 Mon Sep 17 00:00:00 2001 From: dunstad Date: Wed, 15 Aug 2018 17:57:09 +0900 Subject: [PATCH 19/39] Update panasonic_viera markdown (#6015) This component works fine on my model, which hasn't been listed here yet. (TH-32ES500) --- source/_components/media_player.panasonic_viera.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index 601659a11d1..a0ae8610a30 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -29,6 +29,7 @@ Currently known supported models: - TX-P42STW50 - TX-P50GT30Y - TX-P50GT60E +- TH-32ES500 If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/_components/media_player.panasonic_viera.markdown). From ee62b90712f9efdb2fafc69472a9a8f900e34a34 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 15 Aug 2018 11:48:16 +0200 Subject: [PATCH 20/39] Update panel_custom --- source/_components/panel_custom.markdown | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 0415c561a7d..cced1f71abe 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -12,29 +12,34 @@ ha_category: Front end ha_release: 0.26 --- - -The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. +The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/en/frontend_creating_custom_panels.html). To enable customized panels in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry for https://github.com/home-assistant/example-custom-config/blob/master/panels/hello_world.html +# Example configuration.yaml entry panel_custom: - - name: todomvc + - name: my-panel sidebar_title: TodoMVC sidebar_icon: mdi:work url_path: my-todomvc - webcomponent_path: /home/hass/hello.html + js_url: /local/my-panel.js config: who: world ``` +

+Store your custom panels in `/www` to make them available in the frontend at the path `/local`. +

+ Configuration variables: -- **name** (*Optional*): Name of the panel. +- **name** (*Required*): Name of the web component that renders your panel. - **sidebar_title** (*Optional*): Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL). - **sidebar_icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. -- **url_path** (*Optional*): The URL your panel will be available on. If omitted will default to the panel name. -- **webcomponent_path** (*Optional*): The path to your component. If omitted will default to `/panels/.html` +- **url_path** (*Optional*): The URL your panel will be available on in the frontend. If omitted will default to the panel name. +- **js_url** (*Required*): The URL that contains the JavaScript of your panel. - **config** (*Optional*): Configuration to be passed into your web component when being instantiated. - +- **embed_iframe** (*Optional*): Set to `true` to embed panel in iframe. This is necessary if the panel is panel is using the React framework or if it contains conflicting web components. +- **trust_external_script** (*Optional*): By default the user has to confirm before loading a script from an external source. Setting this to `true` will omit this confirmation. +- **webcomponent_path** (*Optional* *DEPRECATED*): The HTML path to your component. If omitted will default to `/panels/.html` From 35fae079e72b6b756eca6736cbff9932792ca922 Mon Sep 17 00:00:00 2001 From: Michael Schulze Date: Wed, 15 Aug 2018 16:19:14 +0200 Subject: [PATCH 21/39] [BUGFIX] Fixes minor bug in dyson configuration example (#6022) --- source/_components/dyson.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index 7c0e1ca2f36..145d6204d8e 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -27,9 +27,9 @@ dyson: language: YOUR_DYSON_ACCOUNT_LANGUGAGE devices: - device_id: DEVICE_ID_1 # eg. Serial number: XXX-XX-XXXXXXXX - device_ip: DEVICE_ID_1 + device_ip: DEVICE_IP_1 - device_id: DEVICE_ID_2 - device_ip: DEVICE_ID_2 + device_ip: DEVICE_IP_2 ``` Configuration variables: From 4aeb64b3aca178f105e41b55d3f55e10905e1789 Mon Sep 17 00:00:00 2001 From: dbrowndan Date: Wed, 15 Aug 2018 18:46:51 -0700 Subject: [PATCH 22/39] Move ecobee hold_mode notes below table Per https://github.com/home-assistant/home-assistant.io/pull/5980#discussion_r209421798 --- source/_components/climate.ecobee.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/climate.ecobee.markdown b/source/_components/climate.ecobee.markdown index 4b46bf3a9cf..56bdc5e5540 100644 --- a/source/_components/climate.ecobee.markdown +++ b/source/_components/climate.ecobee.markdown @@ -245,7 +245,9 @@ canceled. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | `temp`, `home`, `away`, `sleep`, `None`, etc. NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are 'smart1', 'smart2', 'smart3', etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app MAY NOT MATCH the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct 'smartX' hold_mode IDs. +| `hold_mode` | no | `temp`, `home`, `away`, `sleep`, `None`, `smart1`, `smart2`, etc. + +NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are `smart1`, `smart2`, `smart3`, etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app MAY NOT MATCH the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct 'smartX' hold_mode IDs. ### {% linkable_title Service `set_temperature` %} From 642552c64aea0284ed935e027529eb178b9af9bf Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Aug 2018 15:47:03 +0200 Subject: [PATCH 23/39] Update breaking changes --- source/_posts/2018-08-17-release-76.markdown | 89 +++++++++++++++++--- 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index c5a27912a32..8d2fd33d224 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -54,20 +54,40 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) -- Convert wind speed to km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) -- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) -- deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) -- Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) -- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) -- Add facebox auth ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) -- Fix for multiple camera switches naming of entity ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- Keenetic NDMS: user needs to have access to the TelNet interface ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) +- openweathermap: wind speed is now correctly in km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) +- Remove Telstra notifiy component: This API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- deCONZ - support for power plugs. Power plugs that are of type "On/Off plug-in unit" and "Smart plug" (Osram and Innr among others) will now be switches instead of lights. Entities will be found as switch.entity_id instead of light.entity_id. ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) +- HTTP: Make sure use_x_forward_for and trusted_proxies must be configured together ([@awarecan] - [#15804]) ([http docs]) (breaking change) +- Velbus: Breaking changes include auto-discovery support so that you don't need to specify modules manually anymore in the configuration file, but just load the velbus component which will automatically load the switch and binary_sensor platforms. In addition, the fan and light platforms are removed since these should be modeled with template platform based on velbus switches. ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) +- Facebox: Events are no longer fired when a face is taught, as these are unnecessary and the info they convey is already in the logs. ([@robmarkcole] - [#15439]) ([image_processing.facebox docs]) (breaking change) +- AMCrest switch: Fix for multiple camera switches naming of entity. May change switch entity_id. Please check your automation and update the identity-id if you have previously assigned a name to your camera as it appends the name of the camera to the switch id. ([@rafale77] - [#14028]) ([switch.amcrest docs]) (breaking change) +- MQTT embedded broker will no longer rely on HTTP API password to automatically configure itself. You need to set own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Remove remote.API from core.Config. Might break custom components if they rely on hass.config.api ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) + +## {% linkable_title Beta Fixes %} + +- Upgrade pymysensors to 0.17.0 ([@MartinHjelmare] - [#15942]) ([mysensors docs]) (beta fix) +- Deprecate remote.api ([@balloob] - [#15955]) (beta fix) +- Added error handling for sense API timeouts ([@kbickar] - [#15789]) ([sensor.sense docs]) (beta fix) +- Add context to login flow ([@awarecan] - [#15914]) ([auth docs]) (beta fix) +- MQTT embedded broker has to set its own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) +- remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) +- Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) +- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) +- Pin crypto ([@balloob] - [#15978]) (beta fix) +- Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) +- Fix 0.76 beta2 hassio token issue ([@awarecan] - [#15987]) ([hassio docs]) (beta fix) +- Fix mysensors connection task blocking setup ([@MartinHjelmare] - [#15938]) ([mysensors docs]) (beta fix) +- Fix Nest async from sync ([@balloob] - [#15997]) ([nest docs]) (beta fix) ## {% linkable_title All changes %} - Add kodi unique id based on discovery ([@rytilahti] - [#15093]) ([media_player.kodi docs]) - Better handling of Yi camera being disconnected ([@bachya] - [#15754]) ([camera.yi docs]) -- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) (new-platform) +- Decouple login flow view and data entry flow view ([@awarecan] - [#15715]) ([auth docs]) - Fixed NDMS for latest firmware ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) - Add disallow_untyped_calls to mypy check. ([@andrey-git] - [#15661]) ([persistent_notification docs]) - Update pyozw to 0.4.9 ([@turbokongen] - [#15758]) ([zwave docs]) @@ -76,7 +96,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) - Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) - This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) -- Fix docstrings ([@fabaff] - [#15770]) ([onboarding docs]) +- Fix docstrings ([@fabaff] - [#15770]) - Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) - Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) - Expose internal states and fixed on/off state of Dyson Fans ([@soraxas] - [#15716]) ([fan.dyson docs]) @@ -88,13 +108,13 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add support for OpenUV binary sensors and sensors ([@bachya] - [#15769]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) (new-platform) - Update pymediaroom to 0.6.4 ([@dgomes] - [#15786]) ([media_player.mediaroom docs]) - Add Enphase Envoy component ([@jesserizzo] - [#15081]) ([sensor.enphase_envoy docs]) (new-platform) -- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) ([vacuum.demo docs]) +- Vacuum component: start_pause to individual start and pause commands. ([@cnrd] - [#15751]) ([vacuum docs]) - Make sure use_x_forward_for and trusted_proxies must config together ([@awarecan] - [#15804]) ([http docs]) (breaking change) - Upgrade voluptuous-serialize to 2.0.0 ([@awarecan] - [#15763]) ([config docs]) - Upgrade pylint to 2.1.0 ([@scop] - [#15811]) ([binary_sensor.bayesian docs]) ([binary_sensor.threshold docs]) ([calendar.todoist docs]) ([light.group docs]) ([sensor.min_max docs]) ([sensor.statistics docs]) - Upgrade pytest to 3.7.1 and pytest-timeout to 1.3.1 ([@scop] - [#15809]) - Add support for 2 Tahoma IO awning covers ([@fucm] - [#15660]) ([tahoma docs]) ([cover.tahoma docs]) -- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([fan.velbus docs]) ([light.velbus docs]) ([switch.velbus docs]) (breaking change) +- Velbus auto-discovery ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) - Upgrade youtube_dl to 2018.08.04 ([@fabaff] - [#15837]) ([media_extractor docs]) - Add media_player.dlna_dmr component ([@StevenLooman] - [#14749]) ([media_player.dlna_dmr docs]) (new-platform) - Remove 'volume' from return dict ([@mattwing] - [#15842]) ([sensor.alpha_vantage docs]) @@ -126,6 +146,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add realtime true/false switch for Waze ([@mountainsandcode] - [#15228]) ([sensor.waze_travel_time docs]) - Add PJLink media player platform ([@benoitlouy] - [#15083]) ([media_player.pjlink docs]) (new-platform) - Some typing related fixes ([@scop] - [#15899]) +- Update August component to use py-august:0.6.0 ([@snjoetw] - [#15916]) ([august docs]) - Misc cleanups ([@scop] - [#15907]) ([device_tracker docs]) ([sensor.irish_rail_transport docs]) - Update radiotherm to 1.4.1 ([@craftyguy] - [#15910]) ([climate.radiotherm docs]) - Fix bug in translations upload script ([@armills] - [#15922]) @@ -134,6 +155,21 @@ Experiencing issues introduced by this release? Please report them in our [issue - deCONZ - Add support for sirens ([@Kane610] - [#15896]) ([deconz docs]) ([switch.deconz docs]) - Add RMV public transport sensor ([@cgtobi] - [#15814]) ([sensor.rmvtransport docs]) (new-platform) - :pencil2: Corrects typo in code comments ([@frenck] - [#15923]) ([binary_sensor.homematicip_cloud docs]) +- Upgrade pymysensors to 0.17.0 ([@MartinHjelmare] - [#15942]) ([mysensors docs]) (beta fix) +- Deprecate remote.api ([@balloob] - [#15955]) (beta fix) +- Added error handling for sense API timeouts ([@kbickar] - [#15789]) ([sensor.sense docs]) (beta fix) +- Add context to login flow ([@awarecan] - [#15914]) ([auth docs]) (beta fix) +- MQTT embedded broker has to set its own password. ([@awarecan] - [#15929]) ([mqtt docs]) (breaking change) (beta fix) +- Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) +- remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) +- Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) +- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) +- Pin crypto ([@balloob] - [#15978]) (beta fix) +- Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) +- Fix 0.76 beta2 hassio token issue ([@awarecan] - [#15987]) ([hassio docs]) (beta fix) +- Fix mysensors connection task blocking setup ([@MartinHjelmare] - [#15938]) ([mysensors docs]) (beta fix) +- Fix Nest async from sync ([@balloob] - [#15997]) ([nest docs]) (beta fix) [#13742]: https://github.com/home-assistant/home-assistant/pull/13742 [#14028]: https://github.com/home-assistant/home-assistant/pull/14028 @@ -169,6 +205,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#15780]: https://github.com/home-assistant/home-assistant/pull/15780 [#15783]: https://github.com/home-assistant/home-assistant/pull/15783 [#15786]: https://github.com/home-assistant/home-assistant/pull/15786 +[#15789]: https://github.com/home-assistant/home-assistant/pull/15789 [#15800]: https://github.com/home-assistant/home-assistant/pull/15800 [#15803]: https://github.com/home-assistant/home-assistant/pull/15803 [#15804]: https://github.com/home-assistant/home-assistant/pull/15804 @@ -202,10 +239,27 @@ Experiencing issues introduced by this release? Please report them in our [issue [#15907]: https://github.com/home-assistant/home-assistant/pull/15907 [#15910]: https://github.com/home-assistant/home-assistant/pull/15910 [#15911]: https://github.com/home-assistant/home-assistant/pull/15911 +[#15914]: https://github.com/home-assistant/home-assistant/pull/15914 +[#15916]: https://github.com/home-assistant/home-assistant/pull/15916 [#15922]: https://github.com/home-assistant/home-assistant/pull/15922 [#15923]: https://github.com/home-assistant/home-assistant/pull/15923 +[#15929]: https://github.com/home-assistant/home-assistant/pull/15929 +[#15930]: https://github.com/home-assistant/home-assistant/pull/15930 +[#15936]: https://github.com/home-assistant/home-assistant/pull/15936 +[#15938]: https://github.com/home-assistant/home-assistant/pull/15938 +[#15942]: https://github.com/home-assistant/home-assistant/pull/15942 +[#15951]: https://github.com/home-assistant/home-assistant/pull/15951 +[#15955]: https://github.com/home-assistant/home-assistant/pull/15955 +[#15957]: https://github.com/home-assistant/home-assistant/pull/15957 +[#15972]: https://github.com/home-assistant/home-assistant/pull/15972 +[#15978]: https://github.com/home-assistant/home-assistant/pull/15978 +[#15983]: https://github.com/home-assistant/home-assistant/pull/15983 +[#15987]: https://github.com/home-assistant/home-assistant/pull/15987 +[#15997]: https://github.com/home-assistant/home-assistant/pull/15997 [@DubhAd]: https://github.com/DubhAd +[@GotoCode]: https://github.com/GotoCode [@Kane610]: https://github.com/Kane610 +[@MartinHjelmare]: https://github.com/MartinHjelmare [@MatMaul]: https://github.com/MatMaul [@PrimusNZ]: https://github.com/PrimusNZ [@StevenLooman]: https://github.com/StevenLooman @@ -228,6 +282,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@fucm]: https://github.com/fucm [@ioangogo]: https://github.com/ioangogo [@jesserizzo]: https://github.com/jesserizzo +[@kbickar]: https://github.com/kbickar [@mattwing]: https://github.com/mattwing [@mountainsandcode]: https://github.com/mountainsandcode [@mxworm]: https://github.com/mxworm @@ -239,9 +294,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [@rytilahti]: https://github.com/rytilahti [@salbertson]: https://github.com/salbertson [@scop]: https://github.com/scop +[@snjoetw]: https://github.com/snjoetw [@soraxas]: https://github.com/soraxas [@thomasdelaet]: https://github.com/thomasdelaet [@turbokongen]: https://github.com/turbokongen +[@vrih]: https://github.com/vrih +[august docs]: /components/august/ [auth docs]: /components/auth/ [binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ [binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ @@ -259,6 +317,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [device_tracker docs]: /components/device_tracker/ [fan.dyson docs]: /components/fan.dyson/ [fan.velbus docs]: /components/fan.velbus/ +[hassio docs]: /components/hassio/ [http docs]: /components/http/ [image_processing.facebox docs]: /components/image_processing.facebox/ [light.deconz docs]: /components/light.deconz/ @@ -269,6 +328,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.kodi docs]: /components/media_player.kodi/ [media_player.mediaroom docs]: /components/media_player.mediaroom/ [media_player.pjlink docs]: /components/media_player.pjlink/ +[mqtt docs]: /components/mqtt/ +[mysensors docs]: /components/mysensors/ +[nest docs]: /components/nest/ [notify docs]: /components/notify/ [onboarding docs]: /components/onboarding/ [openuv docs]: /components/openuv/ @@ -281,11 +343,13 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.opensky docs]: /components/sensor.opensky/ [sensor.openuv docs]: /components/sensor.openuv/ [sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.sense docs]: /components/sensor.sense/ [sensor.shodan docs]: /components/sensor.shodan/ [sensor.snmp docs]: /components/sensor.snmp/ [sensor.sonarr docs]: /components/sensor.sonarr/ [sensor.statistics docs]: /components/sensor.statistics/ [sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ +[sensor.worxlandroid docs]: /components/sensor.worxlandroid/ [switch.amcrest docs]: /components/switch.amcrest/ [switch.deconz docs]: /components/switch.deconz/ [switch.snmp docs]: /components/switch.snmp/ @@ -296,4 +360,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ [velbus docs]: /components/velbus/ [weather.openweathermap docs]: /components/weather.openweathermap/ +[websocket_api docs]: /components/websocket_api/ [zwave docs]: /components/zwave/ From 2d463f391c424481af1adb738288e015471c36e8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Aug 2018 15:49:59 +0200 Subject: [PATCH 24/39] Add components pic --- source/images/blog/2018-08-0.76/components.png | Bin 0 -> 41345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/blog/2018-08-0.76/components.png diff --git a/source/images/blog/2018-08-0.76/components.png b/source/images/blog/2018-08-0.76/components.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cbdd138aed40a751e8b3d6e96e11d82a1371a8 GIT binary patch literal 41345 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 F{0C-siCq8y literal 0 HcmV?d00001 From 2faedd3a88afa7c4b2d29c7aafafe47997d7f00b Mon Sep 17 00:00:00 2001 From: dbrowndan Date: Thu, 16 Aug 2018 11:18:05 -0700 Subject: [PATCH 25/39] Use italics for emphasis Per https://github.com/home-assistant/home-assistant.io/pull/5980#discussion_r210516058 --- source/_components/climate.ecobee.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.ecobee.markdown b/source/_components/climate.ecobee.markdown index 56bdc5e5540..99ff2b9b892 100644 --- a/source/_components/climate.ecobee.markdown +++ b/source/_components/climate.ecobee.markdown @@ -247,7 +247,7 @@ canceled. | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `hold_mode` | no | `temp`, `home`, `away`, `sleep`, `None`, `smart1`, `smart2`, etc. -NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are `smart1`, `smart2`, `smart3`, etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app MAY NOT MATCH the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct 'smartX' hold_mode IDs. +NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are `smart1`, `smart2`, `smart3`, etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app *may not match* the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct `smartX` hold_mode IDs. ### {% linkable_title Service `set_temperature` %} From 960cccbd5c62720a3f645a30cc4508133ba257e4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 17 Aug 2018 08:33:18 +0200 Subject: [PATCH 26/39] Lovelace: Update description about frontend latest (#6027) * Lovelace: Update description about frontend latest * Minor changes --- source/lovelace/index.markdown | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index fb9e57e95b8..0588126e2df 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -130,18 +130,23 @@ This is the very very early version aimed at gathering feedback. Discussion and ## {% linkable_title FAQ %} -### I am running Firefox but, custom cards like gauge-card look bad or don't load at all. How do I fix this? +### {% linkable_title I am running Firefox but, custom cards like gauge-card look bad or don't load at all. How do I fix this? %} This is probably because your version of Firefox doesn't have custom components supported or enabled. Please set to `true` in your `about:config` the following settings: `dom.webcomponents.customelements.enabled` and `dom.webcomponents.shadowdom.enabled` -### Custom components don't load on my IOS device? +### {% linkable_title Custom cards don't load on my iOS device? %} -This is because for IOS devices by default javascript served is `es5`. You can allow custom components to load by forcing `javascript_version: latest` in your `configuration.yaml` under `frontend:`. +Home Assistant comes with two versions of the frontend. A compatability mode for older devices and a modern mode. The custom cards need to target one mode and usually choose the modern mode. Before Home Assistant 0.76, we had an issue in the automation and script editor that prevented modern iOS and Mac devices running Safari from using the modern mode. -> Note: Enabling `latest` on IOS could cause automation and script editor to crash. +If you can, resolve this issue by upgrading to Home Assistant 0.76 or later. If you are on an older version and don't mind that the automation and script editor don't work on iOS devices, you can force the new version via the configuration: -### I would like to add an image to my card, but I do not know where to put them. +```yaml +frontend: + javascript_version: latest +``` + +### {% linkable_title I would like to add an image to my card, but I do not know where to put them. %} Given examples refer to `/local/example_image.jpg`. That means you should have `www` directory next to your HA `configuration.yaml`. An image kept in `HA_configuration_dir/www/example_image.jpg` will be shown after refreshing Lovelace page. -> Note: Remember to restart Home Assistant right after creating `www` directory. Otherwise, HA will not know that you created this directory. +Restart Home Assistant after creating the `www` directory. Otherwise, HA will not know that you created this directory. From 432b4f19dd3e263a941a123b057bb96834382962 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 17 Aug 2018 10:37:08 +0100 Subject: [PATCH 27/39] Added details (#6029) Added some words to guide people on whether they're likely to have ResinOS or HassOS, and how to tell. --- source/_addons/bluetooth_bcm43xx.markdown | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/_addons/bluetooth_bcm43xx.markdown b/source/_addons/bluetooth_bcm43xx.markdown index 65ae6eec053..cc2327e2c26 100644 --- a/source/_addons/bluetooth_bcm43xx.markdown +++ b/source/_addons/bluetooth_bcm43xx.markdown @@ -9,13 +9,14 @@ sharing: true footer: true --- -Start this add-on to activate the BCM43xx Bluetooth chipset. +Start this add-on to activate the BCM43xx Bluetooth chipset in the old ResinOS based builds. If you first installed Hass.io after mid July 2018 then you will have a HassOS based system. + +You can identify the base of your system by looking in the System tab of the Hass.io menu.

- This is not required on HassOS based Hass.io installs and should not be installed. + This is not required on the new HassOS based Hass.io installs and should not be installed.

Supported platforms: - Raspberry Pi 3 - From b4b79072edc4603b5ace5d191a6d5ff62cc5d449 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 17 Aug 2018 17:36:23 +0200 Subject: [PATCH 28/39] Finish blog post --- source/_posts/2018-08-17-release-76.markdown | 24 ++++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 8d2fd33d224..ed224b333f1 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "0.76: TBD - UPDATE DATE" -description: "TBD" -date: 2018-08-11 00:01:00 +title: "0.76: Auth almost done, FleetGo, PJLink, RMV public transport" +description: "The boys and girls in our virtual HQ have been working hard on creating yet another great release." +date: 2018-08-17 00:01:00 date_formatted: "August 17, 2018" author: Paulus Schoutsen author_twitter: balloob @@ -11,22 +11,26 @@ categories: Release-Notes og_image: /images/blog/2018-08-0.76/components.png --- +

+This release has a migration, initial startup can take ~20 minutes (depends on size DB) +

+ +This release includes a database migration to allow us to store context in the database. This will make it possible in the future to introduce attribution. For example, we'll be able to say which user opened the garage door or which automation triggered the party mode at 3am. + -The auth system is entering release candidate status 🎉. It will be enabled by default starting the next release (0.76) but you can already easily enable it now: +The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatability modus turned on. If you want to get ahead of the pack, you can already easily enable it now: ```yaml homeassistant: # add this part auth_providers: - type: homeassistant - # uncomment this to enable API password + # uncomment this to enable backwards compatible API password support # - type: legacy_api_password ``` -### This release has a migration, initial startup can take ~20 minutes (depends on size DB) - -Please report your migration time in the #beta channel on discord. +For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatability mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. ## {% linkable_title New Platforms %} @@ -75,7 +79,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) - remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) - Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) -- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Allow picking intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) - Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) - Pin crypto ([@balloob] - [#15978]) (beta fix) - Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) @@ -163,7 +167,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix issue when reading worxlandroid pin code ([@GotoCode] - [#15930]) ([sensor.worxlandroid docs]) (beta fix) - remove-phantomjs-from-docker ([@vrih] - [#15936]) (beta fix) - Remove remote.API from core.Config ([@awarecan] - [#15951]) ([http docs]) (breaking change) (beta fix) -- Switch to intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) +- Allow picking intermediate Mozilla cert profile ([@balloob] - [#15957]) ([http docs]) (beta fix) - Use JWT for access tokens ([@balloob] - [#15972]) ([auth docs]) ([http docs]) ([websocket_api docs]) (beta fix) - Pin crypto ([@balloob] - [#15978]) (beta fix) - Teak mqtt error message for 0.76 release ([@awarecan] - [#15983]) ([mqtt docs]) (beta fix) From 70608743222998900066a64d622a0ce9f397c857 Mon Sep 17 00:00:00 2001 From: Jorim Tielemans Date: Fri, 17 Aug 2018 10:08:00 +0200 Subject: [PATCH 29/39] Fix DLNA entry (#6028) Correct variable is dlna_dmr --- source/_components/discovery.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index f923c0ddb3f..1edebdc702b 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -11,7 +11,6 @@ logo: home-assistant.png ha_category: Other --- - Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [uPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` component can detect: * [Apple TV](/components/apple_tv/) @@ -44,7 +43,8 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [Yeelight Sunflower bulb](/components/light.yeelightsunflower/) * [Xiaomi Gateway (Aqara)](/components/xiaomi_aqara/) -It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user. +It will be able to add Google Chromecasts and Belkin WeMo switches automatically, +for Philips Hue it will require some configuration from the user. To load this component, add the following lines to your `configuration.yaml`: @@ -64,11 +64,11 @@ discovery: ignore: description: A list of platforms that never will be automatically configured by `discovery`. required: false - type: string + type: list enable: description: A list of platforms not enabled by default that `discovery` should discover. required: false - type: string + type: list {% endconfiguration %} Valid values for ignore are: @@ -80,7 +80,6 @@ Valid values for ignore are: * `bose_soundtouch`: Bose Soundtouch speakers * `denonavr`: Denon network receivers * `directv`: DirecTV receivers - * `dlna`: DLNA DMR enabled devices * `frontier_silicon`: Frontier Silicon internet radios * `google_cast`: Google Cast * `harmony`: Logitech Harmony Hub @@ -105,6 +104,7 @@ Valid values for ignore are: Valid values for enable are: + * `dlna_dmr`: DLNA DMR enabled devices * `homekit`: HomeKit accessories ## {% linkable_title Troubleshooting %} From b8e78b92a3340b210e51ac207bb6850fc4942249 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Tue, 14 Aug 2018 23:10:48 -0700 Subject: [PATCH 30/39] Embedded MQTT password change backport to 0.76 (#6020) * Embedded MQTT password change backport to 0.76 * Fix formatting --- source/_docs/mqtt/broker.markdown | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index d95b8fa8c36..8368487a742 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -14,7 +14,7 @@ The MQTT component needs you to run an MQTT broker for Home Assistant to connect ### {% linkable_title Embedded broker %} -Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Assistant connects to it. Embedded broker default configuration: +Home Assistant contains an embedded MQTT broker called [HBMQTT](https://pypi.python.org/pypi/hbmqtt). If you don't have an MQTT broker, you can configure this one to be used. If configured, Home Assistant will automatically connect to it. | Setting | Value | | -------------- | ----- | @@ -22,15 +22,20 @@ Home Assistant contains an embedded MQTT broker. If no broker configuration is g | Port | 1883 | | Protocol | 3.1.1 | | User | homeassistant | -| Password | Your API [password](/components/http/) | +| Password | _password set under mqtt settings_ | | Websocket port | 8080 | - ```yaml # Example configuration.yaml entry mqtt: + broker: + password: hello ``` +

+Before release 0.76, the embedded broker would use your API password as a password to the MQTT user. This is no longer the case. +

+

There is [an issue](https://github.com/beerfactory/hbmqtt/issues/62) with the HBMQTT broker and the WebSocket connection that is causing a memory leak. If you experience this issue, consider using another broker like Mosquitto.

From 3c4c9d98b28c74ae83af2bc7f8d2113aa110732f Mon Sep 17 00:00:00 2001 From: CTLS Date: Sat, 18 Aug 2018 16:30:51 -0500 Subject: [PATCH 31/39] Update openuv.markdown (#6043) Incorrect monitored condition listed for ozone level --- source/_components/openuv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/openuv.markdown b/source/_components/openuv.markdown index e157ee396dc..afc3faf9a56 100644 --- a/source/_components/openuv.markdown +++ b/source/_components/openuv.markdown @@ -80,7 +80,7 @@ sensors: description: the conditions to create sensors from required: false type: list - default: all ( `current_ozone_index`, `current_uv_index`, `max_uv_index`, `safe_exposure_time_type_1`, `safe_exposure_time_type_2`, `safe_exposure_time_type_3`, `safe_exposure_time_type_4`, `safe_exposure_time_type_5`, `safe_exposure_time_type_6` ) + default: all ( `current_ozone_level`, `current_uv_index`, `max_uv_index`, `safe_exposure_time_type_1`, `safe_exposure_time_type_2`, `safe_exposure_time_type_3`, `safe_exposure_time_type_4`, `safe_exposure_time_type_5`, `safe_exposure_time_type_6` ) {% endconfiguration %} ## {% linkable_title Binary Sensor Types %} From 917b547f9ae407ae3e6a02c2cdb652002f02bde2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 19 Aug 2018 07:18:11 +0200 Subject: [PATCH 32/39] Update broker.markdown --- source/_docs/mqtt/broker.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 8368487a742..fdbb46d06a6 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -28,7 +28,6 @@ Home Assistant contains an embedded MQTT broker called [HBMQTT](https://pypi.pyt ```yaml # Example configuration.yaml entry mqtt: - broker: password: hello ``` From 9a1fff3ece2b90c2f336dbddb74cd9c9898b49ea Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 19 Aug 2018 14:06:08 +0200 Subject: [PATCH 33/39] Add warning about mqtt --- source/_posts/2018-08-17-release-76.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index ed224b333f1..61bdd0606bc 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -32,6 +32,13 @@ homeassistant: For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatability mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. +Warning. If you are using the internal MQTT broker, we've had to make a change how the password is set. In the past it would automatically start the broker with the user `homeassistant` and a password equal to the API password. This is no longer the case and you need to configure it yourself now: + +```yaml +mqtt: + password: mypass +``` + ## {% linkable_title New Platforms %} - deCONZ - support for power plugs ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) From 3d7c1a32cc74a2171d9eb94667792d253c5636d2 Mon Sep 17 00:00:00 2001 From: tomlut <10679300+tomlut@users.noreply.github.com> Date: Mon, 20 Aug 2018 03:23:47 +1000 Subject: [PATCH 34/39] Update sensor.mold_indicator.markdown (#6046) * Update sensor.mold_indicator.markdown Added optional 'name' configuration variable. I have confirmed this is supported but undocumented. * Update sensor.mold_indicator.markdown Removed optional 'name' configuration variable from the example. Changed the Configuration variables:-section to use the new {% configuration %} tags. * Update sensor.mold_indicator.markdown Changed calibration_factor variable type from int to float. --- .../sensor.mold_indicator.markdown | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.mold_indicator.markdown b/source/_components/sensor.mold_indicator.markdown index b14f077a19d..bc049af3e65 100644 --- a/source/_components/sensor.mold_indicator.markdown +++ b/source/_components/sensor.mold_indicator.markdown @@ -27,12 +27,28 @@ sensor: calibration_factor: 2.0 ``` -Configuration variables: - -- **indoor_temp_sensor** (*Required*): The entity ID of the indoor temperature sensor. -- **indoor_humidity_sensor** (*Required*): The entity ID of the indoor humidity sensor. -- **outdoor_temp_sensor** (*Required*): The entity ID of the outdoor temperature sensor. -- **calibration_factor** (*Required*): Needs to be calibrated to the critical point in the room. +{% configuration %} +name: + description: The name of the sensor. + required: false + type: string +indoor_temp_sensor: + description: The entity ID of the indoor temperature sensor. + required: true + type: string +indoor_humidity_sensor: + description: The entity ID of the indoor humidity sensor. + required: true + type: string +outdoor_temp_sensor: + description: The entity ID of the outdoor temperature sensor. + required: true + type: string +calibration_factor: + description: Needs to be calibrated to the critical point in the room. + required: true + type: float +{% endconfiguration %} In this case, the weather forecast temperature sensor is used for the outside temperature. From 3095ef25c3e476fdc07737d622028ba081c4a375 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 19 Aug 2018 18:26:48 +0100 Subject: [PATCH 35/39] Updated template condition (#6042) Updated the template condition to use `state_attr` instead of the more error prone long form. --- source/_docs/scripts/conditions.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 39398ca10f1..1cefa9c1161 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -163,7 +163,7 @@ The template condition will test if the [given template][template] renders a val ```yaml condition: condition: template - value_template: '{% raw %}{{ states.device_tracker.iphone.attributes.battery > 50 }}{% endraw %}' + value_template: "{% raw %}{{ state_attr('device_tracker.iphone', 'battery') > 50 }}{% endraw %}" ``` Within an automation, template conditions also have access to the `trigger` variable as [described here][automation-templating]. From 2212b576af47b94ced939fd580494f51aa325365 Mon Sep 17 00:00:00 2001 From: Ralph Hopman Date: Sun, 19 Aug 2018 19:27:24 +0200 Subject: [PATCH 36/39] Update http.markdown (#6039) --- source/_components/http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index f108795b7ac..775cdb4624f 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -69,7 +69,7 @@ trusted_proxies: required: false type: string, list use_x_forwarded_for: - description: "Enable parsing of the `X-Forwarded-For` header, passing on the client's correct IP address in proxied setups. You **must** also whitelist trusted proxies using the `trusted_proxies` setting below for this to work. Non-whitelisted requests with this header will be considered IP spoofing attacks, and the header will, therefore, be ignored." + description: "Enable parsing of the `X-Forwarded-For` header, passing on the client's correct IP address in proxied setups. You **must** also whitelist trusted proxies using the `trusted_proxies` setting above for this to work. Non-whitelisted requests with this header will be considered IP spoofing attacks, and the header will, therefore, be ignored." required: false type: boolean default: false From 37391991500c374d448840d1b9ee15f4138f1965 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 19 Aug 2018 20:08:18 +0200 Subject: [PATCH 37/39] 0.76.1" --- _config.yml | 6 +++--- source/_posts/2018-08-17-release-76.markdown | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 905f48a3a53..019e89f6b18 100644 --- a/_config.yml +++ b/_config.yml @@ -142,13 +142,13 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 76 -current_patch_version: 0 -date_released: 2018-08-17 +current_patch_version: 1 +date_released: 2018-08-19 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#" +patch_version_notes: "#release-0761---august-19" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index 61bdd0606bc..83edae20af5 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -53,6 +53,23 @@ mqtt: - Add and restore context in recorder ([@balloob] - [#15859]) (new-feature) +## {% linkable_title Release 0.76.1 - August 19 %} + +- No longer show "Store login" on each login when using API password ([@balloob]) +- Add forgiving add column ([@balloob] - [#16057]) +- Tuya fix login problem and add login platform param ([@huangyupeng] - [#16058]) ([tuya docs]) +- Add notify platforms to loaded components ([@balloob] - [#16063]) ([notify docs]) +- Column syntax fix + Add a file if migration in progress ([@balloob] - [#16061]) + +[#16057]: https://github.com/home-assistant/home-assistant/pull/16057 +[#16058]: https://github.com/home-assistant/home-assistant/pull/16058 +[#16061]: https://github.com/home-assistant/home-assistant/pull/16061 +[#16063]: https://github.com/home-assistant/home-assistant/pull/16063 +[@balloob]: https://github.com/balloob +[@huangyupeng]: https://github.com/huangyupeng +[notify docs]: /components/notify/ +[tuya docs]: /components/tuya/ + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. From e28c876b97665d1ce952582ed973f7e97b465aa2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 20 Aug 2018 12:09:50 +0200 Subject: [PATCH 38/39] Add warning about secrets --- source/_docs/ecosystem/backup/backup_github.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 278d3fc20cb..2840c5bd628 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -61,8 +61,13 @@ Here is an example that will include your `.gitignore` file, a `scenes` director !.gitignore secrets.yaml known_devices.yaml +.storage ``` +

+ You might read this guide too late and accidentally already have your secrets published. It is not enough to just remove them with a new commit. Git is a version control system and keeps history. You need to delete your repository and start a new one. Also change all passwords and revoke the API keys that were public. +

+ More information on the layout of the file can be found in the [.gitignore manual](https://git-scm.com/docs/gitignore). ### {% linkable_title Step 3: Preparing your Home Assistant directory for GitHub %} From 029271234b9a4cf15ab0376f8f42cb9f69dda43f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 20 Aug 2018 12:39:46 +0200 Subject: [PATCH 39/39] Update backup_github.markdown --- source/_docs/ecosystem/backup/backup_github.markdown | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 2840c5bd628..98f7b223bd2 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -42,26 +42,23 @@ $ sudo apt-get update $ sudo apt-get install git ``` -### {% linkable_title Step 2: Creating %} `.gitignore` +### {% linkable_title Step 2: Creating `.gitignore` %}

Before creating and pushing your Home Assistant configuration to GitHub, please make sure to follow the `secrets.yaml` best practice mentioned above and scrub your configuration for any passwords or sensitive information.

-Creating a `.gitignore` file in your repository will tell git which files NOT to push to the GitHub server. This should be used to prevent publishing sensitive files to the public. It should contain a list of filenames and pattern matches. This list should include at least your `secrets.yaml` file, device configuration files, and the Home Assistant database/directory structure. The `.gitignore` file should be placed in your Home Assistant directory. +Creating a `.gitignore` file in your repository will tell git which files NOT to push to the GitHub server. This should be used to prevent publishing sensitive files to the public. It should contain a list of filenames and pattern matches. This list should include at least your `secrets.yaml` file, device configuration files, and the Home Assistant database/directory structure. The `.gitignore` file should be placed in the root of your Home Assistant configuration directory: `