From e382dad5ecdc54987a72ed80126c20597a255286 Mon Sep 17 00:00:00 2001 From: majuss Date: Thu, 20 Jun 2019 14:42:34 +0200 Subject: [PATCH 01/74] Added documentation for the ELV PCA 301 smart emeter switch (#8717) * added PCA 301 docu * added reference to hexfile for jeelink clone * cosmetics * typo * cosmetics; version bump * added name conf; deleted linebreak * :pencil2: Tweaks --- source/_components/switch.pca.markdown | 40 +++++++++++++++++++++++++ source/images/supported_brands/elv.png | Bin 0 -> 46260 bytes 2 files changed, 40 insertions(+) create mode 100644 source/_components/switch.pca.markdown create mode 100644 source/images/supported_brands/elv.png diff --git a/source/_components/switch.pca.markdown b/source/_components/switch.pca.markdown new file mode 100644 index 00000000000..55c53006303 --- /dev/null +++ b/source/_components/switch.pca.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "ELV PCA 301 Switch" +description: "Instructions on how to integrate ELV PCA 301 switches into Home Assistant." +date: 2019-02-24 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elv.png +ha_category: Switch +ha_iot_class: Local Polling +ha_release: 0.95 +--- + +The `pca` switch platform allows you to control the state of your [ELV PCA 301 smart switch](https://www.elv.de/funkschaltsteckdose-fuer-energiekostenmonitor-pca-301.html). You need an 868 MHz interface like the [JeeLink](https://www.digitalsmarties.net/products/jeelink) flashed with the [pca-hex firmware](https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/firmware/JeeLink_PCA301.hex). + +## {% linkable_title Configuration %} + +To use your PCA 301 switch or socket in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: pca + device: SERIAL_PORT +``` + +This platform will add all PCA 301 switches which are in range. You can read the total used energy in KWh and the current power in Watt. + +{% configuration %} +device: + description: "The path to you serial console. Get it via: `ls /dev/tty*`." + required: true + type: string +name: + description: Default name for the plugs. + required: false + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/elv.png b/source/images/supported_brands/elv.png new file mode 100644 index 0000000000000000000000000000000000000000..139d727b3f129f427371fabb6bb0402331322131 GIT binary patch literal 46260 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 Date: Thu, 20 Jun 2019 15:10:05 +0200 Subject: [PATCH 02/74] =?UTF-8?q?Update=20M=C3=A9t=C3=A9o=20France=20compo?= =?UTF-8?q?nent=20documentation=20(#9239)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Météo France component documentation * Apply suggestions from code review Co-Authored-By: oncleben31 * :pencil2: Tweak --- source/_components/meteo_france.markdown | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/_components/meteo_france.markdown b/source/_components/meteo_france.markdown index aa66685875b..3226843488d 100644 --- a/source/_components/meteo_france.markdown +++ b/source/_components/meteo_france.markdown @@ -26,7 +26,7 @@ There is currently support for the following device types within Home Assistant: - Sensor - Weather -It displays the current weather along with a 4 days forecast and can create sensors based on the `monitored_conditions` set in your `configuration.yaml` file. +It displays the current weather along with a 4 days forecast and can create sensors based on the `monitored_conditions` set in your `configuration.yaml` file, including weather alerts from [Vigilance Météo-France](http://vigilance.meteofrance.com) ## {% linkable_title Configuration %} @@ -66,6 +66,8 @@ meteo_france: description: Probability of snow for the day. thunder_chance: description: Probability of thunderstorm for the day. + weather_alert: + description: Weather alert status. {% endconfiguration %} ### {% linkable_title About `city` configuration %} @@ -103,6 +105,16 @@ Possible value for each intervals attributes are: - 3 Moderate rain - 4 Heavy rain +### {% linkable_title About `weather_alert` sensor %} + +

+ The weather alert is available for the metropolitan France. +

+ +The `weather_alert` sensor value give the current weather alert status for the department linked to the city. Data is retrieve from [Météo-France vigilance website](http://vigilance.meteofrance.com/). + +The sensor attributes give access to each type of alerts and date of the bulletin emitted by Météo-France. + ### {% linkable_title Complete example %} This is an example for 3 cities forecast with different monitored conditions: @@ -121,6 +133,7 @@ meteo_france: - wind_speed - temperature - uv + - weather_alert - city: 'Oslo, norvege' monitored_conditions: - temperature From 536d0206db11ae5ef62efa25e4b8a130b304a582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Sat, 22 Jun 2019 05:55:32 +0200 Subject: [PATCH 03/74] Documentation for home-assistant/home-assistant#24675 (#9674) --- source/_components/frontend.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index d287be2d843..aae2db6d12c 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -45,8 +45,12 @@ frontend: description: "List of additional [resources](/developers/frontend_creating_custom_ui/) to load in `latest` javascript mode." required: false type: list - extra_html_url_es5: - description: "List of additional [resources](/developers/frontend_creating_custom_ui/) to load in `es5` javascript mode." + extra_module_url: + description: "List of additional javascript modules to load." + required: false + type: list + extra_js_url_es5: + description: "List of additional javascript code to load in `es5` javascript mode." required: false type: list development_repo: From 8d99182d7866aa6fb9a8fa14da8103ea3d692739 Mon Sep 17 00:00:00 2001 From: Guy Khmelnitsky Date: Sat, 22 Jun 2019 00:05:11 -0700 Subject: [PATCH 04/74] Update Geocoding Quickstart link in Google Cloud (#9673) --- source/_components/google_cloud.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/google_cloud.markdown b/source/_components/google_cloud.markdown index ff386fe3133..dbd70115dda 100644 --- a/source/_components/google_cloud.markdown +++ b/source/_components/google_cloud.markdown @@ -31,7 +31,7 @@ API key obtaining process described in corresponding documentation: * [Text-to-Speach](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) * [Speach-to-Text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) -* [Geocoding](https://cloud.google.com/translate/docs/quickstart) +* [Geocoding](https://developers.google.com/maps/documentation/geocoding/start) Basic instruction for all APIs: From 4e9d88c40dc6e6a4a282f9e1199cca6e4f390069 Mon Sep 17 00:00:00 2001 From: Penny Wood Date: Sun, 23 Jun 2019 01:44:03 +0800 Subject: [PATCH 05/74] Documentation for template expand (#9394) * Documentation for template expand * :pencil2: Tweak --- .../_docs/configuration/templating.markdown | 69 ++++++++++++++++--- 1 file changed, 61 insertions(+), 8 deletions(-) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index c7922331d79..6f01adea669 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -33,7 +33,6 @@ We will not go over the basics of the syntax, as Jinja2 does a great job of this The frontend has a template editor tool to help develop and debug templates. Click on the template developer tool icon icon, create your template in the _Template editor_ and check the results on the right. - Templates can get big pretty fast. To keep a clear overview, consider using YAML multiline strings to define your templates: {% raw %} @@ -54,9 +53,10 @@ script: ## {% linkable_title Home Assistant template extensions %} - Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters. +Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters. ### {% linkable_title States %} + - Iterating `states` will yield each state sorted alphabetically by entity ID. - Iterating `states.domain` will yield each state of that domain sorted alphabetically by entity ID. - `states.sensor.temperature` returns the state object for `sensor.temperature`. @@ -67,7 +67,6 @@ script: Besides the normal [state object methods and properties](/topics/state_object/), `states.sensor.temperature.state_with_unit` will print the state of the entity and, if available, the unit. - #### {% linkable_title States examples %} The next two statements result in the same value if the state exists. The second one will result in an error if the state does not exist. @@ -112,7 +111,6 @@ Other state examples: ``` {% endraw %} - ### {% linkable_title Attributes %} You can print an attribute with `state_attr` if state is defined. @@ -143,8 +141,33 @@ With strings: ``` {% endraw %} +### {% linkable_title Working with Groups %} + +The `expand` function and filter can be used to sort entities and expand groups. It outputs a sorted array of entities with no duplicates. + +#### {% linkable_title Expand examples %} + +{% raw %} +```text +{% for tracker in expand('device_tracker.paulus', 'group.child_trackers') %} + {{ state_attr(tracker, 'battery') }} + {%- if not loop.last %}, {% endif -%} +{% endfor %} +``` +{% endraw %} + +The same thing can also be expressed as a filter: + +{% raw %} +```text +{{ ['device_tracker.paulus', 'group.child_trackers'] | expand + | selectattr("attributes.battery", 'defined') + | join(', ', attribute="attributes.battery") }} +``` +{% endraw %} ### {% linkable_title Time %} + - `now()` will be rendered as the current time in your time zone. - For specific values: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` - `utcnow()` will be rendered as UTC time. @@ -156,10 +179,12 @@ With strings: - Filter `timestamp_custom(format_string, local_boolean)` will convert a UNIX timestamp to a custom format, the use of a local timestamp is default. Supports the standard [Python time formatting options](https://docs.python.org/3/library/time.html#time.strftime). ### {% linkable_title Distance %} + - `distance()` will measure the distance in kilometers between home, entity, coordinates. - `closest()` will find the closest entity. #### {% linkable_title Distance examples %} + If only one location is passed in, Home Assistant will measure the distance from home. {% raw %} @@ -174,12 +199,14 @@ These can also be combined in any combination: ``` {% endraw %} -Find entities closest to the Home Assistant location: +#### {% linkable_title Closest examples %} + +The closest function and filter will find the closest entity to the Home Assisant location: {% raw %} ```text Query all entities: {{ closest(states) }} -Query all entities of a specific domain: {{ closest('states.device_tracker') }} +Query all entities of a specific domain: {{ closest(states.device_tracker) }} Query all entities in group.children: {{ closest('group.children') }} Query all entities in group.children: {{ closest(states.group.children) }} ``` @@ -203,11 +230,37 @@ Since closest returns a state, we can combine it with distance too. ``` {% endraw %} +The last argument of the closest function has an implicit `expand`, and can take any iterable sequence of states or entity IDs, and will expand groups: + +{% raw %} +```text +Closest out of given entities: + {{ closest(['group.children', states.device_tracker]) }} +Closest to a coordinate: + {{ closest(23.456, 23.456, ['group.children', states.device_tracker]) }} +Closest to some entity: + {{ closest(states.zone.school, ['group.children', states.device_tracker]) }} +``` + +It will also work as a filter over a iterable group of entities or groups: + +```text +Closest out of given entities: + {{ ['group.children', states.device_tracker] | closest }} +Closest to a coordinate: + {{ ['group.children', states.device_tracker] | closest(23.456, 23.456) }} +Closest to some entity: + {{ ['group.children', states.device_tracker] | closest(states.zone.school) }} +``` + +{% endraw %} ### {% linkable_title Formatting %} + - `float` will format the output as float. ### {% linkable_title Numeric functions and filters %} + Some of these functions can also be used in a [filter](http://jinja.pocoo.org/docs/dev/templates/#id11). This means they can act as a normal function like this `sqrt(2)`, or as part of a filter like this `2|sqrt`. - `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter. @@ -225,6 +278,7 @@ Some of these functions can also be used in a [filter](http://jinja.pocoo.org/do - Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values. ### {% linkable_title Regular expressions %} + - Filter `string|regex_match(find, ignorecase=FALSE)` will match the find expression at the beginning of the string using regex. - Filter `string|regex_search(find, ignorecase=FALSE)` will match the find expression anywhere in the string using regex. - Filter `string|regex_replace(find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex. @@ -328,13 +382,13 @@ To evaluate a response, go to the Date: Sun, 23 Jun 2019 11:01:12 +0100 Subject: [PATCH 06/74] :pencil2: Fix typos (#9678) --- source/_components/google_cloud.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/google_cloud.markdown b/source/_components/google_cloud.markdown index dbd70115dda..e7537126cf6 100644 --- a/source/_components/google_cloud.markdown +++ b/source/_components/google_cloud.markdown @@ -29,8 +29,8 @@ tts: API key obtaining process described in corresponding documentation: -* [Text-to-Speach](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) -* [Speach-to-Text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) +* [Text-to-Speech](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) +* [Speech-to-Text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) * [Geocoding](https://developers.google.com/maps/documentation/geocoding/start) Basic instruction for all APIs: @@ -70,7 +70,7 @@ The Cloud Text-to-Speech API is priced monthly based on the amount of characters | Standard (non-WaveNet) voices | 0 to 4 million characters | $4.00 USD / 1 million characters | | WaveNet voices | 0 to 1 million characters | $16.00 USD / 1 million characters | -### {% linkable_title Text-to-Speach configuration %} +### {% linkable_title Text-to-Speech configuration %} {% configuration %} key_file: From 804bee2294d8c50dfbfea3ee6f74eb9b0024e02c Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Mon, 24 Jun 2019 10:05:57 -0500 Subject: [PATCH 07/74] Add new Life360 show_as_state option (#9684) --- source/_components/life360.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_components/life360.markdown b/source/_components/life360.markdown index 51cfae1e40a..dd01a0624a6 100644 --- a/source/_components/life360.markdown +++ b/source/_components/life360.markdown @@ -94,6 +94,10 @@ prefix: required: false type: string default: life360 +show_as_state: + description: If device is not in a Home Assistant zone, it is determined to be driving (see attribute of same name) and `driving` is specified, the state of entity will be set to `driving`. If device is not in a zone, it is determined to be moving and `moving` is specified, then state of entity will be set to `moving`. + required: false + type: [string, list] warning_threshold: description: See [Communication Errors](#communication-errors) for a detailed description. required: false @@ -166,6 +170,9 @@ life360: max_gps_accuracy: 200 max_update_wait: minutes: 45 + show_as_state: + - driving + - moving # Set comm error thresholds so first is not logged, # second is logged as a WARNING, and third and fourth # are logged as ERRORs. From 4938733ed11ee015392b9379f8fdab96bb39f2f8 Mon Sep 17 00:00:00 2001 From: Matte23 Date: Wed, 26 Jun 2019 01:13:47 +0200 Subject: [PATCH 08/74] Add support for IPP Printers to CUPS integration (#9690) * Add support for IPP Printers to CUPS integration * Update source/_components/cups.markdown Co-Authored-By: Klaas Schoute --- source/_components/cups.markdown | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/source/_components/cups.markdown b/source/_components/cups.markdown index e9caecc22cc..62ca1bca705 100644 --- a/source/_components/cups.markdown +++ b/source/_components/cups.markdown @@ -17,14 +17,17 @@ redirect_from: --- -The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers. +The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. -To set up the sensor the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers". +If you want to use an existing CUPS server the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers".

+If you want to communicate directly with the printer, you need the IP, the port number and the "Printer Name". Also your printer must support the IPP protocol. The port number is usually 631, while the "Printer Name" is usually "ipp/print". Remember to set "is_cups_server" to false. +If the platform fails to load with those settings, you can look into the web interface of your printer for the port number and the "Printer Name". The procedure is different for different models. + To enable the CUPS sensor, add the following lines to your `configuration.yaml`: ```yaml @@ -38,21 +41,40 @@ sensor: {% configuration %} printers: - description: List of printers to add. + description: List of printers to add. If you're not using a CUPS server, add here your "Printer Name". required: true type: list host: - description: IP address of the CUPS print server. + description: The IP address of the CUPS print server or of the printer. required: false type: string default: 127.0.0.1 port: - description: Port of the CUPS print server. + description: The port number of the CUPS print server or of the printer. required: false type: integer default: 631 +is_cups_server: + description: Set true if you want to use a CUPS print server, set false otherwise. + required: false + type: boolean + default: true {% endconfiguration %} +## {% linkable_title Examples %} + +Default configuration for an IPP printer: + +```yaml +# Example configuration.yaml entry for an IPP printer +sensor: + - platform: cups + host: PRINTER_IP + is_cups_server: false + printers: + - ipp/print +``` +

You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`).

From 3ebcc2e7bc6babb323ac60376d8e6ffb12da6e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20P=C3=A9rez?= Date: Wed, 26 Jun 2019 01:16:02 -0300 Subject: [PATCH 09/74] vlc-telnet component documentation added (#9558) * vlc-telnet component documentation added * Updated the documentation to the last changes on the PR * Update source/_components/vlc-telnet.markdown Co-Authored-By: Klaas Schoute * Update source/_components/vlc-telnet.markdown Co-Authored-By: Klaas Schoute * Update source/_components/vlc-telnet.markdown Co-Authored-By: Klaas Schoute * Update source/_components/vlc-telnet.markdown Co-Authored-By: Klaas Schoute * Accepted suggestions by @klaasnicolaas * Configuration example and firewall recomendation --- source/_components/vlc-telnet.markdown | 71 ++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 source/_components/vlc-telnet.markdown diff --git a/source/_components/vlc-telnet.markdown b/source/_components/vlc-telnet.markdown new file mode 100644 index 00000000000..51f3ffd520f --- /dev/null +++ b/source/_components/vlc-telnet.markdown @@ -0,0 +1,71 @@ +--- +layout: page +title: "VLC Telnet" +description: "Instructions on how to integrate VLC media player into Home Assistant using the telnet interface." +date: 2019-06-02 23:58 +sidebar: true +comments: false +sharing: true +footer: true +logo: videolan.png +ha_category: + - Media Player +ha_release: 0.95 +ha_iot_class: Local Polling +--- + +The `vlc-telnet` platform allows you to control a [VLC media player](http://www.videolan.org/vlc/index.html) using the built in telnet interface. + +To add a VLC media player to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: vlc-telnet + host: IP_ADDRESS + password: PASSWORD +``` + +{% configuration %} +name: + default: VLC-TELNET + description: The name to use in the frontend. + required: false + type: string +pasword: + description: The password to control the VLC through the telnet interface. + required: true + type: string +host: + description: The hostname or IP address where the VLC Player is running. + required: true + type: string +port: + default: 4212 + description: The port number where the VLC Player is running. + required: false + type: integer +{% endconfiguration %} + +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. + +## {% linkable_title Full configuration %} + +A full configuration for VLC could look like the one below: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: vlc-telnet + name: Remote Player + host: 192.168.1.48 + port: 4212 + password: your-secure-password +``` + +##### {% linkable_title Additional configuration for Rasperry Pi %} + +You can run a VLC Media Player inside your Hassio installation using the [hassio-local-vlc add-on](https://github.com/rodripf/hassio-local-vlc). Using it you can play files on the local network, Internet or files and playlist locally saved to the /share folder of your Hassio installation. From 71fc25730c24d6854ad71a86da093617959a9270 Mon Sep 17 00:00:00 2001 From: Tejpal Sahota Date: Fri, 28 Jun 2019 09:05:34 -0400 Subject: [PATCH 10/74] updated default_encoder to mp3 (#9704) --- source/_components/google_cloud.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/google_cloud.markdown b/source/_components/google_cloud.markdown index e7537126cf6..1571e63bfc0 100644 --- a/source/_components/google_cloud.markdown +++ b/source/_components/google_cloud.markdown @@ -95,7 +95,7 @@ encoding: description: "Default audio encoder. Supported encodings are `ogg_opus`, `mp3` and `linear16`." required: false type: string - default: ogg_opus + default: mp3 speed: description: "Default rate/speed of the voice, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed." required: false From d428b3c1b3045485a48942cf3b2f5a41f5f02fce Mon Sep 17 00:00:00 2001 From: mvn23 Date: Fri, 28 Jun 2019 21:15:50 +0200 Subject: [PATCH 11/74] Update docs to reflect multiple devices support in opentherm_gw (#9176) * Update docs to reflect support for multiple OpenTherm Gateway devices. * Update to reflect removing the 'monitored_variables' option. * Change bold and newline notation to markdown --- source/_components/opentherm_gw.markdown | 577 ++++++++++++++--------- 1 file changed, 342 insertions(+), 235 deletions(-) diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown index 2cb03e5984e..51da98d68cf 100644 --- a/source/_components/opentherm_gw.markdown +++ b/source/_components/opentherm_gw.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "OpenTherm Gateway Hub" +title: "OpenTherm Gateway" description: "Control your OpenTherm Gateway from Home Assistant." date: 2018-10-07 16:23 sidebar: true @@ -23,265 +23,58 @@ redirect_from: The `opentherm_gw` component is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. -There is currently support for the following device types within Home Assistant: - -- Binary Sensor -- Climate -- Sensor - -When enabled, this component will automatically add its [`climate` entity](/components/climate.opentherm_gw) to Home Assistant. +This component will add a single `climate` entity and multiple `sensor` and `binary_sensor` entities to Home Assistant for each configured gateway.

The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat.

# {% linkable_title Configuration %} - +In this example, one gateway is configured with `gateway_id` `living_room`. ```yaml # Example configuration.yaml entry opentherm_gw: - device: /dev/ttyUSB0 + living_room: + device: /dev/ttyUSB0 ``` +Each configured gateway accepts the following configuration options. {% configuration %} device: description: "Path to OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)." required: true type: string +name: + description: "The friendly name used for the entities added for the gateway." + required: false + type: string + default: "The `gateway_id` of the gateway." climate: description: "Settings for the `opentherm_gw` climate entity." required: false type: map keys: - name: - description: "The name for the device within Home Assistant." - required: false - type: string - default: "OpenTherm Gateway" precision: description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`." required: false type: float default: "`0.5` for Celsius and `1.0` for Fahrenheit." floor_temperature: - description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `true` to override Home Assistant and round to the lower value according to the configured `precision`." + description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `true` to override this behavior and round to the lower value according to the configured `precision`." required: false type: boolean default: false -monitored_variables: - description: "A list of variables to expose as sensors." - required: false - type: list - keys: - burner_hours: - description: Boiler flame on time. - burner_starts: - description: Number of burner starts. - ch_pump_hours: - description: Central heating pump running time. - ch_pump_starts: - description: Number of central heating pump starts. - ch_water_pressure: - description: Central heating water pressure. - ch_water_temp: - description: Central heating water temperature. - ch_water_temp_2: - description: Central heating 2 water temperature. - control_setpoint: - description: Central heating water target temperature. - control_setpoint_2: - description: Central heating 2 water target temperature. - cooling_control: - description: Cooling control signal value. - dhw_burner_hours: - description: Hot water flame on time. - dhw_burner_starts: - description: Number of hot water burner starts. - dhw_flow_rate: - description: Hot water flow rate. - dhw_pump_hours: - description: Hot water pump running time. - dhw_pump_starts: - description: Number of hot water pump starts. - dhw_setpoint: - description: Hot water target temperature. - dhw_temp: - description: Hot water temperature. - dhw_temp_2: - description: Hot water 2 temperature. - exhaust_temp: - description: Boiler exhaust temperature. - master_ch2_enabled: - description: Thermostat requests central heating 2 on. - master_ch_enabled: - description: Thermostat requests central heating on. - master_cooling_enabled: - description: Thermostat requests cooling. - master_dhw_enabled: - description: Thermostat requests hot water to be heated. - master_memberid: - description: Thermostat member ID. - master_ot_version: - description: Thermostat OpenTherm protocol version. - master_otc_enabled: - description: Thermostat is using outside temperature correction. - master_product_type: - description: Thermostat product type. - master_product_version: - description: Thermostat product version. - max_ch_setpoint: - description: Boiler maximum central heating water temperature. - oem_diag: - description: OEM diagnostic information. - otgw_about: - description: OpenTherm Gateway firmware version. - otgw_build: - description: OpenTherm Gateway firmware build date and time. - otgw_clockmhz: - description: OpenTherm Gateway firmware design clock speed. - otgw_dhw_ovrd: - description: OpenTherm Gateway hot water override status. - otgw_gpio_a: - description: OpenTherm Gateway GPIO port A operating mode. - otgw_gpio_a_state: - description: OpenTherm Gateway GPIO A state. - otgw_gpio_b: - description: OpenTherm Gateway GPIO port B operating mode. - otgw_gpio_b_state: - description: OpenTherm Gateway GPIO B state. - otgw_ignore_transitions: - description: OpenTherm Gateway ignores ripples in the signal during high/low transitions. - otgw_led_a: - description: OpenTherm Gateway LED A operating mode. - otgw_led_b: - description: OpenTherm Gateway LED B operating mode. - otgw_led_c: - description: OpenTherm Gateway LED C operating mode. - otgw_led_d: - description: OpenTherm Gateway LED D operating mode. - otgw_led_e: - description: OpenTherm Gateway LED E operating mode. - otgw_led_f: - description: OpenTherm Gateway LED F operating mode. - otgw_mode: - description: OpenTherm Gateway operating mode. - otgw_ovrd_high_byte: - description: OpenTherm Gateway overrides high byte with message ID 100. - otgw_setback_temp: - description: OpenTherm Gateway setback temperature for `away mode`. - otgw_setpoint_ovrd_mode: - description: OpenTherm Gateway central heating setpoint override mode. - otgw_smart_pwr: - description: OpenTherm Gateway smart power operating mode. - otgw_thermostat_detect: - description: OpenTherm Gateway automatic thermostat detection status. - otgw_vref: - description: OpenTherm Gateway voltage reference setting. - outside_temp: - description: Outside temperature as reported in the OpenTherm protocol. - relative_mod_level: - description: Relative modulation level. - remote_rw_dhw: - description: Boiler supports writing hot water setpoint. - remote_rw_max_ch: - description: Boiler supports writing maximum central heating setpoint. - remote_transfer_dhw: - description: Boiler supports reading hot water setpoint. - remote_transfer_max_ch: - description: Boiler supports reading maximum central heating setpoint. - return_water_temp: - description: Boiler return water temperature. - room_setpoint: - description: Room target temperature. - room_setpoint_2: - description: Room 2 target temperature. - room_setpoint_ovrd: - description: Room target temperature override value. - room_temp: - description: Current room temperature. - rovrd_auto_prio: - description: Programmed room setpoint change takes priority over remote override setting. - rovrd_man_prio: - description: Manual room setpoint change takes priority over remote override setting. - slave_air_pressure_fault: - description: Boiler reports air pressure fault. - slave_ch2_active: - description: Boiler reports central heating 2 active. - slave_ch2_present: - description: Boiler has a central heating 2 circuit. - slave_ch_active: - description: Boiler reports central heating active. - slave_ch_max_setp: - description: Maximum boiler supported central heating water target temperature. - slave_ch_min_setp: - description: Minimum boiler supported central heating water target temperature. - slave_control_type: - description: Boiler control type ('off' is modulating, 'on' is on/off). - slave_cooling_active: - description: Boiler reports cooling active. - slave_cooling_supported: - description: Boiler supports cooling. - slave_dhw_active: - description: Boiler reports hot water active. - slave_dhw_config: - description: Boiler hot water mode ('off' is instantaneous or unspecified, 'on' is storage tank). - slave_dhw_max_setp: - description: Maximum boiler supported hot water target temperature. - slave_dhw_min_setp: - description: Minimum boiler supported hot water target temperature. - slave_dhw_present: - description: Boiler reports hot water present. - slave_diagnostic_indication: - description: Boiler diagnostic indication. - slave_fault_indication: - description: Boiler fault indication. - slave_flame_on: - description: Boiler reports flame on. - slave_gas_fault: - description: Boiler reports gas fault. - slave_low_water_pressure: - description: Boiler reports low water pressure. - slave_master_low_off_pump: - description: Boiler supports low-off and pump control commands (this sensor is inverted, 'on' is not supported, 'off' is supported) - slave_max_capacity: - description: Maximum boiler capacity. - slave_max_relative_modulation: - description: Maximum boiler supported relative modulation. - slave_memberid: - description: Boiler member ID. - slave_min_mod_level: - description: Minimum boiler supported modulation level. - slave_oem_fault: - description: Boiler OEM fault indication. - slave_ot_version: - description: Boiler OpenTherm protocol version. - slave_product_type: - description: Boiler product type. - slave_product_version: - description: Boiler product version. - slave_remote_reset: - description: Boiler reports 'lockout-reset' supported. - slave_service_required: - description: Boiler reports service required. - slave_water_overtemp: - description: Boiler reports water overtemperature. - solar_coll_temp: - description: Solar collector temperature. - solar_storage_temp: - description: Solar storage unit temperature. {% endconfiguration %} -## {% linkable_title Supported Variables %} - -The list above contains all supported variables. Note that not all boilers and thermostats properly support all variables, so the fact that a variable is listed here and published by your system does not necessarily mean that you will get useful data out of it. To see which variables are published in your situation, enable debug logging for the `opentherm_gw` component and look for the status updates. - # {% linkable_title Services %} ### {% linkable_title Service `opentherm_gw.reset_gateway` %} Reset the OpenTherm Gateway. -This service takes no parameters. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. ### {% linkable_title Service `opentherm_gw.set_clock` %} @@ -289,6 +82,7 @@ Provide the time and day of week to the OpenTherm Gateway. The value provided he | Service data attribute | Optional | Default | Description | | ---------------------- | -------- | ------- | ----------- | +| `gateway_id` | no | N/A | The `gateway_id` as specified in `configuration.yaml`. | `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. | `time` | yes | Current time | Time in 24h format. @@ -304,6 +98,7 @@ In a normal situation, the thermostat will calculate and control the central hea | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override.

@@ -317,6 +112,7 @@ For an explanation of the possible modes, see [GPIO modes](#gpio-modes) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `id` | no | The GPIO ID, `A` or `B`. | `mode` | no | The GPIO mode to be set. @@ -327,6 +123,7 @@ For a list of possible modes with explanation, see [LED modes](#led-modes) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `id` | no | The LED ID, accepted values are `A` through `F`. | `mode` | no | The LED mode to be set. @@ -342,6 +139,7 @@ In a normal situation, the thermostat will control the maximum modulation level | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override.

@@ -355,6 +153,7 @@ If your thermostat is unable to display an outside temperature and does not supp | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). ### {% linkable_title Service `opentherm_gw.set_setback_temperature` %} @@ -364,8 +163,319 @@ The value you provide here will be used with the GPIO `home` (5) and `away` (6) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | +| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. | `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. +## {% linkable_title Sensors %} + +The following `sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. +

+Not all boilers and thermostats properly support all OpenTherm features, so not all of the sensors will have useful values. +

+ +- **burner_hours** + Boiler flame on time. + +- **burner_starts** + Number of burner starts. + +- **ch_pump_hours** + Central heating pump running time. + +- **ch_pump_starts** + Number of central heating pump starts. + +- **ch_water_pressure** + Central heating water pressure. + +- **ch_water_temp** + Central heating water temperature. + +- **ch_water_temp_2** + Central heating 2 water temperature. + +- **control_setpoint** + Central heating water target temperature. + +- **control_setpoint_2** + Central heating 2 water target temperature. + +- **cooling_control** + Cooling control signal value. + +- **dhw_burner_hours** + Hot water flame on time. + +- **dhw_burner_starts** + Number of hot water burner starts. + +- **dhw_flow_rate** + Hot water flow rate. + +- **dhw_pump_hours** + Hot water pump running time. + +- **dhw_pump_starts** + Number of hot water pump starts. + +- **dhw_setpoint** + Hot water target temperature. + +- **dhw_temp** + Hot water temperature. + +- **dhw_temp_2** + Hot water 2 temperature. + +- **exhaust_temp** + Boiler exhaust temperature. + +- **master_memberid** + Thermostat member ID. + +- **master_ot_version** + Thermostat OpenTherm protocol version. + +- **master_product_type** + Thermostat product type. + +- **master_product_version** + Thermostat product version. + +- **max_ch_setpoint** + Boiler maximum central heating water temperature. + +- **oem_diag** + OEM diagnostic information. + +- **otgw_about** + OpenTherm Gateway firmware version. + +- **otgw_build** + OpenTherm Gateway firmware build date and time. + +- **otgw_clockmhz** + OpenTherm Gateway firmware design clock speed. + +- **otgw_dhw_ovrd** + OpenTherm Gateway hot water override status. + +- **otgw_gpio_a** + OpenTherm Gateway GPIO port A operating mode. + +- **otgw_gpio_b** + OpenTherm Gateway GPIO port B operating mode. + +- **otgw_led_a** + OpenTherm Gateway LED A operating mode. + +- **otgw_led_b** + OpenTherm Gateway LED B operating mode. + +- **otgw_led_c** + OpenTherm Gateway LED C operating mode. + +- **otgw_led_d** + OpenTherm Gateway LED D operating mode. + +- **otgw_led_e** + OpenTherm Gateway LED E operating mode. + +- **otgw_led_f** + OpenTherm Gateway LED F operating mode. + +- **otgw_mode** + OpenTherm Gateway operating mode. + +- **otgw_setback_temp** + OpenTherm Gateway setback temperature for `away mode`. + +- **otgw_setpoint_ovrd_mode** + OpenTherm Gateway central heating setpoint override mode. + +- **otgw_smart_pwr** + OpenTherm Gateway smart power operating mode. + +- **otgw_thermostat_detect** + OpenTherm Gateway automatic thermostat detection status. + +- **otgw_vref** + OpenTherm Gateway voltage reference setting. + +- **outside_temp** + Outside temperature as reported in the OpenTherm protocol. + +- **relative_mod_level** + Relative modulation level. + +- **return_water_temp** + Boiler return water temperature. + +- **room_setpoint** + Room target temperature. + +- **room_setpoint_2** + Room 2 target temperature. + +- **room_setpoint_ovrd** + Room target temperature override value. + +- **room_temp** + Current room temperature. + +- **slave_ch_max_setp** + Maximum boiler supported central heating water target temperature. + +- **slave_ch_min_setp** + Minimum boiler supported central heating water target temperature. + +- **slave_dhw_max_setp** + Maximum boiler supported hot water target temperature. + +- **slave_dhw_min_setp** + Minimum boiler supported hot water target temperature. + +- **slave_max_capacity** + Maximum boiler capacity. + +- **slave_max_relative_modulation** + Maximum boiler supported relative modulation. + +- **slave_memberid** + Boiler member ID. + +- **slave_min_mod_level** + Minimum boiler supported modulation level. + +- **slave_oem_fault** + Boiler OEM fault indication. + +- **slave_ot_version** + Boiler OpenTherm protocol version. + +- **slave_product_type** + Boiler product type. + +- **slave_product_version** + Boiler product version. + +- **solar_coll_temp** + Solar collector temperature. + +- **solar_storage_temp** + Solar storage unit temperature. + + +## {% linkable_title Binary Sensors %} + +The following `binary_sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs. +

+Not all boilers and thermostats properly support all OpenTherm features, so not all of the sensors will have useful values. +

+ +- **master_ch2_enabled** + Thermostat requests central heating 2 on. + +- **master_ch_enabled** + Thermostat requests central heating on. + +- **master_cooling_enabled** + Thermostat requests cooling. + +- **master_dhw_enabled** + Thermostat requests hot water to be heated. + +- **master_otc_enabled** + Thermostat is using outside temperature correction. + +- **otgw_gpio_a_state** + OpenTherm Gateway GPIO A state. + +- **otgw_gpio_b_state** + OpenTherm Gateway GPIO B state. + +- **otgw_ignore_transitions** + OpenTherm Gateway ignores ripples in the signal during high/low transitions. + +- **otgw_ovrd_high_byte** + OpenTherm Gateway overrides high byte with message ID 100. + +- **remote_rw_dhw** + Boiler supports writing hot water setpoint. + +- **remote_rw_max_ch** + Boiler supports writing maximum central heating setpoint. + +- **remote_transfer_dhw** + Boiler supports reading hot water setpoint. + +- **remote_transfer_max_ch** + Boiler supports reading maximum central heating setpoint. + +- **rovrd_auto_prio** + Programmed room setpoint change takes priority over remote override setting. + +- **rovrd_man_prio** + Manual room setpoint change takes priority over remote override setting. + +- **slave_air_pressure_fault** + Boiler reports air pressure fault. + +- **slave_ch2_active** + Boiler reports central heating 2 active. + +- **slave_ch2_present** + Boiler has a central heating 2 circuit. + +- **slave_ch_active** + Boiler reports central heating active. + +- **slave_control_type** + Boiler control type ('off' is modulating, 'on' is on/off). + +- **slave_cooling_active** + Boiler reports cooling active. + +- **slave_cooling_supported** + Boiler supports cooling. + +- **slave_dhw_active** + Boiler reports hot water active. + +- **slave_dhw_config** + Boiler hot water mode ('off' is instantaneous or unspecified, 'on' is storage tank). + +- **slave_dhw_present** + Boiler reports hot water present. + +- **slave_diagnostic_indication** + Boiler diagnostic indication. + +- **slave_fault_indication** + Boiler fault indication. + +- **slave_flame_on** + Boiler reports flame on. + +- **slave_gas_fault** + Boiler reports gas fault. + +- **slave_low_water_pressure** + Boiler reports low water pressure. + +- **slave_master_low_off_pump** + Boiler supports low-off and pump control commands (this sensor is inverted, 'on' is not supported, 'off' is supported) + +- **slave_remote_reset** + Boiler reports 'lockout-reset' supported. + +- **slave_service_required** + Boiler reports service required. + +- **slave_water_overtemp** + Boiler reports water overtemperature. + + ## {% linkable_title GPIO modes %} Possible modes and their meaning for the GPIO pins are listed here: @@ -399,24 +509,21 @@ Possible LED modes and their meaning are listed here: * M. Boiler requires maintenance. * P. Raised power mode active on thermostat interface. -

-The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat. -

# {% linkable_title Example %} -A full configuration example with the OpenTherm Gateway connected to a remote host running `ser2net` looks like the one below. +A full configuration example with two configured OpenTherm Gateways - one connected via USB, the other over the network - looks like the one below. ```yaml # Full example configuration.yaml entry opentherm_gw: - device: socket://otgw.example.org:2345 - climate: - name: Thermostat - precision: 0.5 - floor_temperature: true - monitored_variables: - - room_setpoint - - room_temp - - otgw_about + living_room: + device: /dev/ttyUSB0 + name: "Living" + holiday_home: + device: socket://otgw.example.org:2345 + name: "Holiday Home" + climate: + precision: 0.5 + floor_temperature: true ``` From 727b1bb2a470bb5544a6e73227086e771fa41ff0 Mon Sep 17 00:00:00 2001 From: endor <1937941+endor-force@users.noreply.github.com> Date: Fri, 28 Jun 2019 21:25:52 +0200 Subject: [PATCH 12/74] Add documentation for trafikverket_train (#9333) * Added documentation for trafikverket_train * Removed data for image that was not relevant * Added information about data that is retreived * Removed redirect, added category sensors * Clarified sensor values * :pencil2: Tweak * Added information about missed weekday parameter * Cleaned up examples * Clarified examples for non required field * Don't use !secret in example Co-Authored-By: Klaas Schoute * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * Fix typo Co-Authored-By: Franck Nijhof * :pencil2: Fixed time to be optional --- .../_components/trafikverket_train.markdown | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 source/_components/trafikverket_train.markdown diff --git a/source/_components/trafikverket_train.markdown b/source/_components/trafikverket_train.markdown new file mode 100644 index 00000000000..7237bcb4b86 --- /dev/null +++ b/source/_components/trafikverket_train.markdown @@ -0,0 +1,125 @@ +--- +layout: page +title: "Trafikverket Train" +description: "Instructions how to integrate Trafikverket Train within Home Assistant." +date: 2019-04-27 16:32 +sidebar: true +comments: false +sharing: true +footer: true +logo: trafikverket.png +ha_category: + - Transport + - Sensor +ha_release: 0.96 +ha_iot_class: Cloud Polling +--- + +Retrieve train departure information from [Trafikverket](https://www.trafikverket.se/). + +Use cases: + +- Retrieve the next departure and information connected to it for a specific train line. +- Retrieve information for specific departure time on a specific train line. +- Set up an alert or perform actions if your train is delayed or canceled. + +Data that is retrieved: + +- Next departure for the specific train line. +- Canceled status. +- The number of minutes delayed. +- Planned time if no delays occur. +- Estimated time of arrival if delays occur. +- Actual time - when it did arrive. +- Other information / additional texts. +- Deviations. + +## {% linkable_title Configuration %} + +To enable this sensor, use the following format in your `configuration.yaml`. + +```yaml +sensor: + - platform: trafikverket_train + api_key: TRAFIKVERKET_API + trains: + - name: "Morning train to Malmö" + from: "Stockholm Central" + to: "Malmö C" + time: "9:25" + + - name: "Next train to Uppsala" + from: "Stockholm Central" + to: "Uppsala C" +``` + +{% configuration %} +api_key: + description: Your personal API key from Trafikverket. + required: true + type: string +trains: + description: Specify details on the departures to monitor. + required: true + type: map + keys: + name: + description: The name of the departure, will be the sensor name. + required: true + type: string + from: + description: The station from where the train departs. + required: true + type: string + to: + description: The destination station. + required: true + type: string + time: + description: Departure time to monitor, if not entered it will retrieve the next departure. + required: false + type: string + weekday: + description: Specify which days in the week to monitor the specific departure. + required: false + type: list + default: "[mon, tue, wed, thu, fri, sat, sun]" +{% endconfiguration %} + +## {% linkable_title Obtaining API key %} + +Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obtain the API key. + +## {% linkable_title Train station names %} + +Click [here](https://www.trafikverket.se/trafikinformation/tag/?ArrDep=departure&) to see an example of train station names. + +## {% linkable_title Examples %} + +```yaml +sensor: +- platform: trafikverket + api_key: !secret trafikverket_api_key + trains: + - name: "Train to work" + from: Sölvesborg + to: Kristianstad C + time: "07:28" + weekday: [mon, tue, wed, thu, fri] + + - name: "Train from work early" + from: Kristianstad C + to: Sölvesborg + time: "16:38" + + - name: "Train from work late" + from: Kristianstad C + to: Sölvesborg + time: "17:02" + weekday: [sat, sun] + + - name: "Next train to Uppsala" + from: "Stockholm Central" + to: "Uppsala C" + +``` From e5b6d9cde956b25c1a663981970ef5d306462442 Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Fri, 28 Jun 2019 21:32:14 +0200 Subject: [PATCH 13/74] Add documentation for integration of Vallox ventilation units (#9668) * Add documentation for integration of Vallox ventilation units. * Address review comments #1. * Apply suggestions from code review Co-Authored-By: Franck Nijhof * Adapt to changed architecture of parent patch. * :pencil2: Component -> Integration --- source/_components/vallox.markdown | 108 +++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 source/_components/vallox.markdown diff --git a/source/_components/vallox.markdown b/source/_components/vallox.markdown new file mode 100644 index 00000000000..08d229ea82a --- /dev/null +++ b/source/_components/vallox.markdown @@ -0,0 +1,108 @@ +--- +layout: page +title: "Vallox Ventilation Units" +description: "Instructions on how to integrate Vallox ventilation units into Home Assistant." +date: 2019-06-19 20:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: + - Fan + - Sensor +ha_release: 0.96 +ha_iot_class: Local Polling +--- + +The `vallox` integration lets you control any Vallox ventilation unit that is supported by the [vallox_websocket_api](https://github.com/yozik04/vallox_websocket_api) (follow the link for a list of supported units). + +The **fan** platform of this integration allows you to either turn on/off the complete unit via the toggle switch or select a ventilation profile through the service `vallox/set_profile`. The four standard Vallox profiles are provided: + +- `At Home` +- `Away` +- `Boost` +- `Fireplace` + +Also, there is a **sensor** platform that exposes a number of relevant metrics like fan speed, various air temperatures and humidity. + +### {% linkable_title Configuration %} + +```yaml +vallox: + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP or hostname of the ventilation unit in your home network. + required: true + type: string +name: + description: The name of this device as you want to see it in Home Assistant. + required: false + default: Vallox + type: string +{% endconfiguration %} + +## {% linkable_title Profile Switching %} + +For convenient switching of ventilation profiles in the GUI, consider using an [input_select](../input_select) hooked to an automation, for example: + +{% raw %} +```yaml +input_select: + ventilation_profile: + name: Ventilation profile select + options: + - "Home" + - "Away" + - "Boost" + - "Fireplace" + icon: mdi:fan + +automation: + - alias: Set Ventilation Profile + trigger: + platform: state + entity_id: input_select.ventilation_profile + action: + service: vallox.set_profile + data_template: + profile: "{{ states('input_select.ventilation_profile') }}" +``` +{% endraw %} + +## {% linkable_title Fan Services %} + +### {% linkable_title Service `vallox.set_profile` %} + +Set the ventilation profile. + +| Service data attribute | Optional | Description | +|------------------------|----------|------------------------------------------------------| +| `profile` | no | Allowed values: `Home`, `Away`, `Boost`, `Fireplace` | + +### {% linkable_title Service `vallox.set_profile_fan_speed_home` %} + +Set the fan speed of the `Home` profile. + +| Service data attribute | Optional | Description | +|------------------------|----------|-------------------------------------------------| +| `fan_speed` | no | Fan speed in %. `Integer`, between 0 and 100. | + + +### {% linkable_title Service `vallox.set_profile_fan_speed_away` %} + +Set the fan speed of the `Away` profile. + +| Service data attribute | Optional | Description | +|------------------------|----------|-------------------------------------------------| +| `fan_speed` | no | Fan speed in %. `Integer`, between 0 and 100. | + +### {% linkable_title Service `vallox.set_profile_fan_speed_boost` %} + +Set the fan speed of the `Boost` profile. + +| Service data attribute | Optional | Description | +|------------------------|----------|-------------------------------------------------| +| `fan_speed` | no | Fan speed in %. `Integer`, between 0 and 100. | From 6ec17327ae6165730db4f79a51eb631d62d910d3 Mon Sep 17 00:00:00 2001 From: Luuk Date: Fri, 28 Jun 2019 21:40:42 +0200 Subject: [PATCH 14/74] Add Template vacuum documentation (#9496) * Add documentation for template vacuum component * Remove optional configuration items from example * Added more example configurations * Update template_vacuum version and date * Update source/_components/vacuum.template.markdown Co-Authored-By: Klaas Schoute * :pencil2: Tweaks * :arrow_up: ha_release 0.96 --- source/_components/vacuum.template.markdown | 153 ++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 source/_components/vacuum.template.markdown diff --git a/source/_components/vacuum.template.markdown b/source/_components/vacuum.template.markdown new file mode 100644 index 00000000000..f327654fe4e --- /dev/null +++ b/source/_components/vacuum.template.markdown @@ -0,0 +1,153 @@ +--- +layout: page +title: "Template Vacuum" +description: "Instructions how to setup Template vacuums within Home Assistant." +date: 2019-05-20 16:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Vacuum +ha_release: 0.96 +ha_iot_class: Local Push +logo: home-assistant.png +ha_qa_scale: internal +--- + +The `template` platform creates vacuums that combine integrations and provides the +ability to run scripts or invoke services for each of the start, pause, stop, +return_to_base, clean_spot, locate and set_fan_speed commands of a vacuum. + +To enable Template Vacuums in your installation, add the following to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +vacuum: + - platform: template + vacuums: + living_room_vacuum: + start: + service: script.vacuum_start +``` + +{% configuration %} + vacuums: + description: List of your vacuums. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + value_template: + description: "Defines a template to get the state of the vacuum. Valid value: `docked`/`cleaning`/`idle`/`paused`/`returning`/`error`" + required: false + type: template + battery_level_template: + description: "Defines a template to get the battery level of the vacuum. Legal values are numbers between `0` and `100`." + required: false + type: template + fan_speed_template: + description: Defines a template to get the fan speed of the vacuum. + required: false + type: template + start: + description: Defines an action to run when the vacuum is started. + required: true + type: action + pause: + description: Defines an action to run when the vacuum is paused. + required: false + type: action + stop: + description: Defines an action to run when the vacuum is stopped. + required: false + type: action + return_to_base: + description: Defines an action to run when the vacuum is given a return to base command. + required: false + type: action + clean_spot: + description: Defines an action to run when the vacuum is given a clean spot command. + required: false + type: action + locate: + description: Defines an action to run when the vacuum is given a locate command. + required: false + type: action + set_fan_speed: + description: Defines an action to run when the vacuum is given a command to set the fan speed. + required: false + type: action + fan_speeds: + description: List of fan speeds supported by the vacuum. + required: false + type: string list +{% endconfiguration %} + +## {% linkable_title Examples %} + +### {% linkable_title Control vacuum with Harmony Hub %} + +This example shows how you can use a Template Vacuum to control an IR vacuum cleaner using the [Harmony Hub Remote component](/components/remote.harmony/). + +```yaml +vacuum: + - platform: template + vacuums: + living_room_vacuum: + start: + - service: remote.send_command + data: + entity_id: remote.harmony_hub + command: Clean + device: 52840686 + return_to_base: + - service: remote.send_command + data: + entity_id: remote.harmony_hub + command: Home + device: 52840686 + clean_spot: + - service: remote.send_command + data: + entity_id: remote.harmony_hub + command: SpotCleaning + device: 52840686 +``` + +### {% linkable_title Vacuum with state %} + +This example shows how to use templates to specify the state of the vacuum. + +{% raw %} +```yaml +vacuum: + - platform: template + vacuums: + living_room_vacuum: + value_template: "{{ states('sensor.vacuum_state') }}" + battery_level_template: "{{ states('sensor.vacuum_battery_level')|int }}" + fan_speed_template: "{{ states('sensor.vacuum_fan_speed') }}" + start: + service: script.vacuum_start + pause: + service: script.vacuum_pause + stop: + service: script.vacuum_stop + return_to_base: + service: script.vacuum_return_to_base + clean_spot: + service: script.vacuum_clean_spot + locate: + service: script.vacuum_locate_vacuum + set_fan_speed: + service: script.vacuum_set_fan_speed + fan_speeds: + - Low + - Medium + - High +``` +{% endraw %} From 237181b632b4b8835823afc62e099981c7068db3 Mon Sep 17 00:00:00 2001 From: h3ndrik Date: Fri, 28 Jun 2019 21:42:48 +0200 Subject: [PATCH 15/74] Add offset option (#24600) (#9647) * Add offset option (#24600) * add description --- source/_components/deutsche_bahn.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/deutsche_bahn.markdown b/source/_components/deutsche_bahn.markdown index cc653756249..012ace6beea 100644 --- a/source/_components/deutsche_bahn.markdown +++ b/source/_components/deutsche_bahn.markdown @@ -37,6 +37,11 @@ to: description: The name of the end/destination station. required: true type: string +offset: + description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. + required: false + type: time + default: 00:00 only_direct: description: Only show direct connections. required: false From 76fb9e7fdf17250bc246a4f5ef929a5887a719d9 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 28 Jun 2019 22:07:01 +0200 Subject: [PATCH 16/74] =?UTF-8?q?=F0=9F=8E=A8=20Adds=20Vallox=20logo=20to?= =?UTF-8?q?=20integration=20(#9717)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Franck Nijhof --- source/_components/vallox.markdown | 1 + source/images/supported_brands/vallox.png | Bin 0 -> 11541 bytes 2 files changed, 1 insertion(+) create mode 100644 source/images/supported_brands/vallox.png diff --git a/source/_components/vallox.markdown b/source/_components/vallox.markdown index 08d229ea82a..c5bfc7e7e99 100644 --- a/source/_components/vallox.markdown +++ b/source/_components/vallox.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: vallox.png ha_category: - Fan - Sensor diff --git a/source/images/supported_brands/vallox.png b/source/images/supported_brands/vallox.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c0b6a3f708b5cd33a2ba4b618ffb5a04a76383 GIT binary patch literal 11541 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 b{F+m!u+-qkKKTS_rl8Q(HoS|}d<6eLJRccS literal 0 HcmV?d00001 From 8b83098a778acca015817747149895e3522231b8 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Sat, 29 Jun 2019 10:20:47 -0500 Subject: [PATCH 17/74] Add template support to template trigger's for option (#9714) --- source/_docs/automation/trigger.markdown | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 0b5bcab21ee..7ee0fef0e73 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -201,6 +201,21 @@ automation: ``` {% endraw %} +You can also use templates in the `for` option. + +{% raw %} +```yaml +automation: + trigger: + platform: template + value_template: "{{ is_state('device_tracker.paulus', 'home') }}" + for: + minutes: "{{ states('input_number.minutes')|int(0) }}" +``` +{% endraw %} + +The `for` template(s) will be evaluated when the `value_template` becomes `true`. +

Rendering templates with time (`now()`) is dangerous as trigger templates only update based on entity state changes.

From 18b489c67476fa0370e83ff82693131a2b57e2e3 Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Mon, 1 Jul 2019 00:32:24 +0200 Subject: [PATCH 18/74] Added Covers to the velbus docu (#9742) * Added Covers to the velbus docu * :pencil2: Removed redirect --- source/_components/velbus.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/velbus.markdown b/source/_components/velbus.markdown index 1914c093aa9..3aced2e7d8b 100644 --- a/source/_components/velbus.markdown +++ b/source/_components/velbus.markdown @@ -31,6 +31,7 @@ There is currently support for the following device types within Home Assistant: - Climate - Sensor - Switch +- Cover ## {% linkable_title Configuration %} From fff4cf57355db1c6de942359b8a43b1f518ee716 Mon Sep 17 00:00:00 2001 From: cgtobi Date: Sat, 6 Jul 2019 00:59:02 +0200 Subject: [PATCH 19/74] Remove monitored conditions config (#9789) In ADR0003 monitored conditions and equal configuration options have to be removed. This was implemented in #24944. --- source/_components/netatmo.markdown | 66 ++--------------------------- 1 file changed, 3 insertions(+), 63 deletions(-) diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index fdb8a0ffbb4..072252a28d6 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -318,14 +318,7 @@ climate: The `netatmo` sensor platform is consuming the information provided by a [Netatmo Weather Station](https://www.netatmo.com/en-us/weather/weatherstation), a [Netatmo Home Coach](https://www.netatmo.com/en-us/aircare/homecoach) [Netatmo](https://www.netatmo.com) device or the public sensors of others available via the [Netatmo API](https://weathermap.netatmo.com/) even if you don't own a Netatmo device. -Public sensors have to be set up manually. Currently the following conditions are supported for the public sensors: - -* temperature -* pressure -* humidity -* rain -* windstrength -* guststrength +Public sensors have to be set up manually. ## Advanced sensor configuration @@ -338,11 +331,8 @@ sensor: - platform: netatmo station: STATION_NAME modules: - module_name1: - - temperature - module_name2: - - temperature - - battery_vp + - module_name1 + - module_name2 # Public sensor - platform: netatmo @@ -351,13 +341,6 @@ sensor: lon_ne: -73.735 lat_sw: 40.552 lon_sw: -74.105 - monitored_conditions: - - temperature - - pressure - - humidity - - rain - - windstrength - - guststrength ``` {% configuration %} @@ -374,45 +357,6 @@ modules: type: list required: true description: Name of the module. - keys: - temperature: - description: Current temperature. - co2: - description: CO2 concentration in ppm. - pressure: - description: Pressure in mbar. - noise: - description: Noise level in dB. - humidity: - description: "Humidity in %." - health_idx: - description: "Air health as one of the values Healthy, Fine, Fair, Poor, Unhealthy." - rain: - description: Estimated rainfall for today in mm. - sum_rain_1: - description: Rainfall in the last hour in mm. - sum_rain_24: - description: "Rainfall in mm from 00:00am - 23:59pm." - windangle: - description: Wind angle - windstrength: - description: Wind strength - gustangle: - description: Wind gust angle - guststrength: - description: Wind gust strength - min_temp: - description: Min temperature for today - max_temp: - description: Max temperature for today - rf_status: - description: "Current radio status per module. (90=low, 60=highest)" - wifi_status: - description: Wifi status per Base station - battery_vp: - description: Current battery status per module. - battery_percent: - description: Percentage of battery remaining per module. areas: description: The list contains one or more areas to add as sensors. required: false @@ -434,10 +378,6 @@ areas: description: Longitude of south-western corner of area. required: true type: string - monitored_conditions: - description: List of environment conditions to monitor. - required: true - type: list name: description: Name of the sensor. required: false From de15708667e7c9c552e37d69ddba913a84b1f08d Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Fri, 5 Jul 2019 18:06:58 -0500 Subject: [PATCH 20/74] Add missing trigger.for variable to template trigger (#9752) --- source/_docs/automation/templating.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index e2cdae013b4..2b80dfc5d5e 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -145,6 +145,7 @@ The following tables show the available trigger data per platform. | `trigger.entity_id` | Entity ID that caused change. | `trigger.from_state` | Previous [state object] of entity that caused change. | `trigger.to_state` | New [state object] of entity that caused template to change. +| `trigger.for` | Timedelta object how long state has been to state, if any. ### time From 3fe65c53b7024e876be04d864a1b3b12eab82051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D1=83=D0=B1=D0=BE=D0=B2=D0=B8=D0=BA=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BA=D1=81=D0=B8=D0=BC?= Date: Sat, 6 Jul 2019 02:07:45 +0300 Subject: [PATCH 21/74] Google Cloud TTS extra languages (#9753) * Note about not documented but supported languages * Fixed anchor links * Revert * Revert * * Note about supported but not documented languages * Fixed anchor links --- source/_components/google_cloud.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/google_cloud.markdown b/source/_components/google_cloud.markdown index 7beab522260..2fe0cb29f7f 100644 --- a/source/_components/google_cloud.markdown +++ b/source/_components/google_cloud.markdown @@ -16,7 +16,7 @@ The `google_cloud` platform allows you to use [Google Cloud Platform](https://cl ## Configuration -To use Google Cloud Platform, you need to provide `config` directory relative path of [`API key`](#obtaining-api-key) file you are going to use. Place it under `config` folder and set `key_file` parameter in `configuration.yaml`: +To use Google Cloud Platform, you need to provide `config` directory relative path of [`API key`](#obtaining-an-api-key) file you are going to use. Place it under `config` folder and set `key_file` parameter in `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -74,11 +74,11 @@ The Cloud Text-to-Speech API is priced monthly based on the amount of characters {% configuration %} key_file: - description: "The [`API key`](#obtaining-api-key) file to use with Google Cloud Platform. If not specified `os.environ['GOOGLE_APPLICATION_CREDENTIALS']` path will be used." + description: "The [`API key`](#obtaining-an-api-key) file to use with Google Cloud Platform. If not specified `os.environ['GOOGLE_APPLICATION_CREDENTIALS']` path will be used." required: false type: string language: - description: "Default language of the voice, e.g. `en-US`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices)." + description: "Default language of the voice, e.g. `en-US`. Supported languages, genders and voices listed [here](https://cloud.google.com/text-to-speech/docs/voices). Also there are extra not documented but supported languages (see dropdown [here](https://cloud.google.com/text-to-speech/#streaming_demo_section))." required: false type: string default: en-US From 64b391d2015d7d25a055bdc6329a2ebf280c834d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 6 Jul 2019 11:12:31 -0700 Subject: [PATCH 22/74] Add hold_modes config var to MQTT climate --- source/_components/climate.mqtt.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index 6e083ba1fd1..49c1d3647f8 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -203,6 +203,9 @@ hold_state_template: description: A template to render the value received on the `hold_state_topic` with. required: false type: template +hold_modes: + description: A list of available hold modes. + required: false aux_command_topic: description: The MQTT topic to publish commands to switch auxiliary heat. required: false From f0e0ef8e3856e35eed62783747278b3d305c5645 Mon Sep 17 00:00:00 2001 From: Adriaan Peeters Date: Sat, 6 Jul 2019 21:01:21 +0200 Subject: [PATCH 23/74] Add documentation for new service sonos.play_queue (#9790) * Add documentation for new service sonos.play_queue * Add queue_position parameter for sonos.play_queue service * Improve sonos.play_queue documentation --- source/_components/sonos.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_components/sonos.markdown b/source/_components/sonos.markdown index 5533c189a44..a0fce003adb 100644 --- a/source/_components/sonos.markdown +++ b/source/_components/sonos.markdown @@ -114,6 +114,17 @@ Night Sound and Speech Enhancement modes are only supported when playing from th | `night_sound` | yes | Boolean to control Night Sound mode. | `speech_enhance` | yes | Boolean to control Speech Enhancement mode. +### Service `sonos.play_queue` + +Starts playing the Sonos queue. + +Force start playing the queue, allows switching from another stream (such as radio) to playing the queue. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of `entity_id`s that will start playing. It must be the coordinator if targeting a group. +| `queue_position` | yes | Position of the song in the queue to start playing from, starts at 0. + ## Advanced use For advanced uses, there are some manual configuration options available. From 4fa31e47a90e9685e73ca9c0b544bb70c05cb293 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 21:19:45 +0200 Subject: [PATCH 24/74] Removes hive hot water and boost is now a preset --- source/_components/hive.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown index 1085481707e..7f42d5c83ec 100644 --- a/source/_components/hive.markdown +++ b/source/_components/hive.markdown @@ -73,15 +73,14 @@ The platform supports the following Hive products: ## Climate -The `hive` climate platform integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. +The `hive` climate platform integrates your Hive thermostat into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. -A short boost for Hive Heating or Hive Hot water can be set by using the **Aux Heat** function, this will turn on the boost feature for Hive Heating or Hive Hot water for 30 minutes at 0.5 degrees higher than the current temperature. +A short boost for Hive Heating can be set by using the **Boost** preset, this will turn on the boost feature for 30 minutes at 0.5 degrees higher than the current temperature. The platform supports the following Hive products: - Hive Active Heating - Hive Multizone -- Hot water control ## Light From ec0a5d5c3086415534963951a96fc21e46ad5972 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 21:27:11 +0200 Subject: [PATCH 25/74] Removes oem away_temp setpoint --- source/_components/oem.markdown | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/source/_components/oem.markdown b/source/_components/oem.markdown index 82de0925bfa..f5c79f4c03f 100644 --- a/source/_components/oem.markdown +++ b/source/_components/oem.markdown @@ -18,7 +18,7 @@ redirect_from: This platform supports the ESP8266 based "WiFi MQTT Relay / Thermostat" sold by [OpenEnergyMonitor](https://shop.openenergymonitor.com/wifi-mqtt-relay-thermostat/). The underlying [library](http://oemthermostat.readthedocs.io/) only supports this single relay variant of the [original device](https://harizanov.com/2014/12/wifi-iot-3-channel-relay-board-with-mqtt-and-http-api-using-esp8266/). -This platform controls the setpoint of the thermostat in its "manual" mode, therefore there is a configuration option the away setpoint. +This platform controls the setpoint of the thermostat in its "manual" mode. To set it up, add the following information to your `configuration.yaml` file: @@ -52,9 +52,4 @@ password: description: Password for the web interface if set. required: inclusive type: string -away_temp: - description: Setpoint for the thermostat in away mode. - required: false - default: 14.0 - type: float {% endconfiguration %} From 801ff31bf6ea9e9b162109b8b996defe081e6c0c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 21:30:19 +0200 Subject: [PATCH 26/74] Updates Toon with supported presets --- source/_components/toon.markdown | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown index a97d4156518..b7ca838baf0 100644 --- a/source/_components/toon.markdown +++ b/source/_components/toon.markdown @@ -69,15 +69,9 @@ client_secret: ## Climate -The `toon` climate platform allows you to interact with your Toon thermostat. For compatibility reasons, the states in Home Assistant are different from the states displayed on your Toon device and are mapped as follows: - -| Home Assistant | Toon | -|:---------------|:--------| -| Auto | Comfort | -| Heat | Thuis | -| Eco | Weg | -| Cool | Slapen | +The `toon` climate platform allows you to interact with your Toon thermostat. +Home Assistant support the four Toon presets: `Comfort`, `Home`, `Away` and `Sleep`. It also supports setting the temperature manually. The Toon API is polled at a 300-second interval, so the status is relatively fresh without overloading the API. From 967a8fade3aa5248d4f246cd119dde87cf7f720e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 21:46:56 +0200 Subject: [PATCH 27/74] Updates Dyson set_operation_mode -> set_hvac_mode --- source/_components/dyson.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index 324690730cf..9bad80f8a8e 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -130,7 +130,7 @@ This integration supports the following services (see [Climate](/components/clim - [`turn_off`](/components/climate/#service-climateturn_off) - [`set_temperature`](/components/climate/#service-climateset_temperature) - [`set_fan_mode`](/components/climate/#service-climateset_fan_mode) -- [`set_operation_mode`](/components/climate/#service-climateset_operation_mode) +- [`set_hvac_mode`](/components/climate/#service-climateset_hvac_mode) ## Fan From 4930e5e1d3b5e06571774e15482ddb28ed8f17e5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 22:05:49 +0200 Subject: [PATCH 28/74] Updates Venstar away and hold to presets --- source/_components/venstar.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/venstar.markdown b/source/_components/venstar.markdown index e6a78579fd9..3594e0e6c27 100644 --- a/source/_components/venstar.markdown +++ b/source/_components/venstar.markdown @@ -29,8 +29,8 @@ Currently supported functionality: - Changing the operation mode of the thermostat (heat/cool/off/auto) - Turning the fan on/off - Reading and setting the humidity level and limits -- Turning away mode on/off -- Turning hold mode on/off +- Turning on away preset +- Turning on hold mode preset The following values are supported for the hold_mode state attribute: - `off`: *Enables* the scheduling functionality. From c36bab54d2a2e40562e6179366604a7b8d5a6f12 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 6 Jul 2019 22:44:56 +0200 Subject: [PATCH 29/74] Removes now invalid Sensibo automation example --- source/_components/sensibo.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/sensibo.markdown b/source/_components/sensibo.markdown index 3c5b0d2418c..af87268a473 100644 --- a/source/_components/sensibo.markdown +++ b/source/_components/sensibo.markdown @@ -67,12 +67,14 @@ switch: friendly_name: "AC" value_template: "{{ is_state('climate.ac', 'cool') or is_state('climate.ac', 'heat') or is_state('climate.ac', 'dry') or is_state('climate.ac', 'heat')}}" turn_on: - service: climate.turn_on + service: climate.set_havc_mode data: entity_id: climate.ac + hvac_mode: off turn_off: - service: climate.turn_off + service: climate.set_havc_mode data: entity_id: climate.ac + hvac_mode: ``` {% endraw %} From 78204acd7f811e7fc4d9ede7974f36a05831cd25 Mon Sep 17 00:00:00 2001 From: Andrew Sayre Date: Mon, 8 Jul 2019 09:39:33 -0500 Subject: [PATCH 30/74] Update ST climate docs --- source/_components/smartthings.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index f87036b9331..cbc312e81aa 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -177,9 +177,8 @@ For a SmartThings Air Conditioner to be represented by the climate platform, it | Capability |Climate Features |-------------------------------------|--------------------------------------------| -| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `operation mode` +| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `hvac mode`, `hvac action` | `airConditionerFanMode` (required) | `fan mode` -| [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) (required) | `on/off` | [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature` | [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp` | [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) @@ -191,12 +190,12 @@ For a SmartThings thermostat to be represented by the climate platform, it must | Capability |Climate Features |-------------------------------------|--------------------------------------------| -| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `operation mode`, `operating state` (state attribute), `target temp high`, `target temp low` and `fan mode` -| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `operation mode` +| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` +| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `hvac mode` | [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (seb b) | `target temp low` | [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) (set b) | `target temp high` | [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (set b) | -| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `operating state` (state attribute) +| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `hvac action` | [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode` | [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute) From ea092a5ed16f1a1afb09afd42f2af3757100b62c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 8 Jul 2019 09:12:24 -0700 Subject: [PATCH 31/74] Draft 96 --- _config.yml | 24 ++++++++-------- source/_posts/2019-07-17-release-96.markdown | 29 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 source/_posts/2019-07-17-release-96.markdown diff --git a/_config.yml b/_config.yml index f86c7aed19b..b98e5f9d019 100644 --- a/_config.yml +++ b/_config.yml @@ -41,11 +41,11 @@ liquid: kramdown: input: GFM - auto_ids: false - footnote_nr: 1 - entity_output: as_char - toc_levels: 1..6 - smart_quotes: lsquo,rsquo,ldquo,rdquo + auto_ids: false + footnote_nr: 1 + entity_output: as_char + toc_levels: 1..6 + smart_quotes: lsquo,rsquo,ldquo,rdquo parse_block_html: true plugins: @@ -53,13 +53,13 @@ plugins: - jekyll-time-to-read - octopress-include-tag -paginate: 10 # Posts per page on the blog index -paginate_path: "blog/posts/:num" # Directory base for pagination URLs eg. /posts/2/ -recent_posts: 5 # Posts in the sidebar Recent Posts section -excerpt_link: "Read on →" # "Continue reading" link text at the bottom of excerpted articles +paginate: 10 # Posts per page on the blog index +paginate_path: "blog/posts/:num" # Directory base for pagination URLs eg. /posts/2/ +recent_posts: 5 # Posts in the sidebar Recent Posts section +excerpt_link: "Read on →" # "Continue reading" link text at the bottom of excerpted articles excerpt_separator: "" -titlecase: true # Converts page and post titles to titlecase +titlecase: true # Converts page and post titles to titlecase # Each layout uses the default asides, but they can have their own asides instead. Simply uncomment the lines below # and add an array with the asides you want to use. @@ -138,9 +138,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 95 +current_minor_version: 96 current_patch_version: 0 -date_released: 2019-06-26 +date_released: 2019-07-17 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown new file mode 100644 index 00000000000..71b9c780314 --- /dev/null +++ b/source/_posts/2019-07-17-release-96.markdown @@ -0,0 +1,29 @@ +--- +layout: post +title: "0.96: TBD - UPDATE DATE" +description: "TBD." +date: 2019-07-08 04:11:03 +date_formatted: "July 17, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-07-release-96/social.png +--- + +
+ +Climate has been completely revamped. Huge thanks to the following people: + +- [@pvizeli] +- [@Danielhiversen] +- [@zxdavb] +- [@Swamp-lg] +- [@SukramJ] +- [@marvin-w] +- [@Jc2k] +- [@OnFreund] +- [@cgtobi] +- [@andrewsayre] + +We have a new sidebar! Started with a mockup by [@JuanMTech] and grew into a full blown implementation. Check [the demo](https://demo.home-assistant.io) for a preview. From 0eb72dcaf93b5772234bdf5b49cca040d526b7e6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 8 Jul 2019 09:31:30 -0700 Subject: [PATCH 32/74] ABC list --- source/_posts/2019-07-17-release-96.markdown | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 71b9c780314..3c67c6c4fa8 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -15,15 +15,17 @@ og_image: /images/blog/2019-07-release-96/social.png Climate has been completely revamped. Huge thanks to the following people: -- [@pvizeli] -- [@Danielhiversen] -- [@zxdavb] -- [@Swamp-lg] -- [@SukramJ] -- [@marvin-w] -- [@Jc2k] -- [@OnFreund] -- [@cgtobi] - [@andrewsayre] +- [@balloob] +- [@cgtobi] +- [@Danielhiversen] +- [@frenck] +- [@Jc2k] +- [@marvin-w] +- [@OnFreund] +- [@pvizeli] +- [@SukramJ] +- [@Swamp-lg] +- [@zxdavb] We have a new sidebar! Started with a mockup by [@JuanMTech] and grew into a full blown implementation. Check [the demo](https://demo.home-assistant.io) for a preview. From 3c080e9379b1b8c8ed5a7fd8ca15c91688f06f90 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Mon, 8 Jul 2019 15:18:46 -0500 Subject: [PATCH 33/74] Add datetime option to input_datetime.set_datetime service (#9791) --- source/_components/input_datetime.markdown | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown index 08fca824434..be9451e12ad 100644 --- a/source/_components/input_datetime.markdown +++ b/source/_components/input_datetime.markdown @@ -87,12 +87,15 @@ Assistant stopping as long as your entity does **not** have a set value for ### Services -This integration provides a service to modify the state of the `input_datetime`. +Available service: `input_datetime.set_datetime`. -| Service | Data | Description | -| ----- | ----- | ----- | -| `set_datetime` | `time` | This can be used to dynamically set the time. -| `set_datetime` | `date` | This can be used to dynamically set the date. +Service data attribute | Format String | Description +-|-|- +`date` | `%Y-%m-%d` | This can be used to dynamically set the date. +`time` | `%H:%M:%S` | This can be used to dynamically set the time. +`datetime` | `%Y-%m-%d %H:%M:%S` | This can be used to dynamically set both the date & time. + +To set both the date and time in the same call, use `date` and `time` together, or use `datetime` by itself. Using `datetime` has the advantage that both can be set using one template. ## Automation Examples @@ -115,8 +118,8 @@ automation: {% endraw %} To dynamically set the `input_datetime` you can call -`input_datetime.set_datetime`. The values for `date` and `time` must be in a certain format for the call to be successful. -You can use either `strftime("%Y-%m-%d")`/`strftime("%H:%M:%S")` or `timestamp_custom("%Y-%m-%d", true)`/`timestamp_custom("%H:%M:%S", true)` filter respectively. +`input_datetime.set_datetime`. The values for `date` and `time` must be in a certain format for the call to be successful. (See service description above.) +If you have a `datetime` object you can use its `strftime` method. Of if you have a timestamp you can use the `timestamp_custom` filter. The following example can be used in an automation rule: {% raw %} @@ -136,17 +139,14 @@ automation: - service: input_datetime.set_datetime entity_id: input_datetime.another_time data_template: - time: '{{ now().strftime("%H:%M:%S") }}' + time: "{{ now().strftime('%H:%M:%S') }}" - service: input_datetime.set_datetime entity_id: input_datetime.another_date data_template: - date: '{{ now().strftime("%Y-%m-%d") }}' + date: "{{ as_timestamp(now())|timestamp_custom('%Y-%m-%d') }}" - service: input_datetime.set_datetime + entity_id: input_datetime.date_and_time data_template: - entity_id: input_datetime.date_and_time - date: > - {{ now().timestamp() | timestamp_custom("%Y-%m-%d", true) }} - time: > - {{ now().timestamp() | timestamp_custom("%H:%M:%S", true) }} + datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}" ``` {% endraw %} From c7e68622ebedd787d0deccc323186f00ffb313be Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Mon, 8 Jul 2019 16:00:19 -0500 Subject: [PATCH 34/74] Add template support to state trigger's for option (#9762) --- source/_docs/automation/trigger.markdown | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index c7f8417ab6b..8eec3a91f3b 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -124,6 +124,27 @@ automation: for: '01:10:05' ``` +You can also use templates in the `for` option. + +{% raw %} +```yaml +automation: + trigger: + platform: state + entity_id: device_tracker.paulus, device_tracker.anne_therese + to: 'home' + for: + minutes: "{{ states('input_number.lock_min')|int }}" + seconds: "{{ states('input_number.lock_sec')|int }}" + action: + service: lock.lock + entity_id: lock.my_place +``` +{% endraw %} + +The `for` template(s) will be evaluated when an entity changes as specified. + +

Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.

From 4360ec17d22874ae7f2c085b3aa935813d989793 Mon Sep 17 00:00:00 2001 From: arigilder <43716164+arigilder@users.noreply.github.com> Date: Tue, 9 Jul 2019 06:04:01 -0400 Subject: [PATCH 35/74] Add omer_count docs to jewish_calendar (#9814) --- source/_components/jewish_calendar.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/jewish_calendar.markdown b/source/_components/jewish_calendar.markdown index ddd9e221aeb..a8566c47649 100644 --- a/source/_components/jewish_calendar.markdown +++ b/source/_components/jewish_calendar.markdown @@ -91,6 +91,8 @@ sensors: description: The time of havdalah for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the havdalah for Rosh Hashana on Wednesday night. To always get the Shabbat times, use the upcoming_shabbat_havdalah sensor. issur_melacha_in_effect: description: A boolean sensor indicating if melacha is currently not permitted. The value is true when it is currently Shabbat or Yom Tov and false otherwise. + omer_count: + description: An integer sensor indicating the day of the Omer (1-49) or 0 if it is not currently the Omer. {% endconfiguration %} From 8197443f154dae6208763aa3b9f3768a58cbd600 Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Tue, 9 Jul 2019 18:54:16 +0200 Subject: [PATCH 36/74] Update daikin.markdown (#9822) --- source/_components/daikin.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index bebcb82cf42..408fe7d2667 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -61,12 +61,11 @@ hosts: The `daikin` climate platform integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: -- [**mode**](https://www.home-assistant.io/components/climate#service-climateset_operation_mode) (cool, heat, dry, fan only or auto) +- [**set_hvac_mode**](/components/climate/#service-climateset_hvac_mode) (off, heat, cool, auto, or fan only) - [**target temperature**](https://www.home-assistant.io/components/climate#service-climateset_temperature) - [**fan mode**](https://www.home-assistant.io/components/climate#service-climateset_fan_mode) (speed) - [**swing mode**](https://www.home-assistant.io/components/climate#service-climateset_swing_mode) -- [**turn on/off**](https://www.home-assistant.io/components/climate#service-climateturn_on) -- [**away mode**](https://www.home-assistant.io/components/climate#service-climateset_away_mode) +- [**set_preset_mode**](https://www.home-assistant.io/components/climate#service-climateset_away_mode) (away, home) Current inside temperature is displayed. From bcbff78a401871925b9f0e3ada528a92e0d118df Mon Sep 17 00:00:00 2001 From: mvn23 Date: Tue, 9 Jul 2019 18:56:25 +0200 Subject: [PATCH 37/74] Fix opentherm_gw reverted updates (#9821) * Update docs to reflect support for multiple OpenTherm Gateway devices. * Update to reflect removing the 'monitored_variables' option. --- source/_components/opentherm_gw.markdown | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown index 8e7d6144e46..9eaf0e2d112 100644 --- a/source/_components/opentherm_gw.markdown +++ b/source/_components/opentherm_gw.markdown @@ -23,7 +23,7 @@ redirect_from: The `opentherm_gw` integration is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. -There is currently support for the following device types within Home Assistant: +The following device types are currently supported within Home Assistant: - Binary Sensor - Climate @@ -73,10 +73,6 @@ climate: default: false {% endconfiguration %} -## Supported Variables - -The list above contains all supported variables. Note that not all boilers and thermostats properly support all variables, so the fact that a variable is listed here and published by your system does not necessarily mean that you will get useful data out of it. To see which variables are published in your situation, enable debug logging for the `opentherm_gw` integration and look for the status updates. - ## Services ### Service `opentherm_gw.reset_gateway` @@ -377,7 +373,7 @@ Not all boilers and thermostats properly support all OpenTherm features, so not Solar storage unit temperature. -## {% linkable_title Binary Sensors %} +## Binary Sensors The following `binary_sensor` entities will be created for each configured gateway. The `entity_id` of every sensor will have a suffix containing the `gateway_id` of the gateway to which it belongs.

From 567f16a538f82df0297e668a1e7d4660be49b247 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Tue, 9 Jul 2019 18:03:26 +0100 Subject: [PATCH 38/74] [climate] Migrate honeywell docs for climate-1.0 (#9816) * initial commit * initial commit 2 --- source/_components/honeywell.markdown | 36 +++++++++++++-------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/source/_components/honeywell.markdown b/source/_components/honeywell.markdown index 6a738563fd4..61adb17bf25 100644 --- a/source/_components/honeywell.markdown +++ b/source/_components/honeywell.markdown @@ -16,34 +16,37 @@ redirect_from: - /components/climate.honeywell/ --- -The `honeywell` climate platform lets you control Honeywell TCC (Total Connect Comfort) climate systems from Home Assistant. It does not integrate with Honeywell TCC alarm systems. +The `honeywell` climate platform integrates Home Assistant with _US-based_ [Honeywell Total Connect Comfort (TCC)](https://mytotalconnectcomfort.com/portal/]) climate systems. + +It does not support the home security functionality of TCC. + +It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library.

-There is some potential confusion over this integration because it is currently implemented as a combination of two _distinct_ climate systems, one being US-based, the other is EU-based. +There is some potential confusion over this integration because it was previously implemented as a combination of two _distinct_ climate systems, one being US-based, the other EU-based. -These two regions are _not_ interchangeable, so you must be clear which applies to your climate system. +These two regions are _not_ interchangeable, and the `eu` region is now deprecated. Ongoing support for such systems is available via the [evohome](/components/evohome/) integration.

-## US-based Systems +### US-based Systems These systems are based in North America, and temperatures are usually in Fahrenheit. They would likely be HVAC systems. They always use the [somecomfort](https://github.com/kk7ds/somecomfort) client library. In this integration, this is called the `us` region. If your system is US-based, then you can access your system via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`). -## EU-based Systems +### EU-based Systems These systems are based in Europe (including the UK & Ireland), and temperatures are usually in Celsius. They would likely be heating-only systems. They always use the [evohome-client](https://github.com/watchforstock/evohome-client) client library. In this integration, this is called the `eu` region. -If your system is US-based, then you can access it via [https://international.mytotalconnectcomfort.com/](https://international.mytotalconnectcomfort.com/) (note the `international`). - -The `eu` region is soon to be deprecated, and ongoing support for such systems is available via the [evohome](/components/evohome/) integration. +If your system is EU-based, then you can access it via [https://international.mytotalconnectcomfort.com/](https://international.mytotalconnectcomfort.com/) (note the `international`). ## Configuration -To set up this integration, first confirm your region, then add the following information to your **configuration.yaml** file (the below example is for US-based systems): +To set up this integration, add the following to the `climate:` section of your **configuration.yaml** file: ```yaml climate: +# Example configuration.yaml entry - platform: honeywell username: YOUR_USERNAME password: YOUR_PASSWORD @@ -60,22 +63,17 @@ password: required: true type: string region: - description: Region identifier, either 'eu' or 'us'. - required: false - default: eu + description: Region identifier. + required: true + default: us type: string -away_temperature: - description: "(*only for the EU region*) Heating setpoint when away mode is on, in degrees Celsius." - required: false - default: 16.0 - type: float away_cool_temperature: - description: "(*only for the US region*) Cooling setpoint when away mode is on, in degrees Fahrenheit." + description: "Cooling setpoint when away mode is on, in degrees Fahrenheit." required: false default: 88 type: integer away_heat_temperature: - description: "(*only for the US region*) Heating setpoint when away mode is on, in degrees Fahrenheit." + description: "Heating setpoint when away mode is on, in degrees Fahrenheit." required: false default: 61 type: integer From e04e6ca87c1e1830f0e4113ead3b8b2905f2d3a4 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Tue, 9 Jul 2019 12:15:01 -0600 Subject: [PATCH 39/74] Add docs for Notion (#9665) * Add docs for Notion * Reviewer comments --- source/_components/notion.markdown | 41 ++++++++++++++++++++++ source/images/supported_brands/notion.png | Bin 0 -> 3490 bytes 2 files changed, 41 insertions(+) create mode 100644 source/_components/notion.markdown create mode 100644 source/images/supported_brands/notion.png diff --git a/source/_components/notion.markdown b/source/_components/notion.markdown new file mode 100644 index 00000000000..e9dcc8ca8d1 --- /dev/null +++ b/source/_components/notion.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Notion" +description: "How to integrate Notion kits within Home Assistant." +date: 2019-06-19 20:52 +sidebar: true +comments: false +logo: notion.png +ha_category: + - Hub + - Binary Sensor + - Sensor +ha_release: 0.96 +ha_iot_class: Cloud Polling +--- + +The `Notion` component retrieves data from [Notion](https://getnotion.com) wireless +home monitoring sensor kits. + +## Configuration + +To add your Notion kits to your Home Assistant installation, add the following to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notion: + username: YOUR_EMAIL_ADDRESS + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: An email address for an active Notion account. + required: true + type: string +password: + description: The password for the account. + required: true + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/notion.png b/source/images/supported_brands/notion.png new file mode 100644 index 0000000000000000000000000000000000000000..a78140a43d93af3b9953baa860775682208839cc GIT binary patch literal 3490 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 literal 0 HcmV?d00001 From 03e03fa226f3a77bb80b142189fa106c5e55d1ef Mon Sep 17 00:00:00 2001 From: Dave T <17680170+davet2001@users.noreply.github.com> Date: Wed, 10 Jul 2019 00:01:44 +0100 Subject: [PATCH 40/74] Create aurora_abb_powerone.markdown (#9703) * Create aurora_abb_powerone.markdown Supporting file to describe Aurora ABB Powerone inverter integration. * Update summary of solar abb powerone. * :pencil2: Tweaks * Update source/_components/aurora_abb_powerone.markdown Co-Authored-By: Klaas Schoute * Update source/_components/aurora_abb_powerone.markdown Co-Authored-By: Klaas Schoute * Corrected example configs based on comments * Update source/_components/aurora_abb_powerone.markdown Co-Authored-By: Franck Nijhof * Update source/_components/aurora_abb_powerone.markdown Co-Authored-By: Franck Nijhof * Update source/_components/aurora_abb_powerone.markdown Co-Authored-By: Franck Nijhof * Added powerone logo for aurora_abb_powerone * Reference specific logo for powerone. * Made configuration info clearer. * Updated config based on changes to parent PR https://github.com/home-assistant/home-assistant.io/pull/9703 * :pencil2: Tweak * :tada: Add name config variable --- .../_components/aurora_abb_powerone.markdown | 65 ++++++++++++++++++ source/images/supported_brands/powerone.png | Bin 0 -> 31740 bytes 2 files changed, 65 insertions(+) create mode 100644 source/_components/aurora_abb_powerone.markdown create mode 100644 source/images/supported_brands/powerone.png diff --git a/source/_components/aurora_abb_powerone.markdown b/source/_components/aurora_abb_powerone.markdown new file mode 100644 index 00000000000..ac40f5dab11 --- /dev/null +++ b/source/_components/aurora_abb_powerone.markdown @@ -0,0 +1,65 @@ +--- +layout: page +title: "Aurora ABB Powerone PV Inverter Sensor" +description: "Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant." +date: 2019-06-27 23:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: powerone.png +ha_category: + - Sensor + - Energy +ha_release: 0.96 +ha_iot_class: Local Polling +--- + +This implements a direct RS485 connection to a solar inverter in the +PVI-3.0/3.6/4.2-TL-OUTD ABB series, and may work on others. +The inverter was formerly made by PowerOne who got taken over by ABB. + +The TCP/IP method of communicating with inverters is supported by the +Python library, but not by this implementation in this integration. + +This integration provides a single sensor which reports the live power output +in watts. + +Note the PV inverter will be unresponsive to communications when in darkness, +so the value 'unknown' will be displayed during the night. + +## Configuration + +Add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: aurora_abb_powerone + device: 'SERIAL_PORT' +``` + +{% configuration %} +device: + description: The serial port your RS485 adaptor is connected to. + required: true + type: string +address: + description: The address of the inverter - only need to set this if you have changed your inverter away from the default address of 2. + required: false + type: integer + default: 2 +name: + description: Name of the sensor to use in the frontend. + required: false + default: Solar PV + type: string +{% endconfiguration %} + +```yaml +# Example configuration.yaml entry for aurora_abb_powerone platform +sensor: + - platform: aurora_abb_powerone + address: 2 + device: '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0' +``` diff --git a/source/images/supported_brands/powerone.png b/source/images/supported_brands/powerone.png new file mode 100644 index 0000000000000000000000000000000000000000..685c17384d4fbdf4b8a7df13e928f0cc81d46bae GIT binary patch literal 31740 zcmV)MK)An&P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U1;Cl3cfTMgK7h4*`8M9N++m@C-bBuZ>KRrkeLG zhyKh8v5Hxlw>iyj4shkpfBolm|G}RTlXtnaUPrB-KY8R4CqH!m`SbZ6e13nwKev5< z7k+)+)$b2J@>1e^`uww=@B1gOm!BVK`TP3%^>x?mdz}6~(9Z+EKS^iS&)@g;?}1YM zydJ*)cH{fGng7S_eE*B~J?!`3zyEh`1Y;MDm!gX&h2;4=>nw>YNFz3yv7)%dUQb9-Ndug)zR8QWxY@ntTI z5Q+8;IqWdQ4d;EgU|eF3CpNyvXfeIldTMb*dr8Uq3O6>=vmLpJ$;evb<@n=T!aMJH z=d;i`^A5Z-1`ehy{^860*^B>|uOA1xSEU<*f=TMbC&4e^T!u2Izj+r43HKY*^5Xlx z+>f;W{G-GsGFV=iJ2yD}`W#}F@Uynk%X8v=#b@U~g%{fX9)J*W?!v`{LHh+FI*vwAoY7z4Y2!?|t++;z&SP8Fe%_ z`WRzQPC7aC!9E3dNZYOAlYrcpkYtyr~Y-GUFQCE*1|Vy%2ikkA(k6{#@?!Or8_x1H`_PmP(V@;(P~;})#_?4W5ioa zT0+snC(qUA?Ol@H9mnj(t@*j`^dx<(I^tfX-kR4cd+k(?8{3R@aOHa@BCzu2HbOOU z`o@qCdFizV0vW<-FvdJN-ez%8aCzr>Y8ov&k)0TuGaw7Yj9!J&JPPO`XRZ3Bhf9Q%pM_a!WP~`3JL!^yHWPWPD;@ zcdgCE4I7O>_+}->tr(<7DcGc_>(1OyjZ_Bp0PN=K(HAXdxHfDuN;sD*TP@}nv8K0R zL5?K49E;w*CHh+@Rld)qHv;+N0Hbo>k-(h9E%vSJa%;w5BVCjj)lcQzLaCiwxV@^{ zD(9%r_g=(ZH;MK!({IQ!k+(Ew3B^r9wZkR=rSe|xBy%%&m9x2q9m=-b*Rs$K5d$`7 z<%r~^*Hz{?VNjZ@HwOYxoexOh$v{6U>SQjBP>9wAUrwcsMl55~v-wti_M~PhSp}ks zTEW$#i;djWrSdC4SpIDb|Jir<>kEYRgw;fT=K_*DSCV!JQ?G%W?=y5FeCU6W7cotB zR=>~j4nzo@+JNxS1rZK6c1{H~Qak?8hGEj97xFcFFYQSa(Q%P~a)vtsDvRJcx``iZ zq-mjAvSsT2)+t%yo#wa}=k6fj>TU?Gpd z&Gb{i1dH|hwE^)}X*a7YO>Tk`1|7lj5*IPzBxn~3H<(qVS(0p}QU$n(Z=fVf;8X9q z#EUezzM`eqe2tGpi+;Bm0RLUvjdXurvLe9t9IA#;fhBrj4g;J#T%kxVIEkzG;0`>s zcy(rmg+<(`MFb2-y=j;(F4JHf2u`C9Y`2QMaYOPJ z7zP_E2(`%YY5UL8KNbThc10 zL-D8K(+puCt!HwgJIbX;I2=x(GpT_NF&jDb6dl#R8n8NuQJ=HXA@mRhMIE(5JOPWc z511`*_lGLj0CWtcLm9n`R#Ya=d0HS>iwd0LfTA%t-q^1}rWI@JhNClVxkkZz8+xp)e-BWng%OI;8& zgo(LSVKZpmx5C|mY+^!s{>(ORS)GF)!F!%9gU#R&C?8cLsa={T!jJIrcIXFqu8{7E z=mB^U4TAHsR^~>i$xL%W!F^}73g`hVMI=EwFdcvt0)#IZLI3g#I}24)6L)pi20+H* z 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 Date: Tue, 9 Jul 2019 19:13:30 -0400 Subject: [PATCH 41/74] Insteon Scene Automation (#9692) * Add scene information and fix some typos * Indent issue * :pencil2: Tweak * Remove load_all_databases service * Fix spelling * :pencil2: Tweak - Remove linkable title * :pencil2: Tweak * :pencil2: Tweak (again) --- source/_components/insteon.markdown | 65 +++++++++++++++++++---------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/source/_components/insteon.markdown b/source/_components/insteon.markdown index fb95eff7d12..bc1d8c74d04 100644 --- a/source/_components/insteon.markdown +++ b/source/_components/insteon.markdown @@ -258,6 +258,25 @@ light: address: 1a2b3c ``` +### INSTEON Scenes + +Trigger an INSTEON scene on or off is done via automations. Two services are provided to support this feature: + +- **insteon.scene_on** + - **group**: (required) The INSTEON scene number to trigger. +- **insteon.scene_off** + - **group**: (required) The INSTEON scene to turn off + +```yaml +automation: + # Trigger an INSTEON scene 25 + - id: trigger_scene_25_on + alias: Turn on scene 25 + action: + - service: insteon.scene_on + group: 25 +``` + ### Events and Mini-Remotes Mini-Remote devices do not appear as Home Assistant entities, they generate events. The following events are available: @@ -265,7 +284,7 @@ Mini-Remote devices do not appear as Home Assistant entities, they generate even - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. -- **insteon.button_of** +- **insteon.button_off** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. @@ -274,33 +293,37 @@ This allows the mini-remotes to be configured as triggers for automations. Here ```yaml automation: # 4 or 8 button remote with button c pressed - trigger: - platform: event - event_type: insteon.button_on + - id: light_on + alias: Turn a light on + trigger: + - platform: event + event_type: insteon.button_on event_data: address: 1a2b3c button: c - condition: - - condition: state - entity_id: light.some_light - state: 'off' - action: - service: light.turn_on - entity_id: light.some_light + condition: + - condition: state + entity_id: light.some_light + state: 'off' + action: + - service: light.turn_on + entity_id: light.some_light # single button remote - trigger: - platform: event - event_type: insteon.button_on + - id: light_off + alias: Turn a light off + trigger: + - platform: event + event_type: insteon.button_on event_data: address: 1a2b3c - condition: - - condition: state - entity_id: light.some_light - state: 'off' - action: - service: light.turn_on - entity_id: light.some_light + condition: + - condition: state + entity_id: light.some_light + state: 'off' + action: + - service: light.turn_on + entity_id: light.some_light ``` ### Known Issues with the INSTEON Hub From c38e5fdd874a6e0ad2bf7f44d0ded136e785c51e Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Tue, 9 Jul 2019 16:15:53 -0700 Subject: [PATCH 42/74] Add Twilio SMS media_url docs (#9792) * Update twilio SMS docs for media_url setting This updates the Twilio SMS docs for the `media_url` PR. * :pencil2: Tweak * :pencil2: Tweak --- source/_components/twilio_sms.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_components/twilio_sms.markdown b/source/_components/twilio_sms.markdown index 6afe3fce0e6..15bdc37ed19 100644 --- a/source/_components/twilio_sms.markdown +++ b/source/_components/twilio_sms.markdown @@ -45,6 +45,10 @@ name: Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. +Media can be included with messages by setting the optional `media_url` variable. Only `.gif`, `.png`, or `.jpeg` content are supported, according to the Twilio documentation and this feature is [only supported in the US and Canada.][mms] + +[mms]: https://www.twilio.com/docs/sms/send-messages#include-media-in-your-messages + ```yaml # Example automation notification entry automation: @@ -59,4 +63,6 @@ automation: target: - '+14151234567' - '+15105555555' + data: + - media_url: 'https://www.home-assistant.io/images/supported_brands/home-assistant.png' ``` From 3f934a1e3f3d7347d6008782c978d78b7d5b4581 Mon Sep 17 00:00:00 2001 From: Jesse Rizzo <32472573+jesserizzo@users.noreply.github.com> Date: Tue, 9 Jul 2019 18:28:14 -0500 Subject: [PATCH 43/74] Enphase envoy production from individual inverters (#9600) * Enphase envoy production from individual inverters * Add minor clarification * Update enphase_envoy.markdown * Update enphase_envoy.markdown --- source/_components/enphase_envoy.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/enphase_envoy.markdown b/source/_components/enphase_envoy.markdown index 26409c14ff6..794d20453a5 100644 --- a/source/_components/enphase_envoy.markdown +++ b/source/_components/enphase_envoy.markdown @@ -66,4 +66,6 @@ monitored_conditions: description: The energy in Wh consumed the last 7 days. lifetime_consumption: description: The energy in Wh consumed in the lifetime of the Envoy. + inverters: + description: The power in W being produced by each micro-inverter. This will create a separate sensor for each micro-inverter you have installed. These sensors will only update about every 15 minutes, this is a limitation of the Enphase Envoy API. {% endconfiguration %} From 451dd96e75e2e3b1a63389376eed27830810e26c Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 10 Jul 2019 01:06:55 +0100 Subject: [PATCH 44/74] [climate] Migrate incomfort docs for climate-1.0 (#9817) * initial commit * manual rebase * manual rebase 2 * manual rebase --- source/_components/incomfort.markdown | 30 +++++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/source/_components/incomfort.markdown b/source/_components/incomfort.markdown index 41b9fd4bcbc..cd8534ae630 100644 --- a/source/_components/incomfort.markdown +++ b/source/_components/incomfort.markdown @@ -17,17 +17,25 @@ ha_release: 0.93 ha_iot_class: Local Polling --- -The `incomfort` integration links Home Assistant with your Intergas Lan2RF gateway for integrating the boiler and any room thermostats attached to it. +The `incomfort` integration links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it. -The boiler is represented as a **Water Heater** device. It will report the boiler's `state` and `temperature` (current temperature). The gateway does not expose any means to directly control the boiler or change its configuration. +It uses the [incomfort](https://pypi.org/project/incomfort-client/) client library. -Note that the `temperature` will switch between the CV and Tap temperatures according to the current operating mode of the boiler. If the boiler is neither pumping nor tapping, it will be reported as the higher of the two. +### Boiler -Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** devices. They will report the thermostat's `target_temperature` (setpoint) and `current_temperature` and the setpoint can be changed. +The boiler is represented as a **Water Heater** device. It will report the boiler's `state` and `current_temperature`. The gateway does not expose any means to directly control the boiler or change its configuration. + +Note that the `current_temperature` will switch between the CV (circulating volume) and Tap temperatures according to the current operating mode of the boiler. If the boiler is neither pumping nor tapping, it will be reported as the higher of the two. In addition, there is a **Sensor** for CV pressure, CV temperature, and Tap temperature, and a **Binary Sensor** that will be `on` if there is a fault with the boiler (the fault code will be a state attribute). -To send an alert if the CV pressure is too low or too high, consider the following automation: +### Rooms + +Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** devices. They will report the thermostat's `temperature` (setpoint) and `current_temperature` and the setpoint can be changed. + +## Automation + +To send an alert if the CV pressure is too low or too high, consider the following example: {% raw %} ```yaml @@ -48,9 +56,13 @@ To send an alert if the CV pressure is too low or too high, consider the followi Other properties are available via each device's attributes. -### Configuration +## Configuration -To add your Lan2RF gateway into your Home Assistant installation, add one of the following to your `configuration.yaml` file. +To set up this integration, add the following to your **configuration.yaml** file: + +The hub does not have to be in the same network as HA. + +### Older gateways Older gateways do not require user authentication: @@ -60,6 +72,8 @@ incomfort: host: IP_ADDRESS ``` +### Newer gateways + Alternatively, if a **username** & **password** is printed on the back of the gateway: ```yaml @@ -70,8 +84,6 @@ incomfort: password: PASSWORD ``` -The hub does not have to be in the same network as HA. - {% configuration %} host: description: The hostname/IP address of the Lan2RF gateway. From 73a51eb5e9d797d04b1bbcdccbd4f9b35cb78499 Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 10 Jul 2019 11:02:43 +0100 Subject: [PATCH 45/74] [climate] Migrate evohome docs for climate-1.0 (#9819) * initial commit * add water_heater, tweak docs --- source/_components/evohome.markdown | 70 ++++++++++++++++------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/source/_components/evohome.markdown b/source/_components/evohome.markdown index 8596939630f..e457b8c691d 100644 --- a/source/_components/evohome.markdown +++ b/source/_components/evohome.markdown @@ -17,19 +17,31 @@ redirect_from: - /components/climate.evohome/ --- -The `evohome` integration is the main integration to set up and integrate all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, primarily the Honeywell evohome multi-zone CH/DHW system. It does not support the home security functionality of TCC. +The `evohome` integration links Home Assistant with all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, such as: + * the Honeywell evohome CH/DHW system, and + * the Honeywell Round Thermostat -It uses v2 of the [evohome-client](https://github.com/watchforstock/evohome-client) client library and so will let you control (only) EU/international systems. It _does not_ leverage the [somecomfort](https://github.com/kk7ds/somecomfort) client library as used by US-based systems; for those, you may find what you need at the [honeywell climate platform](/components/climate.honeywell/). +It does not support the home security functionality of TCC. -Currently, only Controllers and Heating zones are supported; support for DHW controllers will be added at a later time. More information is available on the [evohome climate platform](#climate) page. +It uses v2 of the [evohome-client](https://github.com/watchforstock/evohome-client) client library. -There is currently support for the following device types within Home Assistant: +Honeywell removed support for higher-precision temperatures from the v2 API, so temperatures are reported to the nearest 0.5C. -- [Climate](#climate) +### evohome + +evohome is a multi-zone system. Each Zone is represented as a **Climate** device: it will expose the Zone's operating mode, temperature and setpoint. + +The Controller/Location is also represented as a **Climate** device: it will expose the location's operating mode (see below for details). Note that the Controller's temperatures are calculated as an average of all the Zones. + +The DHW controller is represented as a **WaterHeater** device: It will report its current temperature (but not target temperature), and it can be turned on or off. + +### Round Thermostat + +Round Thermostat is a single zone system. It is currently implemented as two **Climate** devices, as if a single zone evohome system. ## Configuration -To use this integration in your installation, add the following to your `configuration.yaml` file: +To set up this integration, add the following to your **configuration.yaml** file: ```yaml # Example configuration.yaml entry @@ -53,44 +65,40 @@ location_idx: type: int default: 0 scan_interval: - description: How often updates are retreived from Honeywell's web servers. The minimum value is 180 seconds, rounded up to the nearest minute. + description: How often updates are retrieved from Honeywell's web servers. The minimum value is 60 seconds. required: false type: int default: 300 {% endconfiguration %} -This is an IoT cloud-polling device, and the recommended minimum `scan_interval` is 300 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell. +This is an IoT cloud-polling device, and the recommended `scan_interval` is 180 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell. -## Climate +## Operating modes, and Inheritance -It is distinct from - but related to - the [`honeywell`](/components/climate.honeywell/) climate platform, which also allows (limited) integration with Honeywell Connected thermostats; these two integrations may well be usable side-by-side, but YMMV. +Zones support only three setpoint modes: **FollowSchedule**, **TemporaryOverride**, and **PermanentOverride**. -The evohome evotouch Controller supports seven distict operating modes: Auto, AutoWithEco, Away, DayOff, HeatingOff, and Custom; AutoWithReset is a 7th, hidden, mode. +Mostly, the Zone 'inherits' its functional operating mode from the controller (the actual algorithm for this is a little complicated). -Currently, only the standard HA operating modes are supported; the evohome modes are mapped thus: 'Eco' (AutoWithEco), 'Off' (HeatingOff), and 'Auto' (all other evohome modes). 'Away' mode is supported separately, in the HA fashion. +The evohome Controller supports seven distinct system modes: **Auto**, **AutoWithEco**, **Away**, **DayOff**, **HeatingOff**, and **Custom**; **AutoWithReset** is a hidden mode that will revert all Zones to **FollowSchedule** mode. -The evohome Heating zones support only three operating modes: FollowSchedule, TemporaryOverride, and PermanentOverride. If the zone is in FollowSchedule mode, it inherits its `operating_mode` from the controller; the other modes are mapped to 'Manual' or 'Off'. +If the zone is in **FollowSchedule** mode, its `temperature` (target temperature) is a function of its scheduled temperature and its functional mode - for example, **AutoWithEco** is scheduled temperature less 3C. -A device's actual operating mode can be tracked via its `device_state_attributes`, which includes a JSON data structure for current state called `status`. For example: -```json -{ - 'zoneId': '999999', - 'temperatureStatus': { - 'temperature': 21.5, - 'isAvailable': true - }, - 'activeFaults': [], - 'setpointStatus': { - 'targetHeatTemperature': 17.5, - 'setpointMode': 'FollowSchedule' - }, - 'name': 'Main Room' -} -``` +If the Controller is set to **HeatingOff** (target temperature to minimum) or **Away** (target temperature to 12C), then the Zones will inherit that mode regardless of their own setpoint mode. -This data can be accessed in automations, etc., via a value template: +If the Zone's temperature is changed, then it will be a **TemporaryOverride** that will revert to **FollowSchedule** at the next scheduled setpoint. Once this is done, the ZOne can be switched to **PermanentOverride** mode. + +In Home Assistant, all this is done via `HVAC_MODE` and `PRESET_MODE`. However, the actual operating mode of these devices can be tracked via its state attributes, which includes a JSON data structure for current state called `status`. + +For the Controller: {% raw %} ``` -value_template: "{{ state_attr('climate.main_room', 'status').setpointStatus.setpointMode }}" +value_template: "{{ state_attr('climate.main_room', 'status').systemModeStatus.mode }}" +``` +{% endraw %} + +For the Zones: +{% raw %} +``` +value_template: "{{ state_attr('climate.my_house', 'status').setpointStatus.setpointMode }}" ``` {% endraw %} \ No newline at end of file From 0cf680ca13fb913add5cad90eb2bad47c884b5e9 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Wed, 10 Jul 2019 12:37:56 +0200 Subject: [PATCH 46/74] Add arcam_fmj media player (#9660) * Add arcam_fmj media player * Drop extra line * Correct typo in receiver type * Remove redirect_from * Move larger config example to below config option table * Uppercase hostname to indicat it should be changed in example * int to integer * Increase level of headers and make them linkable * Correct spelling error * Minor language change * Minor spelling fix * Add configuration title * More spelling fixes * :pencil2: Tweaks * :pencil2: Tweak * Drop linkable_title from headers * :pencil2: Tweak --- source/_components/arcam_fmj.markdown | 103 +++++++++++++++++++++++ source/images/supported_brands/arcam.svg | 6 ++ 2 files changed, 109 insertions(+) create mode 100644 source/_components/arcam_fmj.markdown create mode 100644 source/images/supported_brands/arcam.svg diff --git a/source/_components/arcam_fmj.markdown b/source/_components/arcam_fmj.markdown new file mode 100644 index 00000000000..bd47be6b678 --- /dev/null +++ b/source/_components/arcam_fmj.markdown @@ -0,0 +1,103 @@ +--- +layout: page +title: "Arcam FMJ Receivers" +description: "Instructions on how to integrate Arcam FMJ Receivers into Home Assistant." +date: 2019-04-28 13:59 +0200 +sidebar: true +comments: false +sharing: true +footer: true +logo: arcam.svg +ha_category: Media Player +ha_release: 0.96 +ha_iot_class: Local Polling +--- + +The `arcam_fmj` integration allows you to control [Arcam FMJ Receveivers](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant. + +Supported devices: + +- AVR 380 +- AVR 450 +- AVR 750 +- Likely other AVRs + +## Configuration + +To add an Arcam FMJ to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Minimal example configuration.yaml entry +arcam_fmj: + - host: HOSTNAME + zone: + 1: +``` + +{% configuration %} +host: + description: IP address or hostname of the device. + required: true + type: string +port: + description: Port to connect to. + required: false + default: 50000 + type: integer +zone: + description: Per zone specific configuration + type: map + keys: + ZONE_INDEX: + name: + description: Name of zone + required: false + type: string + default: Arcam FMJ - ZONE_INDEX + turn_on: + description: Service to use when turning on device when no connection is established + required: false + type: action +{% endconfiguration %} + +```yaml +# Larger example configuration.yaml entry +media_player: + - platform: arcam_fmj + host: HOSTNAME + zone: + 1: + name: "Zone 1 name" + turn_on: + service: 'broadlink.send' + data: + host: BROADLINK_IR_IP + packet: JgAVADodHTo6HR0dHR0dOh0dHR06Oh0dHQ0FAA== + 2: + name: "Zone 2 name" + turn_on: + service: 'broadlink.send' + data: + host: BROADLINK_IR_IP + packet: JgAYADodHTo6Oh0dHR0dHR0dHR06Oh0dHQALZw0FAAAAAAAAAAAAAAAAAAA= +``` + +## Power state + +Arcam FMJ receivers turn off their network port when in standby, the component will try to +reconnect to the receiver every 5 seconds. This mean powering on the first zone is not +possible over the builtin network connection. Two options for complete power control +exists: IR or Serial gateway. + +### IR command + +Use an IR blaster to send a command to turn the device on using these discrete codes: + + - Zone 1: Protocol: NEC1 Device: 16 Function: 123 + - Zone 2: Protocol: NEC1 Device: 23 Function: 123 + +### Serial Port to network gateway + +Use a network to a serial port gateway to connect to the serial port of the +receiver. The serial port is always available and can power on the device. +This is the most reliable communication method as well. diff --git a/source/images/supported_brands/arcam.svg b/source/images/supported_brands/arcam.svg new file mode 100644 index 00000000000..849787cebeb --- /dev/null +++ b/source/images/supported_brands/arcam.svg @@ -0,0 +1,6 @@ + + + + + + From f955c612262d6b629166d6c8619b960c8ed7fbe9 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Wed, 10 Jul 2019 05:39:08 -0500 Subject: [PATCH 47/74] Add template support to numeric_state trigger's for option (#9781) --- source/_docs/automation/templating.markdown | 1 + source/_docs/automation/trigger.markdown | 24 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 2b80dfc5d5e..1e2a3129db9 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -118,6 +118,7 @@ The following tables show the available trigger data per platform. | `trigger.above` | The above threshold, if any. | `trigger.from_state` | The previous [state object] of the entity. | `trigger.to_state` | The new [state object] that triggered trigger. +| `trigger.for` | Timedelta object how long state has met above/below criteria, if any. ### state diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 8eec3a91f3b..9c839689dfe 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -106,6 +106,30 @@ automation: ``` {% endraw %} +You can also use templates in the `for` option. + +{% raw %} +```yaml +automation: + trigger: + platform: numeric_state + entity_id: + - sensor.temperature_1 + - sensor.temperature_2 + above: 80 + for: + minutes: "{{ states('input_number.high_temp_min')|int }}" + seconds: "{{ states('input_number.high_temp_sec')|int }}" + action: + service: persistent_notification.create + data_template: + message: > + {{ trigger.to_state.name }} too high for {{ trigger.for }}! +``` +{% endraw %} + +The `for` template(s) will be evaluated when an entity changes as specified. + ### State trigger Triggers when the state of a given entity changes. If only `entity_id` is given trigger will activate for all state changes, even if only state attributes change. From 8d87a621c965ef9ecacd81475e439b5057f3f57e Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 10 Jul 2019 11:40:51 +0100 Subject: [PATCH 48/74] [climate] Migrate geniushub docs for climate-1.0 (#9818) * initial commit * manual rebase * manual rebase * manual rebase 2 * add modes --- source/_components/geniushub.markdown | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/source/_components/geniushub.markdown b/source/_components/geniushub.markdown index 8d3433d1ff9..2cedff9d5fe 100644 --- a/source/_components/geniushub.markdown +++ b/source/_components/geniushub.markdown @@ -17,9 +17,11 @@ ha_release: 0.92 ha_iot_class: Local Polling --- -The `geniushub` integration links Home Assistant with your Genius Hub for controlling its Zones and Devices, and visibility of any Issues. Currently, there is no support for Zone schedules. +The `geniushub` integration links Home Assistant with your Genius Hub CH/DHW system, including its Zones, Devices, and Issues. -It uses the [geniushub-client](https://pypi.org/project/geniushub-client/) library. +Currently, there is no support for Zone schedules. + +It uses the [geniushub](https://pypi.org/project/geniushub-client/) client library. ### Zones @@ -30,9 +32,16 @@ Each Zone controlled by your Genius hub will be exposed as either a: Other Zone types, such as **On / Off** Zones, are not currently supported. -Each such entity will report back its mode, state, setpoint and current temperature; other properties are available via its attributes (see below). +Each such entity will report back its mode, state, setpoint and current temperature; other properties are available via its attributes (see below). The Zone's mode can changed as below. -In addition, the entity's mode and setpoint can be changed. The entity's `operating_mode` can be set to one of `off`, `timer`, `on` (i.e. **Override** mode) or `eco`. The `eco` mode is a proxy for the **Footprint** mode and so is only available to **Radiator** Zones that have room sensors. +GH mode | HA Operation | HA Preset +:---: | :---: | :---: +**Off** | Off | N/A +**Timer** | Heat | None +**Override** | Heat | Boost +**Footprint** | Heat | Activity + +Note that **Footprint** mode is only available to **Radiator** Zones that have room sensors. ### Devices @@ -102,7 +111,7 @@ value_template: "{{ state_attr('climate.main_room', 'status').occupied }}" ## Configuration -To add your Genius Hub into your Home Assistant installation, add one of the following to your `configuration.yaml` file. +To set up this integration, add one of the following to your **configuration.yaml** file. ### Option 1: hub token only @@ -122,6 +131,8 @@ geniushub: - uses the v3 API - unofficial, but there are additional features (e.g., battery levels) - polls the hub directly (so is faster, say ~1s response time) +The hub does not have to be in the same network as HA. + ```yaml # Example configuration.yaml entry, directly polling the Hub geniushub: @@ -130,8 +141,6 @@ geniushub: password: GENIUS_HUB_PASSWORD ``` -Note that if a `host` is used instead of `token`, then the `username` and `password` are also required. - {% configuration %} token: description: The Hub Token of the Genius Hub. @@ -150,3 +159,5 @@ password: required: false type: string {% endconfiguration %} + +Note that if a `host` is used instead of `token`, then the `username` and `password` are also required. From 76dec95bb678e535139c2a050b1d50056ea22c53 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 21:29:31 +0200 Subject: [PATCH 49/74] MySensors Climate 1.0 changes --- source/_components/climate.mysensors.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/_components/climate.mysensors.markdown b/source/_components/climate.mysensors.markdown index d53c2a89f47..fa5cbb6c699 100644 --- a/source/_components/climate.mysensors.markdown +++ b/source/_components/climate.mysensors.markdown @@ -29,10 +29,10 @@ V_HVAC_FLOW_STATE is mapped to the state of the Climate integration in Home Assi Home Assistant State | MySensors State ---------------------|---------------- -STATE_COOL | CoolOn -STATE_HEAT | HeatOn -STATE_AUTO | AutoChangeOver -STATE_OFF | Off +HVAC_MODE_COOL | CoolOn +HVAC_MODE_HEAT | HeatOn +HVAC_MODE_AUTO | AutoChangeOver +HVAC_MODE_OFF | Off Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible. @@ -46,7 +46,6 @@ For more information, visit the [serial api] of MySensors. ### Example sketch for MySensors 2.x - ```cpp /* * Documentation: http://www.mysensors.org From e504802b0e43f50e48f838562c67204286c19b86 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 21:43:40 +0200 Subject: [PATCH 50/74] Updates nuheat docs for Climate 1.0 --- source/_components/nuheat.markdown | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/source/_components/nuheat.markdown b/source/_components/nuheat.markdown index cee7f13126c..020095a7e72 100644 --- a/source/_components/nuheat.markdown +++ b/source/_components/nuheat.markdown @@ -63,12 +63,10 @@ The NuHeat Thermostat supports the following key concepts. The `target temperature` is the temperature that the device attempts to achieve. The target temperature is either determined by the schedule programmed into the thermostat (`auto mode`) or may be overridden. When the target temperature is set by Home Assistant, the thermostat will hold this temperature until the schedule is resumed. - ## Attributes The following attributes are provided by the NuHeat thermostat: `name`, `temperature_unit`, `current_temperature`, `target_temperature`, `current_hold_mode`, `current_operation`, `operation_list`, `min_temp` and `max_temp`. - ### Attribute `name` Returns the name of the NuHeat Thermostat. @@ -102,7 +100,7 @@ not in auto operation mode. | ---------------| ----------- | | Integer | Target temperature -### Attribute `current_hold_mode` +### Attribute `preset_mode` Returns the current temperature hold, if any. @@ -110,21 +108,21 @@ Returns the current temperature hold, if any. | ---------------| ----------- | | String | 'temperature', 'temporary_temperature', 'auto', etc. -### Attribute `current_operation` +### Attribute `hvac_action` -Returns the current operation of the thermostat. +Returns the current HVAC mode of the thermostat. | Attribute type | Description | | ---------------| ----------- | | String | 'heat', 'idle' -### Attribute `operation_list` +### Attribute `preset_modes` -Returns the list of available operation modes. +Returns the list of available preset modes. | Attribute type | Description | | ---------------| ----------- | -| List of String | Available operation modes +| List of String | Available preset modes ### Attribute `min_temp` @@ -142,12 +140,11 @@ Returns the maximum supported temperature by the thermostat | ---------------| ----------- | | Integer | Maximum supported temperature - ## Services -The following services are provided by the NuHeat Thermostat: `set_temperature`, `set_hold_mode`, `nuheat_resume_program`. +The following services are provided by the NuHeat Thermostat: `set_temperature`, `set_hvac_mode`, `set_preset_mode`, `resume_program`. -The services `fan_min_on_time`, `set_aux_heat`, `set_away_mode`, `set_humidity`, `set_fan_mode`, `set_operation_mode` and `set_swing_mode` offered by the [Climate component](/components/climate/) are not implemented for this thermostat. +The services `fan_min_on_time`, `set_aux_heat`, `set_away_mode`, `set_humidity`, `set_fan_mode`, and `set_swing_mode` offered by the [Climate component](/components/climate/) are not implemented for this thermostat. ### Service `set_temperature` @@ -161,16 +158,16 @@ Puts the thermostat into an indefinite hold at the given temperature. Only the target temperatures relevant for the current operation mode need to be provided. -### Service `set_hold_mode` +### Service `set_preset_mode` -Sets the thermostat's hold mode. The NuHeat thermostat supports "auto" (to run the thermostat's programmed schedule), "temperature" (to indefinitely hold the thermostat's current target temperature), or "temporary_temperature" (to hold the thermostat's current target temperature until the thermostat's next scheduled event). +Sets the thermostat's preset mode. Without a preset mode set it run the thermostat's programmed schedule, "temperature" (to indefinitely hold the thermostat's current target temperature), or "temporary_temperature" (to hold the thermostat's current target temperature until the thermostat's next scheduled event). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `hold_mode` | no | New value of hold mode. -### Service `nuheat_resume_program` +### Service `resume_program` Resumes the currently active schedule. From 2d0b94f9198a2d05bb6a61614e7da5e02e396408 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 21:56:05 +0200 Subject: [PATCH 51/74] Updates Nest for Climate 1.0 --- source/_components/nest.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index 5512645fc80..392f2767570 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -309,10 +309,10 @@ The following conditions are available by device: - security\_state: `ok` or `deter`. [Security State](#security-state). Only available when Nest Camera exists. - Nest Thermostat: - humidity - - operation\_mode + - preset\_mode - temperature - target - - hvac\_state: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). + - hvac\_mode: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). - Nest Protect: - co\_status: `Ok`, `Warning` or `Emergency` - smoke\_status: `Ok`, `Warning` or `Emergency` From 82640cc6455b11f25468a53a46be4c32a2378c11 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 21:59:00 +0200 Subject: [PATCH 52/74] Updates Radio Thermostat for Climate 1.0 --- source/_components/radiotherm.markdown | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/source/_components/radiotherm.markdown b/source/_components/radiotherm.markdown index 2bf1be5021a..05bf0fe7f8e 100644 --- a/source/_components/radiotherm.markdown +++ b/source/_components/radiotherm.markdown @@ -16,7 +16,6 @@ redirect_from: - /components/climate.radiotherm/ --- - The `radiotherm` climate platform let you control a thermostat from [Radio Thermostat](http://www.radiothermostat.com/) or [3M Filtrete](http://www.radiothermostat.com/filtrete/products/). Your thermostat must have the Wi-Fi module installed and connected to your network. The underlying library supports: @@ -49,16 +48,6 @@ host: description: List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected. required: false type: list -away_temperature_heat: - description: Target heating temperature in Fahrenheit for away mode. This is separate from away mode in the app. - required: false - default: 60 - type: float -away_temperature_cool: - description: Target cooling temperature in Fahrenheit for away mode. This is separate from away mode in the app. - required: false - default: 85 - type: float hold_temp: description: Boolean to control if Home Assistant temperature adjustments hold (`true`) or are temporary (`false`). required: false @@ -68,8 +57,6 @@ hold_temp: Set `hold_temp: true` if you want temperature settings from Home Assistant to override a thermostat schedule on the thermostat itself. Otherwise Home Assistant will perform temporary temperature changes. -The away mode functions similarly to the away mode feature of the website and apps, but cannot detect if you set away mode outside of Home Assistant. - Multiple thermostats can be assigned by using `host:` if auto-detection is not used. ```yaml From e3e18472c34b1976e06e1c89ab4764a8654955ff Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:16:22 +0200 Subject: [PATCH 53/74] Updates Ecobee for Climate 1.0 --- source/_components/ecobee.markdown | 245 ++--------------------------- 1 file changed, 9 insertions(+), 236 deletions(-) diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index 23bca332038..64ff1350d2c 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -118,264 +118,37 @@ The _target temperature_ is the temperature that the device attempts to achieve. The target temperature is either determined by the currently active climate or it may be overridden by a hold. When the thermostat is not in auto mode, there is a single target -temperature. When the thermostat is in auto operation mode, there is a +temperature. When the thermostat is in auto HVAC mode, there is a pair of target temperatures: the lower target temperature determines the lowest desired temperature, while the higher target temperature determines the highest desired temperature (the thermostat will switch between heating and cooling to keep the temperature within these limits). -A _climate_ is a predefined or user-defined set of states that the +A _climate_ is a predefined or user-defined set of presets that the thermostat aims to achieve. The ecobee thermostat provides three predefined climates: Home, Away, and Sleep. The user can define additional climates. -A _hold_ is an override of the target temperature defined in the -currently active climate. The temperature targeted in the hold mode may be -explicitly set (temperature hold), it may be derived from a reference +A _preset_ is an override of the target temperature defined in the +currently active climate. The temperature targeted in the preset mode may be +explicitly set (temperature preset), it may be derived from a reference climate (home, away, sleep, etc.), or it may be derived from a vacation defined by the thermostat. All holds are temporary. Temperature and climate holds expire when the thermostat transitions to the next climate defined in its program. A vacation hold starts at the beginning of the defined vacation period, and expires when the vacation period ends. -When in _away mode_, the target temperature is permanently overridden by -the target temperature defined for the away climate. The away mode is a +When in _away preset_, the target temperature is permanently overridden by +the target temperature defined for the away climate. The away preset is a simple way to emulate a vacation mode. -The _operation mode_ of the device is the currently active operational +The _HVAC mode_ of the device is the currently active operational modes that the Ecobee thermostat provides: heat, auxHeatOnly, cool, auto, and off. -## Attributes - -The following attributes are provided by the Ecobee Thermostat: -`name`, `temperature_unit`, `current_temperature`, `target_temperature`, -`target_temperature_low`, `target_temperature_high`, `desired_fan_mode`, -`fan`, `current_hold_mode`, `operation`, `operation_list`, `equipment_running`, -`operation_mode`, `mode`, `fan_min_on_time`, `device_state_attributes`, -`is_away_mode_on`, `vacation`, `climate_list`, `aux_heat`. -The attributes `min_temp` and `max_temp` are meaningless constant values. - -### Attribute `name` - -Returns the name of the Ecobee Thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the Ecobee Thermostat - -### Attribute `temperature_unit` - -Returns the unit of measurement used for temperature by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the temperature unit - -### Attribute `current_temperature` - -Returns the current temperature measured by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Currently measured temperature - -### Attribute `target_temperature` - -Returns the target temperature of the thermostat, when the thermostat is -not in auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### Attribute `target_temperature_low` - -Returns the desired heating temperature set in the thermostat when in -auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### Attribute `target_temperature_high` - -Returns the desired cooling temperature set in the thermostat when in -auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### Attribute `desired_fan_mode` - -Returns the desired fan mode of the current operation. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - -### Attribute `fan` - -Returns the current fan state. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - -### Attribute `current_hold_mode` - -Returns the current temperature hold, if any. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'temp', 'vacation', 'home', 'away', etc., None - -### Attribute `operation` - -Returns the current operation of the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'auto', 'cool', 'heat', 'off' - -### Attribute `operation_list` - -Returns the list of available operation modes. - -| Attribute type | Description | -| ---------------| ----------- | -| List of String | Available operation modes - -### Attribute `operation_mode` - -Returns the current operation mode of the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Currently active operation mode - -### Attribute `equipment_running` - -Returns the list of equipment that is currently operating from the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | If no equipment is currently running empty string is returned. Possible values are a comma separated list of any of the following: heatPump, heatPump2, heatPump3, compCool1, compCool2, auxHeat1, auxHeat2, auxHeat3, fan, humidifier, dehumidifier, ventilator, economizer, compHotWater, auxHotWater. - -### Attribute `mode` - -Returns the climate currently active on the thermostat. The mode -is returned as the user-visible name (rather than the internally used name). - -### Attribute `fan_min_on_time` - -Returns the current fan minimum on time. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Current fan minimum on time in minutes - -### Attribute `is_away_mode_on` - -Returns whether the thermostat is in away mode (see the corresponding -service for more detail). - -### Attribute `actual humidity` - -Returns the humidity as measured by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Current humidity - -### Attribute `vacation` - -Returns the currently active vacation or `None`. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of currently active vacation | - -### Attribute `climate_list` - -Returns the list of climates defined in the thermostat. - -### Attribute `aux_heat` - -Returns the current auxiliary heat state. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - ## Services -The following services are provided by the Ecobee Thermostat: -`set_away_mode`, `set_hold_mode`, `set_temperature`, `set_operation_mode`, -`fan_min_on_time`, `resume_program`. -The services `set_aux_heat`, `set_humidity`, `set_fan_mode`, and -`set_swing_mode` offered by the [Climate component](/components/climate/) -are not implemented for this thermostat. - -### Service `set_away_mode` - -Turns Away Mode on or off, ignoring the next scheduled activity. This setting will override the thermostat Hold Duration setting, even if you set the hold duration to "Until the next scheduled activity" within thermostat preferences. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `away_mode` | no | 'on' or 'off' - -### Service `set_hold_mode` - -Puts the thermostat into the given hold mode. For 'home', 'away', 'sleep', -and any other hold based on a comfort setting, the -target temperature is set to whatever is programmed in the comfort setting. -For 'temp', the current temperature is taken as the target temperature. -When None is provided as parameter, the hold_mode is turned off. -If the thermostat Hold Duration is set to "Until the next scheduled activity" within thermostat preferences, then the next scheduled activity will change this hold mode. -Note that it is not possible to set a vacation hold; this must be defined on the thermostat directly. However, a vacation hold can be -canceled. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | `temp`, `home`, `away`, `sleep`, `None`, `smart1`, `smart2`, etc. - -NOTE: If you create custom hold modes (also known as "Comfort Settings") on your ecobee.com dashboard, their hold_modes are `smart1`, `smart2`, `smart3`, etc. The number for each custom mode should match the mode's icon on your ecobee.com dashboard. Also note that the mode numbers/icons in the ecobee mobile app *may not match* the numbers/icons from the ecobee.com web dashboard. The ones on the website are the ones you shoud use to determine the correct `smartX` hold_mode IDs. - -### Service `set_temperature` - -Puts the thermostat into a temporary hold at the given temperature. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `target_temp_low` | no | Desired heating target temperature (when in auto mode) -| `target_temp_high` | no | Desired cooling target temperature (when in auto mode) -| `temperature` | no | Desired target temperature (when not in auto mode) - -Only the target temperatures relevant for the current operation mode need to -be provided. - -### Service `set_operation_mode` - -Sets the current operation mode of the thermostat. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `operation_mode` | no | 'auto', 'auxHeatOnly', 'cool', 'heat', 'off' - -### Service `fan_min_on_time` - -Sets the fan minimum on time. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `fan_min_on_time` | no | Desired fan minimum on time +The following extra services are provided by the Ecobee Thermostat: `resume_program`. ### Service `resume_program` From 2059aca31a00a657fbab29da7dfeed69513a864b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:25:02 +0200 Subject: [PATCH 54/74] Updates Stiebel Eltron to Climate 1.0 --- source/_components/stiebel_eltron.markdown | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/source/_components/stiebel_eltron.markdown b/source/_components/stiebel_eltron.markdown index e2b252f2e51..02188f2bbe2 100644 --- a/source/_components/stiebel_eltron.markdown +++ b/source/_components/stiebel_eltron.markdown @@ -29,18 +29,22 @@ By now, the following units are tested: - LWZ504e - LWZ304 -## Operation modes +## HVAC modes -Only the standard HA operation modes are supported. The STIEBEL ELTRON modes are mapped and configurable as follows: +The following HVAC modes are supported. The STIEBEL ELTRON modes are mapped and configurable as follows: -- Auto (STATE_AUTO): Automatic mode -- Eco (STATE_ECO): Standby mode -- Manual (STATE_MANUAL): Manual mode -- Off (STATE_OFF): DHW mode (domestic hot water mode, heating is switched off) +- Auto (HVAC_MODE_AUTO): Automatic mode +- Manual (HVAC_MODE_HEAT): Manual mode +- Off (HVAC_MODE_OFF): DHW mode (domestic hot water mode, heating is switched off) -The HA operation mode 'On' is displayed, if the following STIEBEL ELTRON modes are configured directly on the unit: +## Preset modes -- On (STATE_ON): Day mode, Setback mode or Emergency operation +The following preset modes are supported. The STIEBEL ELTRON modes are mapped and configurable as follows: + +- Eco mode (PRESET_ECO) +- Day mode (PRESET_DAY) +- Setback mode (PRESET_SETBACK) +- Emergency mode (PRESET_EMERGENCY) ## Configuration From ebd5817eb4912496292fcca3a40c1d17b7ec35b6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:31:58 +0200 Subject: [PATCH 55/74] Updates KNX for Climate 1.0 --- source/_components/climate.knx.markdown | 19 ++++++++++++------- source/_components/knx.markdown | 1 - 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index b37c5ab075c..ca53734f988 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -69,14 +69,19 @@ climate: `operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified. -The following values are valid for the `operation_modes` attribute: +The following values are valid for the `hvac_mode` attribute: -- Comfort (maps internally to STATE_HEAT within Home Assistant) -- Standby (maps internally to STATE_ECO within Home Assistant) -- Night (maps internally to STATE_IDLE within Home Assistant) -- Frost Protection (maps internally to STATE_MANUAL within Home Assistant) -- Fan only (maps internally to STATE_FAN_ONLY within Home Assistant) -- Dehumidification (maps internally to STATE_DRY within Home Assistant) +- Off (maps internally to HVAC_MODE_OFF within Home Assistant) +- Heat (maps internally to HVAC_MDOE_HEAT within Home Assistant) +- Fan only (maps internally to HVAC_MODE_FAN_ONLY within Home Assistant) +- Dehumidification (maps internally to HVAC_MODE_DRY within Home Assistant) + +The following presets are valid for the `preset_mode` attribute: + +- Comfort (maps internally to PRESET_COMFORT within Home Assistant) +- Standby (maps internally to PRESET_AWAY within Home Assistant) +- Night (maps internally to PRESET_SLEEP within Home Assistant) +- Frost Protection (maps internally to PRESET_ECO within Home Assistant) {% configuration %} name: diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index 0749dc101f9..da8b6ecf359 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -14,7 +14,6 @@ ha_release: 0.24 ha_iot_class: Local Polling --- - The [KNX](https://www.knx.org) integration for Home Assistant allows you to connect to a KNX/IP devices. The integration requires a local KNX/IP interface like the [Weinzierl 730](https://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/produktarchiv-en/knx-ip-interface-730-en). Through this, it will send and receive commands to and from other devices to the KNX bus. From 5836dd46ce049fb47fafb325506f4f209208e39e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:37:27 +0200 Subject: [PATCH 56/74] Updates generic_thermostat for Climate 1.0 --- source/_components/generic_thermostat.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/generic_thermostat.markdown b/source/_components/generic_thermostat.markdown index 3a2f6dda052..5532d0cf10a 100644 --- a/source/_components/generic_thermostat.markdown +++ b/source/_components/generic_thermostat.markdown @@ -77,8 +77,8 @@ keep_alive: description: Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. Use also with switches that might lose state. The keep-alive call is done with the current valid climate integration state (either on or off). required: false type: [time, integer] -initial_operation_mode: - description: Set the initial operation mode. Valid values are `off` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state. +initial_hvac_mode: + description: Set the initial HVAC mode. Valid values are `heat`, `cool` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state. required: false type: string away_temp: @@ -94,7 +94,7 @@ precision: A full configuration example looks like the one below. `min_cycle_duration` and `keep_alive` must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. -Currently the `generic_thermostat` climate platform supports 'heat', 'cool' and 'off' operation modes. You can force your `generic_thermostat` to avoid starting by setting Operation to 'off'. +Currently the `generic_thermostat` climate platform supports 'heat', 'cool' and 'off' hvac modes. You can force your `generic_thermostat` to avoid starting by setting HVAC mode to 'off'. Please note that changing Away Mode you will force a target temperature change as well that will get restored once the Away Mode is turned off. @@ -115,7 +115,7 @@ climate: seconds: 5 keep_alive: minutes: 3 - initial_operation_mode: "off" + initial_hvac_mode: "off" away_temp: 16 precision: 0.1 ``` From 9359453bd3821a5949ce57fe4d446acccf6fcc62 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:44:14 +0200 Subject: [PATCH 57/74] Updates Google Assistant for Climate 1.0 --- source/_components/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index df1726c4b12..50010a0d764 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -191,7 +191,7 @@ Currently, the following domains are available to be used with Google Assistant, - lock (lock/unlock (to allow assistant to unlock, set the `allow_unlock` key in configuration)) - cover (on/off/set position) - media_player (on/off/set volume (via set brightness)/source (via set input source)) -- climate (temperature setting, operation_mode) +- climate (temperature setting, hvac_mode) - vacuum (dock/start/stop/pause) - sensor (temperature setting, only for temperature sensor) From 4204af3b8535ca039f8f44ec986a9fea071c166c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 10 Jul 2019 22:51:53 +0200 Subject: [PATCH 58/74] Updates climate platform docs for Climate 1.0 --- source/_components/climate.markdown | 65 +++++++++-------------------- 1 file changed, 20 insertions(+), 45 deletions(-) diff --git a/source/_components/climate.markdown b/source/_components/climate.markdown index 8b6bd73bc9a..8684a2f58c7 100644 --- a/source/_components/climate.markdown +++ b/source/_components/climate.markdown @@ -19,7 +19,8 @@ The `climate` integration is built for the controlling and monitoring of HVAC (h ## Services ### Climate control services -Available services: `climate.set_aux_heat`, `climate.set_away_mode`, `climate.set_temperature`, `climate.set_humidity`, `climate.set_fan_mode`, `climate.set_operation_mode`, `climate.set_swing_mode`, `climate.set_hold_mode`, `climate.turn_on`, `climate.turn_off` + +Available services: `climate.set_aux_heat`, `climate.set_preset_mode`, `climate.set_temperature`, `climate.set_humidity`, `climate.set_fan_mode`, `climate.set_hvac_mode`, `climate.set_swing_mode`, `climate.turn_on`, `climate.turn_off`

Not all climate services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon **Services**. @@ -34,7 +35,7 @@ Turn auxiliary heater on/off for climate device | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `aux_heat` | no | New value of auxiliary heater. -#### Automation example +#### Automation example ```yaml automation: @@ -48,18 +49,18 @@ automation: aux_heat: true ``` -### Service `climate.set_away_mode` +### Service `climate.set_preset_mode` -Set away mode for climate device. The away mode changes the target temperature permanently to a temperature +Set preset mode for climate device. The away mode changes the target temperature permanently to a temperature reflecting a situation where the climate device is set to save energy. This may be used to emulate a "vacation mode", for example. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `away_mode` | no | New value of away mode. +| `preset_mode` | no | New value of preset mode. -#### Automation example +#### Automation example ```yaml automation: @@ -67,37 +68,10 @@ automation: platform: time at: "07:15:00" action: - - service: climate.set_away_mode + - service: climate.set_preset_mode data: entity_id: climate.kitchen - away_mode: 'on' -``` - - -### Service `climate.set_hold_mode` - -Set hold mode for climate device. The hold mode changes the target temperature of the client device temporarily to -a different temperature. Typical hold modes provided by a climate device are "away" or "home", where the hold temperature -is chosen depending on a predefined climate, or "temperature" hold, where a particular temperature is selected as the -temporary target temperature. The particular modes available depend on the climate device. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | New value of hold mode. - -#### Automation example - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_hold_mode - data: - entity_id: climate.kitchen - hold_mode: 'away' + preset_mode: 'eco' ``` ### Service `climate.set_temperature` @@ -112,7 +86,7 @@ Set target temperature of climate device | `target_temp_low` | yes | New target low temperature for hvac | `operation_mode` | yes | Operation mode to set temperature to. This defaults to current_operation mode if not set, or set incorrectly. -#### Automation example +#### Automation example ```yaml automation: @@ -136,7 +110,7 @@ Set target humidity of climate device | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `humidity` | no | New target humidity for climate device -#### Automation example +#### Automation example ```yaml automation: @@ -159,7 +133,7 @@ Set fan operation for climate device | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `fan_mode` | no | New value of fan mode -#### Automation example +#### Automation example ```yaml automation: @@ -173,16 +147,16 @@ automation: fan_mode: 'On Low' ``` -### Service `climate.set_operation_mode` +### Service `climate.set_hvac_mode` -Set operation mode for climate device +Set HVAC mode for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `operation_mode` | no | New value of operation mode +| `hvac_mode` | no | New value of HVAC mode -#### Automation example +#### Automation example ```yaml automation: @@ -190,10 +164,10 @@ automation: platform: time at: "07:15:00" action: - - service: climate.set_operation_mode + - service: climate.set_hvac_mode data: entity_id: climate.kitchen - operation_mode: Heat + operation_mode: heat ``` ### Service `climate.set_swing_mode` @@ -205,7 +179,7 @@ Set operation mode for climate device | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. | `swing_mode` | no | New value of swing mode -#### Automation example +#### Automation example ```yaml automation: @@ -218,6 +192,7 @@ automation: entity_id: climate.kitchen swing_mode: 1 ``` + ### Service `climate.turn_on` Turn climate device on From 70596be32f242debae339e11cd6dd08f6c1fcf5f Mon Sep 17 00:00:00 2001 From: Matte23 Date: Wed, 10 Jul 2019 23:07:10 +0200 Subject: [PATCH 59/74] Add marker sensor to CUPS (#9820) --- source/_components/cups.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cups.markdown b/source/_components/cups.markdown index 62ca1bca705..d1b4ae637b0 100644 --- a/source/_components/cups.markdown +++ b/source/_components/cups.markdown @@ -17,7 +17,7 @@ redirect_from: --- -The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. +The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. If you want to use an existing CUPS server the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers". From 3d82a2bcd88cfbb4cf329361e75ecffef6498831 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 10 Jul 2019 14:27:20 -0700 Subject: [PATCH 60/74] Clarify --- source/_components/climate.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/climate.markdown b/source/_components/climate.markdown index 8684a2f58c7..c9c623ecb88 100644 --- a/source/_components/climate.markdown +++ b/source/_components/climate.markdown @@ -195,7 +195,7 @@ automation: ### Service `climate.turn_on` -Turn climate device on +Turn climate device on. This is only supported if the climate device supports being turned off. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -203,7 +203,7 @@ Turn climate device on ### Service `climate.turn_off` -Turn climate device off +Turn climate device off. This is only supported if the climate device has the hvac mode "off". | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | From 8b2ced20bda7027e48c351b818b402fabba61428 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 11 Jul 2019 00:10:54 +0200 Subject: [PATCH 61/74] [Toon] New scan_interval on integration level (#9488) --- source/_components/toon.markdown | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown index b7ca838baf0..e53342a602d 100644 --- a/source/_components/toon.markdown +++ b/source/_components/toon.markdown @@ -65,6 +65,11 @@ client_secret: description: Toon API Consumer Secret. required: true type: string +scan_interval: + description: The rate in seconds at which Toon should be polled for new data. + required: false + type: integer + default: 300 {% endconfiguration %} ## Climate @@ -74,4 +79,12 @@ The `toon` climate platform allows you to interact with your Toon thermostat. Home Assistant support the four Toon presets: `Comfort`, `Home`, `Away` and `Sleep`. It also supports setting the temperature manually. -The Toon API is polled at a 300-second interval, so the status is relatively fresh without overloading the API. +## Services + +### Service `update` + +Updates ententies from Toon with fresh queried data. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------- | +| `display` | Yes | The display you wish to fetch updates from. | From 305a259d7644ad3eacb6ced81b5cd78a1f4b321d Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Wed, 10 Jul 2019 16:55:32 -0600 Subject: [PATCH 62/74] Add WWLLN docs (#9802) * Add WWLLN docs * Updated docs * Added more docs and a screenshot * Added window parameter * :pencil2: Tweak --- source/_components/wwlln.markdown | 82 +++++++++++++++++++ source/images/screenshots/wwlln-feed-map.png | Bin 0 -> 107170 bytes source/images/supported_brands/wwlln.jpg | Bin 0 -> 83410 bytes 3 files changed, 82 insertions(+) create mode 100644 source/_components/wwlln.markdown create mode 100644 source/images/screenshots/wwlln-feed-map.png create mode 100644 source/images/supported_brands/wwlln.jpg diff --git a/source/_components/wwlln.markdown b/source/_components/wwlln.markdown new file mode 100644 index 00000000000..4a2fa75fefc --- /dev/null +++ b/source/_components/wwlln.markdown @@ -0,0 +1,82 @@ +--- +layout: page +title: "World Wide Lightning Location Network (WWLLN)" +description: "Instructions on how to integrate WWLLN within Home Assistant." +date: 2019-07-06 23:17 +sidebar: true +comments: false +sharing: true +footer: true +logo: wwlln.jpg +ha_category: Geolocation +ha_release: 0.96 +ha_iot_class: Cloud Polling +ha_config_flow: true +--- + +The `wwlln` integration displays lightning strike information from the +[World Wide Lightning Location Network (WWLLN)](http://wwlln.net). + +Entities are generated, updated and removed automatically with each update +from the feed. Each entity defines latitude and longitude and will be shown +on the default map automatically, or on a map card by defining the source +`wwlln`. The distance (in kilometers or miles, depending on your unit system) +is available as the state of each entity. + +

+ +

+ +New data is returned every 5 minutes. + +## Configuration + +To retrieve data from the WWLLN, add the following to your `configuration.yaml` +file: + +```yaml +wwlln: +``` + +{% configuration %} +latitude: + description: The latitude you want to monitor; defaults to the value defined in `configuration.yaml`. + required: false + type: float +longitude: + description: The longitude you want to monitor; defaults to the value defined in `configuration.yaml`. + required: false + type: float +radius: + description: The radius around your location to monitor; defaults to 25 km or mi (depending on the unit system defined in your `configuration.yaml`). + required: false + type: int +window: + description: The amount of time before now for which strikes should be considered "active" and shown in the UI. + required: false + type: time +{% endconfiguration %} + +## State Attributes + +The following state attributes are available for each entity in addition to +the standard ones: + +| Attribute | Description | +|--------------------|-------------| +| latitude | Latitude of the lightning strike. | +| longitude | Longitude of the lightning strike. | +| source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | +| external_id | The external ID used in the feed to identify the earthquake in the feed. | +| publication_date | Date and time when this event occurred. | + + +## Full Configuration + +```yaml +# Example configuration.yaml entry +wwlln: + radius: 100 + latitude: 37.39 + longitude: -5.99 +``` diff --git a/source/images/screenshots/wwlln-feed-map.png b/source/images/screenshots/wwlln-feed-map.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d4d846690cf0e6a3091998b2ca8a949ad7f7ab GIT binary patch literal 107170 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Ⓢ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 literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/wwlln.jpg b/source/images/supported_brands/wwlln.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6edc2ddc3d80b54ca92049216bfa5e059ce56539 GIT binary patch literal 83410 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 z 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 literal 0 HcmV?d00001 From f35859d7bbb0cc44fcc152d15024a6d5a357e728 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 10 Jul 2019 21:06:00 -0700 Subject: [PATCH 63/74] Update post --- source/_posts/2019-07-17-release-96.markdown | 501 ++++++++++++++++++- 1 file changed, 500 insertions(+), 1 deletion(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 3c67c6c4fa8..f152f1ebdbf 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -13,7 +13,9 @@ og_image: /images/blog/2019-07-release-96/social.png -Climate has been completely revamped. Huge thanks to the following people: +Climate has been completely revamped. Please test out any climate integration that you use and report if it is broken. + +Huge thanks to the following people: - [@andrewsayre] - [@balloob] @@ -29,3 +31,500 @@ Climate has been completely revamped. Huge thanks to the following people: - [@zxdavb] We have a new sidebar! Started with a mockup by [@JuanMTech] and grew into a full blown implementation. Check [the demo](https://demo.home-assistant.io) for a preview. + +Big shout out to [@frenck] who has been doing a lot of clean up on the website. + +If you missed the announcement, we showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), the new interface that runs on Chromecast devices. + +## New Integrations + +- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) +- Add integration for Vallox Ventilation Units ([@andre-richter] - [#24660]) ([vallox docs]) (new-integration) +- Add support for aurora ABB Powerone solar photovoltaic inverter ([@davet2001] - [#24809]) ([aurora_abb_powerone docs]) (new-integration) +- Add support for arcam fmj receivers ([@elupus] - [#24621]) ([arcam_fmj docs]) (new-integration) +- Add support for Notion Home Monitoring ([@bachya] - [#24634]) ([notion docs]) (new-integration) +- Add support for World Wide Lightning Location Network ([@bachya] - [#25001]) ([wwlln docs]) (new-integration) + +## New Platforms + +- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) +- Add template vacuum support ([@luukd] - [#22904]) ([template docs]) (new-platform) +- Fronius (solar energy and inverter) component ([@nielstron] - [#22316]) ([sensor docs]) (new-platform) +- New scanner device tracker and ZHA device tracker support ([@dmulcahey] - [#24584]) ([device_tracker docs]) ([zha docs]) (new-platform) +- [climate] Bugfix honeywell misleading error message ([@zxdavb] - [#25048]) ([evohome docs]) ([honeywell docs]) (new-platform) + +## If you need help... + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). + +## Reporting Issues + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +- Multiple devices support for opentherm_gw ([@mvn23] - [#22932]) ([opentherm_gw docs]) (breaking change) +- Change Ambient solar radiation units to lx ([@bachya] - [#24690]) ([ambient_station docs]) (breaking change) +- Changed default encoding to mp3 ([@GrandNewbien] - [#24808]) ([google_cloud docs]) (breaking change) +- Remove temperature attribute from SimpliSafe alarm control panel ([@bachya] - [#24833]) ([simplisafe docs]) (breaking change) +- Upgrade luftdaten to 0.6.1 ([@fabaff] - [#24842]) ([luftdaten docs]) (breaking change) +- Velbus: autodiscover covers ([@Cereal2nd] - [#24877]) ([velbus docs]) (breaking change) +- Remove ZHA device entity ([@dmulcahey] - [#24909]) ([zha docs]) (breaking change) +- Implement ADR0003 for Netatmo sensor ([@cgtobi] - [#24944]) ([netatmo docs]) (breaking change) +- Fix Netatmo climate presets ([@cgtobi] - [#25029]) ([netatmo docs]) (breaking change) +- updated geojson_client library to version 0.4 ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) (breaking change) + +## All changes + +- Fix AttributeError: 'NoneType' object has no attribute 'group' with sytadin component ([@foreign-sub] - [#24652]) ([sytadin docs]) +- braviatv, nmap_tracker: use getmac for getting MAC addresses ([@scop] - [#24628]) ([braviatv docs]) ([braviatv docs]) ([braviatv docs]) ([nmap_tracker docs]) +- Fix downloader_download_failed event not firing for HTTP response errors ([@sfjes] - [#24640]) ([downloader docs]) +- Multiple devices support for opentherm_gw ([@mvn23] - [#22932]) ([opentherm_gw docs]) (breaking change) +- Add device class support for Ambient PWS sensors ([@bachya] - [#24677]) ([ambient_station docs]) +- Add RainMachine device classes where appropriate ([@bachya] - [#24682]) ([rainmachine docs]) +- Change Ambient solar radiation units to lx ([@bachya] - [#24690]) ([ambient_station docs]) (breaking change) +- Upgrade to async_upnp_client==0.14.10 and increase search timeout ([@StevenLooman] - [#24685]) ([dlna_dmr docs]) ([upnp docs]) +- Upgrade mypy to 0.710 ([@scop] - [#24666]) +- Template: Expand method to expand groups, and closest as filter ([@Swamp-Ig] - [#23691]) +- Add aml_thermal label ([@jmw6773] - [#24665]) ([glances docs]) +- Corrected number of default LCN segment coupler scan tryouts ([@alengwenus] - [#24678]) ([lcn docs]) +- Upgrade discord.py to 1.2.2 ([@fabaff] - [#24695]) ([discord docs]) +- Upgrade youtube_dl to 2019.06.08 ([@fabaff] - [#24692]) ([media_extractor docs]) +- Upgrade Sphinx to 2.1.2 ([@fabaff] - [#24693]) +- Solax update 0.1.0 ([@squishykid] - [#24708]) ([solax docs]) +- Fix PS4 entities with shared host not updating and latency with multiple connections ([@ktnrg45] - [#24642]) ([ps4 docs]) +- Add initial support for remote dev container ([@pvizeli] - [#24681]) +- Expose ports 8123, 8300 and 51827 in Dockerfile ([@johnluetke] - [#24389]) +- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) +- Add 'unique_id' Property to Inverter Sensors ([@squishykid] - [#24707]) ([solax docs]) +- Remove device and entity registry entries when removing a ZHA device ([@dmulcahey] - [#24369]) ([zha docs]) +- Add support for sensor state STATE_UNAVAILABLE ([@cnrd] - [#24641]) ([plant docs]) +- Add integration for Vallox Ventilation Units ([@andre-richter] - [#24660]) ([vallox docs]) (new-integration) +- Vallox: Fix missing hass member ([@andre-richter] - [#24753]) ([vallox docs]) +- Remove obsolete comments in Dockerfile ([@Emilv2] - [#24748]) +- fix an error in the description ([@alain57] - [#24735]) +- Add support for IPP Printers to the CUPS integration ([@Matte23] - [#24756]) ([cups docs]) +- Enhancement/zha model manuf ([@Adminiuga] - [#24771]) ([zha docs]) +- Entity to handle updates via events ([@balloob] - [#24733]) +- Upgrade vallox to async client API ([@andre-richter] - [#24774]) ([vallox docs]) +- Upgrade pytest to 4.6.3 ([@scop] - [#24782]) +- Add time delta option when searching for deutsche_bahn connections ([@h3ndrik] - [#24600]) ([deutsche_bahn docs]) +- Zestimate fix for issue #23837 ([@dreed47] - [#23838]) ([zestimate docs]) +- Use climate device's target temp step value ([@andersonshatch] - [#24804]) ([homekit docs]) +- Use step from tado rather than assuming 0.1 ([@andersonshatch] - [#24807]) ([tado docs]) +- Changed default encoding to mp3 ([@GrandNewbien] - [#24808]) ([google_cloud docs]) (breaking change) +- Add developer tools panel ([@balloob] - [#24812]) ([frontend docs]) +- Add template vacuum support ([@luukd] - [#22904]) ([template docs]) (new-platform) +- Make sure alert is set up after notify ([@balloob] - [#24829]) ([alert docs]) +- Remove temperature attribute from SimpliSafe alarm control panel ([@bachya] - [#24833]) ([simplisafe docs]) (breaking change) +- Fronius (solar energy and inverter) component ([@nielstron] - [#22316]) ([sensor docs]) (new-platform) +- Add template support to template trigger's for option ([@pnbruckner] - [#24810]) ([automation docs]) +- Upgrade luftdaten to 0.6.1 ([@fabaff] - [#24842]) ([luftdaten docs]) (breaking change) +- Upgrade sqlalchemy to 1.3.5 ([@fabaff] - [#24844]) ([recorder docs]) ([sql docs]) +- Upgrade numpy to 1.16.4 ([@fabaff] - [#24845]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) +- Upgrade certifi to >= 2019.6.16 ([@fabaff] - [#24846]) +- Upgrade pyyaml to 5.1.1 ([@fabaff] - [#24847]) +- Upgrade jinja2 to >=2.10.1 ([@fabaff] - [#24851]) +- Upgrade psutil to 5.6.3 ([@fabaff] - [#24854]) ([systemmonitor docs]) +- Upgrade cryptography to 2.7 ([@fabaff] - [#24852]) +- Fix mysensors icon name ([@zewelor] - [#24871]) ([mysensors docs]) +- Update praw to 6.3.1 ([@fabaff] - [#23737]) ([reddit docs]) +- Hungarian is also supported in Google Cloud TTS ([@realthk] - [#24861]) ([google_cloud docs]) +- Upgrade youtube_dl to 2019.06.27 ([@fabaff] - [#24875]) ([media_extractor docs]) +- Velbus: autodiscover covers ([@Cereal2nd] - [#24877]) ([velbus docs]) (breaking change) +- Upgrade importlib-metadata to 0.18 ([@fabaff] - [#24848]) +- Upgrade bcrypt to 3.1.7 ([@fabaff] - [#24850]) +- Fix traceback during ZHA device removal ([@dmulcahey] - [#24882]) ([zha docs]) +- Move SmartThings imports to top ([@andrewsayre] - [#24878]) ([smartthings docs]) +- Bump androidtv to 0.0.17 ([@JeffLIrion] - [#24886]) +- Upgrade pytest to 5.0.0 ([@Danielhiversen] - [#24885]) +- Tweak geniushub battery icons according to device state ([@zxdavb] - [#24798]) ([geniushub docs]) +- Support mqtt discovery topic prefix with slashes ([@cybe] - [#24840]) ([mqtt docs]) +- Update tts.py ([@kevank] - [#24892]) ([watson_tts docs]) +- go back to signals and no hard entity references ([@dmulcahey] - [#24894]) ([zha docs]) +- Update IDs for rename node/value ([@Swamp-Ig] - [#24646]) ([zwave docs]) +- Bump life360 package to 4.0.1 ([@pnbruckner] - [#24905]) ([life360 docs]) +- Stability improvements for Sonos availability ([@amelchio] - [#24880]) ([sonos docs]) +- Fix 'same state' monitoring in numeric_state trigger ([@pnbruckner] - [#24910]) ([automation docs]) +- Fix 'same state' monitoring in state trigger ([@pnbruckner] - [#24904]) ([automation docs]) +- Add missing trigger.for variable to template trigger ([@pnbruckner] - [#24893]) ([automation docs]) +- Add ability to send attachments in pushover notifications ([@kreegahbundolo] - [#24806]) ([pushover docs]) +- New languages that looks like supported by Google but not documented: ([@lufton] - [#24881]) ([google_cloud docs]) +- Remove ZHA device entity ([@dmulcahey] - [#24909]) ([zha docs]) (breaking change) +- Bump androidtv to 0.0.18 ([@JeffLIrion] - [#24927]) ([androidtv docs]) +- Update pysonos to 0.0.19 ([@amelchio] - [#24930]) ([sonos docs]) +- Add support for Yale YRL256 lock ([@ctso] - [#24932]) ([zwave docs]) +- New scanner device tracker and ZHA device tracker support ([@dmulcahey] - [#24584]) ([device_tracker docs]) ([zha docs]) (new-platform) +- Allow updating of via_device in device registry ([@bachya] - [#24921]) +- Update pyHik library to 0.2.3 ([@mezz64] - [#24957]) ([hikvision docs]) +- Implement ADR0003 for Netatmo sensor ([@cgtobi] - [#24944]) ([netatmo docs]) (breaking change) +- Batch of Component(s) -> Integration(s) ([@frenck] - [#24972]) +- Add sonos.play_queue service ([@apeeters] - [#24974]) ([sonos docs]) +- Fix errors if rest source becomes unavailable ([@slackr31337] - [#24986]) ([scrape docs]) +- Switched from tuyapy to tuyaha as 1st one is not maintained ([@PaulAnnekov] - [#24821]) ([tuya docs]) +- Adds Lock Threads Probot ([@frenck] - [#24984]) +- Adds Stale Probot for issues ([@frenck] - [#24985]) +- Upgrade mypy to 0.711, drop no longer needed workarounds ([@scop] - [#24998]) +- Changes as per code review of #24646 ([@Swamp-Ig] - [#24917]) ([zwave docs]) +- Sleepiq single sleeper crash ([@qypea] - [#24941]) ([sleepiq docs]) +- Add support for aurora ABB Powerone solar photovoltaic inverter ([@davet2001] - [#24809]) ([aurora_abb_powerone docs]) (new-integration) +- Test dependency updates ([@scop] - [#25004]) +- upgrade switchmate to latest lib ([@Danielhiversen] - [#25006]) ([switchmate docs]) +- Upgrade hdate==0.8.8 ([@tsvi] - [#25008]) ([jewish_calendar docs]) +- Upgrade insteonplm to 0.16.0 and add INSTEON scene triggering ([@teharris1] - [#24765]) ([insteon docs]) +- Install requirements for integrations in packages before importing them. ([@ludeeus] - [#25005]) +- Added missing yeelight models mapping ([@cadavre] - [#24963]) ([yeelight docs]) +- Correct socket use in cert_expiry platform ([@elupus] - [#25011]) ([cert_expiry docs]) +- Climate 1.0 ([@pvizeli] - [#23899]) ([climate docs]) +- Implement Twilio SMS notify MediaUrl support ([@Chris-Johnston] - [#24971]) ([twilio_sms docs]) +- Enphase envoy individual inverter production ([@jesserizzo] - [#24445]) ([enphase_envoy docs]) +- Add support for arcam fmj receivers ([@elupus] - [#24621]) ([arcam_fmj docs]) (new-integration) +- Sensibo, add HVAC_MODE_OFF ([@Danielhiversen] - [#25016]) ([sensibo docs]) +- Fix ecobee flaky test ([@balloob] - [#25019]) ([ecobee docs]) +- Fix mimetypes on borked Windows machines ([@balloob] - [#25018]) ([frontend docs]) +- Add datetime option to input_datetime.set_datetime service ([@pnbruckner] - [#24975]) ([input_datetime docs]) +- Add template support to numeric_state trigger's for option ([@pnbruckner] - [#24955]) ([automation docs]) +- Add template support to state trigger's for option ([@pnbruckner] - [#24912]) ([automation docs]) +- Fix Nest sensor ([@balloob] - [#25023]) ([climate docs]) ([nest docs]) +- ambiclimate hvac_modes ([@Danielhiversen] - [#25015]) ([ambiclimate docs]) +- homematic add off support for climate ([@pvizeli] - [#25017]) ([homematic docs]) +- Support config flow on custom components ([@elupus] - [#24946]) ([config docs]) +- Improve SmartThings test mocking ([@andrewsayre] - [#25028]) +- Toon fixes for Climate 1.0 ([@frenck] - [#25027]) ([toon docs]) +- Add hvac fan state ([@andrewsayre] - [#25030]) ([climate docs]) ([smartthings docs]) +- Add support for Notion Home Monitoring ([@bachya] - [#24634]) ([notion docs]) (new-integration) +- Fix Netatmo climate presets ([@cgtobi] - [#25029]) ([netatmo docs]) (breaking change) +- Add missing support for jewish_calendar.omer_count sensor ([@arigilder] - [#24958]) ([jewish_calendar docs]) +- Centralizes Toon data, reducing API calls ([@frenck] - [#23988]) ([toon docs]) +- Upgrade youtube_dl to 2019.07.02 ([@fabaff] - [#24990]) ([media_extractor docs]) +- updated geojson_client library to version 0.4 ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) (breaking change) +- Improve toon climate ([@frenck] - [#25040]) ([toon docs]) +- Fix Netatmo rain gauge precision ([@cgtobi] - [#25036]) ([netatmo docs]) +- Bump pyvera to 0.3.2, null/missing value protection ([@jlrgraham] - [#25041]) ([vera docs]) +- Add radiotherm CT80 current humidity support ([@zombielinux] - [#25024]) ([radiotherm docs]) +- Add config flow support to Geolocation ([@bachya] - [#25046]) ([geo_location docs]) +- Update tuyaha to 0.0.2 to catch API exceptions ([@PaulAnnekov] - [#25050]) ([tuya docs]) +- Added marker sensor to CUPS integration ([@Matte23] - [#25037]) ([cups docs]) +- Remove myself as codeowner ([@cdce8p] - [#25043]) ([homekit docs]) +- [climate] Bugfix honeywell misleading error message ([@zxdavb] - [#25048]) ([evohome docs]) ([honeywell docs]) (new-platform) +- Add Sonos debug logging ([@amelchio] - [#25063]) ([sonos docs]) +- Avoid flooding steam API ([@Swamp-Ig] - [#23941]) ([steam_online docs]) +- Add check_config helper ([@kellerza] - [#24557]) +- bump zha-quirks version ([@dmulcahey] - [#25059]) ([zha docs]) +- Fix broken test in Python 3.7 ([@balloob] - [#25067]) +- Fix for Sonos debug logging ([@amelchio] - [#25064]) ([sonos docs]) +- Bump up ZHA dependencies. ([@Adminiuga] - [#25062]) ([zha docs]) +- Add support for World Wide Lightning Location Network ([@bachya] - [#25001]) ([wwlln docs]) (new-integration) +- SMA catch error ([@kellerza] - [#25045]) ([sma docs]) +- Change phrases in the logbook component for persons and binary_sensors ([@Martijn02] - [#25053]) ([logbook docs]) +- Make sure volume level is valid when incrementing/decrementing ([@JeffLIrion] - [#25061]) ([vizio docs]) +- Complete OPERATION_MODES ([@monte-monte] - [#25069]) ([knx docs]) +- Add websocket API command for Z-Wave network status ([@cgarwood] - [#25066]) ([zwave docs]) +- Correctly store removed entities for restore state ([@balloob] - [#25073]) +- Restore automation last_triggered as datetime & fix test ([@pnbruckner] - [#24951]) ([automation docs]) + +[#22316]: https://github.com/home-assistant/home-assistant/pull/22316 +[#22904]: https://github.com/home-assistant/home-assistant/pull/22904 +[#22932]: https://github.com/home-assistant/home-assistant/pull/22932 +[#23470]: https://github.com/home-assistant/home-assistant/pull/23470 +[#23691]: https://github.com/home-assistant/home-assistant/pull/23691 +[#23737]: https://github.com/home-assistant/home-assistant/pull/23737 +[#23838]: https://github.com/home-assistant/home-assistant/pull/23838 +[#23899]: https://github.com/home-assistant/home-assistant/pull/23899 +[#23941]: https://github.com/home-assistant/home-assistant/pull/23941 +[#23988]: https://github.com/home-assistant/home-assistant/pull/23988 +[#24369]: https://github.com/home-assistant/home-assistant/pull/24369 +[#24389]: https://github.com/home-assistant/home-assistant/pull/24389 +[#24445]: https://github.com/home-assistant/home-assistant/pull/24445 +[#24557]: https://github.com/home-assistant/home-assistant/pull/24557 +[#24584]: https://github.com/home-assistant/home-assistant/pull/24584 +[#24600]: https://github.com/home-assistant/home-assistant/pull/24600 +[#24621]: https://github.com/home-assistant/home-assistant/pull/24621 +[#24628]: https://github.com/home-assistant/home-assistant/pull/24628 +[#24634]: https://github.com/home-assistant/home-assistant/pull/24634 +[#24640]: https://github.com/home-assistant/home-assistant/pull/24640 +[#24641]: https://github.com/home-assistant/home-assistant/pull/24641 +[#24642]: https://github.com/home-assistant/home-assistant/pull/24642 +[#24646]: https://github.com/home-assistant/home-assistant/pull/24646 +[#24652]: https://github.com/home-assistant/home-assistant/pull/24652 +[#24660]: https://github.com/home-assistant/home-assistant/pull/24660 +[#24665]: https://github.com/home-assistant/home-assistant/pull/24665 +[#24666]: https://github.com/home-assistant/home-assistant/pull/24666 +[#24677]: https://github.com/home-assistant/home-assistant/pull/24677 +[#24678]: https://github.com/home-assistant/home-assistant/pull/24678 +[#24681]: https://github.com/home-assistant/home-assistant/pull/24681 +[#24682]: https://github.com/home-assistant/home-assistant/pull/24682 +[#24685]: https://github.com/home-assistant/home-assistant/pull/24685 +[#24690]: https://github.com/home-assistant/home-assistant/pull/24690 +[#24692]: https://github.com/home-assistant/home-assistant/pull/24692 +[#24693]: https://github.com/home-assistant/home-assistant/pull/24693 +[#24695]: https://github.com/home-assistant/home-assistant/pull/24695 +[#24707]: https://github.com/home-assistant/home-assistant/pull/24707 +[#24708]: https://github.com/home-assistant/home-assistant/pull/24708 +[#24733]: https://github.com/home-assistant/home-assistant/pull/24733 +[#24735]: https://github.com/home-assistant/home-assistant/pull/24735 +[#24748]: https://github.com/home-assistant/home-assistant/pull/24748 +[#24753]: https://github.com/home-assistant/home-assistant/pull/24753 +[#24756]: https://github.com/home-assistant/home-assistant/pull/24756 +[#24765]: https://github.com/home-assistant/home-assistant/pull/24765 +[#24771]: https://github.com/home-assistant/home-assistant/pull/24771 +[#24774]: https://github.com/home-assistant/home-assistant/pull/24774 +[#24782]: https://github.com/home-assistant/home-assistant/pull/24782 +[#24798]: https://github.com/home-assistant/home-assistant/pull/24798 +[#24804]: https://github.com/home-assistant/home-assistant/pull/24804 +[#24806]: https://github.com/home-assistant/home-assistant/pull/24806 +[#24807]: https://github.com/home-assistant/home-assistant/pull/24807 +[#24808]: https://github.com/home-assistant/home-assistant/pull/24808 +[#24809]: https://github.com/home-assistant/home-assistant/pull/24809 +[#24810]: https://github.com/home-assistant/home-assistant/pull/24810 +[#24812]: https://github.com/home-assistant/home-assistant/pull/24812 +[#24821]: https://github.com/home-assistant/home-assistant/pull/24821 +[#24829]: https://github.com/home-assistant/home-assistant/pull/24829 +[#24833]: https://github.com/home-assistant/home-assistant/pull/24833 +[#24840]: https://github.com/home-assistant/home-assistant/pull/24840 +[#24842]: https://github.com/home-assistant/home-assistant/pull/24842 +[#24844]: https://github.com/home-assistant/home-assistant/pull/24844 +[#24845]: https://github.com/home-assistant/home-assistant/pull/24845 +[#24846]: https://github.com/home-assistant/home-assistant/pull/24846 +[#24847]: https://github.com/home-assistant/home-assistant/pull/24847 +[#24848]: https://github.com/home-assistant/home-assistant/pull/24848 +[#24850]: https://github.com/home-assistant/home-assistant/pull/24850 +[#24851]: https://github.com/home-assistant/home-assistant/pull/24851 +[#24852]: https://github.com/home-assistant/home-assistant/pull/24852 +[#24854]: https://github.com/home-assistant/home-assistant/pull/24854 +[#24861]: https://github.com/home-assistant/home-assistant/pull/24861 +[#24871]: https://github.com/home-assistant/home-assistant/pull/24871 +[#24875]: https://github.com/home-assistant/home-assistant/pull/24875 +[#24877]: https://github.com/home-assistant/home-assistant/pull/24877 +[#24878]: https://github.com/home-assistant/home-assistant/pull/24878 +[#24880]: https://github.com/home-assistant/home-assistant/pull/24880 +[#24881]: https://github.com/home-assistant/home-assistant/pull/24881 +[#24882]: https://github.com/home-assistant/home-assistant/pull/24882 +[#24885]: https://github.com/home-assistant/home-assistant/pull/24885 +[#24886]: https://github.com/home-assistant/home-assistant/pull/24886 +[#24892]: https://github.com/home-assistant/home-assistant/pull/24892 +[#24893]: https://github.com/home-assistant/home-assistant/pull/24893 +[#24894]: https://github.com/home-assistant/home-assistant/pull/24894 +[#24904]: https://github.com/home-assistant/home-assistant/pull/24904 +[#24905]: https://github.com/home-assistant/home-assistant/pull/24905 +[#24909]: https://github.com/home-assistant/home-assistant/pull/24909 +[#24910]: https://github.com/home-assistant/home-assistant/pull/24910 +[#24912]: https://github.com/home-assistant/home-assistant/pull/24912 +[#24917]: https://github.com/home-assistant/home-assistant/pull/24917 +[#24921]: https://github.com/home-assistant/home-assistant/pull/24921 +[#24927]: https://github.com/home-assistant/home-assistant/pull/24927 +[#24930]: https://github.com/home-assistant/home-assistant/pull/24930 +[#24932]: https://github.com/home-assistant/home-assistant/pull/24932 +[#24941]: https://github.com/home-assistant/home-assistant/pull/24941 +[#24944]: https://github.com/home-assistant/home-assistant/pull/24944 +[#24946]: https://github.com/home-assistant/home-assistant/pull/24946 +[#24951]: https://github.com/home-assistant/home-assistant/pull/24951 +[#24955]: https://github.com/home-assistant/home-assistant/pull/24955 +[#24957]: https://github.com/home-assistant/home-assistant/pull/24957 +[#24958]: https://github.com/home-assistant/home-assistant/pull/24958 +[#24963]: https://github.com/home-assistant/home-assistant/pull/24963 +[#24971]: https://github.com/home-assistant/home-assistant/pull/24971 +[#24972]: https://github.com/home-assistant/home-assistant/pull/24972 +[#24974]: https://github.com/home-assistant/home-assistant/pull/24974 +[#24975]: https://github.com/home-assistant/home-assistant/pull/24975 +[#24984]: https://github.com/home-assistant/home-assistant/pull/24984 +[#24985]: https://github.com/home-assistant/home-assistant/pull/24985 +[#24986]: https://github.com/home-assistant/home-assistant/pull/24986 +[#24990]: https://github.com/home-assistant/home-assistant/pull/24990 +[#24998]: https://github.com/home-assistant/home-assistant/pull/24998 +[#25001]: https://github.com/home-assistant/home-assistant/pull/25001 +[#25004]: https://github.com/home-assistant/home-assistant/pull/25004 +[#25005]: https://github.com/home-assistant/home-assistant/pull/25005 +[#25006]: https://github.com/home-assistant/home-assistant/pull/25006 +[#25008]: https://github.com/home-assistant/home-assistant/pull/25008 +[#25011]: https://github.com/home-assistant/home-assistant/pull/25011 +[#25015]: https://github.com/home-assistant/home-assistant/pull/25015 +[#25016]: https://github.com/home-assistant/home-assistant/pull/25016 +[#25017]: https://github.com/home-assistant/home-assistant/pull/25017 +[#25018]: https://github.com/home-assistant/home-assistant/pull/25018 +[#25019]: https://github.com/home-assistant/home-assistant/pull/25019 +[#25023]: https://github.com/home-assistant/home-assistant/pull/25023 +[#25024]: https://github.com/home-assistant/home-assistant/pull/25024 +[#25027]: https://github.com/home-assistant/home-assistant/pull/25027 +[#25028]: https://github.com/home-assistant/home-assistant/pull/25028 +[#25029]: https://github.com/home-assistant/home-assistant/pull/25029 +[#25030]: https://github.com/home-assistant/home-assistant/pull/25030 +[#25036]: https://github.com/home-assistant/home-assistant/pull/25036 +[#25037]: https://github.com/home-assistant/home-assistant/pull/25037 +[#25039]: https://github.com/home-assistant/home-assistant/pull/25039 +[#25040]: https://github.com/home-assistant/home-assistant/pull/25040 +[#25041]: https://github.com/home-assistant/home-assistant/pull/25041 +[#25043]: https://github.com/home-assistant/home-assistant/pull/25043 +[#25045]: https://github.com/home-assistant/home-assistant/pull/25045 +[#25046]: https://github.com/home-assistant/home-assistant/pull/25046 +[#25048]: https://github.com/home-assistant/home-assistant/pull/25048 +[#25050]: https://github.com/home-assistant/home-assistant/pull/25050 +[#25053]: https://github.com/home-assistant/home-assistant/pull/25053 +[#25059]: https://github.com/home-assistant/home-assistant/pull/25059 +[#25061]: https://github.com/home-assistant/home-assistant/pull/25061 +[#25062]: https://github.com/home-assistant/home-assistant/pull/25062 +[#25063]: https://github.com/home-assistant/home-assistant/pull/25063 +[#25064]: https://github.com/home-assistant/home-assistant/pull/25064 +[#25066]: https://github.com/home-assistant/home-assistant/pull/25066 +[#25067]: https://github.com/home-assistant/home-assistant/pull/25067 +[#25069]: https://github.com/home-assistant/home-assistant/pull/25069 +[#25073]: https://github.com/home-assistant/home-assistant/pull/25073 +[@Adminiuga]: https://github.com/Adminiuga +[@Cereal2nd]: https://github.com/Cereal2nd +[@Chris-Johnston]: https://github.com/Chris-Johnston +[@Danielhiversen]: https://github.com/Danielhiversen +[@Emilv2]: https://github.com/Emilv2 +[@GrandNewbien]: https://github.com/GrandNewbien +[@JeffLIrion]: https://github.com/JeffLIrion +[@Martijn02]: https://github.com/Martijn02 +[@Matte23]: https://github.com/Matte23 +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@StevenLooman]: https://github.com/StevenLooman +[@Swamp-Ig]: https://github.com/Swamp-Ig +[@alain57]: https://github.com/alain57 +[@alengwenus]: https://github.com/alengwenus +[@amelchio]: https://github.com/amelchio +[@andersonshatch]: https://github.com/andersonshatch +[@andre-richter]: https://github.com/andre-richter +[@andrewsayre]: https://github.com/andrewsayre +[@apeeters]: https://github.com/apeeters +[@arigilder]: https://github.com/arigilder +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@cadavre]: https://github.com/cadavre +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@cnrd]: https://github.com/cnrd +[@ctso]: https://github.com/ctso +[@cybe]: https://github.com/cybe +[@davet2001]: https://github.com/davet2001 +[@dmulcahey]: https://github.com/dmulcahey +[@dreed47]: https://github.com/dreed47 +[@elupus]: https://github.com/elupus +[@endor-force]: https://github.com/endor-force +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@foreign-sub]: https://github.com/foreign-sub +[@frenck]: https://github.com/frenck +[@h3ndrik]: https://github.com/h3ndrik +[@jesserizzo]: https://github.com/jesserizzo +[@jlrgraham]: https://github.com/jlrgraham +[@jmw6773]: https://github.com/jmw6773 +[@johnluetke]: https://github.com/johnluetke +[@kellerza]: https://github.com/kellerza +[@kevank]: https://github.com/kevank +[@kreegahbundolo]: https://github.com/kreegahbundolo +[@ktnrg45]: https://github.com/ktnrg45 +[@ludeeus]: https://github.com/ludeeus +[@lufton]: https://github.com/lufton +[@luukd]: https://github.com/luukd +[@mezz64]: https://github.com/mezz64 +[@monte-monte]: https://github.com/monte-monte +[@mvn23]: https://github.com/mvn23 +[@nielstron]: https://github.com/nielstron +[@pnbruckner]: https://github.com/pnbruckner +[@pvizeli]: https://github.com/pvizeli +[@qypea]: https://github.com/qypea +[@realthk]: https://github.com/realthk +[@scop]: https://github.com/scop +[@sfjes]: https://github.com/sfjes +[@slackr31337]: https://github.com/slackr31337 +[@squishykid]: https://github.com/squishykid +[@teharris1]: https://github.com/teharris1 +[@tsvi]: https://github.com/tsvi +[@zewelor]: https://github.com/zewelor +[@zombielinux]: https://github.com/zombielinux +[@zxdavb]: https://github.com/zxdavb +[alert docs]: /components/alert/ +[ambiclimate docs]: /components/ambiclimate/ +[ambient_station docs]: /components/ambient_station/ +[androidtv docs]: /components/androidtv/ +[arcam_fmj docs]: /components/arcam_fmj/ +[aurora_abb_powerone docs]: /components/aurora_abb_powerone/ +[automation docs]: /components/automation/ +[braviatv docs]: /components/braviatv/ +[cert_expiry docs]: /components/cert_expiry/ +[climate docs]: /components/climate/ +[config docs]: /components/config/ +[cups docs]: /components/cups/ +[deutsche_bahn docs]: /components/deutsche_bahn/ +[device_tracker docs]: /components/device_tracker/ +[discord docs]: /components/discord/ +[dlna_dmr docs]: /components/dlna_dmr/ +[downloader docs]: /components/downloader/ +[ecobee docs]: /components/ecobee/ +[enphase_envoy docs]: /components/enphase_envoy/ +[evohome docs]: /components/evohome/ +[frontend docs]: /components/frontend/ +[geniushub docs]: /components/geniushub/ +[geo_json_events docs]: /components/geo_json_events/ +[geo_location docs]: /components/geo_location/ +[glances docs]: /components/glances/ +[google_cloud docs]: /components/google_cloud/ +[hikvision docs]: /components/hikvision/ +[homekit docs]: /components/homekit/ +[homematic docs]: /components/homematic/ +[honeywell docs]: /components/honeywell/ +[input_datetime docs]: /components/input_datetime/ +[insteon docs]: /components/insteon/ +[iqvia docs]: /components/iqvia/ +[jewish_calendar docs]: /components/jewish_calendar/ +[knx docs]: /components/knx/ +[lcn docs]: /components/lcn/ +[life360 docs]: /components/life360/ +[logbook docs]: /components/logbook/ +[luftdaten docs]: /components/luftdaten/ +[media_extractor docs]: /components/media_extractor/ +[mqtt docs]: /components/mqtt/ +[mysensors docs]: /components/mysensors/ +[nest docs]: /components/nest/ +[netatmo docs]: /components/netatmo/ +[nmap_tracker docs]: /components/nmap_tracker/ +[notion docs]: /components/notion/ +[nsw_rural_fire_service_feed docs]: /components/nsw_rural_fire_service_feed/ +[opencv docs]: /components/opencv/ +[opentherm_gw docs]: /components/opentherm_gw/ +[plant docs]: /components/plant/ +[ps4 docs]: /components/ps4/ +[pushover docs]: /components/pushover/ +[radiotherm docs]: /components/radiotherm/ +[rainmachine docs]: /components/rainmachine/ +[recorder docs]: /components/recorder/ +[reddit docs]: /components/reddit/ +[scrape docs]: /components/scrape/ +[sensibo docs]: /components/sensibo/ +[sensor docs]: /components/sensor/ +[simplisafe docs]: /components/simplisafe/ +[sleepiq docs]: /components/sleepiq/ +[sma docs]: /components/sma/ +[smartthings docs]: /components/smartthings/ +[solax docs]: /components/solax/ +[sonos docs]: /components/sonos/ +[sql docs]: /components/sql/ +[steam_online docs]: /components/steam_online/ +[switchmate docs]: /components/switchmate/ +[systemmonitor docs]: /components/systemmonitor/ +[sytadin docs]: /components/sytadin/ +[tado docs]: /components/tado/ +[template docs]: /components/template/ +[tensorflow docs]: /components/tensorflow/ +[toon docs]: /components/toon/ +[trafikverket_train docs]: /components/trafikverket_train/ +[trend docs]: /components/trend/ +[tuya docs]: /components/tuya/ +[twilio_sms docs]: /components/twilio_sms/ +[upnp docs]: /components/upnp/ +[usgs_earthquakes_feed docs]: /components/usgs_earthquakes_feed/ +[vallox docs]: /components/vallox/ +[velbus docs]: /components/velbus/ +[vera docs]: /components/vera/ +[vizio docs]: /components/vizio/ +[watson_tts docs]: /components/watson_tts/ +[wwlln docs]: /components/wwlln/ +[yeelight docs]: /components/yeelight/ +[zestimate docs]: /components/zestimate/ +[zha docs]: /components/zha/ +[zwave docs]: /components/zwave/ From 0239079b2bc8315c92c2c74fe0a6432423de0987 Mon Sep 17 00:00:00 2001 From: monte-monte <6649967+monte-monte@users.noreply.github.com> Date: Tue, 16 Jul 2019 10:04:42 +0300 Subject: [PATCH 64/74] Update hvac_mode attributes (#9869) Added missing attributes according to commit https://github.com/home-assistant/home-assistant/pull/25069/commits/abe62039882bed6ac8ae9b5087733cad90cc0228 I think we must add explanation for `hvac_mode` and `preset_mode` attributes, because it is unclear what these paragraphs mean and what those attributes stands for in the first place. If I am correct first are used for `controller_mode_address` and second for `operation_mode_address`. Maybe it needs to be mentioned? --- source/_components/climate.knx.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index ca53734f988..13e8c7640e0 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -72,9 +72,11 @@ climate: The following values are valid for the `hvac_mode` attribute: - Off (maps internally to HVAC_MODE_OFF within Home Assistant) +- Auto (maps internally to HVAC_MODE_AUTO within Home Assistant) - Heat (maps internally to HVAC_MDOE_HEAT within Home Assistant) +- Cool (maps internally to HVAC_MDOE_COOL within Home Assistant) - Fan only (maps internally to HVAC_MODE_FAN_ONLY within Home Assistant) -- Dehumidification (maps internally to HVAC_MODE_DRY within Home Assistant) +- Dry (maps internally to HVAC_MODE_DRY within Home Assistant) The following presets are valid for the `preset_mode` attribute: From 392633450ace20e3a3517bd336b540f92354ac5d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 16 Jul 2019 20:11:36 -0700 Subject: [PATCH 65/74] Update post --- source/_posts/2019-07-17-release-96.markdown | 56 +++++++++++++++--- .../blog/2019-07-release-96/components.png | Bin 0 -> 85194 bytes .../blog/2019-07-release-96/demo-sidebar.png | Bin 0 -> 23856 bytes 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 source/images/blog/2019-07-release-96/components.png create mode 100644 source/images/blog/2019-07-release-96/demo-sidebar.png diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index f152f1ebdbf..187ceb4e03a 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -2,18 +2,47 @@ layout: post title: "0.96: TBD - UPDATE DATE" description: "TBD." -date: 2019-07-08 04:11:03 +date: 2019-07-17 00:11:03 date_formatted: "July 17, 2019" author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes -og_image: /images/blog/2019-07-release-96/social.png +og_image: /images/blog/2019-07-release-96/demo-sidebar.png --- -Climate has been completely revamped. Please test out any climate integration that you use and report if it is broken. +It's time for Home Assistant 0.96. It's a great release, but we also made some changes, so please pay attention. + +## Sidebar + +We have a new sidebar! Idea started with [a mockup by @JuanMTech on Twitter](https://twitter.com/JuanMTech/status/1143757213971943424) and grew into a full blown implementation. The sidebar will now always be visible in a minimized mode. Hovering it will expand it. The developer tool buttons have been collapsed into a single menu item. The dev tools will now store it's exact state when you navigate away, included the dev tool that is open. We've also taken the opportunity to make notifications accessible from the sidebar, instead of only via the Lovelace UI. + +On mobile devices the sidebar will behave like it previously did. Check [the demo](https://demo.home-assistant.io) for a preview. + +

+ +Screenshot of the demo with the new sidebar. +Screenshot of the demo with the new sidebar. Click to open. + +

+ +## Climate + +This release includes a major clean up of our climate integration, correcting some architectural flaws from the past. We've done a lot of testing during the beta, but there might still be things that don't work as expected. Please report if you notice anything. + +For a breakdown of what was driving the change, [check our blog post on the dev blog](https://developers.home-assistant.io/blog/2019/07/03/climate-cleanup.html). + +The following things have been changed: + + - `operation_mode` has been renamed to `hvac_mode` to emphasize what the mode is for. + - The state of a climate entity is now always equal to the hvac mode. + - `hvac_action` is introduced for integrations that know the current action: heating, cooling, idle. + - `set_away_mode` and `set_hold_mode` have been merged into `set_preset_mode`. So instead of `turn_away_mode_on()`, we will now call `set_preset_mode("away")`. + - The `is_on` property has been removed. If a device is able to turn off, it should include the hvac mode `HVAC_MODE_OFF`. + - Property names have been aligned, anything ending with "_list" is now named "_modes". + - Integrations are only allowed to represent functionality that is present in the API. It is not allowed to add your own fake away mode. Huge thanks to the following people: @@ -27,14 +56,27 @@ Huge thanks to the following people: - [@OnFreund] - [@pvizeli] - [@SukramJ] -- [@Swamp-lg] - [@zxdavb] -We have a new sidebar! Started with a mockup by [@JuanMTech] and grew into a full blown implementation. Check [the demo](https://demo.home-assistant.io) for a preview. +[@JuanMTech]: https://github.com/JuanMTech +[@Jc2k]: https://github.com/Jc2k +[@marvin-w]: https://github.com/marvin-w +[@OnFreund]: https://github.com/OnFreund +[@SukramJ]: https://github.com/SukramJ -Big shout out to [@frenck] who has been doing a lot of clean up on the website. +## Advanced mode -If you missed the announcement, we showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), the new interface that runs on Chromecast devices. +As part of Home Assistant 1.0 effort, we're simplifying the default user interface. We're doing this by hiding certain configuration options like the customize panel behind a new "advanced mode" toggle. You can find this toggle on your profile page. + +Advanced mode is only available to admin users and is a per-user setting. Enabling it for yourself won't enable it for other admins. + +## Website maintenance + +Big shout out to [@frenck] who has been doing a lot of clean up on the website. Like, a lot lot. He has removed over 20.000 unused lines of code, and has simplified how we render code blocks, pages and headers. Our Jekyll build is now down to a mere 14 seconds! It used to be 6 minutes! 😲 + +## In other news… + +If you missed the announcement, we showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), a new interface for Home Assistant that runs on Chromecast devices. ## New Integrations diff --git a/source/images/blog/2019-07-release-96/components.png b/source/images/blog/2019-07-release-96/components.png new file mode 100644 index 0000000000000000000000000000000000000000..998b3b4fbfd6e575cf3b452de99c345009b68b7c GIT binary patch literal 85194 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�!0P9vA^icw@NtNl^0 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 FV1nglpP&E$ literal 0 HcmV?d00001 diff --git a/source/images/blog/2019-07-release-96/demo-sidebar.png b/source/images/blog/2019-07-release-96/demo-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd1f28e2b6c7a8ec7c27d99c93ac3fd0bbbcb17 GIT binary patch literal 23856 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 Date: Tue, 16 Jul 2019 20:28:03 -0700 Subject: [PATCH 66/74] More tweaks --- source/_posts/2019-07-17-release-96.markdown | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 187ceb4e03a..f7eb78e3616 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -1,7 +1,7 @@ --- layout: post -title: "0.96: TBD - UPDATE DATE" -description: "TBD." +title: "0.96: Notion, updated sidebar, advanced mode" +description: "We have cleaned up the climate integration and the UI." date: 2019-07-17 00:11:03 date_formatted: "July 17, 2019" author: Paulus Schoutsen @@ -15,9 +15,9 @@ og_image: /images/blog/2019-07-release-96/demo-sidebar.png It's time for Home Assistant 0.96. It's a great release, but we also made some changes, so please pay attention. -## Sidebar +## Pimp my Sidebar -We have a new sidebar! Idea started with [a mockup by @JuanMTech on Twitter](https://twitter.com/JuanMTech/status/1143757213971943424) and grew into a full blown implementation. The sidebar will now always be visible in a minimized mode. Hovering it will expand it. The developer tool buttons have been collapsed into a single menu item. The dev tools will now store it's exact state when you navigate away, included the dev tool that is open. We've also taken the opportunity to make notifications accessible from the sidebar, instead of only via the Lovelace UI. +The sidebar has gotten an improved look! Idea started with [a mockup by @JuanMTech on Twitter](https://twitter.com/JuanMTech/status/1143757213971943424) and grew into a full blown implementation. The sidebar will now always be visible in a minimized mode. Hovering it will expand it. The developer tool buttons have been collapsed into a single menu item. The dev tools will now store it's exact state when you navigate away, included the dev tool that is open. We've also taken the opportunity to make notifications accessible from the sidebar, instead of only via the Lovelace UI. On mobile devices the sidebar will behave like it previously did. Check [the demo](https://demo.home-assistant.io) for a preview. @@ -30,7 +30,7 @@ Screenshot of the demo with the new sidebar. Click to open. ## Climate -This release includes a major clean up of our climate integration, correcting some architectural flaws from the past. We've done a lot of testing during the beta, but there might still be things that don't work as expected. Please report if you notice anything. +This release includes a major clean up of our climate integration, correcting some architectural flaws from the past. The goal of this clean up was to a better job at providing an abstraction layer that fits many devices. This will improve compatibility with services that interact with Home Assistant (like Alexa/Google) and will allow us to make sure the UI works for everyone. We've done a lot of testing during the beta, but there might still be things that don't work as expected. If you notice anything, please report by [**opening a bug report**](https://github.com/home-assistant/home-assistant/issues). For a breakdown of what was driving the change, [check our blog post on the dev blog](https://developers.home-assistant.io/blog/2019/07/03/climate-cleanup.html). @@ -44,7 +44,7 @@ The following things have been changed: - Property names have been aligned, anything ending with "_list" is now named "_modes". - Integrations are only allowed to represent functionality that is present in the API. It is not allowed to add your own fake away mode. -Huge thanks to the following people: +Huge thanks to [@pvizeli] who drove the core implementation and to the following people for helping getting it past the finish line: - [@andrewsayre] - [@balloob] @@ -54,7 +54,6 @@ Huge thanks to the following people: - [@Jc2k] - [@marvin-w] - [@OnFreund] -- [@pvizeli] - [@SukramJ] - [@zxdavb] From 58f71bdca4fd982214fc8431c9a1137620d2982a Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 16 Jul 2019 22:23:16 -0600 Subject: [PATCH 67/74] breaking change descriptions added --- source/_posts/2019-07-17-release-96.markdown | 39 +++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index f7eb78e3616..147c8ff08ca 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -106,16 +106,35 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes -- Multiple devices support for opentherm_gw ([@mvn23] - [#22932]) ([opentherm_gw docs]) (breaking change) -- Change Ambient solar radiation units to lx ([@bachya] - [#24690]) ([ambient_station docs]) (breaking change) -- Changed default encoding to mp3 ([@GrandNewbien] - [#24808]) ([google_cloud docs]) (breaking change) -- Remove temperature attribute from SimpliSafe alarm control panel ([@bachya] - [#24833]) ([simplisafe docs]) (breaking change) -- Upgrade luftdaten to 0.6.1 ([@fabaff] - [#24842]) ([luftdaten docs]) (breaking change) -- Velbus: autodiscover covers ([@Cereal2nd] - [#24877]) ([velbus docs]) (breaking change) -- Remove ZHA device entity ([@dmulcahey] - [#24909]) ([zha docs]) (breaking change) -- Implement ADR0003 for Netatmo sensor ([@cgtobi] - [#24944]) ([netatmo docs]) (breaking change) -- Fix Netatmo climate presets ([@cgtobi] - [#25029]) ([netatmo docs]) (breaking change) -- updated geojson_client library to version 0.4 ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) (breaking change) +- __OpenTherm__ - Adds support for more than one OpenTherm Gateway device which changes the configuration structure. ([@mvn23] - [#22932]) ([opentherm_gw docs]) + + Example configuration: + ``` + opentherm_gw: + living_room: + device: /dev/ttyUSB0 + +- __Ambient Weather Station__ - By default, the Ambient solar radiation (i.e., brightness) sensor is measured in W/m². Since this unit of measurement is not used anywhere else, this change updates the sensor to use the more prevalent lx unit. Any automations that use this sensor should be updated accordingly. ([@bachya] - [#24690]) ([ambient_station docs]) + + + - __Google Cloud__ - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. ([@GrandNewbien] - [#24808]) ([google_cloud docs]) + + Example configuration: + ``` + tts: + - platform: google_cloud + key_file: googlecloud.json + encoding: mp3 # The new default, which can still be changed to opus ogg or linear16 + ``` + + +- __SimpliSafe__ - The SimpliSafe alarm control panel no longer shows a temperature attribute. ([@bachya] - [#24833]) ([simplisafe docs]) +- __Luftdaten__ - The under-laying Python module is now limited to the P1 (particles 10 microns and below) and P2 (particles 2.5 microns and below), which means you have to recreate your sensors. ([@fabaff] - [#24842]) ([luftdaten docs]) + +- __Velbus__ - Added autodicovery for covers in velbus and bumped the python velbus version ([@Cereal2nd] - [#24877]) ([velbus docs]) +- __ZHA__ - ZHA entities are being removed and battery sensors are being added. We have been asked several times to remove the ZHA domain entities because they do not follow the HA standards. They were originally used to show device online / offline status, rssi, lqi and last seen. They were eventually expanded to hold battery information as well because many Zigbee devices have several power configuration clusters. Online and offline handling, rssi, lqi last seen and the handling of device availability have all been moved to the device object and battery information has been split back out into its own sensor. Any users that created template sensors that leveraged the data in the ZHA entities will be affected by this change. ([@dmulcahey] - [#24909]) ([zha docs]) +- __Netatmo__ - If the module type can not be determined the climate device will default to the type "valve" as it implements a subset of "thermostat". Consequently those devices wont be able to be turned off. This should not be a major issue and should only happen when there are issues with the data retrieved form the Netatmo API. ([@cgtobi] - [#25029]) ([netatmo docs]) +- __GeoJSON Events__- Update geojson_client library to version 0.4.This changes the access to the external feed from HTTP to HTTPS for the nsw_rural_fire_service_feed platform. This should normally not make any difference to anyone consuming this feed. Only if for example you have set up a template sensor or automation that reads the external_id attribute of a geo_location entity and compare it against a pattern, would you need to change this. ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) ## All changes From 9119baf6b3f24af3dcc781252f9bab02a05ab2ac Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 16 Jul 2019 22:26:27 -0600 Subject: [PATCH 68/74] typo fix --- source/_posts/2019-07-17-release-96.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 147c8ff08ca..4efde42f70e 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -134,7 +134,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Velbus__ - Added autodicovery for covers in velbus and bumped the python velbus version ([@Cereal2nd] - [#24877]) ([velbus docs]) - __ZHA__ - ZHA entities are being removed and battery sensors are being added. We have been asked several times to remove the ZHA domain entities because they do not follow the HA standards. They were originally used to show device online / offline status, rssi, lqi and last seen. They were eventually expanded to hold battery information as well because many Zigbee devices have several power configuration clusters. Online and offline handling, rssi, lqi last seen and the handling of device availability have all been moved to the device object and battery information has been split back out into its own sensor. Any users that created template sensors that leveraged the data in the ZHA entities will be affected by this change. ([@dmulcahey] - [#24909]) ([zha docs]) - __Netatmo__ - If the module type can not be determined the climate device will default to the type "valve" as it implements a subset of "thermostat". Consequently those devices wont be able to be turned off. This should not be a major issue and should only happen when there are issues with the data retrieved form the Netatmo API. ([@cgtobi] - [#25029]) ([netatmo docs]) -- __GeoJSON Events__- Update geojson_client library to version 0.4.This changes the access to the external feed from HTTP to HTTPS for the nsw_rural_fire_service_feed platform. This should normally not make any difference to anyone consuming this feed. Only if for example you have set up a template sensor or automation that reads the external_id attribute of a geo_location entity and compare it against a pattern, would you need to change this. ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) +- __GeoJSON Events__ - Update geojson_client library to version 0.4.This changes the access to the external feed from HTTP to HTTPS for the nsw_rural_fire_service_feed platform. This should normally not make any difference to anyone consuming this feed. Only if for example you have set up a template sensor or automation that reads the external_id attribute of a geo_location entity and compare it against a pattern, would you need to change this. ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) ## All changes From d4a16fe1548a9b2d8857fb4637a4658ab85c7249 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 16 Jul 2019 23:20:43 -0700 Subject: [PATCH 69/74] Update in other news --- source/_posts/2019-07-17-release-96.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 4efde42f70e..f2364194c00 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -69,13 +69,13 @@ As part of Home Assistant 1.0 effort, we're simplifying the default user interfa Advanced mode is only available to admin users and is a per-user setting. Enabling it for yourself won't enable it for other admins. -## Website maintenance - -Big shout out to [@frenck] who has been doing a lot of clean up on the website. Like, a lot lot. He has removed over 20.000 unused lines of code, and has simplified how we render code blocks, pages and headers. Our Jekyll build is now down to a mere 14 seconds! It used to be 6 minutes! 😲 - ## In other news… -If you missed the announcement, we showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), a new interface for Home Assistant that runs on Chromecast devices. +Raspberry Pi 4 support has arrived in beta. [@pvizeli] has been hard at work and the first beta release [is available](https://github.com/home-assistant/hassos/releases/tag/3.3). If you flash this image, you will be able to update to a stable release later from within the UI. + +Big shout out to [@frenck] who has been doing a lot of clean up on the website. Like, a lot lot. He has removed over 20.000 unused lines of code, and has simplified how we render code blocks, pages and headers. It takes Jekyll now a mere 14 seconds to generate the whole website! It used to be 6 minutes! 😲 + +Last week [@balloob] showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), a new interface for Home Assistant that runs on Chromecasts and Google Assistant devices with screens. ## New Integrations @@ -116,9 +116,9 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Ambient Weather Station__ - By default, the Ambient solar radiation (i.e., brightness) sensor is measured in W/m². Since this unit of measurement is not used anywhere else, this change updates the sensor to use the more prevalent lx unit. Any automations that use this sensor should be updated accordingly. ([@bachya] - [#24690]) ([ambient_station docs]) - + - __Google Cloud__ - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. ([@GrandNewbien] - [#24808]) ([google_cloud docs]) - + Example configuration: ``` tts: From d3b515593fa4aa993e86c58a5b832308f03945a3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 16 Jul 2019 23:48:01 -0700 Subject: [PATCH 70/74] Clarify auto mode --- source/_posts/2019-07-17-release-96.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index f2364194c00..b563205f813 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -37,10 +37,11 @@ For a breakdown of what was driving the change, [check our blog post on the dev The following things have been changed: - `operation_mode` has been renamed to `hvac_mode` to emphasize what the mode is for. - - The state of a climate entity is now always equal to the hvac mode. + - We split HVAC mode `auto` into `auto` and `heat_cool`. If it's `heat_cool`, the user has set a temperature range the device has to use heating and cooling to stay within. Auto mode is now limited to devices that are running on a schedule or AI. + - The state of a climate entity is now always equal to the HVAC mode. - `hvac_action` is introduced for integrations that know the current action: heating, cooling, idle. - `set_away_mode` and `set_hold_mode` have been merged into `set_preset_mode`. So instead of `turn_away_mode_on()`, we will now call `set_preset_mode("away")`. - - The `is_on` property has been removed. If a device is able to turn off, it should include the hvac mode `HVAC_MODE_OFF`. + - The `is_on` property has been removed. If a device is able to turn off, it should include the HVAC mode `HVAC_MODE_OFF`. - Property names have been aligned, anything ending with "_list" is now named "_modes". - Integrations are only allowed to represent functionality that is present in the API. It is not allowed to add your own fake away mode. From 564ecbc417f5ba4ba60f9c14a7dbe0715502e6b0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 16 Jul 2019 23:54:02 -0700 Subject: [PATCH 71/74] Add teachingbirds tweet --- source/_posts/2019-07-17-release-96.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index b563205f813..26336874cba 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -63,6 +63,7 @@ Huge thanks to [@pvizeli] who drove the core implementation and to the following [@marvin-w]: https://github.com/marvin-w [@OnFreund]: https://github.com/OnFreund [@SukramJ]: https://github.com/SukramJ +[@teachingbirds]: https://github.com/teachingbirds ## Advanced mode @@ -78,6 +79,11 @@ Big shout out to [@frenck] who has been doing a lot of clean up on the website. Last week [@balloob] showed a preview of the upcoming [Home Assistant Cast](/blog/2019/07/09/home-assistant-cast-preview/), a new interface for Home Assistant that runs on Chromecasts and Google Assistant devices with screens. +[@teachingbirds] has redone her Lovelace UI and it is looking fabulous! + + + ## New Integrations - Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) From f2d15e0158d5ff5b259b64be531b43cb6b888b7c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jul 2019 13:51:33 -0700 Subject: [PATCH 72/74] Final update --- source/_posts/2019-07-17-release-96.markdown | 146 ++++++++++++++++++- 1 file changed, 141 insertions(+), 5 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 26336874cba..95804099b0e 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -86,7 +86,7 @@ Last week [@balloob] showed a preview of the upcoming [Home Assistant Cast](/blo ## New Integrations -- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) +- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) - Add integration for Vallox Ventilation Units ([@andre-richter] - [#24660]) ([vallox docs]) (new-integration) - Add support for aurora ABB Powerone solar photovoltaic inverter ([@davet2001] - [#24809]) ([aurora_abb_powerone docs]) (new-integration) - Add support for arcam fmj receivers ([@elupus] - [#24621]) ([arcam_fmj docs]) (new-integration) @@ -95,11 +95,12 @@ Last week [@balloob] showed a preview of the upcoming [Home Assistant Cast](/blo ## New Platforms -- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) - Add template vacuum support ([@luukd] - [#22904]) ([template docs]) (new-platform) - Fronius (solar energy and inverter) component ([@nielstron] - [#22316]) ([sensor docs]) (new-platform) - New scanner device tracker and ZHA device tracker support ([@dmulcahey] - [#24584]) ([device_tracker docs]) ([zha docs]) (new-platform) - [climate] Bugfix honeywell misleading error message ([@zxdavb] - [#25048]) ([evohome docs]) ([honeywell docs]) (new-platform) +- [climate] Add water_heater to evohome ([@zxdavb] - [#25035]) ([evohome docs]) (beta fix) (new-platform) +- [Climate] Hive Add water heater Component post the refresh of the climate component. ([@KJonline] - [#25148]) ([hive docs]) (beta fix) (new-platform) ## If you need help... @@ -124,7 +125,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Ambient Weather Station__ - By default, the Ambient solar radiation (i.e., brightness) sensor is measured in W/m². Since this unit of measurement is not used anywhere else, this change updates the sensor to use the more prevalent lx unit. Any automations that use this sensor should be updated accordingly. ([@bachya] - [#24690]) ([ambient_station docs]) - - __Google Cloud__ - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. ([@GrandNewbien] - [#24808]) ([google_cloud docs]) +- __Google Cloud__ - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. ([@GrandNewbien] - [#24808]) ([google_cloud docs]) Example configuration: ``` @@ -143,6 +144,43 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Netatmo__ - If the module type can not be determined the climate device will default to the type "valve" as it implements a subset of "thermostat". Consequently those devices wont be able to be turned off. This should not be a major issue and should only happen when there are issues with the data retrieved form the Netatmo API. ([@cgtobi] - [#25029]) ([netatmo docs]) - __GeoJSON Events__ - Update geojson_client library to version 0.4.This changes the access to the external feed from HTTP to HTTPS for the nsw_rural_fire_service_feed platform. This should normally not make any difference to anyone consuming this feed. Only if for example you have set up a template sensor or automation that reads the external_id attribute of a geo_location entity and compare it against a pattern, would you need to change this. ([@exxamalte] - [#25039]) ([geo_json_events docs]) ([nsw_rural_fire_service_feed docs]) ([usgs_earthquakes_feed docs]) +## Beta Fixes + +- Add websocket API command for Z-Wave network status ([@cgarwood] - [#25066]) ([zwave docs]) (beta fix) +- Do not reverse open/close calls ([@balloob] - [#24879]) ([tahoma docs]) (breaking change) (beta fix) +- Add support for on/off climate ([@pvizeli] - [#25026]) ([climate docs]) (beta fix) +- Change unique_id formula for Notion entities ([@bachya] - [#25076]) ([notion docs]) (beta fix) +- Fix powercontrol media player alexa ([@pvizeli] - [#25080]) ([alexa docs]) (beta fix) +- Support podcast episodes as Sonos favorites ([@amelchio] - [#25087]) ([sonos docs]) (beta fix) +- Guard module being None ([@balloob] - [#25077]) (beta fix) +- [climate] Add water_heater to evohome ([@zxdavb] - [#25035]) ([evohome docs]) (beta fix) (new-platform) +- Fix Netatmo climate issue when device out of reach ([@cgtobi] - [#25096]) ([netatmo docs]) (beta fix) +- Add turn on/off to coolmaster ([@OnFreund] - [#25097]) ([coolmaster docs]) (beta fix) +- Fix window exception in WWLLN ([@bachya] - [#25100]) ([wwlln docs]) (beta fix) +- Fix missing sensor unit in RainMachine ([@bachya] - [#25101]) ([rainmachine docs]) (beta fix) +- Add climate related services to Homematic IP Cloud ([@SukramJ] - [#25079]) ([homematicip_cloud docs]) (beta fix) +- Simplify Alexa/Google for new climate turn_on/off ([@balloob] - [#25115]) ([alexa docs]) ([google_assistant docs]) (beta fix) +- Verify cloud user exists during boot ([@balloob] - [#25119]) ([cloud docs]) (beta fix) +- Allow area ID in service call schemas ([@balloob] - [#25121]) ([light docs]) ([switch docs]) (beta fix) +- Load requirements for platforms ([@elupus] - [#25133]) (beta fix) +- Handle Sonos connection errors during setup ([@amelchio] - [#25135]) ([sonos docs]) (beta fix) +- [climate-1.0] Bugfix evohome showstopper ([@zxdavb] - [#25139]) ([evohome docs]) (beta fix) +- remove comfort mode ([@SukramJ] - [#25140]) ([homematicip_cloud docs]) (beta fix) +- [climate-1.0] Add RoundThermostat to evohome ([@zxdavb] - [#25141]) ([evohome docs]) (beta fix) +- [Climate] Hive Add water heater Component post the refresh of the climate component. ([@KJonline] - [#25148]) ([hive docs]) (beta fix) (new-platform) +- Remove check and restore temp/mode changes ([@andersonshatch] - [#25149]) ([tado docs]) (beta fix) +- Update pyhomematic to 0.1.60 ([@danielperna84] - [#25152]) ([homematic docs]) (beta fix) +- Version sensor update ([@ludeeus] - [#25162]) ([version docs]) (beta fix) +- Make dev tools titlte translatable ([@balloob] - [#25166]) ([frontend docs]) (beta fix) +- Fix device types for some HomeMatic IP sensors ([@danielperna84] - [#25167]) ([homematic docs]) (beta fix) +- Update pysonos to 0.0.21 ([@amelchio] - [#25168]) (beta fix) +- Fix climate is_aux_heat type hint. ([@Adminiuga] - [#25170]) ([climate docs]) (beta fix) +- Upgrade luftdaten to 0.6.2 ([@fabaff] - [#25177]) ([luftdaten docs]) (beta fix) +- Correctly set property decorator on preset modes ([@balloob] - [#25151]) ([fritzbox docs]) (beta fix) +- Fix device name customization on ZHA add devices page ([@dmulcahey] - [#25180]) ([zha docs]) (beta fix) +- [climate] Tweak evohome migration ([@zxdavb] - [#25187]) ([evohome docs]) (beta fix) +- Only include target temp if has right support flag ([@balloob] - [#25193]) ([climate docs]) (beta fix) + ## All changes - Fix AttributeError: 'NoneType' object has no attribute 'group' with sytadin component ([@foreign-sub] - [#24652]) ([sytadin docs]) @@ -164,7 +202,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix PS4 entities with shared host not updating and latency with multiple connections ([@ktnrg45] - [#24642]) ([ps4 docs]) - Add initial support for remote dev container ([@pvizeli] - [#24681]) - Expose ports 8123, 8300 and 51827 in Dockerfile ([@johnluetke] - [#24389]) -- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) (new-platform) +- Add Trafikverket train component ([@endor-force] - [#23470]) ([trafikverket_train docs]) (new-integration) - Add 'unique_id' Property to Inverter Sensors ([@squishykid] - [#24707]) ([solax docs]) - Remove device and entity registry entries when removing a ZHA device ([@dmulcahey] - [#24369]) ([zha docs]) - Add support for sensor state STATE_UNAVAILABLE ([@cnrd] - [#24641]) ([plant docs]) @@ -188,6 +226,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - Remove temperature attribute from SimpliSafe alarm control panel ([@bachya] - [#24833]) ([simplisafe docs]) (breaking change) - Fronius (solar energy and inverter) component ([@nielstron] - [#22316]) ([sensor docs]) (new-platform) - Add template support to template trigger's for option ([@pnbruckner] - [#24810]) ([automation docs]) +- Upgrade sisyphus-control to 2.2 ([@jkeljo] - [#24837]) ([sisyphus docs]) +- Fix yeelight color temp getter ([@zewelor] - [#24830]) ([yeelight docs]) - Upgrade luftdaten to 0.6.1 ([@fabaff] - [#24842]) ([luftdaten docs]) (breaking change) - Upgrade sqlalchemy to 1.3.5 ([@fabaff] - [#24844]) ([recorder docs]) ([sql docs]) - Upgrade numpy to 1.16.4 ([@fabaff] - [#24845]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) @@ -218,15 +258,18 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix 'same state' monitoring in state trigger ([@pnbruckner] - [#24904]) ([automation docs]) - Add missing trigger.for variable to template trigger ([@pnbruckner] - [#24893]) ([automation docs]) - Add ability to send attachments in pushover notifications ([@kreegahbundolo] - [#24806]) ([pushover docs]) +- Fix home coach discovery ([@cgtobi] - [#24902]) ([netatmo docs]) - New languages that looks like supported by Google but not documented: ([@lufton] - [#24881]) ([google_cloud docs]) - Remove ZHA device entity ([@dmulcahey] - [#24909]) ([zha docs]) (breaking change) - Bump androidtv to 0.0.18 ([@JeffLIrion] - [#24927]) ([androidtv docs]) - Update pysonos to 0.0.19 ([@amelchio] - [#24930]) ([sonos docs]) - Add support for Yale YRL256 lock ([@ctso] - [#24932]) ([zwave docs]) +- Fix exclusion of routes with excl_filter ([@gadgetchnnel] - [#24928]) ([waze_travel_time docs]) - New scanner device tracker and ZHA device tracker support ([@dmulcahey] - [#24584]) ([device_tracker docs]) ([zha docs]) (new-platform) - Allow updating of via_device in device registry ([@bachya] - [#24921]) - Update pyHik library to 0.2.3 ([@mezz64] - [#24957]) ([hikvision docs]) - Implement ADR0003 for Netatmo sensor ([@cgtobi] - [#24944]) ([netatmo docs]) (breaking change) +- Fix monitoring of trays in syncthru component ([@nielstron] - [#24961]) ([syncthru docs]) - Batch of Component(s) -> Integration(s) ([@frenck] - [#24972]) - Add sonos.play_queue service ([@apeeters] - [#24974]) ([sonos docs]) - Fix errors if rest source becomes unavailable ([@slackr31337] - [#24986]) ([scrape docs]) @@ -288,9 +331,43 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change phrases in the logbook component for persons and binary_sensors ([@Martijn02] - [#25053]) ([logbook docs]) - Make sure volume level is valid when incrementing/decrementing ([@JeffLIrion] - [#25061]) ([vizio docs]) - Complete OPERATION_MODES ([@monte-monte] - [#25069]) ([knx docs]) -- Add websocket API command for Z-Wave network status ([@cgarwood] - [#25066]) ([zwave docs]) +- Add websocket API command for Z-Wave network status ([@cgarwood] - [#25066]) ([zwave docs]) (beta fix) - Correctly store removed entities for restore state ([@balloob] - [#25073]) - Restore automation last_triggered as datetime & fix test ([@pnbruckner] - [#24951]) ([automation docs]) +- Support hass-release inside devcontainer ([@pvizeli] - [#25090]) +- Do not reverse open/close calls ([@balloob] - [#24879]) ([tahoma docs]) (breaking change) (beta fix) +- Add support for on/off climate ([@pvizeli] - [#25026]) ([climate docs]) (beta fix) +- Change unique_id formula for Notion entities ([@bachya] - [#25076]) ([notion docs]) (beta fix) +- Fix powercontrol media player alexa ([@pvizeli] - [#25080]) ([alexa docs]) (beta fix) +- Support podcast episodes as Sonos favorites ([@amelchio] - [#25087]) ([sonos docs]) (beta fix) +- Guard module being None ([@balloob] - [#25077]) (beta fix) +- [climate] Add water_heater to evohome ([@zxdavb] - [#25035]) ([evohome docs]) (beta fix) (new-platform) +- Fix Netatmo climate issue when device out of reach ([@cgtobi] - [#25096]) ([netatmo docs]) (beta fix) +- Add turn on/off to coolmaster ([@OnFreund] - [#25097]) ([coolmaster docs]) (beta fix) +- Fix window exception in WWLLN ([@bachya] - [#25100]) ([wwlln docs]) (beta fix) +- Fix missing sensor unit in RainMachine ([@bachya] - [#25101]) ([rainmachine docs]) (beta fix) +- Add climate related services to Homematic IP Cloud ([@SukramJ] - [#25079]) ([homematicip_cloud docs]) (beta fix) +- Simplify Alexa/Google for new climate turn_on/off ([@balloob] - [#25115]) ([alexa docs]) ([google_assistant docs]) (beta fix) +- Verify cloud user exists during boot ([@balloob] - [#25119]) ([cloud docs]) (beta fix) +- Allow area ID in service call schemas ([@balloob] - [#25121]) ([light docs]) ([switch docs]) (beta fix) +- Load requirements for platforms ([@elupus] - [#25133]) (beta fix) +- Handle Sonos connection errors during setup ([@amelchio] - [#25135]) ([sonos docs]) (beta fix) +- [climate-1.0] Bugfix evohome showstopper ([@zxdavb] - [#25139]) ([evohome docs]) (beta fix) +- remove comfort mode ([@SukramJ] - [#25140]) ([homematicip_cloud docs]) (beta fix) +- [climate-1.0] Add RoundThermostat to evohome ([@zxdavb] - [#25141]) ([evohome docs]) (beta fix) +- [Climate] Hive Add water heater Component post the refresh of the climate component. ([@KJonline] - [#25148]) ([hive docs]) (beta fix) (new-platform) +- Remove check and restore temp/mode changes ([@andersonshatch] - [#25149]) ([tado docs]) (beta fix) +- Update pyhomematic to 0.1.60 ([@danielperna84] - [#25152]) ([homematic docs]) (beta fix) +- Version sensor update ([@ludeeus] - [#25162]) ([version docs]) (beta fix) +- Make dev tools titlte translatable ([@balloob] - [#25166]) ([frontend docs]) (beta fix) +- Fix device types for some HomeMatic IP sensors ([@danielperna84] - [#25167]) ([homematic docs]) (beta fix) +- Update pysonos to 0.0.21 ([@amelchio] - [#25168]) (beta fix) +- Fix climate is_aux_heat type hint. ([@Adminiuga] - [#25170]) ([climate docs]) (beta fix) +- Upgrade luftdaten to 0.6.2 ([@fabaff] - [#25177]) ([luftdaten docs]) (beta fix) +- Correctly set property decorator on preset modes ([@balloob] - [#25151]) ([fritzbox docs]) (beta fix) +- Fix device name customization on ZHA add devices page ([@dmulcahey] - [#25180]) ([zha docs]) (beta fix) +- [climate] Tweak evohome migration ([@zxdavb] - [#25187]) ([evohome docs]) (beta fix) +- Only include target temp if has right support flag ([@balloob] - [#25193]) ([climate docs]) (beta fix) [#22316]: https://github.com/home-assistant/home-assistant/pull/22316 [#22904]: https://github.com/home-assistant/home-assistant/pull/22904 @@ -349,7 +426,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [#24812]: https://github.com/home-assistant/home-assistant/pull/24812 [#24821]: https://github.com/home-assistant/home-assistant/pull/24821 [#24829]: https://github.com/home-assistant/home-assistant/pull/24829 +[#24830]: https://github.com/home-assistant/home-assistant/pull/24830 [#24833]: https://github.com/home-assistant/home-assistant/pull/24833 +[#24837]: https://github.com/home-assistant/home-assistant/pull/24837 [#24840]: https://github.com/home-assistant/home-assistant/pull/24840 [#24842]: https://github.com/home-assistant/home-assistant/pull/24842 [#24844]: https://github.com/home-assistant/home-assistant/pull/24844 @@ -366,6 +445,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#24875]: https://github.com/home-assistant/home-assistant/pull/24875 [#24877]: https://github.com/home-assistant/home-assistant/pull/24877 [#24878]: https://github.com/home-assistant/home-assistant/pull/24878 +[#24879]: https://github.com/home-assistant/home-assistant/pull/24879 [#24880]: https://github.com/home-assistant/home-assistant/pull/24880 [#24881]: https://github.com/home-assistant/home-assistant/pull/24881 [#24882]: https://github.com/home-assistant/home-assistant/pull/24882 @@ -374,6 +454,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#24892]: https://github.com/home-assistant/home-assistant/pull/24892 [#24893]: https://github.com/home-assistant/home-assistant/pull/24893 [#24894]: https://github.com/home-assistant/home-assistant/pull/24894 +[#24902]: https://github.com/home-assistant/home-assistant/pull/24902 [#24904]: https://github.com/home-assistant/home-assistant/pull/24904 [#24905]: https://github.com/home-assistant/home-assistant/pull/24905 [#24909]: https://github.com/home-assistant/home-assistant/pull/24909 @@ -382,6 +463,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#24917]: https://github.com/home-assistant/home-assistant/pull/24917 [#24921]: https://github.com/home-assistant/home-assistant/pull/24921 [#24927]: https://github.com/home-assistant/home-assistant/pull/24927 +[#24928]: https://github.com/home-assistant/home-assistant/pull/24928 [#24930]: https://github.com/home-assistant/home-assistant/pull/24930 [#24932]: https://github.com/home-assistant/home-assistant/pull/24932 [#24941]: https://github.com/home-assistant/home-assistant/pull/24941 @@ -391,6 +473,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#24955]: https://github.com/home-assistant/home-assistant/pull/24955 [#24957]: https://github.com/home-assistant/home-assistant/pull/24957 [#24958]: https://github.com/home-assistant/home-assistant/pull/24958 +[#24961]: https://github.com/home-assistant/home-assistant/pull/24961 [#24963]: https://github.com/home-assistant/home-assistant/pull/24963 [#24971]: https://github.com/home-assistant/home-assistant/pull/24971 [#24972]: https://github.com/home-assistant/home-assistant/pull/24972 @@ -414,10 +497,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [#25019]: https://github.com/home-assistant/home-assistant/pull/25019 [#25023]: https://github.com/home-assistant/home-assistant/pull/25023 [#25024]: https://github.com/home-assistant/home-assistant/pull/25024 +[#25026]: https://github.com/home-assistant/home-assistant/pull/25026 [#25027]: https://github.com/home-assistant/home-assistant/pull/25027 [#25028]: https://github.com/home-assistant/home-assistant/pull/25028 [#25029]: https://github.com/home-assistant/home-assistant/pull/25029 [#25030]: https://github.com/home-assistant/home-assistant/pull/25030 +[#25035]: https://github.com/home-assistant/home-assistant/pull/25035 [#25036]: https://github.com/home-assistant/home-assistant/pull/25036 [#25037]: https://github.com/home-assistant/home-assistant/pull/25037 [#25039]: https://github.com/home-assistant/home-assistant/pull/25039 @@ -438,6 +523,37 @@ Experiencing issues introduced by this release? Please report them in our [issue [#25067]: https://github.com/home-assistant/home-assistant/pull/25067 [#25069]: https://github.com/home-assistant/home-assistant/pull/25069 [#25073]: https://github.com/home-assistant/home-assistant/pull/25073 +[#25076]: https://github.com/home-assistant/home-assistant/pull/25076 +[#25077]: https://github.com/home-assistant/home-assistant/pull/25077 +[#25079]: https://github.com/home-assistant/home-assistant/pull/25079 +[#25080]: https://github.com/home-assistant/home-assistant/pull/25080 +[#25087]: https://github.com/home-assistant/home-assistant/pull/25087 +[#25090]: https://github.com/home-assistant/home-assistant/pull/25090 +[#25096]: https://github.com/home-assistant/home-assistant/pull/25096 +[#25097]: https://github.com/home-assistant/home-assistant/pull/25097 +[#25100]: https://github.com/home-assistant/home-assistant/pull/25100 +[#25101]: https://github.com/home-assistant/home-assistant/pull/25101 +[#25115]: https://github.com/home-assistant/home-assistant/pull/25115 +[#25119]: https://github.com/home-assistant/home-assistant/pull/25119 +[#25121]: https://github.com/home-assistant/home-assistant/pull/25121 +[#25133]: https://github.com/home-assistant/home-assistant/pull/25133 +[#25135]: https://github.com/home-assistant/home-assistant/pull/25135 +[#25139]: https://github.com/home-assistant/home-assistant/pull/25139 +[#25140]: https://github.com/home-assistant/home-assistant/pull/25140 +[#25141]: https://github.com/home-assistant/home-assistant/pull/25141 +[#25148]: https://github.com/home-assistant/home-assistant/pull/25148 +[#25149]: https://github.com/home-assistant/home-assistant/pull/25149 +[#25151]: https://github.com/home-assistant/home-assistant/pull/25151 +[#25152]: https://github.com/home-assistant/home-assistant/pull/25152 +[#25162]: https://github.com/home-assistant/home-assistant/pull/25162 +[#25166]: https://github.com/home-assistant/home-assistant/pull/25166 +[#25167]: https://github.com/home-assistant/home-assistant/pull/25167 +[#25168]: https://github.com/home-assistant/home-assistant/pull/25168 +[#25170]: https://github.com/home-assistant/home-assistant/pull/25170 +[#25177]: https://github.com/home-assistant/home-assistant/pull/25177 +[#25180]: https://github.com/home-assistant/home-assistant/pull/25180 +[#25187]: https://github.com/home-assistant/home-assistant/pull/25187 +[#25193]: https://github.com/home-assistant/home-assistant/pull/25193 [@Adminiuga]: https://github.com/Adminiuga [@Cereal2nd]: https://github.com/Cereal2nd [@Chris-Johnston]: https://github.com/Chris-Johnston @@ -445,10 +561,13 @@ Experiencing issues introduced by this release? Please report them in our [issue [@Emilv2]: https://github.com/Emilv2 [@GrandNewbien]: https://github.com/GrandNewbien [@JeffLIrion]: https://github.com/JeffLIrion +[@KJonline]: https://github.com/KJonline [@Martijn02]: https://github.com/Martijn02 [@Matte23]: https://github.com/Matte23 +[@OnFreund]: https://github.com/OnFreund [@PaulAnnekov]: https://github.com/PaulAnnekov [@StevenLooman]: https://github.com/StevenLooman +[@SukramJ]: https://github.com/SukramJ [@Swamp-Ig]: https://github.com/Swamp-Ig [@alain57]: https://github.com/alain57 [@alengwenus]: https://github.com/alengwenus @@ -467,6 +586,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@cnrd]: https://github.com/cnrd [@ctso]: https://github.com/ctso [@cybe]: https://github.com/cybe +[@danielperna84]: https://github.com/danielperna84 [@davet2001]: https://github.com/davet2001 [@dmulcahey]: https://github.com/dmulcahey [@dreed47]: https://github.com/dreed47 @@ -476,8 +596,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@fabaff]: https://github.com/fabaff [@foreign-sub]: https://github.com/foreign-sub [@frenck]: https://github.com/frenck +[@gadgetchnnel]: https://github.com/gadgetchnnel [@h3ndrik]: https://github.com/h3ndrik [@jesserizzo]: https://github.com/jesserizzo +[@jkeljo]: https://github.com/jkeljo [@jlrgraham]: https://github.com/jlrgraham [@jmw6773]: https://github.com/jmw6773 [@johnluetke]: https://github.com/johnluetke @@ -506,6 +628,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@zombielinux]: https://github.com/zombielinux [@zxdavb]: https://github.com/zxdavb [alert docs]: /components/alert/ +[alexa docs]: /components/alexa/ [ambiclimate docs]: /components/ambiclimate/ [ambient_station docs]: /components/ambient_station/ [androidtv docs]: /components/androidtv/ @@ -515,7 +638,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [braviatv docs]: /components/braviatv/ [cert_expiry docs]: /components/cert_expiry/ [climate docs]: /components/climate/ +[cloud docs]: /components/cloud/ [config docs]: /components/config/ +[coolmaster docs]: /components/coolmaster/ [cups docs]: /components/cups/ [deutsche_bahn docs]: /components/deutsche_bahn/ [device_tracker docs]: /components/device_tracker/ @@ -525,15 +650,19 @@ Experiencing issues introduced by this release? Please report them in our [issue [ecobee docs]: /components/ecobee/ [enphase_envoy docs]: /components/enphase_envoy/ [evohome docs]: /components/evohome/ +[fritzbox docs]: /components/fritzbox/ [frontend docs]: /components/frontend/ [geniushub docs]: /components/geniushub/ [geo_json_events docs]: /components/geo_json_events/ [geo_location docs]: /components/geo_location/ [glances docs]: /components/glances/ +[google_assistant docs]: /components/google_assistant/ [google_cloud docs]: /components/google_cloud/ [hikvision docs]: /components/hikvision/ +[hive docs]: /components/hive/ [homekit docs]: /components/homekit/ [homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ [honeywell docs]: /components/honeywell/ [input_datetime docs]: /components/input_datetime/ [insteon docs]: /components/insteon/ @@ -542,6 +671,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [knx docs]: /components/knx/ [lcn docs]: /components/lcn/ [life360 docs]: /components/life360/ +[light docs]: /components/light/ [logbook docs]: /components/logbook/ [luftdaten docs]: /components/luftdaten/ [media_extractor docs]: /components/media_extractor/ @@ -565,6 +695,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensibo docs]: /components/sensibo/ [sensor docs]: /components/sensor/ [simplisafe docs]: /components/simplisafe/ +[sisyphus docs]: /components/sisyphus/ [sleepiq docs]: /components/sleepiq/ [sma docs]: /components/sma/ [smartthings docs]: /components/smartthings/ @@ -572,10 +703,13 @@ Experiencing issues introduced by this release? Please report them in our [issue [sonos docs]: /components/sonos/ [sql docs]: /components/sql/ [steam_online docs]: /components/steam_online/ +[switch docs]: /components/switch/ [switchmate docs]: /components/switchmate/ +[syncthru docs]: /components/syncthru/ [systemmonitor docs]: /components/systemmonitor/ [sytadin docs]: /components/sytadin/ [tado docs]: /components/tado/ +[tahoma docs]: /components/tahoma/ [template docs]: /components/template/ [tensorflow docs]: /components/tensorflow/ [toon docs]: /components/toon/ @@ -588,8 +722,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [vallox docs]: /components/vallox/ [velbus docs]: /components/velbus/ [vera docs]: /components/vera/ +[version docs]: /components/version/ [vizio docs]: /components/vizio/ [watson_tts docs]: /components/watson_tts/ +[waze_travel_time docs]: /components/waze_travel_time/ [wwlln docs]: /components/wwlln/ [yeelight docs]: /components/yeelight/ [zestimate docs]: /components/zestimate/ From 3825aa3ccf3129d857030fea5a1ca0b49eeaa965 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jul 2019 13:53:07 -0700 Subject: [PATCH 73/74] Fix code blocks in breaking changes --- source/_posts/2019-07-17-release-96.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 95804099b0e..4ac0558101c 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -117,10 +117,12 @@ Experiencing issues introduced by this release? Please report them in our [issue - __OpenTherm__ - Adds support for more than one OpenTherm Gateway device which changes the configuration structure. ([@mvn23] - [#22932]) ([opentherm_gw docs]) Example configuration: - ``` + + ```yaml opentherm_gw: living_room: device: /dev/ttyUSB0 + ``` - __Ambient Weather Station__ - By default, the Ambient solar radiation (i.e., brightness) sensor is measured in W/m². Since this unit of measurement is not used anywhere else, this change updates the sensor to use the more prevalent lx unit. Any automations that use this sensor should be updated accordingly. ([@bachya] - [#24690]) ([ambient_station docs]) @@ -128,7 +130,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Google Cloud__ - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. ([@GrandNewbien] - [#24808]) ([google_cloud docs]) Example configuration: - ``` + + ```yaml tts: - platform: google_cloud key_file: googlecloud.json From cb455a2bdb2c3cc4a798f801aedfc3d37787e857 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Jul 2019 14:25:07 -0700 Subject: [PATCH 74/74] Add Py35 msg --- source/_posts/2019-07-17-release-96.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_posts/2019-07-17-release-96.markdown b/source/_posts/2019-07-17-release-96.markdown index 4ac0558101c..00ee3d2ea97 100644 --- a/source/_posts/2019-07-17-release-96.markdown +++ b/source/_posts/2019-07-17-release-96.markdown @@ -15,6 +15,12 @@ og_image: /images/blog/2019-07-release-96/demo-sidebar.png It's time for Home Assistant 0.96. It's a great release, but we also made some changes, so please pay attention. +## Last release that supports Python 3.5 + +This will be the last release that supports Python 3.5. Home Assistant 0.97 will require at least Python 3.6. If you are using Hass.io or Docker, you will not have to do anything. If you are running Hassbian, [upgrade instructions are here](https://github.com/home-assistant/hassbian-scripts/blob/dev/docs/suites/python.md). If you run Home Assistant inside a virtual environment, please follow the instructions for your OS to update. + +Home Assistant has adopted a new [Python support strategy](https://github.com/home-assistant/architecture/blob/master/adr/0002-minimum-supported-python-version.md). Starting August 1, we will now support the last two minor stable releases of Python. This is currently Python 3.6 and Python 3.7. Python 3.8 is expected to be released near the end of the year. Once that is released, Python 3.6 support is deprecated and removed 2 months later. + ## Pimp my Sidebar The sidebar has gotten an improved look! Idea started with [a mockup by @JuanMTech on Twitter](https://twitter.com/JuanMTech/status/1143757213971943424) and grew into a full blown implementation. The sidebar will now always be visible in a minimized mode. Hovering it will expand it. The developer tool buttons have been collapsed into a single menu item. The dev tools will now store it's exact state when you navigate away, included the dev tool that is open. We've also taken the opportunity to make notifications accessible from the sidebar, instead of only via the Lovelace UI.