From b6c21e6da7fe12a3637d6f0155d4db50149eb5f6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Apr 2020 18:17:38 -0700 Subject: [PATCH 001/129] Release 108.4 --- _config.yml | 4 +- source/_posts/2020-04-08-release-108.markdown | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index c5f0d7c8236..b66ac55273d 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 108 -current_patch_version: 3 -date_released: 2020-04-10 +current_patch_version: 4 +date_released: 2020-04-13 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown index ce2274a4596..f8dd5387125 100644 --- a/source/_posts/2020-04-08-release-108.markdown +++ b/source/_posts/2020-04-08-release-108.markdown @@ -441,6 +441,50 @@ These integrations have been removed. The websites for both have changed, causin [powerwall docs]: /integrations/powerwall/ [zha docs]: /integrations/zha/ +## Release 0.108.4 - April 13 + +- Fix #33995 Use "now" if departure is None ([@eifinger] - [#34017]) ([here_travel_time docs]) +- Fix nexia fan and hold modes for XL824 thermostats ([@bdraco] - [#34042]) ([nexia docs]) +- Handle all zero serial numbers in NUT ([@bdraco] - [#34045]) ([nut docs]) +- UniFi - Fix unit of measurement from B to MB ([@Kane610] - [#34091]) ([unifi docs]) +- Fix Daikin sensor temperature_unit & cleanup ([@fredrike] - [#34116]) ([daikin docs]) +- Bump pyIntesisHome to 1.7.3 ([@jnimmo] - [#34125]) ([intesishome docs]) +- Fix deprecated icon/username logic in Slack ([@bachya] - [#34156]) ([slack docs]) +- Improve rounding the light level conversion in Lutron Caseta ([@swails] - [#34167]) ([lutron_caseta docs]) +- Fix z-wave brightness off by one ([@bdraco] - [#34170]) ([zwave docs]) +- Increase timeout and log the url of the elkm1 system that time… ([@bdraco] - [#34172]) ([elkm1 docs]) +- Convert sense to use DataUpdateCoordinator for trends data ([@bdraco] - [#34160]) ([sense docs]) + +[#34017]: https://github.com/home-assistant/core/pull/34017 +[#34042]: https://github.com/home-assistant/core/pull/34042 +[#34045]: https://github.com/home-assistant/core/pull/34045 +[#34091]: https://github.com/home-assistant/core/pull/34091 +[#34116]: https://github.com/home-assistant/core/pull/34116 +[#34125]: https://github.com/home-assistant/core/pull/34125 +[#34156]: https://github.com/home-assistant/core/pull/34156 +[#34160]: https://github.com/home-assistant/core/pull/34160 +[#34167]: https://github.com/home-assistant/core/pull/34167 +[#34170]: https://github.com/home-assistant/core/pull/34170 +[#34172]: https://github.com/home-assistant/core/pull/34172 +[@Kane610]: https://github.com/Kane610 +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@eifinger]: https://github.com/eifinger +[@fredrike]: https://github.com/fredrike +[@jnimmo]: https://github.com/jnimmo +[@swails]: https://github.com/swails +[daikin docs]: /integrations/daikin/ +[elkm1 docs]: /integrations/elkm1/ +[here_travel_time docs]: /integrations/here_travel_time/ +[intesishome docs]: /integrations/intesishome/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[nexia docs]: /integrations/nexia/ +[nut docs]: /integrations/nut/ +[sense docs]: /integrations/sense/ +[slack docs]: /integrations/slack/ +[unifi docs]: /integrations/unifi/ +[zwave docs]: /integrations/zwave/ + ## All changes
From bc753a0e8e785fcff47216b21fa5480498b43284 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 03:30:42 +0200 Subject: [PATCH 002/129] Remove logo reference for BT Home Hub (#12948) --- source/_integrations/bt_home_hub_5.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/bt_home_hub_5.markdown b/source/_integrations/bt_home_hub_5.markdown index 1fd7c477691..bd63cd48695 100644 --- a/source/_integrations/bt_home_hub_5.markdown +++ b/source/_integrations/bt_home_hub_5.markdown @@ -1,7 +1,6 @@ --- title: BT Home Hub 5 description: Instructions on how to integrate BT Home Hub 5 router into Home Assistant. -logo: bt.png ha_category: - Presence Detection ha_release: 0.22 From 36968e58bb5160c77ddc6a5d701b7d34f55e3761 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 03:34:17 +0200 Subject: [PATCH 003/129] Removed Tank Utility logo in favor of brands (#12945) --- source/_integrations/tank_utility.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 7a473175799..ea2f0cf9a84 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -1,7 +1,6 @@ --- title: Tank Utility description: How to integrate Tank Utility sensors within Home Assistant. -logo: tank_utility.png ha_category: - Energy ha_release: 0.53 From b4fab2ecb5041d8151960f91417d10d619981ad9 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 03:38:17 +0200 Subject: [PATCH 004/129] Remove logo reference from Eufy integration (#12943) --- source/_integrations/eufy.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/eufy.markdown b/source/_integrations/eufy.markdown index 24890e2b336..3daeae474e7 100644 --- a/source/_integrations/eufy.markdown +++ b/source/_integrations/eufy.markdown @@ -1,7 +1,6 @@ --- title: eufy description: Instructions on how to integrate Eufy devices into Home Assistant. -logo: eufy.png ha_category: - Hub - Light From 7a9c21bc4ebe190c513a767fd9f0b001fe7228c5 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 03:39:37 +0200 Subject: [PATCH 005/129] Removed The Energy Detective TED5000 logo in favor of brands (#12942) --- source/_integrations/ted5000.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ted5000.markdown b/source/_integrations/ted5000.markdown index 1736d429bd8..5f6ac7960a5 100644 --- a/source/_integrations/ted5000.markdown +++ b/source/_integrations/ted5000.markdown @@ -1,7 +1,6 @@ --- title: The Energy Detective TED5000 description: How to add a TED5000 to Home Assistant. -logo: ted.png ha_category: - Energy ha_release: '0.30' From 60950cf0f3a298d4182131b29afcc7cf18c33637 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 03:41:14 +0200 Subject: [PATCH 006/129] Remove logo reference for Essent int. (#12941) --- source/_integrations/essent.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown index dffcd83444c..ca36e80d517 100644 --- a/source/_integrations/essent.markdown +++ b/source/_integrations/essent.markdown @@ -1,7 +1,6 @@ --- title: Essent description: Instructions on how to integrate Essent within Home Assistant. -logo: essent.png ha_category: - Energy - Sensor From 4584b2612dbbde72c373f6082e2fc2fd4d11419d Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 03:45:00 +0200 Subject: [PATCH 007/129] Removed teksavvy logo in favor of brands (#12940) --- source/_integrations/teksavvy.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/teksavvy.markdown b/source/_integrations/teksavvy.markdown index cc1dc2b54a1..f5166d5456e 100644 --- a/source/_integrations/teksavvy.markdown +++ b/source/_integrations/teksavvy.markdown @@ -1,7 +1,6 @@ --- title: TekSavvy description: Instructions on how to integrate TekSavvy data usage within Home Assistant. -logo: teksavvy.png ha_category: - Network ha_release: 0.62 From 3f5555ba281849a554087adbd3c79c5631ee5b02 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 03:48:54 +0200 Subject: [PATCH 008/129] Remove logo reference for Emby (#12939) --- source/_integrations/emby.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/emby.markdown b/source/_integrations/emby.markdown index a8851a12bc8..73e952c172f 100644 --- a/source/_integrations/emby.markdown +++ b/source/_integrations/emby.markdown @@ -1,7 +1,6 @@ --- title: Emby description: Instructions on how to integrate Emby into Home Assistant. -logo: emby.png ha_category: - Media Player ha_release: 0.32 From f7310a9552e69fa8bf4fdaf9ed18180ec7ae99b3 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 04:18:27 +0200 Subject: [PATCH 009/129] Removed Thomson logo in favor of brands (#12937) --- source/_integrations/thomson.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/thomson.markdown b/source/_integrations/thomson.markdown index f35594df439..2b445ad7f38 100644 --- a/source/_integrations/thomson.markdown +++ b/source/_integrations/thomson.markdown @@ -1,7 +1,6 @@ --- title: Thomson description: Instructions on how to integrate Thomson routers into Home Assistant. -logo: technicolor.png ha_category: - Presence Detection ha_release: 0.7 From 601b3c58d5db72ddb47d2af6b8d9a641ff179814 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:20:44 +0200 Subject: [PATCH 010/129] Remove logo reference for Edimax (#12936) --- source/_integrations/edimax.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index 2df9521494a..25e584dadd2 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -1,7 +1,6 @@ --- title: Edimax description: Instructions on how to integrate Edimax switches into Home Assistant. -logo: edimax.png ha_category: - Switch ha_release: pre 0.7 From 91166248fb13c5769403c87f0acc0a1ca8c70820 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:23:02 +0200 Subject: [PATCH 011/129] Remove logo reference for Eddystone int. (#12935) --- source/_integrations/eddystone_temperature.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown index c84fb515b92..f3d6e9f32c1 100644 --- a/source/_integrations/eddystone_temperature.markdown +++ b/source/_integrations/eddystone_temperature.markdown @@ -1,7 +1,6 @@ --- title: Eddystone description: Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data. -logo: eddystone.png ha_category: - DIY ha_release: 0.42 From ebf7eb0d90257f7be686435c3efc07add35c7692 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 04:24:11 +0200 Subject: [PATCH 012/129] Removed Tibber logo in favor of brands (#12934) --- source/_integrations/tibber.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index 27d99b63bce..2676dec5f50 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -1,7 +1,6 @@ --- title: Tibber description: Instructions on how to integrate Tibber within Home Assistant. -logo: tibber.png ha_category: - Energy - Sensor From d456359eb72fddac3e4a1f5c97fc5c46d93b421c Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:25:37 +0200 Subject: [PATCH 013/129] Remove logo reference for Ebox (#12933) --- source/_integrations/ebox.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ebox.markdown b/source/_integrations/ebox.markdown index e4e352ef6e7..67783c14aa5 100644 --- a/source/_integrations/ebox.markdown +++ b/source/_integrations/ebox.markdown @@ -1,7 +1,6 @@ --- title: EBox description: Instructions on how to integrate EBox data usage within Home Assistant. -logo: ebox.png ha_category: - Network ha_release: 0.39 From e06a45cfefa0022b0135f389b012c2520872843b Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 04:26:47 +0200 Subject: [PATCH 014/129] Removed Tikteck logo in favor of brands (#12932) --- source/_integrations/tikteck.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/tikteck.markdown b/source/_integrations/tikteck.markdown index 90b5253671a..1816f156001 100644 --- a/source/_integrations/tikteck.markdown +++ b/source/_integrations/tikteck.markdown @@ -4,7 +4,6 @@ description: Instructions on how to setup Tikteck LED bulbs within Home Assistan ha_category: - Light ha_iot_class: Local Polling -logo: tikteck.png ha_release: 0.36 ha_domain: tikteck --- From 71131ab7a01dc8cb816340b487a5b604757bafc4 Mon Sep 17 00:00:00 2001 From: Thom Troy Date: Tue, 14 Apr 2020 03:31:32 +0100 Subject: [PATCH 015/129] remove reference to old ephember logo (#12931) --- source/_integrations/ephember.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index 409d5bca350..d81f3fe0ee0 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -1,7 +1,6 @@ --- title: EPH Controls description: Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant. -logo: ephcontrolsember.png ha_category: - Climate ha_release: 0.57 From 22e5766cf184cf4d6fab5a0e19d95f25794c7be4 Mon Sep 17 00:00:00 2001 From: Thom Troy Date: Tue, 14 Apr 2020 03:35:44 +0100 Subject: [PATCH 016/129] remove reference to irish rail logo (#12930) --- source/_integrations/irish_rail_transport.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/irish_rail_transport.markdown b/source/_integrations/irish_rail_transport.markdown index 1c3011e35ee..9d4c7799fb7 100644 --- a/source/_integrations/irish_rail_transport.markdown +++ b/source/_integrations/irish_rail_transport.markdown @@ -1,7 +1,6 @@ --- title: Irish Rail Transport description: Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant. -logo: irishrail.png ha_category: - Transport ha_iot_class: Cloud Polling From 912f724eb70bc80f6e42911fbe9fcc0ccecdff65 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:37:00 +0200 Subject: [PATCH 017/129] Remove logo reference for Dyson (#12927) --- source/_integrations/dyson.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/dyson.markdown b/source/_integrations/dyson.markdown index db79855dc25..2e4bfca5f72 100644 --- a/source/_integrations/dyson.markdown +++ b/source/_integrations/dyson.markdown @@ -1,7 +1,6 @@ --- title: Dyson description: Instructions on how to integrate Dyson into Home Assistant. -logo: dyson.png ha_category: - Hub - Climate From ae906588711fac407109ea473a494e72171bacc7 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:38:30 +0200 Subject: [PATCH 018/129] Remove logo ref. for Harman Kardon int. (#12926) --- source/_integrations/harman_kardon_avr.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/harman_kardon_avr.markdown b/source/_integrations/harman_kardon_avr.markdown index e91244d1eb6..c9c0350f52d 100644 --- a/source/_integrations/harman_kardon_avr.markdown +++ b/source/_integrations/harman_kardon_avr.markdown @@ -1,7 +1,6 @@ --- title: Harman Kardon AVR description: Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant. -logo: harman_kardon.png ha_category: - Media Player ha_iot_class: Local Polling From 369e3a6c5bf6c86ebb629b54b2b8fcf0229de7a8 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 04:39:55 +0200 Subject: [PATCH 019/129] Remove logo ref. for Hitron Coda int. (#12925) --- source/_integrations/hitron_coda.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 82176f5956c..48d1e5aac4a 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -1,7 +1,6 @@ --- title: Rogers Hitron CODA description: Instructions on how to integrate Hitron CODA Routers into Home Assistant. -logo: hitron.png ha_category: - Presence Detection ha_release: 0.58 From 05b076860696b95fd68df552f7cab9c3d4c75f55 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 06:45:25 +0200 Subject: [PATCH 020/129] Removed ThermoWorks Smoke logo in favor of brands (#12938) --- source/_integrations/thermoworks_smoke.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown index af147f0fe79..751b7bcfafc 100644 --- a/source/_integrations/thermoworks_smoke.markdown +++ b/source/_integrations/thermoworks_smoke.markdown @@ -1,7 +1,6 @@ --- title: ThermoWorks Smoke description: Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway. -logo: thermoworks.png ha_category: - Sensor ha_release: 0.81 From d0cd2a79ded840be42974a5f85c2c7e39cf7245e Mon Sep 17 00:00:00 2001 From: trentjw Date: Tue, 14 Apr 2020 00:43:21 -0600 Subject: [PATCH 021/129] Update tplink.markdown (#12951) --- source/_integrations/tplink.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index f661cea6cd7..e2e74dd6ad4 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -35,12 +35,12 @@ Plugs are type `switch` when autodiscovery has been disabled. - HS100 - HS103 - HS105 -- HS110 (This device is capable or reporting energy usage data to template sensors) +- HS110 (This device is capable of reporting energy usage data to template sensors) ### Strip (Multi-Plug) - HS107 (indoor 2-outlet) -- HS300 (powerstrip 6-outlet) (This device is capable or reporting energy usage data to template sensors) +- HS300 (powerstrip 6-outlet) (This device is capable of reporting energy usage data to template sensors) - KP303 (powerstrip 3-outlet) - KP400 (outdoor 2-outlet) - KP200 (indoor 2-outlet) From c2b63c204c2425a761a2840c52a3c80bdcda2e44 Mon Sep 17 00:00:00 2001 From: Dominik Bruhn Date: Tue, 14 Apr 2020 08:45:13 +0200 Subject: [PATCH 022/129] Fix typo in recorder docs (#12929) --- source/_integrations/recorder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 11e39f16ada..33e002f05e4 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -296,7 +296,7 @@ source /srv/homeassistant/bin/activate pip3 install pyodbc ``` -You will also need to install an ODBC Driver. Microsoft ODBC drivers are recommended, however FreeTDS is available for systems that are not supported by Microsoft. Instrucitons for installing the Microsoft ODBC drivers can be found [here](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server). +You will also need to install an ODBC Driver. Microsoft ODBC drivers are recommended, however FreeTDS is available for systems that are not supported by Microsoft. Instructions for installing the Microsoft ODBC drivers can be found [here](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server).
From f0cbe85bc6d2485837713a872ad2a7581eeb7d8b Mon Sep 17 00:00:00 2001 From: Pascal Roeleven Date: Tue, 14 Apr 2020 08:45:50 +0200 Subject: [PATCH 023/129] Make configuration h2 again (#12928) Reverts a part of e344753 to match with added tweaks. --- source/_integrations/orangepi_gpio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index b0e4fb930de..7d3ef24e9e4 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -17,7 +17,7 @@ This integration provides the following platforms: - Binary sensor: The `orangepi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your Orange Pi or NanoPi. -### Configuration +## Configuration To use your Orange Pi's GPIO in your installation, add the following to your `configuration.yaml` file: From 85a3d8dc4a050f69d071c9f4ba5e5db78b55e6b9 Mon Sep 17 00:00:00 2001 From: lewei50 Date: Tue, 14 Apr 2020 15:18:18 +0800 Subject: [PATCH 024/129] Remove iammeter logo (#12787) --- source/_integrations/iammeter.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/iammeter.markdown b/source/_integrations/iammeter.markdown index f2dd913ac29..1b915a5b2e0 100644 --- a/source/_integrations/iammeter.markdown +++ b/source/_integrations/iammeter.markdown @@ -1,7 +1,6 @@ --- title: IamMeter description: Instructions on how to integrate IAMMETER sensor within Home Assistant. -logo: iammeter-logo.png ha_category: - Energy - Sensor From d25734785009c7d83ada3d536539711f14884f92 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 09:49:20 +0200 Subject: [PATCH 025/129] Remove logo reference for BT Smart HUB int. (#12955) --- source/_integrations/bt_smarthub.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index 8290c088476..108de005ed0 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -1,7 +1,6 @@ --- title: BT Smart Hub description: Instructions on how to integrate BT Smart Hub router into Home Assistant. -logo: bt.png ha_category: - Presence Detection ha_release: 0.82 From 96e3ad798e490568f394e51e363803131d5b69e5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 14 Apr 2020 10:07:21 +0200 Subject: [PATCH 026/129] Update links and structure (#12957) * Update links and structure * Update source/_integrations/tomato.markdown Co-authored-by: Franck Nijhof --- source/_integrations/tomato.markdown | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/source/_integrations/tomato.markdown b/source/_integrations/tomato.markdown index 9cbaabdc816..4927bfa9a60 100644 --- a/source/_integrations/tomato.markdown +++ b/source/_integrations/tomato.markdown @@ -7,13 +7,22 @@ ha_release: pre 0.7 ha_domain: tomato --- -The `tomato` platform requires an extra configuration variable called `http_id`. The -value can be obtained by logging in to the Tomato admin interface and search for -`http_id` in the page source code. +The `tomato` device tracker integration allows one to tracker devices which are +connected to a wireless router that is running [Tomato](https://tomato.groov.pl/) +as firmware. -Because of a limitation in Tomato's API, this platform will only track wireless devices. -If tracking wired devices like a Philips Hue Hub is necessary, -it is possible to use another platform like [Nmap](/integrations/nmap_tracker). +Because of a limitation in Tomato's API, this integration will only track wireless devices. + +It could be that the integration is also working with [AdvancedTomato](https://advancedtomato.com/) +but this was never tested. + +## Setup + +The integration requires an extra configuration variable called `http_id`. The +value can be obtained by logging in to the Tomato admin interface and search for +`http_id` in the page's source code. + +## Configuration To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -57,7 +66,7 @@ password: required: true type: string http_id: - description: "The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code." + description: "The value of `http_id`." required: true type: string {% endconfiguration %} @@ -65,14 +74,11 @@ http_id: See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. -A description of the API s available in this -[Tomato API](https://paulusschoutsen.nl/blog/2013/10/tomato-api-documentation/) -blog post. - -SSL Certificate: +## SSL Certificate Gathering the SSL Certificate of your router can be accomplished with this (or a similar) command: + ```bash openssl s_client -showcerts -connect 172.10.10.1:443 /dev/null | openssl x509 -outform PEM > router_cert.pem ``` From 58c30b894f90b05ef23a7c1475e6c60372ffca2e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 14 Apr 2020 10:23:13 +0200 Subject: [PATCH 027/129] Adjust installation steps, removing SSH add-on (#12924) * Adjust installation steps, removing SSH add-on * Remove installation step * Update source/hassio/installation.markdown Co-Authored-By: Fabian Affolter Co-authored-by: Fabian Affolter --- source/hassio/installation.markdown | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 0033be38ec5..c232574016b 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -51,8 +51,6 @@ The following will take you through the steps required to install Home Assistant 6. You will be able to reach your installation at `http://homeassistant.local:8123` (if your router supports mDNS, otherwise see below). -7. It is important to provide yourself proper access, including the Home Assistant CLI tools. Both the [Samba add-on][samba] and the [SSH add-on][ssh] should be the first add-ons you should install, before making changes to the configuration in the `/config/` folder. From the UI choose **Supervisor**, which is located in the sidebar and then the add-on store. -
We used `hassio.local` in the past, if you have a system that is installed before this naming change, you might need to use `hassio.local` instead of `homeassistant.local`. @@ -85,7 +83,12 @@ Best practice for updating a Home Assistant installation: ## Run a specific version on Home Assistant -SSH to your Home Assistant system, or connect to the console, and run: +For this you would need to install the [Terminal & SSH add-on][ssh] or use the console +that is available on your device by connecting a keyboard and screen. + +To install the Terminal & SSH add-on, choose **Supervisor**, which is located in the sidebar and then the add-on store. + +Use the web-based terminal or SSH to your Home Assistant system, or connect to the console, and run: ```bash ha core update --version=0.XX.X From faa6ea157e55e4985f05b29d3f7c107f7e526e71 Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Tue, 14 Apr 2020 10:39:24 +0200 Subject: [PATCH 028/129] Removed tapsaff logo in favor of brands (#12944) --- source/_integrations/tapsaff.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/tapsaff.markdown b/source/_integrations/tapsaff.markdown index 3c9eb0d7323..455d1daf046 100644 --- a/source/_integrations/tapsaff.markdown +++ b/source/_integrations/tapsaff.markdown @@ -1,7 +1,6 @@ --- title: Taps Aff description: Instructions on how to use the Taps Aff binary sensor in Home Assistant. -logo: tapsaff.png ha_category: - Weather ha_release: 0.47 From 1c50c50240122ec706cdeb52ce02b0acecd04098 Mon Sep 17 00:00:00 2001 From: akasma74 Date: Tue, 14 Apr 2020 09:46:09 +0100 Subject: [PATCH 029/129] add info about managing dashboards (#12946) based on this topic - https://community.home-assistant.io/t/how-to-add-additional-overviews/186244 --- source/lovelace/dashboards-and-views.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/lovelace/dashboards-and-views.markdown b/source/lovelace/dashboards-and-views.markdown index f56b25a3063..11fc1a498a4 100644 --- a/source/lovelace/dashboards-and-views.markdown +++ b/source/lovelace/dashboards-and-views.markdown @@ -6,6 +6,7 @@ description: "The Lovelace UI is a powerful and configurable interface for Home ### Dashboards You can define multiple dashboards that all have their own YAML file, and add custom resources that are shared by all dashboards. +To create new or manage existing (with `mode: storage` only) dashboards, click on `Configuration` in the sidebar and then on `Lovelace Dashboards`. The key of the dashboard is used as the URL, this needs to contain a hyphen (`-`). From 39b17c436fc530447af317e1be3b48a9184e39cd Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 11:37:48 +0200 Subject: [PATCH 030/129] Remove logo reference for Magicseaweed int. (#12958) --- source/_integrations/magicseaweed.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/magicseaweed.markdown b/source/_integrations/magicseaweed.markdown index a1827e9ace7..f9aae1a2f69 100644 --- a/source/_integrations/magicseaweed.markdown +++ b/source/_integrations/magicseaweed.markdown @@ -1,7 +1,6 @@ --- title: Magicseaweed description: How to integrate Magicseaweed within Home Assistant. -logo: magicseaweed.png ha_category: - Sensor ha_release: 0.75 From 6ff8a626bee300df500c28d5a166ea81362e3eb1 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 12:12:33 +0200 Subject: [PATCH 031/129] Remove logo reference for Lutron Homeworks (#12959) --- source/_integrations/homeworks.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index e1ef17d076c..1625b05b5e5 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -1,7 +1,6 @@ --- title: Lutron Homeworks description: How to use Lutron Homeworks Series 4 & 8 with Home Assistant. -logo: lutron.png ha_category: - Hub - Light From 8e9a4d2bcd4ff079b75b4a1ff14dc4919fa8caaf Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 12:27:59 +0200 Subject: [PATCH 032/129] Remove logo reference for Lutron Caseta (#12960) --- source/_integrations/lutron_caseta.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 752469d9a08..469a62e82fe 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -1,7 +1,6 @@ --- title: Lutron Caseta description: Instructions on how to use Lutron Caseta devices with Home Assistant. -logo: lutron.png ha_category: - Hub - Cover From 2c3ed264b35bdd461810a4cde34fa0b096afb021 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 16:57:11 +0200 Subject: [PATCH 033/129] Remove logo reference for myChevy int (#12964) --- source/_integrations/mychevy.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/mychevy.markdown b/source/_integrations/mychevy.markdown index d7759022563..8d3517c8c57 100644 --- a/source/_integrations/mychevy.markdown +++ b/source/_integrations/mychevy.markdown @@ -1,7 +1,6 @@ --- title: myChevrolet description: Instructions on how to integrate Chevy Bolt car into Home Assistant. -logo: chevy.png ha_category: - Car ha_release: 0.62 From 89a683155b48ee84eea80ca9747d284c2e762931 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Tue, 14 Apr 2020 16:59:50 +0200 Subject: [PATCH 034/129] Remove logo reference for Melissa int. (#12963) --- source/_integrations/melissa.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/melissa.markdown b/source/_integrations/melissa.markdown index 40e25593c06..92ee8ab56f3 100644 --- a/source/_integrations/melissa.markdown +++ b/source/_integrations/melissa.markdown @@ -1,7 +1,6 @@ --- title: Melissa description: Instructions on how to integrate Melissa Climate into Home Assistant. -logo: mclimate.png ha_category: - Hub - Climate From 961d95daf687840023d363c1f918cdd18e7da176 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 14 Apr 2020 23:40:42 +0200 Subject: [PATCH 035/129] Blog: The future of YAML (#12974) * Blog: The future of YAML * Add link to ADR-0010 --- .../2020-04-14-the-future-of-yaml.markdown | 234 ++++++++++++++++++ .../2020-04-14-the-future-of-yaml/sharing.png | Bin 0 -> 12531 bytes .../2020-04-14-the-future-of-yaml/social.png | Bin 0 -> 72348 bytes 3 files changed, 234 insertions(+) create mode 100644 source/_posts/2020-04-14-the-future-of-yaml.markdown create mode 100644 source/images/blog/2020-04-14-the-future-of-yaml/sharing.png create mode 100644 source/images/blog/2020-04-14-the-future-of-yaml/social.png diff --git a/source/_posts/2020-04-14-the-future-of-yaml.markdown b/source/_posts/2020-04-14-the-future-of-yaml.markdown new file mode 100644 index 00000000000..72e1595dd66 --- /dev/null +++ b/source/_posts/2020-04-14-the-future-of-yaml.markdown @@ -0,0 +1,234 @@ +--- +title: The future of YAML +description: "A blog post answering the 'Is YAML going away?' question." +date: 2020-04-14 00:00:00 +date_formatted: "April 14, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Announcements +og_image: /images/blog/2020-04-14-the-future-of-yaml/social.png +--- + +Recently, comments and questions in the community have been posted, about the +announcement of integrations becoming available via the frontend and the removal +of YAML support from some of them. + +This raises questions and opinions that need addressing. It mainly comes down to +this single question: + +> _“Is YAML going away?”_ + +The answer to this question is: _“**No!**, but…”_ + +Realizing you may not like that loose answer and, in that case, you are possibly +looking for a hard and simple “NO” answer to this question. However, things are +a bit more complicated. + +This blog post aims to bring more clarity to this question, so everybody knows +why things are the way they are right now and what to expect for the future of +configuring Home Assistant. + +## Enabling configuration via the UI + +Before talking about YAML, let’s explain the reasoning behind all the UI +features introduced. + +The Home Assistant project has grown at a ludicrous rate in the last few years. +Being one of the few solutions to provide a local home automation platform, +that puts privacy first, has gathered interest from all kinds of people on this +planet. + +In the beginning, Home Assistant was a small project; aimed at developers and +the tech-savvy. With the growth of privacy concerns, but also the growth in the +availability of IoT devices in our homes in general, the project gained +traction; attracting lots of new community members that are not always the +tech-savvy types. + +This is great, but that also means we need to adjust, to make it usable for +everybody. We want everybody to enjoy what we all have been enjoying already. +No matter your level of experience. + +Considering that, enabling and empowering people with managing their +Home Assistant instance via the user interface is needed. Not just for the +lesser tech-savvy, since it also brings convenience, that even many technically +capable users enjoy and prefer. + +Goal: _**Making things easier.**_ + +The goal of making it easier is currently the main focus. + +## Breaking changes + +We all dislike them, those breaking changes when a new release is published. +We all scan the release notes hoping you are not affected by any of them in +that release. + +There is a big upside on using configuration via the UI: Home Assistant manages +that configuration part for you and handles the upgrades and migrations. +Virtually removing the chances of hitting a breaking change, +we all hate just as much. + +## Shareability & Security + +This is a screenshot of one of the slides, +[showed during the State of the Union 2019][yt]: + +

+Presentation slide showed during the State of the Union 2019 + Presentation slide showed during the State of the Union 2019. +

+ +We all like to share our experiences, and thus parts of our configurations. +GitHub is [full of repositories][gh] that shares people’s homes. + +This is great! Sharing ideas, providing inspiration for all of us! + +There is a great downside to this, which is privacy and security. There are a +lot of things we don’t want to share. For example, our passwords, +sensitive (personal) information or (historical) data. + +A bit more technical, but integrations using OAuth2 as the authentication method +to integrate with, for example, a service like Somfy don’t need to store the +username/password at all. + +## Both YAML & UI + +Home Assistant is moving towards a better separation of YAML configuration +versus configuration done in the UI. This is already partly showing in things +like zones, Lovelace and the recently introduced “Helpers” +(also known as the `input_*` integrations in YAML). + +Zones can be configured via the UI and via YAML (even at the same time!). +Both configuration sources will be loaded by Home Assistant when considering +the configured zones and both can be changed on the fly without restarting +Home Assistant. + +For the future, Home Assistant will be moving towards that concept more +and more. This allows anybody to use the method they prefer. + +In these cases, YAML support has been extended and improved by adding features +like reloading and by removing parts that mess with your YAML files. + +## We are still an open-source project + +Home Assistant is an open-source project and relies on contributors adding +those amazing integrations, maintaining them and extending their functionality +to make them even more capable. + +Those contributors do this in their free spare time, for which we all are +eternally grateful. It is their work that enables Home Assistant to do what it +can right now. It is what automates your home. + +So what about integrations that remove YAML support? + +Some contributors have decided to remove the YAML support to reduce their +maintenance and support burden. The amount of energy that needs to be put in +(to maintain both capabilities) can be too much and is complex. We have to +understand and accept that. If we do not do that, a contributor could simply +stop contributing. + +Unfortunately, such a move creates breaking changes and often leads to a few +pretty de-motivating comments, towards the contributor and the project in +general. This is harmful to everybody, as the contributors get demotivated or, +even worse, don’t want to implement new features or create a breaking change. + +This halts our project goals, slows down innovation and induces the risk of +losing contributors and maintainers. In the end, leads to a greater loss for +everybody. + +## The future of YAML + +So, with all of the above set context: What is the future of YAML? + +As of today, [ADR-0010][adr] (Architectural Decision Record) has been approved +that states: + +- Any new integration that communicates with devices and/or services, must use + configuration via the UI. Configuration via YAML is only allowed in very rare + cases, which will be determined on a case by case basis. +- Existing integrations that communicate with devices and/or services, are + allowed and encouraged to implement configuration via the UI + and remove YAML support. +- We will no longer accept any changes to the YAML configuration for existing + integrations that communicate with devices and/or services. + +So what stays available in YAML in the end? + +All other integrations that do not communicate with a device and/or service, +are configured via YAML or via Storage Collections (these enable both YAML and +UI capabilities used by, e.g., Lovelace and zones). +Examples of these other integrations: + +- Integrations that integrate transports. These integrations allow users to + define their own protocol, e.g., MQTT, serial, GPIO. +- Integrations that process Home Assistant data and make this available to + other integrations, e.g., template, stats, derivative, utility meter. +- Integrations that provide automations, e.g., automation, + device_sun_light_trigger, alert. +- Integrations that help controlling devices and services, e.g., script, scene. +- Integrations that expose Home Assistant data to other services, e.g., + Google Assistant, HomeKit. + +This ADR is set to remove confusion and questions for everybody, builds upon the +goals that have been set out (as presented during the State of the Union), +and sets the guidelines for our contributors to work with. +This ADR brings clarity for us all. + +## Myth-busting + +In the raised concerns and comments across the community, some comments have +been found multiple times. Please note, these are not exact quotes, as we don’t +want to address anybody personally. + +- _“Making backups became harder!”_ + + Using the Home Assistant snapshot feature, this is not an issue. However, + if you do manual backups on a system that runs just Core, you need to make + sure to back up the `.storage` folder as well + (which hopefully you're already doing). Otherwise, there is no difference. + +- _“It is harder to test my configuration if integration does not support YAML”._ + + YAML configuration testing is often done to see if a specific YAML + configuration is still valid against (newer versions of) Home Assistant. + With integrations set up via the UI, this is not a concern, + since Home Assistant ensures the data structure is compatible between + versions and migrates it for you. + +- _“I like to use a private git repository where I store all my data in, + including my sensitive data, since it is not public. + Without YAML this is not possible.”_ + + This is actually not true, the `.storage` folder contains all Home Assistant + managed configuration files in JSON format, which in those cases, + can be stored and versioned in a git repository. + +## Is YAML going away? + +**No**! + +Not for the things we like to share publicly. It will also remain available for +the advanced features we currently cannot provide a UI for. The goal is not +phasing out YAML, the goal is to make the best home automation platform in the +world that is easy to use for everybody. Enabling users of all experience +levels, to enjoy this wonderful hobby we all share and allowing everyone to +focus on what matters most: automating our homes. + +Closing with the YouTube recording of the State of the Union 2019, +starting at the part discussing this. + +
+ +
+ +[adr]: https://github.com/home-assistant/architecture/blob/master/adr/0010-integration-configuration.md +[yt]: https://youtu.be/tc17q1Zn0Xs?t=1809 +[gh]: https://github.com/topics/home-assistant-config diff --git a/source/images/blog/2020-04-14-the-future-of-yaml/sharing.png b/source/images/blog/2020-04-14-the-future-of-yaml/sharing.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9e7fda248b197ac3b8cdbacab40b07ae24572f GIT binary patch literal 12531 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 JLJ9Wf{{ZU%$%_C0 literal 0 HcmV?d00001 diff --git a/source/images/blog/2020-04-14-the-future-of-yaml/social.png b/source/images/blog/2020-04-14-the-future-of-yaml/social.png new file mode 100644 index 0000000000000000000000000000000000000000..043b4034c5234e29d861bd58b3d5969187b6a3d0 GIT binary patch literal 72348 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

3r?+HvWLZ%~^v+vJthxji;VpF5BrrwV0+~dQ~NA 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 literal 0 HcmV?d00001 From b2f4d2803c4c54554abec4638b6a52e782df1078 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 15 Apr 2020 00:26:35 +0200 Subject: [PATCH 036/129] Update google_assistant.markdown (#12971) --- source/_integrations/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 365737ff32b..eb1f4a57714 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -195,7 +195,7 @@ Currently, the following domains are available to be used with Google Assistant, ### Secure Devices -Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `garage` and `door`. +Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `door`, `garage` or `gate`. By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing or locking these devices does not require a pin. From 3c05047c89818108fd9ac8ef71408fcf1be1eb29 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 15 Apr 2020 00:59:52 +0200 Subject: [PATCH 037/129] Recorder docs (#12961) * Recorder docs * custom directory to postgres socket * fix indent * fix indent --- source/_integrations/recorder.markdown | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 33e002f05e4..9213494b2bd 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -154,18 +154,19 @@ Call the service `recorder.purge` to start a purge task which deletes events and ## Custom database engines -| Database engine | `db_url` | -| :--------------------- | :------------------------------------------------------------------------------------------- | -| SQLite | `sqlite:////PATH/TO/DB_NAME` | -| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB (omit pymysql) | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | -| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | -| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` | +| Database engine | `db_url` | +| :----------------------------- | :------------------------------------------------------------------------------------------- | +| SQLite | `sqlite:////PATH/TO/DB_NAME` | +| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB (omit pymysql) | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | +| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | +| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | +| PostgreSQL (Custom socket dir) | `postgresql://@/DB_NAME?host=/path/to/dir` | +| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` |

From 934e24970d5f8310921e060b792091f232b20f3a Mon Sep 17 00:00:00 2001 From: Samuel Rau <1322866+samrdev@users.noreply.github.com> Date: Wed, 15 Apr 2020 07:17:25 +0200 Subject: [PATCH 038/129] Removed Swisscom Internet-Box logo in favor of brands (#12972) --- source/_integrations/swisscom.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/swisscom.markdown b/source/_integrations/swisscom.markdown index 82a35ee8836..dc6c370a64a 100644 --- a/source/_integrations/swisscom.markdown +++ b/source/_integrations/swisscom.markdown @@ -1,7 +1,6 @@ --- title: Swisscom Internet-Box description: Instructions on how to integrate Swisscom Internet-Box into Home Assistant. -logo: swisscom.png ha_category: - Presence Detection ha_release: 0.32 From fd9c83f919c24205f8f16b11eaa5b0db42d3039c Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 07:22:16 +0200 Subject: [PATCH 039/129] Remove logo reference for Anthem A/V int. (#12968) --- source/_integrations/anthemav.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown index aa3a533984e..1c9ecf4723e 100644 --- a/source/_integrations/anthemav.markdown +++ b/source/_integrations/anthemav.markdown @@ -1,7 +1,6 @@ --- title: Anthem A/V Receivers description: Instructions on how to integrate Anthem A/V Receivers into Home Assistant. -logo: anthemav.png ha_category: - Media Player ha_iot_class: Local Push From a38996a648be0f953197eff49bcf539e06bb7aaa Mon Sep 17 00:00:00 2001 From: Mark <2835274+markus99@users.noreply.github.com> Date: Wed, 15 Apr 2020 02:04:28 -0500 Subject: [PATCH 040/129] Update ssdp.markdown (#12962) Added ROKU --- source/_integrations/ssdp.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index 3d7d5d2c12e..1b35eaf014b 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -28,4 +28,5 @@ The following integrations are automatically discovered by the SSDP integration: - [DirecTV](/integrations/directv/) - [Huawei LTE](../huawei_lte/) - [Philips Hue](../hue/) + - [Roku](/integrations/roku/) - [Samsung TV](../samsungtv/) From 888fc21fb577b57d9370b11a3d61f839d4263e68 Mon Sep 17 00:00:00 2001 From: Christiaan Blom Date: Wed, 15 Apr 2020 11:52:59 +0200 Subject: [PATCH 041/129] Removed DD-WRT icon reference (#12773) As instructed by https://github.com/home-assistant/brands/issues/178 --- source/_integrations/ddwrt.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown index 6dd520fe2fb..f0f3a639cba 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -1,7 +1,6 @@ --- title: DD-WRT description: Instructions on how to integrate DD-WRT based routers into Home Assistant. -logo: ddwrt.png ha_category: - Presence Detection ha_release: pre 0.7 From ebce17a25bf555e021af8005117d4db5d72f4a80 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2020 14:25:00 +0200 Subject: [PATCH 042/129] Bump rouge from 3.17.0 to 3.18.0 (#12973) Bumps [rouge](https://github.com/rouge-ruby/rouge) from 3.17.0 to 3.18.0. - [Release notes](https://github.com/rouge-ruby/rouge/releases) - [Changelog](https://github.com/rouge-ruby/rouge/blob/master/CHANGELOG.md) - [Commits](https://github.com/rouge-ruby/rouge/compare/v3.17.0...v3.18.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index cbcee356060..940faa6fee6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -86,7 +86,7 @@ GEM rb-fsevent (0.10.3) rb-inotify (0.10.1) ffi (~> 1.0) - rouge (3.17.0) + rouge (3.18.0) ruby-enum (0.8.0) i18n ruby2_keywords (0.0.2) From f83bbcbd3a131d6d925f5d6dadb6d9b2b05b77f0 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 15 Apr 2020 15:03:31 +0200 Subject: [PATCH 043/129] Update core configuration with temperature_unit (#12970) * Update core configuration with temperature_unit * Update basic.markdown --- source/_docs/configuration/basic.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 0c80d3cb26c..3f1d4d868c1 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -35,7 +35,11 @@ elevation: required: false type: integer unit_system: - description: "`metric` for Metric, `imperial` for Imperial." + description: "`metric` for Metric, `imperial` for Imperial. This also sets temperature_unit, Celsius for Metric and Fahrenheit for Imperial" + required: false + type: string +temperature_unit: + description: "Override temperature unit set by unit_system. `C` for Celsius, `F` for Fahrenheit." required: false type: string time_zone: From 8a15cb53db6778982938ed1729326ac78de73075 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 15:56:08 +0200 Subject: [PATCH 044/129] Remove logo reference for Clickatell int. (#12982) --- source/_integrations/clickatell.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown index aecfd822ad6..d6d71322489 100644 --- a/source/_integrations/clickatell.markdown +++ b/source/_integrations/clickatell.markdown @@ -1,7 +1,6 @@ --- title: Clickatell description: Instructions on how to add Clickatell notifications to Home Assistant. -logo: clickatell.png ha_category: - Notifications ha_release: 0.56 From 79f62c71da8d51893adb59617b27a28efc1dc1db Mon Sep 17 00:00:00 2001 From: willidh74 Date: Wed, 15 Apr 2020 15:07:48 +0100 Subject: [PATCH 045/129] You need to include the port in the URI (#12981) * You need to include the port in the URI * Update spotify.markdown --- source/_integrations/spotify.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index c42b8a43764..fb7936ca364 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -31,8 +31,8 @@ To create the required Spotify application: - Select **Create An App**. Enter any name and description. - Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. - Add a **Redirect URI** in one of the following forms: - - If you are not using SSL: `http:///auth/external/callback` - - If you are using SSL: `https:///auth/external/callback` + - If you are not using SSL: `http://:/auth/external/callback` + - If you are using SSL: `https://:/auth/external/callback` - Click **Save** after adding the URI. If you are using an externally accessible address, you will likely also need to set the `base_url` attribute of the [HTTP Integration](/integrations/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`. From 50e31c3bc65fd37600e0e3b1a70534b9312c2bf0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 15 Apr 2020 09:14:04 -0500 Subject: [PATCH 046/129] homekit and homekit_controller require openssl110 or later (#12976) * Add note that homekit and homekit_controller need openssl 1.1.0 or later * the * Update homekit.markdown * Update homekit_controller.markdown * Update homekit.markdown * :pencil2: (NASA called :wink:) * Update homekit_controller.markdown Co-authored-by: Franck Nijhof --- source/_integrations/homekit.markdown | 8 ++++++-- source/_integrations/homekit_controller.markdown | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index a8c726e4e25..51b77ecd022 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -17,8 +17,12 @@ The `homekit` integration allows you to forward entities from Home Assistant to
- It might be necessary to install an additional package: - `sudo apt-get install libavahi-compat-libdnssd-dev` +If you are using the official Home Assistant images or running Home Assistant Core on Docker, HomeKit is ready to go out of the box. If you are running Home Assistant in a manual virtual environment or on a NAS without Docker, you may need to install or upgrade dependencies for HomeKit to function. + +HomeKit requires openssl 1.1.0 or later as the HomeKit Accessory Protocol (HAP) uses the `ChaCha20` stream cipher and the `Poly1305` authenticator. + +It might be necessary to install an additional package: +`sudo apt-get install libavahi-compat-libdnssd-dev`
diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index f7ead7e9eae..dad0ff51e89 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -57,6 +57,14 @@ Home Assistant does not currently support HomeKit BLE.
+
+ +If you are using the official Home Assistant images or running Home Assistant Core on Docker, HomeKit controller is ready to go out of the box. If you are running Home Assistant in a manual virtual environment or on a NAS without Docker, you may need to install or upgrade dependencies for HomeKit controller to function. + +HomeKit controller requires openssl 1.1.0 or later as the HomeKit Accessory Protocol (HAP) uses the `ChaCha20` stream cipher and the `Poly1305` authenticator. + +
+ ## Troubleshooting ### I don't have a HomeKit PIN From 88c24e226f01455d5bc3e219f1ac296debdda0c8 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 16:22:16 +0200 Subject: [PATCH 047/129] Remove logo ref. for OpenEvse (#12983) --- source/_integrations/openevse.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index 1ef6dfe6582..256d570ceaa 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -1,7 +1,6 @@ --- title: OpenEVSE description: Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant -logo: openevse.png ha_category: - Car ha_release: 0.38 From d1aea4c85dfe3720b25d65d52fb9436318f16341 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 17:25:54 +0200 Subject: [PATCH 048/129] Remove logo ref. for Canary int. (#12984) --- source/_integrations/canary.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/canary.markdown b/source/_integrations/canary.markdown index 1559c522efb..331b9f38785 100644 --- a/source/_integrations/canary.markdown +++ b/source/_integrations/canary.markdown @@ -1,7 +1,6 @@ --- title: Canary description: Instructions on how to integrate your Canary devices into Home Assistant. -logo: canary.png ha_category: - Alarm - Camera From 0681882f0ccfc8731b4d191e8021745d229439fe Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 17:29:15 +0200 Subject: [PATCH 049/129] Remove logo ref. for Broadlink int. (#12988) --- source/_integrations/broadlink.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 57adc81784d..dd20a5abb32 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -1,7 +1,6 @@ --- title: Broadlink description: Instructions on how to integrate Broadlink within Home Assistant. -logo: broadlink.png ha_category: - Remote - Switch From f90e6f7eff92f714d5b31463af64c4f899b94fa7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 15 Apr 2020 09:47:44 -0700 Subject: [PATCH 050/129] Release 108.5 --- _config.yml | 4 +-- source/_posts/2020-04-08-release-108.markdown | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index b66ac55273d..9467ca3ad2f 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 108 -current_patch_version: 4 -date_released: 2020-04-13 +current_patch_version: 5 +date_released: 2020-04-15 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown index f8dd5387125..73301fe8dbb 100644 --- a/source/_posts/2020-04-08-release-108.markdown +++ b/source/_posts/2020-04-08-release-108.markdown @@ -485,6 +485,32 @@ These integrations have been removed. The websites for both have changed, causin [unifi docs]: /integrations/unifi/ [zwave docs]: /integrations/zwave/ +## Release 0.108.5 - April 15 + +- Temporary transition Docker init ([@frenck] - [#34135]) +- Catch IPPVersionNotSupportedError in IPP ([@ctalkington] - [#34184]) ([ipp docs]) +- Fix websocket connection bug/errant logic in Ambient PWS ([@bachya] - [#34217]) ([ambient_station docs]) +- Fix Cloud UI bug preventing managing Google 2FA ([@balloob] - [#34241]) ([cloud docs]) ([google_assistant docs]) +- Add daikin update_before_add ([@fredrike] - [#34248]) ([daikin docs]) +- Fix various Daikin issues ([@fredrike] - [#34249]) ([daikin docs]) + +[#34135]: https://github.com/home-assistant/core/pull/34135 +[#34184]: https://github.com/home-assistant/core/pull/34184 +[#34217]: https://github.com/home-assistant/core/pull/34217 +[#34241]: https://github.com/home-assistant/core/pull/34241 +[#34248]: https://github.com/home-assistant/core/pull/34248 +[#34249]: https://github.com/home-assistant/core/pull/34249 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@ctalkington]: https://github.com/ctalkington +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[ambient_station docs]: /integrations/ambient_station/ +[cloud docs]: /integrations/cloud/ +[daikin docs]: /integrations/daikin/ +[google_assistant docs]: /integrations/google_assistant/ +[ipp docs]: /integrations/ipp/ + ## All changes
From c6f8cfed95f3e8a25aef2453de5b7f56feb54c46 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 18:58:36 +0200 Subject: [PATCH 051/129] Remove logo ref. for Channels int. (#12987) --- source/_integrations/channels.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/channels.markdown b/source/_integrations/channels.markdown index 0ffdaf671d4..c3a02846d90 100644 --- a/source/_integrations/channels.markdown +++ b/source/_integrations/channels.markdown @@ -1,7 +1,6 @@ --- title: Channels description: Instructions on how to integrate Channels into Home Assistant. -logo: channels.png ha_category: - Media Player ha_release: 0.65 From e9df32b5bc1bfc84527f682bb7e778a1bdae169b Mon Sep 17 00:00:00 2001 From: Karl Date: Wed, 15 Apr 2020 20:05:52 +0200 Subject: [PATCH 052/129] remove logo from kodi (#12985) --- source/_integrations/kodi.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index ccddd381eca..88f6f19aa5d 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -1,7 +1,6 @@ --- title: Kodi description: Instructions on how to integrate Kodi into Home Assistant. -logo: kodi.png ha_category: - Notifications - Media Player From 3cf10d45a067c080607d872c79a74026445ccd19 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 20:09:13 +0200 Subject: [PATCH 053/129] Remove logo ref. from Blinkstick integration (#12989) --- source/_integrations/blinksticklight.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/blinksticklight.markdown b/source/_integrations/blinksticklight.markdown index 99ddc358217..4066d6022ed 100644 --- a/source/_integrations/blinksticklight.markdown +++ b/source/_integrations/blinksticklight.markdown @@ -1,7 +1,6 @@ --- title: BlinkStick description: Instructions on how to setup Blinkstick lights within Home Assistant. -logo: blinkstick.png ha_category: - DIY ha_release: 0.7.5 From e2d18d9239f4b9895a00c96c33674d2da747cf97 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 20:12:57 +0200 Subject: [PATCH 054/129] Remove logo ref. from Bizkaibus int. (#12990) --- source/_integrations/bizkaibus.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index 9532d293f97..cc1316804fe 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -1,7 +1,6 @@ --- title: Bizkaibus description: Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant. -logo: bizkaibus.png ha_category: - Transport - Sensor From 4c7efb734a29f4c6502a488efda090820ef6945c Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 20:38:57 +0200 Subject: [PATCH 055/129] Remove logo ref. from Automatic int. (#12994) --- source/_integrations/automatic.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/automatic.markdown b/source/_integrations/automatic.markdown index 03b8259ab2a..4ed67fb3058 100644 --- a/source/_integrations/automatic.markdown +++ b/source/_integrations/automatic.markdown @@ -1,7 +1,6 @@ --- title: Automatic description: Instructions for how to integrate Automatic ODB readers into Home Assistant. -logo: automatic.png ha_category: - Car ha_release: 0.28 From be91ed953ae5023fee9648bcfbcbe5aa699fffb7 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 20:40:38 +0200 Subject: [PATCH 056/129] Remove logo ref. from Avi-on int. (#12992) --- source/_integrations/avion.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index cce0ef0b77f..733e43c1a52 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -4,7 +4,6 @@ description: Instructions on how to setup GE Avi-on Bluetooth dimmers within Hom ha_category: - Light ha_iot_class: Assumed State -logo: avi-on.png ha_release: 0.37 ha_domain: avion --- From 624fe4518bb878cac2cb2f1664e7ba9d26e903ae Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Wed, 15 Apr 2020 20:45:10 +0200 Subject: [PATCH 057/129] Remove logo reference for Bbox integration (#12991) --- source/_integrations/bbox.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/bbox.markdown b/source/_integrations/bbox.markdown index 6cd532d0dcc..48aa4226dc3 100644 --- a/source/_integrations/bbox.markdown +++ b/source/_integrations/bbox.markdown @@ -1,7 +1,6 @@ --- title: Bbox description: Instructions on how to integrate Bouygues Bbox routers into Home Assistant. -logo: bbox.png ha_category: - Network - Sensor From 2873e687670db26a6d051bf5687800c8e0a011c3 Mon Sep 17 00:00:00 2001 From: Ken Davidson Date: Wed, 15 Apr 2020 14:48:33 -0400 Subject: [PATCH 058/129] Update openweathermap.markdown (#12993) Fixed some typos and made minor improvements. --- source/_integrations/openweathermap.markdown | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index e319b7875a7..826b6defd9f 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -18,7 +18,7 @@ There is currently support for the following device types within Home Assistant: - [Sensor](#sensor) - [Weather](#weather) -You need an API key which is free but requires a [registration](https://home.openweathermap.org/users/sign_up). +You need an API key, which is free, but requires a [registration](https://home.openweathermap.org/users/sign_up). ## Weather @@ -42,7 +42,7 @@ name: type: string default: OpenWeatherMap mode: - description: "Can specify `hourly`, `daily` of `freedaily`. Select `hourly` for a three-hour forecast, `daily` for daily forecast or `freedaily` for a five days forecast with the free tier." + description: "Can specify `hourly`, `daily`, or `freedaily`. Select `hourly` for a three-hour forecast, `daily` for daily forecast, or `freedaily` for a five-day forecast with the free tier." required: false type: string default: "`hourly`" @@ -68,7 +68,7 @@ This platform is an alternative to the [`openweathermap`](/integrations/openweat The `openweathermap` platform uses [OpenWeatherMap](https://openweathermap.org/) as a source for current meteorological data for your location. The `forecast` will show you the condition in 3h. -To add OpenWeatherMap sensor to your installation, add the following to your `configuration.yaml` file: +To include OpenWeatherMap sensor to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -95,7 +95,7 @@ forecast: default: false type: boolean language: - description: The language in which you want text results to be returned. It's a two-characters string, e.g., `en`, `es`, `ru`, `it`, etc. + description: The language in which you want text results to be returned. It's a two-characters string (e.g., `en`, `es`, `ru`, `it`, etc.). required: false default: en type: string @@ -107,23 +107,23 @@ monitored_conditions: weather: description: A human-readable text summary. temperature: - description: The current temperature. + description: Current temperature. wind_speed: - description: The wind speed. + description: Wind speed. wind_bearing: - description: The wind bearing. + description: Wind bearing. humidity: - description: The relative humidity. + description: Relative humidity. pressure: - description: The sea-level air pressure in millibars. + description: Sea-level air pressure in millibars. clouds: - description: Description about cloud coverage. + description: Description of cloud coverage. rain: - description: The rain volume. + description: Rain volume. snow: - description: The snow volume. + description: Snow volume. weather_code: - description: The current weather condition code. + description: Current weather condition code. {% endconfiguration %} Details about the API are available in the [OpenWeatherMap documentation](https://openweathermap.org/api). From 5b2fbfe1b98f5f8225038dc97b63b9612d209f15 Mon Sep 17 00:00:00 2001 From: pvmil Date: Wed, 15 Apr 2020 20:54:48 +0200 Subject: [PATCH 059/129] Added description on location of image files (#12977) * Added description on location of image files Added description on location of image files, where to store them, what directory is needed and how to use them * Update picture.markdown * Update picture.markdown updated home assistant to include capital start letters --- source/_lovelace/picture.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_lovelace/picture.markdown b/source/_lovelace/picture.markdown index c38959d6ca0..e6e94eb2773 100644 --- a/source/_lovelace/picture.markdown +++ b/source/_lovelace/picture.markdown @@ -18,7 +18,7 @@ type: type: string image: required: true - description: The URL of an image. + description: The URL of an image. When you want to store images in your Home Assistant installation use the [hosting files documentation](/integrations/http/#hosting-files). After storing your files, use the /local path, for example /local/filename.jpg . type: string theme: required: false From 8ac79344d97f34f01e61e0757c4c1fc276563ddf Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Thu, 16 Apr 2020 05:51:05 +0200 Subject: [PATCH 060/129] Remove logo reference for DTE energy int. (#13001) --- source/_integrations/dte_energy_bridge.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/dte_energy_bridge.markdown b/source/_integrations/dte_energy_bridge.markdown index 9c042a992ab..0d4f74858bf 100644 --- a/source/_integrations/dte_energy_bridge.markdown +++ b/source/_integrations/dte_energy_bridge.markdown @@ -1,7 +1,6 @@ --- title: DTE Energy Bridge description: Instructions on how to setup DTE Energy Bridge with Home Assistant. -logo: dte_energy.png ha_category: - Energy ha_release: 0.21 From 3e90238199b2df87cf4b18761cbddc069bd1003b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 16 Apr 2020 10:32:30 +0200 Subject: [PATCH 061/129] Update installation.markdown --- source/hassio/installation.markdown | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index c232574016b..3b10900220c 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -195,21 +195,21 @@ If you can not find your machine type in the list, you should pick the `qemu` re [balenaEtcher]: https://www.balena.io/etcher [Virtual Appliance]: https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/ova.md [hassos-network]: https://github.com/home-assistant/operating-system/blob/dev/Documentation/network.md -[pi0-w]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi0-w-3.12.img.gz -[pi1]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi-3.12.img.gz -[pi2]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi2-3.12.img.gz -[pi3-32]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi3-3.12.img.gz -[pi3-64]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi3-64-3.12.img.gz -[pi4-32]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi4-3.12.img.gz -[pi4-64]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_rpi4-64-3.12.img.gz -[tinker]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_tinker-3.12.img.gz -[odroid-c2]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_odroid-c2-3.12.img.gz +[pi0-w]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi0-w-3.13.img.gz +[pi1]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi-3.13.img.gz +[pi2]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi2-3.13.img.gz +[pi3-32]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi3-3.13.img.gz +[pi3-64]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi3-64-3.13.img.gz +[pi4-32]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi4-3.13.img.gz +[pi4-64]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_rpi4-64-3.13.img.gz +[tinker]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_tinker-3.13.img.gz +[odroid-c2]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_odroid-c2-3.13.img.gz [odroid-n2]: https://github.com/home-assistant/operating-system/releases/download/4.4/hassos_odroid-n2-4.4.img.gz -[odroid-xu4]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_odroid-xu4-3.12.img.gz -[intel-nuc]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_intel-nuc-3.12.img.gz -[vmdk]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vmdk.gz -[vhdx]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vhdx.gz -[vdi]: https://github.com/home-assistant/operating-system/releases/download/3.12/hassos_ova-3.12.vdi.gz +[odroid-xu4]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_odroid-xu4-3.13.img.gz +[intel-nuc]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_intel-nuc-3.13.img.gz +[vmdk]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_ova-3.13.vmdk.gz +[vhdx]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_ova-3.13.vhdx.gz +[vdi]: https://github.com/home-assistant/operating-system/releases/download/3.13/hassos_ova-3.13.vdi.gz [linux]: https://github.com/home-assistant/supervised-installer [local]: http://homeassistant.local:8123 [samba]: /addons/samba/ From 1436a3b1dbbae0980de6aff35aa88c64f13b8fac Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Thu, 16 Apr 2020 21:06:07 +0200 Subject: [PATCH 062/129] Remove logo ref. for Tahoma int. (#13014) --- source/_integrations/tahoma.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown index 1f519361f69..0ae93c45438 100644 --- a/source/_integrations/tahoma.markdown +++ b/source/_integrations/tahoma.markdown @@ -1,7 +1,6 @@ --- title: Tahoma description: Instructions on how to integrate Somfy Tahoma devices with Home Assistant. -logo: tahoma.png ha_category: - Hub - Binary Sensor From 8f95e7af0d9292d7ca422c5799af3c49204db56b Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Thu, 16 Apr 2020 21:44:31 +0200 Subject: [PATCH 063/129] Remove logo reference for Dominos Pizza int. (#13004) --- source/_integrations/dominos.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/dominos.markdown b/source/_integrations/dominos.markdown index b7c1e84e014..3bdd446b5d0 100644 --- a/source/_integrations/dominos.markdown +++ b/source/_integrations/dominos.markdown @@ -1,7 +1,6 @@ --- title: Dominos Pizza description: Instructions on how to setup Dominos Pizza ordering within Home Assistant. -logo: dominos.png ha_category: - Other ha_iot_class: Cloud Polling From 623e89d3a7d98ee4447e8c9d05ff1c8cf6590a90 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Thu, 16 Apr 2020 21:46:05 +0200 Subject: [PATCH 064/129] Remove logo reference from DLNA int. (#13002) --- source/_integrations/dlna_dmr.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index a013b832b36..fcade63dfdd 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -1,7 +1,6 @@ --- title: DLNA Digital Media Renderer description: Instructions on how to integrate a DLNA DMR device into Home Assistant. -logo: dlna.png ha_category: - Media Player ha_release: 0.76 From 953b3174f5de48f901c08a393ca39c723b2ccaa2 Mon Sep 17 00:00:00 2001 From: cogneato Date: Thu, 16 Apr 2020 13:49:55 -0600 Subject: [PATCH 065/129] Remove brottsplatskartan logo in favor of brand (#13003) --- source/_integrations/brottsplatskartan.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/brottsplatskartan.markdown b/source/_integrations/brottsplatskartan.markdown index 9289db32d46..6be51a5dbba 100644 --- a/source/_integrations/brottsplatskartan.markdown +++ b/source/_integrations/brottsplatskartan.markdown @@ -3,7 +3,6 @@ title: Brottsplatskartan description: Instructions on how to integrate brottsplatskartan.se into Home Assistant. ha_category: - Social -logo: brottsplatskartan.png ha_release: 0.85 ha_iot_class: Cloud Polling ha_domain: brottsplatskartan From 0c4adda4f9adac5a3384cfc0fc66f7f9c26bce37 Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Thu, 16 Apr 2020 22:21:32 +0200 Subject: [PATCH 066/129] Change Alarm Control Panel to alarm_control_panel (#13015) --- source/_integrations/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index eb1f4a57714..7ca8b94e218 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -177,6 +177,7 @@ entity_config: Currently, the following domains are available to be used with Google Assistant, listed with their default types: +- alarm_control_panel (arm/disarm) - camera (streaming, requires compatible camera) - group (on/off) - input_boolean (on/off) @@ -191,7 +192,6 @@ Currently, the following domains are available to be used with Google Assistant, - climate (temperature setting, hvac_mode) - vacuum (dock/start/stop/pause) - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) -- Alarm Control Panel (arm/disarm) ### Secure Devices From cde549a17626ffe2e7b8013b520ece8c81cc9706 Mon Sep 17 00:00:00 2001 From: Brad Date: Thu, 16 Apr 2020 23:24:58 +0300 Subject: [PATCH 067/129] Remove logo due to brands (#13011) --- source/_integrations/nuki.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index 7eae26f0355..e3b3b981ee6 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -1,7 +1,6 @@ --- title: Nuki description: Instructions on how to integrate a Nuki Smart Lock devices. -logo: nuki.png ha_category: - Lock ha_release: 0.38 From 1e4b95d45163dc5835dc6b24e2929c9bd7bbeee3 Mon Sep 17 00:00:00 2001 From: tomlut <10679300+tomlut@users.noreply.github.com> Date: Fri, 17 Apr 2020 06:26:59 +1000 Subject: [PATCH 068/129] Cleanup as per issue #10648 (#13013) * Cleanup as per issue #10648 Added clarification for max samples and adjusted examples. * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/trend.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 83ffcda9d65..dbac93eacea 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -87,8 +87,7 @@ sensors: If the optional `sample_duration` and `max_samples` parameters are specified then multiple samples can be stored and used to detect long-term trends. -Each time the state changes, a new sample is stored along with the sample time. -Samples older than `sample_duration` seconds will be discarded. +Each time the state changes, a new sample is stored along with the sample time. Samples older than `sample_duration` seconds will be discarded. The `max_samples` parameter must be large enough to store sensor updates over the requested duration. If you want to trend over two hours and your sensor updates every 120s then then `max_samples` must be at least 60, i.e., 7200/120 = 60. A trend line is then fitted to the available samples, and the gradient of this line is compared to `min_gradient` to determine the state of the trend sensor. @@ -124,12 +123,14 @@ binary_sensor: temp_falling: entity_id: sensor.outside_temperature sample_duration: 7200 + max_samples: 120 min_gradient: -0.0008 device_class: cold temp_rising: entity_id: sensor.outside_temperature sample_duration: 7200 + max_samples: 120 min_gradient: 0.0008 device_class: heat ``` From 762a559c85c00edb8560a7556dd45dea28469e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCndler?= Date: Thu, 16 Apr 2020 22:28:54 +0200 Subject: [PATCH 069/129] Fix typo, direction = destination (#13007) --- source/_integrations/mvglive.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/mvglive.markdown b/source/_integrations/mvglive.markdown index 9b9e66fc2e9..27c2763fc15 100644 --- a/source/_integrations/mvglive.markdown +++ b/source/_integrations/mvglive.markdown @@ -33,7 +33,7 @@ destinations: required: false type: list directions: - description: "Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = direction. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction='1' indicates south-bound trains, direction='2' indicates northbound trains. For U4 and U5, direction='1' indicates east-bound trains, direction='2' indicates west-bound trains. For example, setting directions: '1' can be used to get all south-bound trains at Scheidplatz." + description: "Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = destination. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction='1' indicates south-bound trains, direction='2' indicates northbound trains. For U4 and U5, direction='1' indicates east-bound trains, direction='2' indicates west-bound trains. For example, setting directions: '1' can be used to get all south-bound trains at Scheidplatz." required: false type: list lines: From 2a89ec85736e63ec53b1080757c6a8dc8fa6ac25 Mon Sep 17 00:00:00 2001 From: Ganesh Hegde Date: Thu, 16 Apr 2020 22:29:42 +0200 Subject: [PATCH 070/129] update macos autostart doc with a footnote (#13006) * update macos autostart doc with a footnote Related to #12947 * add missing code language flag --- source/_docs/autostart/macos.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_docs/autostart/macos.markdown b/source/_docs/autostart/macos.markdown index 8dc41a3fc8f..b7ab19dbd93 100644 --- a/source/_docs/autostart/macos.markdown +++ b/source/_docs/autostart/macos.markdown @@ -8,7 +8,6 @@ Setting up Home Assistant to run as a background service is simple; macOS will s To get Home Assistant installed as a background service, run: - ```bash $ hass --script macos install @@ -26,3 +25,11 @@ $ hass --script macos uninstall Home Assistant has been uninstalled. ``` + + +Note: +`automake` is required for `hass` to start. If you are missing this on your system, you can install this by running: + +```bash +$ brew install autoconf +``` From dd87269ecfd5da6d3b4aa0db51a5f3233ef90c5d Mon Sep 17 00:00:00 2001 From: bepsoccer Date: Thu, 16 Apr 2020 15:33:23 -0500 Subject: [PATCH 071/129] Zooz device config documentation (#12998) - Updated Zen26 and Zen27 config documentation for the latest firmware - Added Zen21v2 and Zen22v2 config documentation for the latest firmware --- source/_docs/z-wave/device-specific.markdown | 494 ++++++++++++++----- 1 file changed, 381 insertions(+), 113 deletions(-) diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index 2c3d99eb847..2ee55d64c8d 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -191,131 +191,399 @@ Triple tap on|2|4 5x tap off|1|6 5x tap on|2|6 -### Zooz Scene Capable On/Off and Dimmer Wall Switches (Zen26 & Zen27 - Firmware 2.0+) +### Zooz Scene Capable On/Off and Dimmer Wall Switches (Zen21v2 & Zen22v2 - Firmware 3.0+ and Zen26 & Zen27 - Firmware 2.0+) Many Zooz Zen26/27 switches that have been sold do not have firmware 2.0+. Contact Zooz to obtain the over the air firmware update instructions and new user manual for the switches. Once the firmware is updated, the the new configuration parameters will have to be added to the `zwcfg` file. Replace the existing `COMMAND_CLASS_CONFIGURATION` with the one of the following options (depending on your model of switch): +Zen21v2 (On/Off Switch): +```xml + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Enable or Disable scene control functionality for quick double tap triggers (Available for select hubs only). + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Choose the type of 3-way switch you want to use with this dimmer in a 3-way set-up. Changing this setting can allow you to control brightness and dim the light from both 3-way locations. Use a regular momentary switch (like the Zooz ZAC99 accessory switch) if value is set to 2. + + + + + Set reporting behavior for disabled physical control. + + + + +``` + +Zen22v2 (Dimmer): +```xml + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Adjust the physical ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. This setting is for physical taps only, see parameter 17 to adjust Z-Wave ramp rate. Values: 1 – 99 (seconds). 0 – instant on/off. Default: 1 + + + Set the minimum brightness level (in %) for your dimmer. You won’t be able to dim the light below the set value. Default: 1 + + + Set the maximum brightness level (in %) for your dimmer. You won’t be able to add brightness to the light beyond the set value. Note: if Parameter 12 is set to value 0, Parameter 11 is automatically disabled. Default: 99 + + + Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enables/Disables the double-tap fucntion and assign brightness to single tap. Last level: single tap returns to last brightness level. Full/Max level: single tap returns to full/max level + + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Set the time it takes to get from 0% to 100% brightness when pressing and holding the paddle (physical dimming). The number entered as value corresponds to the number of seconds. Default: 4 + + + Choose if you want to set the Z-Wave ramp rate independently of the physical ramp rate (using an appropriate command in your hub) or if you want them to match. + + + + + Set the custom brightness level (instead of the last set brightness level) you want the dimmer to come on to when you single tap the upper paddle. Default: 0 - last brightness level + + + Choose the type of 3-way switch you want to use with this dimmer in a 3-way set-up. Changing this setting can allow you to control brightness and dim the light from both 3-way locations. Use a regular momentary switch (like the Zooz ZAC99 accessory switch) if value is set to 2. + + + + + + + Choose how you'd like the dimmer to report when paddles are tapped and held and physical / Z-Wave control is enabled or disabled. + + + + + Set reporting behavior for disabled physical control. + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + + +``` + Zen26 (On/Off Switch): ```xml - - - - Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse will reverse those functions. Any will toggle the light regardless of which button is pushed. - - - - - - LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. - - - - - - - Enable or disable the auto turn-off timer function. - - - - - Time, in seconds, for auto-off timer delay. 60 (default). - - - Enable or disable the auto turn-on timer function. - - - - - Time, in minutes, for auto-on timer delay. 60 (default). - - - Status after power on after power failure. OFF will always turn light off. ON will always turn light on. Restore will remember the latest state and restore that state. - - - - - - Enable or disable scene control functionality for quick double tap triggers. - - - - - Enable or disable local on/off control. If enabled, you'll only be able to control the connected light via Z-Wave. - - - + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Enable or Disable scene control functionality for quick double tap triggers (Available for select hubs only). + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Set reporting behavior for disabled physical control. + + + ``` Zen27 (Dimmer): ```xml - - - - Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse will reverse those functions. Any will toggle the light regardless of which button is pushed. - - - - - - LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. - - - - - - - - - - - Time, in minutes, for auto-off timer delay. - - - - - - - Time, in minutes, for auto-off timer delay. - - - Status after power on after power failure. OFF will always turn light off. ON will always turn light on. Restore will remember the latest state and restore that state. - - - - - - Adjust the ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. - - - Set the minimum brightness level for your dimmer. You won't be able to dim the light below the set value. - - - Set the maximum brightness level for your dimmer. You won't be able to add brightness to the light beyond the set value. Note: if Parameter 12 is set to value "Full", Parameter 11 is automatically disabled. - - - Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. - - - - - Enable or disable scene control functionality for quick double tap triggers. - - - - - Enable the double tap or disable the double tap function and assign brightness level to single tap. - - - - - - Enable or disable local on/off control. If enabled, light will only be able to be controlled via Z-Wave. - - - + + + + Normal mode: Upper paddle turns the light on, lower paddle turns the light off. Reverse mode: Upper paddle turns the light off, lower paddle turns the light on. Toggle mode: Either paddle toggles the light. + + + + + + LED Indication light function. Normal has the LED Indication on when the switch is off, off when the switch is on. + + + + + + + + + + + Time, in minutes, for auto-off timer delay. + + + + + + + Set the time (in minutes) after which you want the switch to automatically turn on once it has been turned off. + + + Choose which physical and Z-Wave triggers should prompt the switch to send a status change report to associated devices. + + + + + + + + + + + + + + + + + + + Status after power failure. Off: always turn light off. On: always turn light on. Restore: remember the latest state and restore that state. + + + + + + Adjust the physical ramp rate for your dimmer (fade-in / fade-out effect for on / off operation). Values correspond to the number of seconds it take for the dimmer to reach full brightness or turn off when operated manually. This setting is for physical taps only, see parameter 17 to adjust Z-Wave ramp rate. + + + Set the minimum brightness level (in %) for your dimmer. You won't be able to dim the light below the set value. + + + Set the maximum brightness level (in %) for your dimmer. You won't be able to add brightness to the light beyond the set value. Note: if Parameter 12 is set to value "Full", Parameter 11 is automatically disabled. + + + Double Tap action. When set to Full, turns light on to 100%. If set to Maximum Level, turns light on to % set in Parameter 11. + + + + + Enable or Disable scene control functionality for quick double tap triggers. + + + + + Enables/Disables the double-tap function and assign brightness to single tap. Last level: single tap returns to last brightness level. Full/Max level: single tap returns to full/max level + + + + + + Enable or disable local on/off control. If enabled, you’ll only be able to control the connected light via Z-Wave. Scenes and other functionality will still be available through paddles. + + + + + + Set the time it takes to get from 0% to 100% brightness when pressing and holding the paddle (physical dimming). The number entered as value corresponds to the number of seconds. Default: 4 + + + Choose if you want to set the Z-Wave ramp rate independently of the physical ramp rate (using an appropriate command in your hub) or if you want them to match. + + + + + Set the custom brightness level (instead of the last set brightness level) you want the dimmer to come on to when you single tap the upper paddle. Default: 0 - last brightness level + + + Choose how you'd like the dimmer to report when paddles are tapped and held and physical / Z-Wave control is enabled or disabled. + + + + + Set reporting behavior for disabled physical control. + + + + + Set the brightness level the dimmer will turn on to when off and when lower paddle is held DOWN for a second. Default: 20 + ``` From 1e7b2fb601d130158ec9a5e4834677d8e2882a37 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Fri, 17 Apr 2020 03:24:28 +0200 Subject: [PATCH 072/129] Remove logo ref. for Snapcast (#13022) --- source/_integrations/snapcast.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index 9e249ad7697..658eac7c406 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -1,7 +1,6 @@ --- title: Snapcast description: Instructions on how to integrate Snapcast into Home Assistant. -logo: snapcast.png ha_category: - Media Player ha_release: 0.13 From 63e414c61e8ed3cfc3f7ae8eb80d10bfe8dc893e Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Fri, 17 Apr 2020 03:36:34 +0200 Subject: [PATCH 073/129] Remove logo ref. for Somfy (#13020) --- source/_integrations/somfy_mylink.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/somfy_mylink.markdown b/source/_integrations/somfy_mylink.markdown index 586fa5d767c..05cd22c9d45 100644 --- a/source/_integrations/somfy_mylink.markdown +++ b/source/_integrations/somfy_mylink.markdown @@ -1,7 +1,6 @@ --- title: Somfy MyLink description: Instructions on how to integrate Somfy MyLink devices with Home Assistant. -logo: tahoma.png ha_category: - Hub - Cover From 14e1b5b661e3bae9ddb6c085de34a17f20d7d612 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Fri, 17 Apr 2020 03:37:37 +0200 Subject: [PATCH 074/129] Remove logo ref. for Sony Projector (#13019) --- source/_integrations/sony_projector.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/sony_projector.markdown b/source/_integrations/sony_projector.markdown index 9ca5efa21ba..b8b354f03af 100644 --- a/source/_integrations/sony_projector.markdown +++ b/source/_integrations/sony_projector.markdown @@ -1,7 +1,6 @@ --- title: Sony Projector description: Instructions on how to integrate Sony Projector switches into Home Assistant. -logo: sony.png ha_category: - Multimedia ha_iot_class: Local Polling From 7ea1368ffeac2f29cd431faa33de0d5ebaacb589 Mon Sep 17 00:00:00 2001 From: adrianmihalko Date: Fri, 17 Apr 2020 03:45:54 +0200 Subject: [PATCH 075/129] Remove logo ref. from Start.ca int. (#13017) --- source/_integrations/startca.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown index 0f7f77437f0..9b77092a6a8 100644 --- a/source/_integrations/startca.markdown +++ b/source/_integrations/startca.markdown @@ -1,7 +1,6 @@ --- title: Start.ca description: Instructions on how to integrate Start.ca data usage within Home Assistant. -logo: startca.png ha_category: - Network ha_release: 0.64 From b797e2bca156e45fadec10bd1496de5ba9bc5f02 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Apr 2020 17:59:52 -0700 Subject: [PATCH 076/129] Release 108.6 --- _config.yml | 4 +-- source/_posts/2020-04-08-release-108.markdown | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 9467ca3ad2f..3a9f638c958 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 108 -current_patch_version: 5 -date_released: 2020-04-15 +current_patch_version: 6 +date_released: 2020-04-16 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown index 73301fe8dbb..336103f1ca7 100644 --- a/source/_posts/2020-04-08-release-108.markdown +++ b/source/_posts/2020-04-08-release-108.markdown @@ -511,6 +511,38 @@ These integrations have been removed. The websites for both have changed, causin [google_assistant docs]: /integrations/google_assistant/ [ipp docs]: /integrations/ipp/ +## Release 0.108.6 - April 16 + +- Use config entry id for unique id if serial number is missing ([@bdraco] - [#34154]) ([nut docs]) +- Fix default elkm1 temp units ([@bdraco] - [#34274]) ([elkm1 docs]) +- Skip ignored hosts when checking existing config entries in config flow ([@raman325] - [#34280]) ([vizio docs]) +- Upgrade broadlink lib to 0.13.1 ([@Danielhiversen] - [#34290]) ([broadlink docs]) +- Pass an argument to kef.update_dsp for async_track_time_interval ([@basnijholt] - [#34310]) ([kef docs]) +- Fixes for Sonos media titles ([@amelchio] - [#34311]) ([sonos docs]) +- Abort vizio zeroconf config flow if unique ID is already configured ([@raman325] - [#34313]) ([vizio docs]) +- Update Coordinator: Only schedule a refresh if listenerrs ([@balloob] - [#34317]) + +[#34154]: https://github.com/home-assistant/core/pull/34154 +[#34274]: https://github.com/home-assistant/core/pull/34274 +[#34280]: https://github.com/home-assistant/core/pull/34280 +[#34290]: https://github.com/home-assistant/core/pull/34290 +[#34310]: https://github.com/home-assistant/core/pull/34310 +[#34311]: https://github.com/home-assistant/core/pull/34311 +[#34313]: https://github.com/home-assistant/core/pull/34313 +[#34317]: https://github.com/home-assistant/core/pull/34317 +[@Danielhiversen]: https://github.com/Danielhiversen +[@amelchio]: https://github.com/amelchio +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bdraco]: https://github.com/bdraco +[@raman325]: https://github.com/raman325 +[broadlink docs]: /integrations/broadlink/ +[elkm1 docs]: /integrations/elkm1/ +[kef docs]: /integrations/kef/ +[nut docs]: /integrations/nut/ +[sonos docs]: /integrations/sonos/ +[vizio docs]: /integrations/vizio/ + ## All changes
From a3d53ede86fe6cc2560395c9cc4c447a216ed2a4 Mon Sep 17 00:00:00 2001 From: cogneato Date: Fri, 17 Apr 2020 01:13:53 -0600 Subject: [PATCH 077/129] Remove snips logo in favor of brand (#13025) --- source/_integrations/snips.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index b401005a4fa..76b26ed094b 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -1,7 +1,6 @@ --- title: Snips description: Instructions on how to integrate Snips within Home Assistant. -logo: snips.png ha_category: - Voice ha_release: 0.48 From 120280c75dde5fb7831a5cc5919398e7c6009c4d Mon Sep 17 00:00:00 2001 From: Thomas Redmer Date: Fri, 17 Apr 2020 09:16:57 +0200 Subject: [PATCH 078/129] Emphasize the need for a URL (#13016) * Emphasize the need for a URL IP / hostname without the URI specifier is not sufficient and will lead to an error on config check / Home Assistant restart * Apply suggestions from code review Co-Authored-By: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/fronius.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index 63cd737d46d..7097d9e0f7a 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -27,7 +27,7 @@ sensor: {% configuration %} resource: - description: "The IP address of the Fronius device" + description: "The URL of the Fronius device (e.g., `http://192.0.2.0` or `http://fronius.local`)" required: true type: string monitored_conditions: @@ -96,7 +96,7 @@ a list of sensors that are to be integrated can be given like below. ```yaml sensor: - platform: fronius - resource: FRONIUS_IP_ADDRESS + resource: FRONIUS_URL monitored_conditions: - sensor_type: inverter device: 1 From 1171f2585be234c9187b8f4996272182b31a67ab Mon Sep 17 00:00:00 2001 From: Artekus Date: Fri, 17 Apr 2020 03:47:50 -0500 Subject: [PATCH 079/129] Add the network key to options.xml file (#13000) * Add the network key to options.xml file For the z-wave secure devices to connect properly. In addition to modifying the configuration.yaml file, the options.xml file network key must be set as well: * Update source/_docs/z-wave/installation.markdown Co-Authored-By: Klaas Schoute * :pencil2: Tweak Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_docs/z-wave/installation.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index e3effd00110..fbe0e4ce6c0 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -101,6 +101,13 @@ zwave: network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c" ``` +In addition to modifying the `configuration.yaml` file, the `options.xml` file network key must be set as well: + +```xml + +