From a65ad2e16532308f544149eed3995308ea5a7647 Mon Sep 17 00:00:00 2001 From: automaton82 Date: Wed, 19 Aug 2020 14:50:22 -0400 Subject: [PATCH 01/33] Adding suggestion to put ',' between hex as well (#14270) Right now the suggestion is to put '0x' in front of the generated hex keys which is great, but when I followed the instructions I didn't realize it didn't put the comma between the items already and it caused me problems for awhile until I realized. I'm proposing a change to also suggest adding a comma so people, like me, following the instructions will see it. --- source/_docs/z-wave/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index e3effd00110..9c61159416b 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -93,7 +93,7 @@ An easy script to generate a random key: cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` -You can also use sites like [this one](https://www.random.org/cgi-bin/randbyte?nbytes=16&format=h) to generate the required data, just remember to put `0x` before each pair of characters: +You can also use sites like [this one](https://www.random.org/cgi-bin/randbyte?nbytes=16&format=h) to generate the required data, just remember to put `0x` before each pair of characters and a `,` between them: ```yaml # Example configuration.yaml entry for network_key From b9935a9fa734713f6c61bc28fe673f0f58216e1b Mon Sep 17 00:00:00 2001 From: renat85 <47399113+renat85@users.noreply.github.com> Date: Thu, 20 Aug 2020 06:11:56 +0300 Subject: [PATCH 02/33] Add tested model modem and solution for RPI (#14265) Add tested model modem and solution for work on Raspberry PI without udev rule. --- source/_integrations/sms.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/sms.markdown b/source/_integrations/sms.markdown index f885535065b..0501f609424 100644 --- a/source/_integrations/sms.markdown +++ b/source/_integrations/sms.markdown @@ -77,6 +77,7 @@ You will need a USB GSM stick modem. - [Huawei E3372-510](https://www.amazon.com/gp/product/B01N6P3HI2/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)( Need to unlock it using [this guide](http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html)) - [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1) +- [Huawei E3272](https://www.amazon.com/Huawei-E3272s-506-Unlocked-Americas-Europe/dp/B00HBL51OQ) [List of modems that may work](https://www.asus.com/event/networks_3G4G_support/) @@ -84,6 +85,8 @@ Need to unlock it using [this guide](http://blog.asiantuntijakaveri.fi/2015/07/c For some unknown reason, the rule that converts these modems from storage devices into serial devices does not run automatically. To work around this problem, follow the procedure to create `udev` rule on a configuration USB stick for the device to switch to serial mode. +0. Try disable virtual cd-rom and change work mode "only modem". After this modem correct work on Raspberry Pi without 'udev' rule. + 1. Run `lsusb`, its output looks like this: ```bash From abd19784652214ed2af3c85f7044e6d73ff3027c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 20 Aug 2020 08:46:08 +0000 Subject: [PATCH 03/33] Release 114.3 --- _config.yml | 4 +-- source/_posts/2020-08-12-release-114.markdown | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index e22e202876c..5c01d7abbd5 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 114 -current_patch_version: 2 -date_released: 2020-08-17 +current_patch_version: 3 +date_released: 2020-08-20 # 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-08-12-release-114.markdown b/source/_posts/2020-08-12-release-114.markdown index e033467e2d2..6a4931db071 100644 --- a/source/_posts/2020-08-12-release-114.markdown +++ b/source/_posts/2020-08-12-release-114.markdown @@ -610,6 +610,34 @@ the automation is turned off. [recorder docs]: /integrations/recorder/ [samsungtv docs]: /integrations/samsungtv/ +## Release 0.114.3 - August 20 + +- Update zeroconf to fix ServiceBrowser leak on cancelation ([@bdraco] - [#38933]) ([zeroconf docs]) +- Bump netdisco to 2.8.2 to accomodate new zeroconf exception ([@bdraco] - [#38949]) ([discovery docs]) ([ssdp docs]) +- Fix Control4 light setup issues ([@lawtancool] - [#38952]) ([control4 docs]) +- Bump pychromecast to 7.2.1 ([@emontnemery] - [#39018]) ([cast docs]) +- Fix emulated hue on/off devices compatibility with alexa ([@bdraco] - [#39063]) ([emulated_hue docs]) +- Update met.no library ([@Danielhiversen] - [#39076]) ([met docs]) ([norway_air docs]) + +[#38933]: https://github.com/home-assistant/core/pull/38933 +[#38949]: https://github.com/home-assistant/core/pull/38949 +[#38952]: https://github.com/home-assistant/core/pull/38952 +[#39018]: https://github.com/home-assistant/core/pull/39018 +[#39063]: https://github.com/home-assistant/core/pull/39063 +[#39076]: https://github.com/home-assistant/core/pull/39076 +[@Danielhiversen]: https://github.com/Danielhiversen +[@bdraco]: https://github.com/bdraco +[@emontnemery]: https://github.com/emontnemery +[@lawtancool]: https://github.com/lawtancool +[cast docs]: /integrations/cast/ +[control4 docs]: /integrations/control4/ +[discovery docs]: /integrations/discovery/ +[emulated_hue docs]: /integrations/emulated_hue/ +[met docs]: /integrations/met/ +[norway_air docs]: /integrations/norway_air/ +[ssdp docs]: /integrations/ssdp/ +[zeroconf docs]: /integrations/zeroconf/ + ## All changes
From dbd5eabd1442669c795a432029d56754e1e0b788 Mon Sep 17 00:00:00 2001 From: Daniel O'Connor Date: Thu, 20 Aug 2020 18:20:07 +0930 Subject: [PATCH 04/33] Update spaceapi documentation link (#14276) --- source/_integrations/spaceapi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 72dc4e986ff..9ca772520ad 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -9,7 +9,7 @@ ha_codeowners: ha_domain: spaceapi --- -The `spaceapi` integration allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](http://spaceapi.net/). +The `spaceapi` integration allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](https://spaceapi.io/). ## Configuration From 359261dfb04cbe33f42d35bf69b467677eabbbad Mon Sep 17 00:00:00 2001 From: David Vega Fontelos Date: Fri, 21 Aug 2020 12:07:31 +0200 Subject: [PATCH 05/33] Fixes the simple example code for creating a sensor influxdb 2.x.x (#14285) --- source/_integrations/influxdb.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index fa7c591dcc8..baee63e7852 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -343,7 +343,7 @@ sensor: name: "Mean humidity reported from past day" query: > filter(fn: (r) => r._field == "value" and r.domain == "sensor" and strings.containsStr(v: r.entity_id, substr: "humidity")) - |> keep(columns: ["_value"])\n" + |> keep(columns: ["_value"]) range_start: "-1d" ``` From 19bc48a2fb5702f43f342671987c5d78a6c578de Mon Sep 17 00:00:00 2001 From: mdegat01 Date: Fri, 21 Aug 2020 06:49:30 -0400 Subject: [PATCH 06/33] Adding sensor and binary sensor categories to utility integrations (#14282) --- source/_integrations/bayesian.markdown | 1 + source/_integrations/derivative.markdown | 1 + source/_integrations/filesize.markdown | 1 + source/_integrations/filter.markdown | 1 + source/_integrations/folder.markdown | 1 + source/_integrations/history_stats.markdown | 1 + source/_integrations/integration.markdown | 1 + source/_integrations/min_max.markdown | 1 + source/_integrations/otp.markdown | 1 + source/_integrations/season.markdown | 1 + source/_integrations/sensor.command_line.markdown | 1 + source/_integrations/sensor.websocket_api.markdown | 1 + source/_integrations/simulated.markdown | 1 + source/_integrations/sql.markdown | 1 + source/_integrations/statistics.markdown | 1 + source/_integrations/threshold.markdown | 1 + source/_integrations/trend.markdown | 1 + source/_integrations/uptime.markdown | 1 + source/_integrations/version.markdown | 1 + source/_integrations/workday.markdown | 1 + 20 files changed, 20 insertions(+) diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index 89403363fd5..b55e097cfc0 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -3,6 +3,7 @@ title: Bayesian description: Instructions on how to integrate threshold Bayesian sensors into Home Assistant. ha_category: - Utility + - Binary Sensor ha_iot_class: Local Polling ha_release: 0.53 ha_quality_scale: internal diff --git a/source/_integrations/derivative.markdown b/source/_integrations/derivative.markdown index 89db8d08b40..841503eaf34 100644 --- a/source/_integrations/derivative.markdown +++ b/source/_integrations/derivative.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Derivative Sensor into Home Assist ha_category: - Utility - Energy + - Sensor ha_release: 0.105 ha_iot_class: Local Push logo: derivative.png diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown index f161c4bfa55..779bbc6237c 100644 --- a/source/_integrations/filesize.markdown +++ b/source/_integrations/filesize.markdown @@ -3,6 +3,7 @@ title: File Size description: Component for monitoring the size of a file. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.64 ha_domain: filesize diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index dd4b21821fb..dfb8eb17227 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -3,6 +3,7 @@ title: Filter description: Instructions on how to integrate Data Filter Sensors into Home Assistant. ha_category: - Utility + - Sensor ha_release: 0.65 ha_iot_class: Local Push ha_quality_scale: internal diff --git a/source/_integrations/folder.markdown b/source/_integrations/folder.markdown index 85ffa31b78f..f56c1fa1c50 100644 --- a/source/_integrations/folder.markdown +++ b/source/_integrations/folder.markdown @@ -3,6 +3,7 @@ title: Folder description: Sensor for monitoring the contents of a folder. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.64 ha_domain: folder diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 33ad89637e9..0d836cf1b18 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -3,6 +3,7 @@ title: History Stats description: Instructions about how to integrate historical statistics into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.39 ha_quality_scale: internal diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index 85f5ae8e0c0..bfd3630f0cf 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Integration Sensor into Home Assis ha_category: - Utility - Energy + - Sensor ha_release: 0.87 ha_iot_class: Local Push ha_quality_scale: internal diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 8ef22fc64ae..0fd106fabd7 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -3,6 +3,7 @@ title: Min/Max description: Instructions on how to integrate min/max sensors into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.31 ha_quality_scale: internal diff --git a/source/_integrations/otp.markdown b/source/_integrations/otp.markdown index 1d3e701aeed..89f8cce7269 100644 --- a/source/_integrations/otp.markdown +++ b/source/_integrations/otp.markdown @@ -3,6 +3,7 @@ title: One-Time Password (OTP) description: Instructions on how to add One-Time Password (OTP) sensors into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.49 ha_quality_scale: internal diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index 4288a6a90f3..9743b335e6c 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -3,6 +3,7 @@ title: Season description: Instructions on how to add season sensors into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.53 ha_quality_scale: internal diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown index 8cd7baadd21..a31622ff16d 100644 --- a/source/_integrations/sensor.command_line.markdown +++ b/source/_integrations/sensor.command_line.markdown @@ -3,6 +3,7 @@ title: "Command line Sensor" description: "Instructions on how to integrate command line sensors into Home Assistant." ha_category: - Utility + - Sensor ha_release: pre 0.7 ha_iot_class: Local Polling ha_domain: command_line diff --git a/source/_integrations/sensor.websocket_api.markdown b/source/_integrations/sensor.websocket_api.markdown index 1df89fb0968..770f64c1eae 100644 --- a/source/_integrations/sensor.websocket_api.markdown +++ b/source/_integrations/sensor.websocket_api.markdown @@ -4,6 +4,7 @@ description: "Instructions on how to count connected clients within Home Assista logo: home-assistant.png ha_category: - Utility + - Sensor ha_release: 0.33 ha_iot_class: Local Push ha_quality_scale: internal diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown index d6080164207..b358417e6a3 100644 --- a/source/_integrations/simulated.markdown +++ b/source/_integrations/simulated.markdown @@ -3,6 +3,7 @@ title: Simulated description: Component for simulating a numerical sensor. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: 0.65 ha_quality_scale: internal diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index c7d5dbcd5b5..e024137e5dc 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -3,6 +3,7 @@ title: SQL description: Instructions how to integrate SQL sensors into Home Assistant. ha_category: - Utility + - Sensor ha_release: 0.63 ha_codeowners: - '@dgomes' diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index cc64dc68dbd..eef4cb23b10 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -3,6 +3,7 @@ title: Statistics description: Instructions on how to integrate statistical sensors into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Polling ha_release: '0.30' ha_quality_scale: internal diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 7e6be5db352..1f15ad925af 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -3,6 +3,7 @@ title: Threshold description: Instructions on how to integrate threshold binary sensors into Home Assistant. ha_category: - Utility + - Binary Sensor ha_iot_class: Local Polling ha_release: 0.34 ha_quality_scale: internal diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index dbac93eacea..23bd1162f59 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -3,6 +3,7 @@ title: Trend description: Instructions on how to integrate Trend binary sensors into Home Assistant. ha_category: - Utility + - Binary Sensor ha_release: 0.28 ha_iot_class: Local Push ha_quality_scale: internal diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index 105953348bc..a0bc44dc199 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -3,6 +3,7 @@ title: Uptime description: Instructions on how to integrate an uptime sensor into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Push ha_release: 0.56 ha_quality_scale: internal diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index b0cb092b89e..62bbbd85228 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -3,6 +3,7 @@ title: Version description: Instructions on how to integrate a version sensor into Home Assistant. ha_category: - Utility + - Sensor ha_iot_class: Local Push ha_release: 0.52 ha_quality_scale: internal diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 2d88dc544f9..e57a7833416 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -3,6 +3,7 @@ title: Workday description: Steps to configure the binary workday sensor. ha_category: - Utility + - Binary Sensor ha_iot_class: Local Polling ha_release: 0.41 ha_quality_scale: internal From 4a8f8a1bf063a4581b54c58433fb553475e1dd23 Mon Sep 17 00:00:00 2001 From: Hilbrand Bouwkamp Date: Fri, 21 Aug 2020 12:53:14 +0200 Subject: [PATCH 07/33] Update discovery.markdown (#14280) Updated discovery markdown to contain all abbreviations found in the abbreviations.py file. Signed-off-by: Hilbrand Bouwkamp --- source/_docs/mqtt/discovery.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 442a6d82579..04d5717fa0a 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -73,6 +73,7 @@ Supported abbreviations: 'aux_cmd_t': 'aux_command_topic', 'aux_stat_tpl': 'aux_state_template', 'aux_stat_t': 'aux_state_topic', + 'avty' 'availability', 'avty_t': 'availability_topic', 'away_mode_cmd_t': 'away_mode_command_topic', 'away_mode_stat_tpl': 'away_mode_state_template', @@ -135,6 +136,8 @@ Supported abbreviations: 'json_attr': 'json_attributes', 'json_attr_t': 'json_attributes_topic', 'json_attr_tpl': 'json_attributes_template', + 'max_mirs': 'max_mireds', + 'min_mirs': 'min_mireds', 'max_temp': 'max_temp', 'min_temp': 'min_temp', 'mode_cmd_t': 'mode_command_topic', From 9fe3b40613f2ac0474fc91e10a647cc5969a1100 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 22 Aug 2020 14:52:28 +0200 Subject: [PATCH 08/33] Add periods (#14294) --- source/getting-started/index.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index cfb725a3c2b..40ee02b5aac 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -42,8 +42,8 @@ We will need a few things to get started with installing Home Assistant. The Ras ### Software requirements -- Download and extract the Home Assistant image for [your device](/hassio/installation/) -- Download [balenaEtcher] to write the image to an SD card +- Download and extract the Home Assistant image for [your device](/hassio/installation/). +- Download [balenaEtcher] to write the image to an SD card. [balenaEtcher]: https://www.balena.io/etcher From 3f33e14c325bb1eb379e04fec94ad9887c46e472 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Sat, 22 Aug 2020 13:55:25 +0100 Subject: [PATCH 09/33] Add note against iOS and macOS browser betas (#14293) --- source/_docs/frontend/browsers.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index e8501cc043f..f2e63a58acd 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -25,7 +25,7 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | Browser | Release | State | Comments | | :-------------------- |:---------------|:-----------|:-------------------------| -| [Safari] | | works | Map is fixed since 0.51. | +| [Safari] | | works | Not working with Safari Technology Preview 112 beta | ## Linux @@ -59,10 +59,10 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | Browser | Release | State | Comments | | :-------------------- |:---------------|:-----------|:-------------------------| -| [Safari] | | works | Can also be added to desktop. Map is fixed since 0.51. | -| [Chrome] | | works | | +| [Safari] | | works | Can also be added to desktop. Not working in iOS 14 beta 5. | +| [Chrome] | | works | Not working in iOS 14 beta 5. | -There are reports that devices running with iOS prior to iOS 10, especially old iPads, are having trouble. +There are reports that devices running with iOS prior to iOS 10, especially old iPads, are having trouble. Devices running iOS 14 beta 5, you will not be able to interact with Home Assistant controls. ## webOS From 93312671e92ca74bc92406b078740eb43abe1fca Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 23 Aug 2020 11:23:18 +0200 Subject: [PATCH 10/33] Add SQLite db size example (fixes #13715) (#14295) --- source/_integrations/sql.markdown | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index e024137e5dc..8dbde56f5ca 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -17,7 +17,7 @@ This can be used to present statistics about Home Assistant sensors if used with To configure this sensor, you need to define the sensor connection variables and a list of queries to your `configuration.yaml` file. A sensor will be created for each query: -To enable it, add the following lines to your `configuration.yaml`: +To enable it, add the following lines to your `configuration.yaml` file: {% raw %} ```yaml @@ -109,7 +109,7 @@ SELECT * FROM states WHERE entity_id = 'binary_sensor.xyz789' GROUP BY state ORD ### Database size -#### Database size in Postgres +#### Postgres {% raw %} ```yaml @@ -140,3 +140,19 @@ sensor: unit_of_measurement: kB ``` {% endraw %} + +#### SQLite + +If you are using the `recorder` integration then you don't need to specify the location of the database. For all other cases, add `db_url: sqlite:////path/to/database.db`. + +{% raw %} +```yaml +sensor: + - platform: sql + queries: + - name: DB Size + query: 'SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_count(), pragma_page_size();' + column: 'size' + unit_of_measurement: 'MiB' +``` +{% endraw %} From 82432700939141209c618a45d64442b95b48c6e9 Mon Sep 17 00:00:00 2001 From: Dave T <17680170+davet2001@users.noreply.github.com> Date: Sun, 23 Aug 2020 19:18:07 +0100 Subject: [PATCH 11/33] Typo (#14300) --- source/_integrations/snmp.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown index 07464de78c2..bd75bf13533 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -11,7 +11,7 @@ ha_release: 0.57 ha_domain: snmp --- -A lot of Wi-Fi access points and Wi-Fi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and Wi-Fi registrations. +A lot of Wi-Fi access points and Wi-Fi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/managing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and Wi-Fi registrations. There is currently support for the following device types within Home Assistant: From 516486206812328e345b4061c4d71f8190ed88b1 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Mon, 24 Aug 2020 01:17:30 -0500 Subject: [PATCH 12/33] Enhance script choose action description (#14287) --- source/_docs/scripts.markdown | 74 +++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 3093f6fd354..6807e25340a 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -22,6 +22,16 @@ script: message: 'Turned on the ceiling light!' ``` +## Types of Actions + +- [Call a Service](#call-a-service) +- [Test a Condition](#test-a-condition) +- [Delay](#delay) +- [Wait](#wait) +- [Fire an Event](#fire-an-event) +- [Repeat a Group of Actions](#repeat-a-group-of-actions) +- [Choose a Group of Actions](#choose-a-group-of-actions) + ### Call a Service The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the [service calls page]. @@ -170,7 +180,7 @@ an event trigger. ``` {% endraw %} -### Raise and Consume Custom Events +#### Raise and Consume Custom Events The following automation shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The action part could be inside a script or an automation. @@ -313,11 +323,36 @@ field | description This action allows you to select a sequence of other actions from a list of sequences. Nesting is fully supported. -Each sequence is paired with a list of conditions (see [conditions page] for available options.) The first sequence whose conditions are all true will be run. -An optional `default` sequence can be included which will be run if none of the sequences from the list are run. + +Each sequence is paired with a list of conditions. (See the [conditions page] for available options and how multiple conditions are handled.) The first sequence whose conditions are all true will be run. +An _optional_ `default` sequence can be included which will be run only if none of the sequences from the list are run. + +The `choose` action can be used like an "if" statement. The first `conditions`/`sequence` pair is like the "if/then", and can be used just by itself. Or additional pairs can be added, each of which is like an "elif/then". And lastly, a `default` can be added, which would be like the "else." {% raw %} ```yaml +# Example with just an "if" +automation: + - trigger: + - platform: state + entity_id: binary_sensor.motion + to: 'on' + action: + - choose: + # IF nobody home, sound the alarm! + - conditions: + - condition: state + entity_id: group.family + state: not_home + sequence: + - service: script.siren + data: + duration: 60 + - service: light.turn_on + entity_id: all +``` +```yaml +# Example with "if" and "else" automation: - trigger: - platform: state @@ -339,6 +374,39 @@ automation: - service: light.turn_off entity_id: light.front_lights ``` +```yaml +# Example with "if", "elif" and "else" +automation: + - trigger: + - platform: state + entity_id: input_boolean.simulate + to: 'on' + mode: restart + action: + - choose: + # IF morning + - conditions: + - condition: template + value_template: "{{ now().hour < 9 }}" + sequence: + - service: script.sim_morning + # ELIF day + - conditions: + - condition: template + value_template: "{{ now().hour < 18 }}" + sequence: + - service: light.turn_off + entity_id: light.living_room + - service: script.sim_day + # ELSE night + default: + - service: light.turn_off + entity_id: light.kitchen + - delay: + minutes: "{{ range(1, 11)|random }}" + - service: light.turn_off + entity_id: all +``` {% endraw %} [Script component]: /integrations/script/ From a037576bc0c40da7b649c10c4f6fd0afd2977c71 Mon Sep 17 00:00:00 2001 From: silfa718 Date: Mon, 24 Aug 2020 02:36:24 -0400 Subject: [PATCH 13/33] Update denonavr.markdown (#14301) Tested with newly release Marantz SR8015 and everything worked. HA auto discovered and the integration found and added the receiver. --- source/_integrations/denonavr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 307d9a16669..fcc35d4f7f3 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -50,6 +50,7 @@ Known supported devices: - Marantz SR5008 - Marantz SR5011 - Marantz SR6007 - SR6012 +- Marantz SR8015 - Marantz NR1504 - Marantz NR1506 - Marantz NR1602 From aaf7d2309c8f03f61439dd39d9a7da2838ab79f1 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 24 Aug 2020 08:37:10 +0200 Subject: [PATCH 14/33] Bitron Video Zigbee Stick works very good with ZHA (#14298) Bitron Video Zigbee Stick --- source/_integrations/zha.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 4acea91d28a..348e33d3bd4 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -59,6 +59,7 @@ ZHA integration uses a hardware independent Zigbee stack implementation with mod - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) - [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) + - Bitron Video/Smabit BV AV2010/10 USB-Stick with Silicon Labs Ember 3587 (no flashing necessary) - Telegesis ETRX357USB (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS (Note! This first have to be flashed with other EmberZNet firmware) - Telegesis ETRX357USB-LRS+8M (Note! This first have to be flashed with other EmberZNet firmware) From 5610cb65b7a6e48b01ae5f759308c320f02560d0 Mon Sep 17 00:00:00 2001 From: Alessio Papi <49101836+alessio-papi@users.noreply.github.com> Date: Mon, 24 Aug 2020 09:39:33 +0200 Subject: [PATCH 15/33] Update VLC telnet documentation for issue with volume (#14306) Documentation updated with a notice on environment locale variable to avoid issues with volume (#14297) --- source/_integrations/vlc_telnet.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index c16c78851c4..afbac7c32b8 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -48,6 +48,10 @@ Only the "music" media type is supported for now. This service will control any instance of VLC player on the network with the telnet interface activated. To activate the telnet interface on your VLC Player please read the [official VLC documentation](https://wiki.videolan.org/Documentation:Modules/telnet/). Also remember to add a firewall rule allowing inbound connections for the port used in the device running VLC. +In case the VLC is running on a host with a locale other than English, you may get some errors during the volume change. +This is related to the different use of the decimal separator in other countries. +Consider to set the locale to `en_US` before starting VLC. + ## Full configuration A full configuration for VLC could look like the one below: From 9c2e0ff1330420898d3c583cb1a1264648746f01 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 26 Aug 2020 11:31:48 +0200 Subject: [PATCH 16/33] Fix divider row documenation (#14316) --- source/_lovelace/entities.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index bd0354087bc..c514ddc5534 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -223,8 +223,8 @@ type: style: required: false description: Style the element using CSS. - type: string - default: "height: 1px, background-color: var(--secondary-text-color)" + type: map + default: "height: 1px, background-color: var(--divider-color)" {% endconfiguration %} ### Section From 4342b57b133b128147d64ffdc29ff4b52db8aeca Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Aug 2020 11:35:19 +0200 Subject: [PATCH 17/33] Link to Supervised in alternative installation methods (#14314) --- source/_docs/installation.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index bf84d02298e..6db29ce1a82 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -64,6 +64,7 @@ If you use these install methods, we assume that you know how to manage and admi :-----|:-----|:----- [venv
(as another user)](/docs/installation/raspberry-pi/)|Any Linux, Python 3.7 or later|Those familiar with their operating system [venv
(as your user)](/docs/installation/virtualenv/)|Any Python 3.7 or later|Developers +[Supervised](https://github.com/home-assistant/supervised-installer) | [Requirements](https://github.com/home-assistant/architecture/blob/master/adr/0014-home-assistant-supervised.md#supported-operating-system-system-dependencies-and-versions) | Those very familiar with their operating system ## Community provided guides From 34d40549bd215f7c1e02825dec4a0aba27fac9b9 Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Wed, 26 Aug 2020 10:35:55 +0100 Subject: [PATCH 18/33] Removing quotes (#14313) For some reason the script slug in the example had quotes around it. Understandably this is causing confusion, so I've removed them. --- source/_integrations/cast.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index 65900c5bfb7..def2b009577 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -23,7 +23,7 @@ Support for mDNS discovery in your local network is mandatory. Make sure that yo Home Assistant has its own Cast application to show the Home Assistant UI on any Chromecast device. You can use it by adding the [Cast entity row](/lovelace/entities/#cast) to your Lovelace UI, or by calling the `cast.show_lovelace_view` service. The service takes the path of a Lovelace view and an entity ID of a Cast device to show the view on. A `path` has to be defined in your Lovelace YAML for each view, as outlined in the [views documentation](/lovelace/views/#path). The `dashboard_path` is the part of the Lovelace UI URL that follows the defined `base_url` Typically "lovelace". The following is a full configuration for a script that starts casting the `downstairs` tab of the `lovelace-cast` path (note that `entity_id` is specified under `data` and not for the service call): ```yaml -'cast_downstairs_on_kitchen': +cast_downstairs_on_kitchen: alias: Show Downstairs on kitchen sequence: - data: From 3bae42f9226e21f325739e59b212249425c8b8db Mon Sep 17 00:00:00 2001 From: antipiot Date: Wed, 26 Aug 2020 14:11:00 +0200 Subject: [PATCH 19/33] Add informations for z-push button 4 (#14320) --- source/_docs/z-wave/device-specific.markdown | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index eb84c5a0636..80104295717 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -1227,7 +1227,19 @@ To get the Z-Push Button 2 or the Z-Push Button 8 working in Home Assistant, you ``` - - 5.2 For the Z-Push Button 8: + - 5.2 For the Z-Push Button 4: + + ```xml + + + + + + + + ``` + + - 5.3 For the Z-Push Button 8: ```xml From 81d46bfaa41a8707e172d8662eb994614e98efce Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 Aug 2020 15:53:46 +0000 Subject: [PATCH 20/33] Release 0.114.4 --- _config.yml | 4 ++-- source/_posts/2020-08-12-release-114.markdown | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 5c01d7abbd5..21904b8d574 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 114 -current_patch_version: 3 -date_released: 2020-08-20 +current_patch_version: 4 +date_released: 2020-08-26 # 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-08-12-release-114.markdown b/source/_posts/2020-08-12-release-114.markdown index 6a4931db071..4e50a760654 100644 --- a/source/_posts/2020-08-12-release-114.markdown +++ b/source/_posts/2020-08-12-release-114.markdown @@ -625,7 +625,7 @@ the automation is turned off. [#39018]: https://github.com/home-assistant/core/pull/39018 [#39063]: https://github.com/home-assistant/core/pull/39063 [#39076]: https://github.com/home-assistant/core/pull/39076 -[@Danielhiversen]: https://github.com/Danielhiversen +[@danielhiversen]: https://github.com/Danielhiversen [@bdraco]: https://github.com/bdraco [@emontnemery]: https://github.com/emontnemery [@lawtancool]: https://github.com/lawtancool @@ -638,6 +638,17 @@ the automation is turned off. [ssdp docs]: /integrations/ssdp/ [zeroconf docs]: /integrations/zeroconf/ +## Release 0.114.4 - August 26 + +- Fix TTS languange characters ([@pvizeli] - [#39211]) ([tts docs]) +- Fix time pattern listener firing a few microseconds early ([@bdraco] - [#39281]) + +[#39211]: https://github.com/home-assistant/core/pull/39211 +[#39281]: https://github.com/home-assistant/core/pull/39281 +[@bdraco]: https://github.com/bdraco +[@pvizeli]: https://github.com/pvizeli +[tts docs]: /integrations/tts/ + ## All changes
From 6eda674e2182d7a911eafb2968860fd77baa2c8d Mon Sep 17 00:00:00 2001 From: viperk1 <51494448+viperk1@users.noreply.github.com> Date: Wed, 26 Aug 2020 14:56:29 -0400 Subject: [PATCH 21/33] Added new supported model (#14321) Added confirmed working model TC-P60ST50 --- source/_integrations/panasonic_viera.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown index 80b8e82dee8..d30e163dd41 100644 --- a/source/_integrations/panasonic_viera.markdown +++ b/source/_integrations/panasonic_viera.markdown @@ -98,6 +98,7 @@ script: - TC-P50ST50 - TC-P55ST50 +- TC-P60ST50 (can't power on) - TC-P60S60 - TC-P65VT30 - TX-32AS520E From 55a91db0406bc6ffc18e2adba071b4c063d13739 Mon Sep 17 00:00:00 2001 From: mdegat01 Date: Wed, 26 Aug 2020 14:59:13 -0400 Subject: [PATCH 22/33] Add information on config check during restart (#14322) The `homeassistant.restart` service also does a config check and creates a persistent notification on failure instead of restarting. Added those details to the service description. --- source/_integrations/homeassistant.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 94fe5ba02a0..0f82403e070 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -24,7 +24,9 @@ Loads the main configuration file (`configuration.yaml`) and all linked files. O ### Service `homeassistant.restart` -Restarts the Home Assistant instance (also reloading the configuration on start). +Restarts the Home Assistant instance (also reloading the configuration on start). + +This will also do a configuration check before doing a restart. If the configuration check fails then Home Assistant will not be restarted, instead a persistent notification with the ID `persistent_notification.homeassistant_check_config` will be created. The logs will show details on what failed the configuration check. ### Service `homeassistant.stop` From 2416f9b743d037bab94d02912febf1f59054c524 Mon Sep 17 00:00:00 2001 From: paulcram <46872797+paulcram@users.noreply.github.com> Date: Thu, 27 Aug 2020 00:54:43 -0700 Subject: [PATCH 23/33] typo (#14323) "...t[h]rough the UI" --- source/_integrations/binary_sensor.template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown index 979ba785bd1..66c0e0e400e 100644 --- a/source/_integrations/binary_sensor.template.markdown +++ b/source/_integrations/binary_sensor.template.markdown @@ -52,7 +52,7 @@ sensors: required: false type: [string, list] unique_id: - description: An ID that uniquely identifies this binary sensor. Set this to an unique value to allow customisation trough the UI. + description: An ID that uniquely identifies this binary sensor. Set this to an unique value to allow customisation through the UI. required: false type: string device_class: From 45f5b617bb1aa139940dbde0e03bc3ebe9a66c32 Mon Sep 17 00:00:00 2001 From: ricardcc <34938675+ricardcc@users.noreply.github.com> Date: Fri, 28 Aug 2020 10:05:34 +0200 Subject: [PATCH 24/33] Update linksys_smart.markdown (#14333) --- source/_integrations/linksys_smart.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/linksys_smart.markdown b/source/_integrations/linksys_smart.markdown index ad8d3a5aaa1..b0adf43f163 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -13,6 +13,7 @@ Tested routers: - Linksys WRT3200ACM MU-MIMO Gigabit Wi-Fi Wireless Router - Linksys WRT1900ACS Dual-band Wi-Fi Router +- Linksys EA6900 AC1900 Dual-Band Wi-Fi Router - Linksys EA8300 Max-Stream AC2200 Tri-Band Wi-Fi Router ## Setup From b61169a3afaf55bd34258f013dcadfdb4f4f9ea5 Mon Sep 17 00:00:00 2001 From: William Sutton Date: Fri, 28 Aug 2020 04:13:06 -0400 Subject: [PATCH 25/33] Update envisalink.markdown (#14331) Added working hostname configuration instructions. IP address and hostname both now work, rather than IP address only. --- source/_integrations/envisalink.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index 0fd9f0b09d0..70b37f4f5b3 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -29,7 +29,7 @@ An `envisalink` section must be present in the `configuration.yaml` file and con ```yaml # Example configuration.yaml entry envisalink: - host: + host: panel_type: HONEYWELL or DSC user_name: YOUR_USERNAME password: YOUR_PASSWORD @@ -54,7 +54,7 @@ envisalink: {% configuration %} host: - description: The IP address of the Envisalink device on your home network. + description: The IP address or hostname (host.fqdn.tld) of the Envisalink device on your home network. required: true type: string panel_type: From e91aad9921ba65ff47b06eca3238bbf5e8f2011d Mon Sep 17 00:00:00 2001 From: Melvin Date: Fri, 28 Aug 2020 10:13:50 +0200 Subject: [PATCH 26/33] Added the new YLDP13YL Yeelight 1S Bulb Colour (#14330) Just added this Yeelight bulb to my configuration and it works out of the box. Just enable LAN control and reference it in the configuration.yml based on IP --- source/_integrations/yeelight.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 5a6aca87c90..3209a249e1d 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -137,6 +137,7 @@ This integration is tested to work with the following models. If you have a diff | `color1` | YLDP02YL | LED Bulb (Color) | | `color1` | YLDP03YL | LED Bulb (Color) - E26 | | `color2` | YLDP06YL | LED Bulb (Color) - 2nd generation | +| `color4` | YLDP13YL | LED Bulb 1S (Color) | | `strip1` | YLDD01YL | Lightstrip (Color) | | `strip1` | YLDD02YL | Lightstrip (Color) | | ? | YLDD04YL | Lightstrip (Color) | From 56a7d501969aa38a9916a051dfc99ecbcb806ace Mon Sep 17 00:00:00 2001 From: Florian Date: Fri, 28 Aug 2020 10:30:44 +0200 Subject: [PATCH 27/33] Add verify_ssl documentation (#14324) Co-authored-by: Franck Nijhof --- source/_integrations/caldav.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 66beb8c86b3..2326ee7afb3 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -107,6 +107,11 @@ days: description: Number of days for the search for upcoming appointments. default: 1 type: integer +verify_ssl: + description: Verify the SSL certificate or not. If using self-signed certificates, this usually needs to be set to "False". + required: false + type: boolean + default: true {% endconfiguration %} ## Sensor attributes From 4c3ac3f4d4390ad114be827b408ae64abcfce426 Mon Sep 17 00:00:00 2001 From: cydia2020 <12470297+cydia2020@users.noreply.github.com> Date: Sat, 29 Aug 2020 01:21:43 +1000 Subject: [PATCH 28/33] opengarage docs - made the previously template sensor based garage_car_present a template binary_sensor (#14319) Co-authored-by: Klaas Schoute --- source/_integrations/opengarage.markdown | 41 +++++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index 956da1bef45..8ce7357c01f 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -79,6 +79,8 @@ covers:

+{% raw %} + ```yaml # Related configuration.yaml entry cover: @@ -94,7 +96,7 @@ sensor: sensors: garage_status: friendly_name: 'Honda Door Status' - value_template: {% raw %}'{% if states.cover.honda %} + value_template: '{% if states.cover.honda %} {% if states.cover.honda.attributes["door_state"] == "open" %} Open {% elif states.cover.honda.attributes["door_state"] == "closed" %} @@ -108,21 +110,30 @@ sensor: {% endif %} {% else %} n/a - {% endif %}'{% endraw %} - garage_car_present: - friendly_name: 'Honda in Garage' - value_template: {% raw %}'{% if states.cover.honda %} - {% if is_state("cover.honda", "open") %} - n/a - {% elif ((states.cover.honda.attributes["distance_sensor"] > 40) and (states.cover.honda.attributes["distance_sensor"] < 100)) %} - Yes - {% else %} - No - {% endif %} - {% else %} - n/a {% endif %}' +binary_sensor: + platform: template + sensors: + honda_in_garage: + friendly_name: "Honda In Garage" + value_template: "{{ state_attr('cover.honda', 'distance_sensor') < 100 }}" + availability_template: >- + {% if is_state('cover.honda','closed') %} + true + {% else %} + unavailable + {% endif %} + icon_template: >- + {% if is_state('binary_sensor.honda_in_garage','on') %} + mdi:car + {% else %} + mdi:car-arrow-right + {% endif %} + unique_id: binary_sensor.honda_in_garage + delay_on: 5 + delay_off: 5 + group: garage: name: Garage @@ -135,8 +146,6 @@ customize: cover.honda: friendly_name: Honda entity_picture: /local/honda.gif - sensor.garage_car_present: - icon: mdi:car ``` {% endraw %} From 4bf391f514e7f1c5bfe99496a9e47881036c1f01 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 28 Aug 2020 09:27:10 -0700 Subject: [PATCH 29/33] Fix typo in Netatmo --- source/_integrations/netatmo.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index c0a97338ac4..c55c92b51a1 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -57,7 +57,7 @@ Menu: **Configuration** -> **Integrations**. Configuration of Netatmo public weather stations is offered from the front end. Enter the Netatmo integration and press the cogwheel. -In the dialogue, it is possible to create, edit and remove public weather sensors. For each area a unique name has to be set along with an area to be covered and whether to display average or maximum values. +In the dialog, it is possible to create, edit and remove public weather sensors. For each area a unique name has to be set along with an area to be covered and whether to display average or maximum values. To edit an existing area simply enter its name and follow the dialog. From 780b674446d2f255543643683f3f00f749789376 Mon Sep 17 00:00:00 2001 From: Daniel Shokouhi Date: Fri, 28 Aug 2020 11:04:01 -0700 Subject: [PATCH 30/33] Android blog for release 2.3.0 (#14334) --- .../2020-08-28-android-230-release.markdown | 91 ++++++++++++++++++ .../Companion.png | Bin 0 -> 65901 bytes .../app_theme.png | Bin 0 -> 166999 bytes .../manage_sensors.png | Bin 0 -> 51520 bytes .../2020-08-28-android-230-release/nfc.png | Bin 0 -> 342309 bytes .../sensor_management.png | Bin 0 -> 43492 bytes .../template_widget.png | Bin 0 -> 50729 bytes 7 files changed, 91 insertions(+) create mode 100644 source/_posts/2020-08-28-android-230-release.markdown create mode 100644 source/images/blog/2020-08-28-android-230-release/Companion.png create mode 100644 source/images/blog/2020-08-28-android-230-release/app_theme.png create mode 100644 source/images/blog/2020-08-28-android-230-release/manage_sensors.png create mode 100644 source/images/blog/2020-08-28-android-230-release/nfc.png create mode 100644 source/images/blog/2020-08-28-android-230-release/sensor_management.png create mode 100644 source/images/blog/2020-08-28-android-230-release/template_widget.png diff --git a/source/_posts/2020-08-28-android-230-release.markdown b/source/_posts/2020-08-28-android-230-release.markdown new file mode 100644 index 00000000000..76d772b84fc --- /dev/null +++ b/source/_posts/2020-08-28-android-230-release.markdown @@ -0,0 +1,91 @@ +--- +title: "Home Assistant Companion Android App: New Features" +description: "What's new with the Home Assistant Companion Android App in 2.3.0" +date: 2020-08-28 00:00:00 +date_formatted: "August 28, 2020" +comments: true +author: Daniel Shokouhi +categories: Release-Notes +og_image: /images/blog/2020-08-28-android-230-release/Companion.png +--- + +Hey there, its been so long since we last gave an update on our mobile apps we thought it would be time to give you more updates! This time around we will focus on whats new in the Android app. There have been a few releases so were going to cover everything new up until version 2.3.0 which was just released to the Google Play Store. + +## Manage Sensors + +Starting from version 2.2.0 there is a new Manage Sensors screen that you can find under App Configuration. Users can now disable sensors they don't want while continuing to receive updates from the sensors they do care about. This includes turning off the Geocoded sensor while keeping location tracking on. Speaking of which the 2 location toggles that used to be found in App Configuration are now located in this new screen. You can expect to see the live data that was recently sent over to your Home Assistant server as well as the attributes and other sensor details. + +

+Screenshot of Manage Sensors +Screenshot of the Manage Sensors. +

+ +

+Screenshot of Sensor Management +Screenshot of Sensor Management. +

+ +## New Sensors + +We have had quite a bit of sensors get added since we last spoke so here's whats new. Some of these sensors will update their state in your Home Assistant server upon certain state changes. All of the sensors listed below will also update during the normal 15 minute update interval. To get more details about what to expect from each sensor check out the [docs](https://companion.home-assistant.io/docs/core/sensors). + +Available for Google Play Store version only: + +* Activity + +Available for all users: + +* Audio +* Bluetooth +* Do Not Disturb +* Last Reboot +* Light +* Phone +* Pressure +* Proximity +* Next Alarm +* Sim 1 & 2 +* Steps +* Storage + +## Sensor Enhancements + +In addition to all the new sensors mentioned above we also had some improvements to our existing set of sensors. The battery state sensor now includes the battery health as a attribute and will also issue a second update call a few seconds after being plugged in so the state can update faster. The WiFi connection sensor was also updated so the state and certain attributes will update upon any network detected change. This state change also means that if you have multiple access points you will be able to see the device switching in real time. + +## NFC + +The app now supports reading and writing to NFC tags so you can build automations off scanning the tag. Home Assistant Core 0.114+ is required for this feature. Keep in mind that certain phones will require you to have your phone unlocked before it can read the tag. More details about how it works in the [docs](https://companion.home-assistant.io/docs/integrations/universal-links). + +

+Screenshot of NFC +Screenshot of NFC. +

+ +## Template Widget + +A new widget was added to give the user full control over creating a template widget with just about any data they want! Users will see the template rendering in real time as they build it. I personally recommend to start building your templates on a desktop as it can feel a bit cumbersome on a phone or tablet. This widget will update every 15 minutes or when it is tapped. + +

+Screenshot of the Template Widget +Screenshot of the Template Widget. +

+ + +## Theming + +You can now set the theme of the app independently from the device theme. This is useful for users who like a dark theme on their device but use a light theme for Home Assistant. In addition to this change we also had a few more fixes around themes. + +

+Screenshot of App Theme selection +Screenshot of App Theme selection. +

+ +## Additional Improvements + +* Support for H265 videos was added +* Entity state widget was enhanced to allow for multiple attributes and a custom separator +* Widgets were enhanced overall to allow material icons +* Notifications can now use `:smiley:` like you can in Discord +* Lots of fixes across the board + +Special thanks to [chriss158](https://github.com/chriss158), [colincachia](https://github.com/colincachia), [David-Development](https://github.com/David-Development), [JBassett](https://github.com/JBassett), [klejejs](https://github.com/klejejs), [noam148](https://github.com/noam148), [skynetua](https://github.com/skynetua) and [uvjustin](https://github.com/uvjustin) for all of your contributions. So keep them bug reports and feature requests [coming](https://github.com/home-assistant/android/issues/new/choose), we'll chat again soon! \ No newline at end of file diff --git a/source/images/blog/2020-08-28-android-230-release/Companion.png b/source/images/blog/2020-08-28-android-230-release/Companion.png new file mode 100644 index 0000000000000000000000000000000000000000..28230a2d1a6a6a416a68c3c5a4a075f9c81a3e55 GIT binary patch literal 65901 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