Merge branch 'rc' into current

This commit is contained in:
Paulus Schoutsen 2019-05-16 08:50:59 +02:00
commit 0c607dab9a
68 changed files with 2851 additions and 596 deletions

View File

@ -138,9 +138,9 @@ social:
# Home Assistant release details
current_major_version: 0
current_minor_version: 92
current_patch_version: 2
date_released: 2019-05-02
current_minor_version: 93
current_patch_version: 0
date_released: 2019-05-16
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.

View File

@ -14,6 +14,7 @@ ha_category:
- Light
- Sensor
- Switch
- Cover
ha_release: "0.60"
ha_iot_class: Local Push
redirect_from:
@ -31,6 +32,7 @@ There is currently support for the following device types within Home Assistant:
- [Light](#light)
- [Sensor](#sensor)
- [Switch](#switch)
- [Cover](#cover)
## {% linkable_title Configuration %}
@ -80,7 +82,7 @@ Service parameters:
The `ads` binary sensor platform can be used to monitor a boolean value on your ADS device.
To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your `configuration.yaml`
file:
```yaml
@ -109,7 +111,7 @@ device_class:
The `ads` light platform allows you to control your connecte ADS lights.
To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your `configuration.yaml`
file:
```yaml
@ -128,7 +130,7 @@ adsvar:
adsvar_brightness:
required: false
description: The name of the variable that controls the brightness, use an unsigned integer on the PLC side
type: integer
type: string
name:
required: false
description: An identifier for the Light in the frontend
@ -139,7 +141,7 @@ name:
The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT*, *BYTE*, *DINT* or *UDINT*.
To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your `configuration.yaml`
file:
```yaml
@ -178,7 +180,7 @@ The *factor* can be used to implement fixed decimals. E.g., set *factor* to 100
The `ads` switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name.
To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your `configuration.yaml`
file:
```yaml
@ -198,3 +200,56 @@ name:
description: An identifier for the switch in the frontend.
type: string
{% endconfiguration %}
## {% linkable_title Cover %}
The `ads` cover platform allows you to control your connected ADS covers.
To use your ADS device, you first have to set up your [ADS hub](#configuration) and then add the following to your `configuration.yaml`
file:
```yaml
# Example configuration.yaml entry
cover:
- platform: ads
name: Curtain master bed room
adsvar_open: covers.master_bed_room_open
adsvar_close: covers.master_bed_room_close
adsvar_stop: covers.master_bed_room_stop
device_class: curtain
```
{% configuration %}
adsvar:
required: true
description: The name of the boolean variable that returns the current status of the cover (`True` = closed)
type: string
adsvar_position:
required: false
description: The name of the variable that returns the current cover position, use a byte variable on the PLC side
type: string
adsvar_set_position:
required: false
description: The name of the variable that sets the new cover position, use a byte variable on the PLC side
type: string
adsvar_open:
required: false
description: The name of the boolean variable that triggers the cover to open
type: string
adsvar_close:
required: false
description: The name of the boolean variable that triggers the cover to close
type: string
adsvar_stop:
required: false
description: The name of the boolean variable that triggers the cover to stop
type: string
name:
required: false
description: An identifier for the Cover in the frontend
type: string
device_class:
required: false
description: Sets the class of the device, changing the device state and icon that is displayed on the UI (awning, blind, curtain, damper, door, garage, shade, shutter, window)
type: device_class
{% endconfiguration %}

View File

@ -123,6 +123,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
device:
description: 'Information about the device this alarm panel is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
required: false

View File

@ -0,0 +1,71 @@
---
layout: page
title: "Ambiclimate A/C controller"
description: "Instructions on how to integrate Ambiclimate A/C controller into Home Assistant."
date: 2019-02-21 15:00 +0200
sidebar: true
comments: false
sharing: true
footer: true
logo: ambiclimate.png
ha_category: Climate
ha_release: 0.93
ha_iot_class: Cloud Polling
---
Integrates [Ambiclimate](https://Ambiclimate.com) Air Conditioning controller into Home Assistant.
You must create an application [here](https://api.ambiclimate.com/clients) to obtain a `client_id` and `client_secret`.
The `callback url` should be configured as your Home Assistant `base_url` + `/api/ambiclimate`, e.g. `https://example.com/api/ambiclimate`.
To enable this platform, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
ambiclimate:
client_id: CLIENT_ID
client_secret: CLIENT_SECRET
```
Restart Home Assistant. Then, go to the frontend and authorize Ambiclimate.
{% configuration %}
client_id:
description: Your Ambiclimate API client ID.
required: true
type: string
client_secret:
description: Your Ambiclimate API client secret.
required: true
type: string
{% endconfiguration %}
Note that you have to select manual mode from the Ambiclimate app to be able to control the A/C from Home Assistant.
## {% linkable_title Component services %}
Enable comfort mode on your AC:
`climate.set_comfort_mode`
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `Name` | yes | String with device name.
Send feedback for comfort mode:
`climate.send_comfort_feedback`
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `Name` | yes | String with device name.
| `value` | yes | Send any of the following comfort values: too_hot, too_warm, bit_warm, comfortable, bit_cold, too_cold, freezing
Enable temperature mode on your AC:
`climate.set_temperature_mode`
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `Name` | yes | String with device name.
| `value` | yes | Target value in celsius

View File

@ -29,7 +29,7 @@ There is currently support for the following device types within Home Assistant:
- Binary Sensor
- Camera
- Sensor
- Switch
- Switch (deprecated)
## {% linkable_title Configuration %}
@ -128,8 +128,8 @@ sensors:
motion_detector:
description: >
Return `true`/`false` when motion is detected.
**Note:** This sensor is deprecated and will be removed in a future release.
**Note:** The motion_detector sensor is deprecated and will be removed in a future release.
Use **binary_sensors** option **motion_detected** instead.
sdcard:
description: Return the SD card usage by reporting the total and used space.
@ -139,7 +139,11 @@ sensors:
configured for the given camera.
switches:
description: >
Switches to display in the frontend.
Switches to display in the frontend.
**Note:** Switches are deprecated and will be removed in a future release.
Use services and attributes instead.
The following switches can be monitored:
required: false
type: list
@ -163,9 +167,66 @@ Newer Amcrest firmware may not work, then **rtsp** is recommended instead.
make sure to follow the steps mentioned at [FFMPEG](/components/ffmpeg/)
documentation to install the `ffmpeg`.
To check if your Amcrest camera is supported/tested, visit the
[supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix)
link from the `amcrest` project.
## {% linkable_title Services %}
Once loaded, the `amcrest` component will expose services that can be called to perform various actions. The `entity_id` service attribute can specify one or more specific cameras, or `all` can be used to specify all configured Amcrest cameras.
Available services:
`enable_audio`, `disable_audio`,
`enable_motion_recording`, `disable_motion_recording`,
`enable_recording`, `disable_recording`,
`goto_preset`, `set_color_bw`,
`start_tour` and `stop_tour`
#### {% linkable_title Service `enable_audio`/`disable_audio` %}
These services enable or disable the camera's audio stream.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
#### {% linkable_title Service `enable_motion_recording`/`disable_motion_recording` %}
These services enable or disable the camera to record a clip to its configured storage location when motion is detected.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
#### {% linkable_title Service `enable_recording`/`disable_recording` %}
These services enable or disable the camera to continuously record to its configured storage location.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
#### {% linkable_title Service `goto_preset` %}
This service will cause the camera to move to one of the PTZ locations configured within the camera.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
`preset` | no | Preset number, starting from 1.
#### {% linkable_title Service `set_color_bw` %}
This service will set the color mode of the camera.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
`color_bw` | no | One of `auto`, `bw` or `color`.
#### {% linkable_title Service `start_tour`/`stop_tour` %}
These services start or stop the camera's PTZ tour function.
Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
## {% linkable_title Advanced Configuration %}
@ -181,9 +242,6 @@ amcrest:
- motion_detected
sensors:
- sdcard
switches:
- motion_detection
- motion_recording
# Add second camera
- host: IP_ADDRESS_CAMERA_2

View File

@ -73,6 +73,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
qos:
description: The maximum QoS level to be used when receiving messages.
required: false

View File

@ -1,83 +0,0 @@
---
layout: page
title: "Netatmo Binary Sensor"
description: "Instructions on how to integrate Netatmo binary sensor into Home Assistant."
date: 2016-09-19 15:10
sidebar: true
comments: false
sharing: true
footer: true
logo: netatmo.png
ha_category:
- Binary Sensor
ha_release: 0.31
---
The `netatmo` binary sensor platform is consuming the information provided by a
[Netatmo](https://www.netatmo.com) camera.
This component allows you to get the latest event seen by the camera.
### {% linkable_title Basic Configuration %}
To enable the Netatmo binary sensor, you have to set up
[netatmo](/components/netatmo/),
this will use discovery to add your binary sensor.
### {% linkable_title Advanced configuration %}
If you want to select a specific sensor,
set discovery to `false` for [netatmo](/components/netatmo/)
and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
binary_sensor:
platform: netatmo
home: home_name
timeout: 90
cameras:
- camera_name1
welcome_sensors:
- Someone known
- Someone unknown
- Motion
presence_sensors:
- Outdoor motion
- Outdoor human
- Outdoor animal
- Outdoor vehicle
```
{% configuration %}
home:
description: Will use the cameras of this home only.
required: false
type: string
timeout:
description: >
The Welcome/Presence binary sensors will
stay on for X seconds after detection.
required: false
type: integer
default: 90
cameras:
description: List of cameras entity IDs to display.
required: false
type: list
welcome_sensors:
description: >
List of monitored conditions. Possible values are
'Someone known', 'Someone unknown' and 'Motion'.
required: false
type: list
presence_sensors:
description: >
List of monitored conditions. Possible values are 'Outdoor motion',
'Outdoor human', 'Outdoor animal' and 'Outdoor vehicle'.
required: false
type: list
{% endconfiguration %}
If **home** and **cameras** is not provided, all cameras will be used.
If multiple cameras are available then each monitored conditions
will create a specific sensor for each camera

View File

@ -0,0 +1,50 @@
---
layout: page
title: "Bizkaibus next bus tracking sensor"
description: "Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant."
date: 2019-04-22 14:00
sidebar: true
comments: false
sharing: true
footer: true
logo: bizkaibus.png
ha_category:
- Transport
- Sensor
ha_iot_class: Cloud Polling
ha_release: 0.93
---
The `bizkaibus` sensor will give you the time until the next bus in the selected stop.
The next website can help to determine the id of your bus stop. You can check if this is correct by going to [next link](http://apli.bizkaia.net/APPS/DANOK/TQ/DATOS_PARADAS/DATOS_Paradas.xml) and look the PR_CODE for the STOP_ID.
For a correct use of the sensor the selected route must stop in the selected stop.
Then add the data to your `configuration.yaml` file as shown in the example:
```yaml
# Example configuration.yaml entry
sensor:
- platform: bizkaibus
stopid: STOP_ID
route: ROUTE_ID
```
{% configuration %}
stopid:
description: The ID of the bus stop to get the information for.
required: true
type: string
route:
description: The ID of the bus route to get information for. This is the same as the bus number, e.g., `A3641`.
required: true
type: string
name:
description: A friendly name for this sensor.
required: false
default: Next Bus
type: string
{% endconfiguration %}
The public RTPI information is coming from [Bizkaibus API](http://apli.bizkaia.net/APPS/DANOK/TQWS/TQ.ASMX).

View File

@ -1,63 +0,0 @@
---
layout: page
title: "Netatmo Camera"
description: "Instructions on how to integrate Netatmo cameras into Home Assistant."
date: 2016-06-02 08:10
sidebar: true
comments: false
sharing: true
footer: true
logo: netatmo.png
ha_category:
- Camera
ha_release: 0.22
ha_iot_class: Local Polling
---
The `netatmo` camera platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This component allows you to view the current photo created by the Camera.
### {% linkable_title Basic configuration %}
To enable the Netatmo camera, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your camera.
### {% linkable_title Advanced configuration %}
If you want to select a specific camera, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
camera:
- platform: netatmo
```
{% configuration %}
home:
description: Will display the cameras of this home only.
required: false
type: string
cameras:
description: Cameras to use. Multiple entities allowed.
required: false
type: list
keys:
camera_name:
description: Name of the camera to display.
quality:
description: Quality of the live stream. (`'high'`, `'medium'`, `'low'` or `'poor'`)
required: false
type: string
default: high
{% endconfiguration %}
If **home** and **cameras** are not provided, all cameras will be displayed. For more control over your cameras check the configuration sample below.
```yaml
# Example configuration.yaml entry
camera:
platform: netatmo
home: home_name
quality: medium
cameras:
- camera_name1
- camera_name2
```

View File

@ -232,6 +232,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
device:
description: 'Information about the device this HVAC device is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
required: false

View File

@ -1,62 +0,0 @@
---
layout: page
title: "Netatmo Thermostat"
description: "Instructions on how to integrate Netatmo thermostat into Home Assistant."
date: 2016-10-11 08:10
sidebar: true
comments: false
sharing: true
footer: true
logo: netatmo.png
ha_category:
- Climate
ha_release: 0.31
ha_iot_class: Cloud Polling
---
The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat) thermostat. This component allows you to view the current temperature and setpoint.
To enable the Netatmo thermostat, you first have to set up [netatmo](/components/netatmo/), this will use discovery to add your thermostat.
If you want to select specific homes or specific rooms, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
climate:
- platform: netatmo
```
{% configuration %}
homes:
description: Will display the thermostats of the homes listed.
required: false
type: list
keys:
name:
required: true
description: The home name.
rooms:
description: Rooms to be displayed. Multiple entities allowed.
required: false
type: [list, string]
description: List of the names of the rooms to be displayed.
{% endconfiguration %}
If **homes** and **rooms** are not provided, all thermostats will be displayed.
```yaml
# Example configuration.yaml entry
climate:
platform: netatmo
homes:
- name: home1_name
rooms:
- room1_name
- room2_name
- name: home2_name
rooms:
- room3_name
- room4_name
- room5_name
```

View File

@ -54,6 +54,14 @@ counter:
required: false
type: integer
default: 1
minimum:
description: Minimum value the counter will have
required: false
type: integer
maximum:
description: Maximum value the counter will have
required: false
type: integer
icon:
description: Icon to display for the counter.
required: false
@ -96,6 +104,18 @@ With this service the counter is reset to its initial value.
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
#### {% linkable_title Service `counter.configure` %}
With this service the properties of the counter can be changed while running.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
| `minimum` | yes | Set new value for minimum. None disables minimum. |
| `maximum` | yes | Set new value for maximum. None disables maximum. |
| `step` | yes | Set new value for step |
### {% linkable_title Use the service %}
@ -106,4 +126,3 @@ Select <img src='/images/screenshots/developer-tool-services-icon.png' alt='serv
"entity_id": "counter.my_custom_counter"
}
```

View File

@ -182,6 +182,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
unique_id:
description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception.
required: false

View File

@ -68,6 +68,10 @@ cover:
description: Defines a template to specify which icon to use.
required: false
type: template
device_class:
description: The [type/class](/components/cover/#device-class) of the cover to set the icon in the frontend.
required: false
type: string
open_cover:
description: Defines an action to run when the cover is opened. If [`open_cover`](#open_cover) is specified, [`close_cover`](#close_cover) must also be specified. At least one of [`open_cover`](#open_cover) and [`set_cover_position`](#set_cover_position) must be specified.
required: inclusive

View File

@ -65,3 +65,5 @@ The following sensors are supported.
The following switches are supported.
- **Boost:** Switch to manually activate boost.
- **Bypass:** Switch to manually activate bypass.
- **Automatic bypass:** Switch to enable automatic bypass.

View File

@ -31,6 +31,7 @@ There is currently support for the following device types within Home Assistant:
- Fan
- Sensor
- Vacuum
- Air Quality
## {% linkable_title Configuration %}
@ -158,9 +159,22 @@ There are several attributes which can be used for automations and templates.
## {% linkable_title Sensor %}
The `dyson` sensor platform allows you to control your Dyson Purifier's filter life time.
The `dyson` sensor platform provides temperature and humidity sensors.
## {% linkable_title Air Quality %}
The `dyson` air quality platform provides the following levels:
- Particulate matter 2.5 (<= 2.5 μm) level.
- Particulate matter 10 (<= 10 μm) level.
- Air Quality Index (AQI).
- NO2 (nitrogen dioxide) level.
- VOC (Volatile organic compounds) level.
Note: currently only the 2018 dyson fans are supported(TP04 and DP04).
### {% linkable_title Supported fan devices %}
- Pure Cool link (desk and tower)
- Pure Hot+cool link (see climate part) for thermal control
- Pure Cool 2018 Models (TP04 and DP04)

View File

@ -29,19 +29,29 @@ The `enocean` component adds support for some of these devices. You will need a
There is currently support for the following device types within Home Assistant:
- Binary Sensor (wall switches)
- Sensor (power meters)
- Light (dimmers)
- Switch
- [Binary Sensor](#binary-sensor) - Wall switches
- [Sensor](#sensor) - Power meters, temperature sensors and humidity sensors
- [Light](#light) - Dimmers
- [Switch](#switch)
However, only a few devices have been confirmed to work. These are:
However, due to the wide range of message types, not all devices will work without code changes.
The following devices have been confirmed to work out of the box:
- Eltako FUD61 dimmer
- Eltako FT55 battery-less wall switch
- Jung ENOA590WW battery-less wall switch
- Omnio WS-CH-102-L-rw battery-less wall switch
- Permundo PSC234 (switch and power monitor)
- EnOcean STM-330 temperature sensor
Other devices will most likely need some changes in the Home Assistant code in order to work. Support for teaching of devices is also missing at this time.
If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) (EEP).
If it does, it will most likely work.
The available profiles are usually listed somewhere in the device manual.
Support for tech-in messages is not implemented.
## {% linkable_title Hub %}
To integrate an EnOcean controller with Home Assistant, add the following section to your `configuration.yaml` file:
@ -65,12 +75,14 @@ Tested with:
- Eltako FT55 which uses the EnOcean PTM 215 module
- [TRIO2SYS Wall switches](http://www.trio2sys.fr/index.php/fr/produits-enocean-sans-fil-sans-pile-interoperable/emetteur-sans-fils-sans-pile-interoperable-enocean) which uses the EnOcean PTM210 DB module
- Omnio WS-CH-102
All switches using theses modules are expected to work. Other devices will most likely not work without changing the Home Assistant code.
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
## {% linkable_title Configuration %}
- F6-02-01 (Light and Blind Control - Application Style 2)
- F6-02-02 (Light and Blind Control - Application Style 1)
To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file:
To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
@ -95,7 +107,7 @@ device_class:
type: device_class
{% endconfiguration %}
EnOcean binary sensors only generate 'button_pressed' events. The event data has following four fields:
EnOcean binary sensors have no state, they only generate 'button_pressed' events. The event data has following fields:
- **id**: The ID of the device (see configuration).
- **pushed**: `1` for a button press, `0` for a button release.
@ -126,7 +138,7 @@ automation:
An EnOcean light can take many forms. Currently only one type has been tested: Eltako FUD61 dimmer.
To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file:
To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
@ -154,35 +166,154 @@ name:
## {% linkable_title Sensor %}
The `enocean` sensor platform currently only allows reading out the power measured in a Permundo PSC234 switch.
The EnOcean sensor platform currently supports the following device types:
To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file:
* [power sensor](#power-sensor)
* [humidity sensor](#humidity-sensor)
* [temperature sensor](#temperature-sensor)
To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: enocean
name: Television
- name: Television
platform: enocean
id: [0x01,0x90,0x84,0x3C]
```
{% configuration %}
id:
description: The ID of the device. This is a 4 bytes long number.
description: The ID of the device. This is the 4 bytes long identifier of your device.
required: true
type: list
name:
description: An identifier for the switch
required: true
default: EnOcean sensor
description: An identifier for the sensor in the frontend.
required: false
type: string
default: EnOcean sensor
device_class:
description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
required: false
type: device_class
default: powersensor
{% endconfiguration %}
### {% linkable_title Power sensor %}
This has been tested with a Permundo PSC234 switch, but any device sending EEP **A5-12-01** messages will work.
Add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- name: Television
platform: enocean
id: [0x01,0x90,0x84,0x3C]
device_class: powersensor
```
### {% linkable_title Humidity sensor %}
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
- Any profile that contains the humidity value at position **DB2.7** to **DB2.0**
- **A5-04-01** - Temp. and Humidity Sensor, Range 0°C to +40°C and 0% to 100%
- **A5-04-02** - Temp. and Humidity Sensor, Range -20°C to +60°C and 0% to 100%
- **A5-10-10** to **A5-10-14** - Room Operating Panels
Add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- name: Bathroom
platform: enocean
id: [0x01,0x90,0x84,0x3C]
device_class: humidity
```
### {% linkable_title Temperature sensor %}
This sensor has been tested with a generic STM-330 sensor, which is used in most indoor temperature sensor devices.
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
- Any profile that contains an 8-bit temperature at position DB1.7 to DB1.0. 10-bit is not supported.
- **A5-02-01** to **A5-02-1B** - Temperature Sensor with various temperature ranges
- **A5-10-01** to **A5-10-14** - Room Operating Panels
- **A5-04-01** - Temp. and Humidity Sensor, Range 0°C to +40°C and 0% to 100%
- **A5-04-02** - Temp. and Humidity Sensor, Range -20°C to +60°C and 0% to 100%
- **A5-10-10** - Temp. and Humidity Sensor and Set Point
- **A5-10-12** - Temp. and Humidity Sensor, Set Point and Occupancy Control
Check the manual of your temperature sensor to figure out what EEP it uses.
If you do not know, make an educated guess and check the reported values. It's easiest to validate the temperature at the boundaries of the range, so maybe put the sensor into the fridge for a while.
Add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- name: Living Room
platform: enocean
id: [0x01,0x90,0x84,0x3C]
device_class: temperature
```
The temperature sensor supports these additional configuration properties.
{% configuration %}
temp_min:
description: The minimal temperature in °C your sensor supports.
required: false
type: integer
default: 0
temp_max:
description: The maximum temperature in °C your sensor supports.
required: false
type: integer
default: 40
range_min:
description: The range value your sensor reports for `temp_min`
required: false
type: integer
default: 255
range_max:
description: The range value your sensor reports for `temp_max`
required: false
type: integer
default: 0
{% endconfiguration %}
Note that the default configuration values of _range_min_ and _range_max_ are not typos, the range is backwards for most sensors.
However, some EEPs have a different, inverted range, which goes from 0 to 250. This includes the following EEPs:
- **A5-04-01**
- **A5-04-02**
- **A5-10-10** to **A5-10-14**
Adapt the `configuration.yaml` for those sensors:
```yaml
# Example configuration.yaml entry for EEP A5-10-10
sensor:
- name: Living Room
platform: enocean
id: [0x01,0x90,0x84,0x3C]
device_class: temperature
range_min: 0
range_max: 250
```
## {% linkable_title Switch %}
An EnOcean switch can take many forms. Currently, only a few types have been tested: Permundo PSC234 and Nod On SIN-2-1-01.
To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file:
To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry

View File

@ -26,6 +26,7 @@ sensor:
host: IP_ADDRESS
monitored_conditions:
- black
- photoblack
- yellow
- magenta
- cyan
@ -44,6 +45,8 @@ monitored_conditions:
keys:
black:
description: The black ink cartridge
photoblack:
description: The photo black ink cartridge (not supported by all printers).
yellow:
description: The yellow ink cartridge.
magenta:
@ -56,11 +59,14 @@ monitored_conditions:
Supported devices:
- Epson Workforce printers who publish a HTTP page containing the ink cardridge levels
- Epson Workforce (and some EcoTank) printers who publish a HTTP page containing the ink cardridge levels
Tested devices:
- Epson WF3540
- Epson WF3620
- Epson WF3640
- Epson EcoTank ET-77x0
To make this module work you need to connect your printer to your LAN.
The best is to navigate to the IP of the printer to check if it shows a status page.
The best is to navigate to the status page of the printer to check if it shows the page with the ink levels on the URL http://<IP_ADDRESS>/PRESENTATION/HTML/TOP/PRTINFO.HTML

View File

@ -0,0 +1,40 @@
---
layout: page
title: "Essent"
description: "Instructions on how to integrate Essent within Home Assistant."
date: 2019-04-29 19:15
sidebar: true
comments: false
sharing: true
footer: true
logo: essent.png
ha_category:
- Energy
- Sensor
ha_release: 0.93
ha_iot_class: Cloud Polling
---
The `essent` platform uses [PyEssent](https://github.com/TheLastProject/PyEssent/) to communicate with the (undocumented) API of Dutch energy provider Essent. It provides sensors for each of your meters and tariffs, updated daily.
To add Essent to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: essent
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
{% configuration %}
username:
required: true
description: Your username for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/).
type: string
password:
required: true
description: Your password for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/).
type: string
{% endconfiguration %}

View File

@ -147,6 +147,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
unique_id:
description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception.
required: false

View File

@ -10,40 +10,73 @@ footer: true
logo: geniushub.png
ha_category:
- Climate
- Water heater
ha_release: 0.92
ha_iot_class: Local Polling
---
The `geniushub` integration links Home Assistant with your Genius Hub for controlling climate devices (the hub does not have to be in the same network as HA).
The `geniushub` integration links Home Assistant with your Genius Hub (the hub does not have to be in the same network as HA).
Each Zone controlled by your Genius hub will report back the state, mode, setpoint and temperature. Other properties are available via the device's attributes.
Currently only **Radiator** and **Hot Water Temperature** zones are supported. Within HA, each **Radiator** zone will appear as a `Climate` device, and each **Hot Water Temperature** zone will appear as a `WaterHeater` device.
There are two distinct options for accessing a Genius Hub:
The device'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.
### {% linkable_title Option 1: hub token only %}
Other properties are available via the device's state attributes, which includes a JSON data structure called `status`. For example, in the case of **Radiator** zones/`Climate` devices:
- requires a **hub token** obtained from [https://my.geniushub.co.uk/tokens](https://my.geniushub.co.uk/tokens)
- uses the v1 API - which is well-documented
- polls Heat Genius' own servers (so is slower, say 10-20s response time)
```json
{
"status": {
"type": "radiator",
"temperature": 19,
"occupied": False,
"override": {
"duration": 0,
"setpoint": 16
}
}
}
### {% linkable_title Option 2: hub hostname/address with user credentials %}
```
- requires your **username** & **password**, as used with [https://www.geniushub.co.uk/app](https://www.geniushub.co.uk/app)
- uses the v3 API - results are WIP and may not be what you expect
- polls the hub directly (so is faster, say 1s response time)
This data can be accessed in automations, etc. via a value template. For example:
{% raw %}
```
value_template: "{{ state_attr('water_heater.boiler_h_w', 'status').override.setpoint }}"
```
{% endraw %}
In the specific case of **Radiator** zones with room sensors:
{% raw %}
```
value_template: "{{ state_attr('climate.main_room', 'status').occupied }}"
```
{% endraw %}
Currently, there is no support for modifying schedules and neither do they appear in the state attributes.
## {% linkable_title Configuration %}
To add your Genius Hub into your Home Assistant installation, add one of the following to your `configuration.yaml` file.
If you want to poll Heat Genius' own servers:
### {% linkable_title Option 1: hub token only %}
- requires a **hub token** obtained from [my.geniushub.co.uk/tokens](https://my.geniushub.co.uk/tokens)
- uses the v1 API - which is well-documented
- polls Heat Genius' own servers (so is slower, say 5-10s response time)
```yaml
# Example configuration.yaml entry, using a Hub Token
geniushub:
token: GENIUS_HUB_TOKEN
```
Alternatively, if you want to poll the hub directly:
### {% linkable_title Option 2: hub hostname/address with user credentials %}
- requires your **username** & **password**, as used with [www.geniushub.co.uk/app](https://www.geniushub.co.uk/app)
- uses the v3 API - results are WIP and may not be what you expect
- polls the hub directly (so is faster, say 1s response time)
```yaml
# Example configuration.yaml entry, directly polling the Hub
@ -71,5 +104,5 @@ username:
password:
description: Your Genius Hub password
required: false
type: integer
type: string
{% endconfiguration %}

View File

@ -198,6 +198,12 @@ Currently, the following domains are available to be used with Google Assistant,
The domain groups contains groups containing all items, by example group.all_automations. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations
</p>
### {% linkable_title Secure Devices %}
Certain devices are considered secure, including anything in the `lock` domain, and `covers` with device types `garage` and `door`.
By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing and locking these devices does not require a pin.
### {% linkable_title Media Player Sources %}
Media Player sources are sent via the Modes trait in Google Assistant.

View File

@ -22,7 +22,6 @@ The HEOS integration adds support for [HEOS](http://heosbydenon.denon.com) capab
- Clear playlist
- Select source from device physical inputs and HEOS favorites
## {% linkable_title Configuration %}
HEOS devices are discovered and setup automatically when the [discovery](/components/discovery) component is enabled. Alternatively, the component can be setup through the frontend control panel integrations page or manually by adding the following to your `configuration.yaml` file:
@ -44,13 +43,110 @@ host:
A connection to a single device enables control for all devices on the network. If you have multiple HEOS devices, enter the host of one that is connected to the LAN via wire or has the strongest wireless signal.
</p>
## {% linkable_title Services %}
### {% linkable_title Service `heos.sign_in` %}
Use the sign-in service to sign the connected controller into a HEOS account so that it can retreive and play HEOS favorites and playlists. An error message is logged if sign-in is unsuccessful. Example service data payload:
```json
{
"username": "example@example.com",
"password": "password"
}
```
| Attribute | Description
| ---------------------- | ---------------------------------------------------------|
| `username` | The username or email of the HEOS account. [Required]
| `password` | The password of the HEOS account. [Required]
### {% linkable_title Service `heos.sign_out` %}
Use the sign-out service to sign the connected controller out of a HEOS account. An error message is logged if sign-out is unsuccessful. There are no parameters to this service.
### {% linkable_title Service `media_player.play_media` %}
#### {% linkable_title Play Favorite %}
You can play a HEOS favorite by number or name with the `media_player.play_media` service. Example service data payload:
```json
{
"entity_id": "media_player.office",
"media_content_type": "favorite",
"media_content_id": "1"
}
```
| Attribute | Description
| ---------------------- | ---------------------------------------------------------|
| `entity_id` | `entity_id` of the player
| `media_content_type` | Set to the value `playlist`
| `media_content_id` | The nubmer (i.e. `1`) or name (i.e. `Thumbprint Radio`) of the HEOS favorite
#### {% linkable_title Play Playlist %}
You can play a HEOS playlist with the `media_player.play_media` service. Example service data payload:
```json
{
"entity_id": "media_player.office",
"media_content_type": "playlist",
"media_content_id": "Awesome Music"
}
```
| Attribute | Description
| ---------------------- | ---------------------------------------------------------|
| `entity_id` | `entity_id` of the player
| `media_content_type` | Set to the value `playlist`
| `media_content_id` | The name of the HEOS playlist
#### {% linkable_title Play Quick Select %}
You can play a HEOS Quick Select by nubmer or name with the `media_player.play_media` service. Example service data payload:
```json
{
"entity_id": "media_player.office",
"media_content_type": "quick_select",
"media_content_id": "1"
}
```
| Attribute | Description
| ---------------------- | ---------------------------------------------------------|
| `entity_id` | `entity_id` of the player
| `media_content_type` | Set to the value `quick_select`
| `media_content_id` | The quick select number (i.e. `1`) or name (i.e. `Quick Select 1`)
#### {% linkable_title Play Url %}
You can play a URL through a HEOS media player using the `media_player.play_media` service. The HEOS player must be able to reach the URL. Example service data payload:
```json
{
"entity_id": "media_player.office",
"media_content_type": "url",
"media_content_id": "http://path.to/stream.mp3"
}
```
| Attribute | Description
| ---------------------- | ---------------------------------------------------------|
| `entity_id` | `entity_id` of the player to play the URL
| `media_content_type` | Set to the value `url`
| `media_content_id` | The full URL to the stream
## {% linkable_title Notes %}
- HEOS groups are not currently supported.
- Receivers with multiple zones are represented as a single media player. They will be turned on when playback is started, but cannot be turned off by the integration at this time.
## {% linkable_title Troubleshooing %}
## {% linkable_title Debugging %}
### {% linkable_title Debugging %}
The HEOS component will log additional information about commands, events, and other messages when the log level is set to `debug`. Add the the relevent line below to the `configuration.yaml` to enable debug logging:
@ -60,4 +156,11 @@ logger:
logs:
homeassistant.components.heos: debug
pyheos: debug
```
```
### {% linkable_title Missing Favorites %}
If the HEOS controller is not signed in to a HEOS account, HEOS favorites will not be populated in the media player source selection and the service `media_player.play_media` for `favorite` and `playlist` will fail. Additionally, the following warning will be logged at startup:
> IP_ADDRESS is not logged in to a HEOS account and will be unable to retrieve HEOS favorites: Use the 'heos.sign_in' service to sign-in to a HEOS account
To resolve this issue, use the `heos.sign_out` service to sign the controller into an account as documented above. This only needs to be performed once, as the controller will remain signed in while the account credentails are valid.

View File

@ -39,6 +39,7 @@ homekit:
code: 1234
binary_sensor.living_room_motion:
linked_battery_sensor: sensor.living_room_motion_battery
low_battery_threshold: 31
light.kitchen_table:
name: Kitchen Table Light
lock.front_door:
@ -122,6 +123,11 @@ homekit:
description: The `entity_id` of a `sensor` entity to use as the battery of the accessory. HomeKit will cache an accessory's feature set on the first run so a device must be removed and then re-added for any change to take effect.
required: false
type: string
low_battery_threshold:
description: Minimum battery level before the accessory starts reporting a low battery.
required: false
type: integer
default: 20
code:
description: Code to `arm / disarm` an alarm or `lock / unlock` a lock. Only applicable for `alarm_control_panel` or `lock` entities.
required: false
@ -330,12 +336,13 @@ The following components are currently supported:
| cover | WindowCovering | All covers that support `set_cover_position`. |
| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) |
| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) |
| device_tracker | Sensor | Support for `occupancy` device class. |
| device_tracker / person | Sensor | Support for `occupancy` device class. |
| fan | Fan | Support for `on / off`, `direction` and `oscillating`. |
| fan | Fan | All fans that support `speed` and `speed_list` through value mapping: `speed_list` is assumed to contain values in ascending order. The numeric ranges of HomeKit map to a corresponding entry of `speed_list`. The first entry of `speed_list` should be equivalent to `off` to match HomeKit's concept of fan speeds. (Example: `speed_list` = [`off`, `low`, `high`]; `off` -> `<= 33`; `low` -> between `33` and `66`; `high` -> `> 66`) |
| light | Light | Support for `on / off`, `brightness` and `rgb_color`. |
| lock | DoorLock | Support for `lock / unlock`. |
| media_player | MediaPlayer | Represented as a series of switches which control `on / off`, `play / pause`, `play / stop`, or `mute` depending on `supported_features` of entity and the `mode` list specified in `entity_config`. |
| media_player | TelevisionMediaPlayer | All media players that have `tv` as their `device_class`. Represented as Television and Remote accessories in HomeKit to control `on / off`, `play / pause`, `select source`, or `volume increase / decrease`, depending on `supported_features` of entity. Requires iOS 12.2/macOS 10.14.4 or later. |
| sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. |
| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. |
| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` |
@ -452,3 +459,11 @@ To fix this, you need to unpair the `Home Assistant Bridge`, delete the `.homeki
#### {% linkable_title The linked battery sensor isn't recognized %}
Try removing the entity from HomeKit and then adding it again. If you are adding this config option to an existing entity in HomeKit, any changes you make to this entity's config options won't appear until the accessory is removed from HomeKit and then re-added.
#### {% linkable_title My media player is not showing up as a television accessory %}
Media Player entities with `device_class: tv` will show up as Television accessories on devices running iOS 12.2/macOS 10.14.4 or later. If needed, try removing the entity from HomeKit and then adding it again, especially if the `media_player` was previously exposed as a series of switches. Any changes, including changed supported features, made to an existing accessory won't appear until the accessory is removed from HomeKit and then re-added.
#### {% linkable_title Can't control volume of your TV media player? %}
The volume and play/pause controls will show up on the Remote app or Control Center. If your TV supports volume control through Home Assistant, you will be able to control the volume using the side volume buttons on the device while having the remote selected on screen.

View File

@ -99,12 +99,11 @@ authtoken:
* Water Sensor (*HmIP-SWD*)
* homematicip_cloud.climate
* Heating-Thermostat Radiator with Display (*HmIP-eTRV,-2*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1, -C*)
* Climate group (*HmIP-HeatingGroup*)
* This includes temperature/humidity measures for climate devices of a room delivered by:
* Wall-mounted thermostat (*HmIP-WTH, WTH-2*)
* Brand Wall-mounted thermostat (*HmIP-BWTH, BWTH-24*)
* Radiator thermostat (*HmIP-eTRV,-2*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1, -C*)
* Radiator thermostat (*HmIP-eTRV,-2,-C*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1*)
* Temperature and humidity sensor (*HmIP-STH*)
* Temperature and humidity Sensor with display (*HmIP-STHD*)
@ -123,6 +122,7 @@ authtoken:
* homematicip_cloud.sensor
* Cloud Access point duty-cycle (*HmIP-HAP, -B1*)
* Wall Mounted Thermostat Pro with Display (*HmIP-WTH, WTH2*)
* Radiator thermostat (*HmIP-eTRV,-2, -C*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1*)
* Temperature and Humidity Sensor without display - indoor (*HmIP-STH*)
* Temperature and Humidity Sensor with display - indoor (*HmIP-STHD*)
* Temperature and Humidity sensor - outdoor (*HmIP-STHO, -A*)

View File

@ -145,7 +145,7 @@ data:
#### {% linkable_title Data %}
Any parameters that you pass in the notify payload that aren't valid for use in the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`) will be sent back to you in the [callback events](#automating-notification-events).
Any parameters that you pass in the notify payload that aren't valid for use in the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`, `priority`, `ttl`) will be sent back to you in the [callback events](#automating-notification-events).
```yaml
title: Front door
@ -220,6 +220,20 @@ data:
If no URL or actions are provided, interacting with a notification will open your Home Assistant in the browser. You can use relative URLs to refer to Home Assistant, i.e. `/map` would turn into `https://192.168.1.2:8123/map`.
#### {% linkable_title TTL and Priority %}
Newer Android versions introduced stronger battery optimization, so notifications by default are delivered only when phone is awake.
Options TTL and priority tries to help users solve those problems. Default value of TTL is `86400s` and priority is `normal`.
You can set priority to either `normal` or `high`. TTL is any integer value.
```yaml
title: Front door
message: The front door is open
data:
ttl: 86400
priority: high
```
### {% linkable_title Dismiss %}
You can dismiss notifications by using service notify.html5_dismiss like so:

View File

@ -0,0 +1,55 @@
---
layout: page
title: "Intergas InComfort"
description: "Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant."
date: 2019-03-03 16:00
sidebar: true
comments: false
sharing: true
footer: true
logo: incomfort.png
ha_category:
- Water heater
ha_release: 0.93
ha_iot_class: Local Polling
---
The `incomfort` integration links Home Assistant with your Intergas Lan2RF gateway for controlling water_heater devices (the hub does not have to be in the same network as HA).
The **Water Heater** device will report back the `state` and `temperature`. Other properties are available via the device's attributes.
In the future, other entities will be added to this integration (e.g. a **Sensor** for CV pressure, and a **Climate** device for room temperature).
### {% linkable_title Configuration %}
To add your Lan2RF gateway into your Home Assistant installation, add one of the following to your `configuration.yaml` file.
```yaml
# Example configuration.yaml entry, older firmware with no user credentials
incomfort:
host: IP_ADDRESS
```
Alternatively, if a **username** & **password** is printed on the back of the gateway:
```yaml
# Example configuration.yaml entry, newer firmware with user credentials
incomfort:
host: IP_ADDRESS
username: USERNAME
password: PASSWORD
```
{% configuration %}
host:
description: The hostname/IP address of the Lan2RF gateway
required: true
type: string
username:
description: The username of the Lan2RF gateway
required: inclusive
type: string
password:
description: The password of the Lan2RF gateway
required: inclusive
type: string
{% endconfiguration %}

View File

@ -1,24 +1,25 @@
---
layout: page
title: "Pollen.com"
description: "Instructions on how to use Pollen.com data within Home Assistant"
title: "IQVIA"
description: "Instructions on how to use IQVIA data within Home Assistant"
date: 2018-01-10 19:20:00
sidebar: true
comments: false
sharing: true
footer: true
logo: pollen.jpg
logo: iqvia.png
ha_category:
- Health
ha_release: 0.63
ha_iot_class: Cloud Polling
redirect_from:
- /components/sensor.pollen/
- /components/pollen/
---
The `pollen` sensor platform collects and displays allergy, asthma, and disease
information (based on a U.S. ZIP code) from
[Pollen.com](https://www.pollen.com/). Data measured includes:
The `iqvia` sensor platform collects and displays allergy, asthma, and disease
information (based on a U.S. ZIP code) from [IQVIA](https://www.iqvia.com/).
Data measured includes:
* Indicies for allergies, asthma and cold/flu indices
* Trends
@ -27,26 +28,25 @@ information (based on a U.S. ZIP code) from
## {% linkable_title Configuring the Platform %}
To integrate `pollen` into Home Assistant, add the following section to your
To integrate `iqvia` into Home Assistant, add the following section to your
`configuration.yaml` file (adjusting the `monitored_conditions` list to your
liking):
```yaml
sensor:
platform: pollen
iqvia:
zip_code: "00544"
monitored_conditions:
- allergy_average_forecasted
- allergy_average_historical
- allergy_index_today
- allergy_index_tomorrow
- allergy_index_yesterday
- asthma_average_forecasted
- asthma_average_historical
- asthma_index_today
- asthma_index_tomorrow
- asthma_index_yesterday
- disease_average_forecasted
- disease_index_today
- disease_index_yesterday
```
{% configuration %}
@ -70,16 +70,16 @@ ZIP codes that start with 0 will cause errors.
The following metrics can be monitored:
* Allergy Index: Forecasted Average (`allergy_average_forecasted`): the average forecasted allergy index over the next 5 days
* Allergy Index: Historical Average (`allergy_average_historical`): the average historical allergy index over the past 30 days
* Allergy Index: Today (`allergy_index_today`): the allergy index for today
* Allergy Index: Tomorrow (`allergy_index_tomorrow`): the allergy index for tomorrow
* Allergy Index: Yesterday (`allergy_index_yesterday`): the allergy index for yesterday
* Asthma Index: Forecasted Average (`asthma_average_forecasted`): the average forecasted asthma index over the next 5 days
* Asthma Index: Historical Average (`asthma_average_historical`): the average historical asthma index over the past 30 days
* Asthma Index: Today (`asthma_index_today`): the asthma index for today
* Asthma Index: Tomorrow (`asthma_index_tomorrow`): the asthma index for tomorrow
* Asthma Index: Yesterday (`asthma_index_yesterday`): the asthma index for yesterday
* Cold & Flu: Forecasted Average (`disease_average_forecasted`): the average forecasted cold/flu index over the next 5 days
* Cold & Flu Index: Today (`disease_index_today`): the cold/flu index for today
* Cold & Flu Index: Yesterday (`disease_index_yesterday`): the cold/flu index for yesterday
## {% linkable_title Understanding the Indices %}

View File

@ -231,6 +231,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
device:
description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
required: false
@ -489,6 +493,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
device:
description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
required: false
@ -760,6 +768,9 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
device:
description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
required: false

View File

@ -94,6 +94,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
unique_id:
description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception.
required: false

View File

@ -0,0 +1,107 @@
---
layout: page
title: MeteoAlarm Sensor
description: "Instructions on how to set up MeteoAlarm binary sensors within Home Assistant."
date: 2019-05-03 16:50
sidebar: true
comments: false
sharing: true
footer: true
logo: meteoalarm.png
ha_category: Binary Sensor
ha_release: 0.93
ha_iot_class: Local Polling
---
The `MeteoAlarm` platform allows one to watch for weather alerts in europe from [MeteoAlarm](https://www.meteoalarm.eu) (EUMETNET). To use this binary sensor, you need the two digits of your country and the province name from [MeteoAlarm](https://www.meteoalarm.eu). Please note that you need to write the exact details from the website with capitals.
The binary sensor state shows if applicable the warning message. The details are available as attribute.
## {% linkable_title Configuration %}
To enable this binary sensor, add the following lines to your `configuration.yaml`:
```yaml
binary_sensor:
- platform: meteoalarm
country: 'NL'
province: 'Groningen'
```
{% configuration %}
name:
description: Binary sensor name
required: false
default: meteoalarm
type: string
country:
description: The 2 digits of your country
required: true
type: string
province:
description: The province
required: true
type: string
language:
description: "The 4 digits our your language, please be aware that this is only possible in the current country. So 'ne' is only possible in Netherlands. Possible options is: bu, bs, ce, da, de, ee, en, es, ga, ca, su, fr, gr, he, hr, ma, is, it, li, la, sr, mk, ma, ne, no, po, ro, cp, sv, sl, eu."
required: false
type: string
default: 'en'
{% endconfiguration %}
{% linkable_title Example output %}
You will find an example below when the state is "on".
{% raw %}
attribution: Information provided by MeteoAlarm
language: en-GB
category: Met
event: Severe forest-fire warning
responseType: Monitor
urgency: Immediate
severity: Severe
certainty: Likely
effective: 2019-05-02T22:00:00+00:00
onset: 2019-05-02T22:00:00+00:00
expires: 2019-05-03T21:59:00+00:00
senderName: Stig Carlsson
headline: Orange forest-fire for Hedmark, Oppland
description: High grass and heather fire hazard in areas without snow until significant amount of precipitation.
Consequences: Vegetation is very easily ignited and very large areas may be affected.
instruction: Be very careful with open fire. Follow the instructions from the local authorities. Emergency services should assess a necessary level of alertness.
awareness_level: 3; orange; Severe
awareness_type: 8; forest-fire
unit_of_measurement:
friendly_name: meteoalarm
icon: mdi:alert
{% endraw %}
There are a few awareness levels:
* 2; yellow; Moderate
* 3; orange; Severe
* 4; red; High
{% linkable_title Example automation %}
Below you find an example of an automation.
{% raw %}
automation:
- alias: Alert me about weather warnings
trigger:
platform: state
entity_id: binary_sensor.meteoalarm
from: off
action:
- service: notify.notify
data_template:
title: '{{state_attr('binary_sensor.meteoalarm', 'headline')}}'
message: "{{state_attr('binary_sensor.meteoalarm', 'description')}} is effective on {{state_attr('binary_sensor.meteoalarm', 'effective')}}"
{% endraw %}
<p class='note warning'>
This component is not affiliated with MeteoAlarm and retrieves data from the website by using the XML feeds. Use it at your own risk.
</p>

View File

@ -247,7 +247,13 @@ In MySensors version 2.2 the serial API changed from using `I_HEARTBEAT_RESPONSE
Messages sent to or from Home Assistant from or to a MySensors device will be validated according to the MySensors [serial API](https://www.mysensors.org/download/serial_api_20). If a message doesn't pass validation, it will be dropped and not be passed forward either to or from Home Assistant. Make sure you follow the serial API for your version of MySensors when writing your Arduino sketch.
If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` component and the `mysensors` package.
The log should warn you of messages that failed validation or if a child value is missing that is required for a certain child type. Home Assistant will log failed validations of child values at warning level if e.g. one required value type for a platform has been received, but other required value types are missing.
Message validation was introduced in version 0.52 of Home Assistant.
### {% linkable_title Debug logging %}
If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` component and the `mysensors` package. This will help you see what is going on. Make sure you use these logging settings to collect a log sample if you report an issue about the `mysensors` integration in our github issue tracker.
```yaml
logger:
default: info
@ -255,9 +261,6 @@ logger:
homeassistant.components.mysensors: debug
mysensors: debug
```
The log should inform you of messages that failed validation or if a child value is missing that is required for a certain child type. Note that the log will log all possible combinations of platforms for a child type that failed validation. It is normal to see some platforms fail validation if the child type supports multiple platforms and your sketch doesn't send all corresponding value types. e.g., the `S_BARO` child type supports both `V_PRESSURE` and `V_FORECAST` value types. If you only send a `V_PRESSURE` value, an `S_BARO` entity with `V_PRESSURE` value will be set up for the sensor platform. However, the log will inform of a sensor platform that failed validation due to missing `V_FORECAST` value type for the `S_BARO` child. Home Assistant will log failed validations of child values at warning level if one required value type for a platform has been received, but other required value types are missing. Most failed validations are logged at debug level.
Message validation was introduced in version 0.52 of Home Assistant.
Visit the [library API][MySensors library api] of MySensors for more information.

View File

@ -10,12 +10,33 @@ footer: true
logo: netatmo.png
ha_category:
- Hub
- Environment
- Weather
- Binary Sensor
- Sensor
- Climate
- Camera
ha_release: "0.20"
ha_iot_class: Cloud Polling
redirect_from:
- /components/binary_sensor.netatmo/
- /components/camera.netatmo/
- /components/climate.netatmo/
- /components/sensor.netatmo/
- /components/public_sensor.netatmo/
---
The `netatmo` component platform is the main component to integrate all Netatmo related platforms.
There is currently support for the following device types within Home Assistant:
- [Binary Sensor](#binary-sensor)
- [Camera](#camera)
- [Climate](#climate)
- [Sensor](#sensor)
## {% linkable_title Configuration %}
To enable the Netatmo component, add the following lines to your `configuration.yaml`:
```yaml
@ -130,3 +151,309 @@ There are two services to manually add and drop the webhooks. This might be usef
| ------- | ----------- |
| addwebhook | Subscribe to webhooks. By default the automatically generated URL will be used. But you can pass `{"url": "https://yourdomain.com/yourwebhook/"}` as service data to the service call if you want to use a manually created [webhook trigger](https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger). In this case you have to manually process the data that is sent by Netatmo.
| dropwebhook | Unsubscribe existing webhooks.
## {% linkable_title Binary Sensor %}
This component allows you to get the latest event seen by the camera.
### {% linkable_title Binary Sensor Advanced configuration %}
If you want to select a specific sensor,
set discovery to `false` for [netatmo](/components/netatmo/)
and add the following lines to your `configuration.yaml`:
{% configuration %}
home:
description: Will use the cameras of this home only.
required: false
type: string
timeout:
description: >
The Welcome/Presence binary sensors will
stay on for X seconds after detection.
required: false
type: integer
default: 90
cameras:
description: List of cameras entity IDs to display.
required: false
type: list
welcome_sensors:
description: >
List of monitored conditions. Possible values are
'Someone known', 'Someone unknown' and 'Motion'.
required: false
type: list
presence_sensors:
description: >
List of monitored conditions. Possible values are 'Outdoor motion',
'Outdoor human', 'Outdoor animal' and 'Outdoor vehicle'.
required: false
type: list
{% endconfiguration %}
```yaml
# Example configuration.yaml entry
binary_sensor:
platform: netatmo
home: home_name
timeout: 90
cameras:
- camera_name1
welcome_sensors:
- Someone known
- Someone unknown
- Motion
presence_sensors:
- Outdoor motion
- Outdoor human
- Outdoor animal
- Outdoor vehicle
```
If **home** and **cameras** is not provided, all cameras will be used.
If multiple cameras are available then each monitored conditions
will create a specific sensor for each camera
## {% linkable_title Camera %}
The `netatmo` camera platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This component allows you to view the current photo created by the Camera.
### {% linkable_title Camera Advanced configuration %}
If you want to select a specific camera,
set discovery to `false` for [netatmo](/components/netatmo/)
and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
camera:
- platform: netatmo
```
{% configuration %}
home:
description: Will display the cameras of this home only.
required: false
type: string
cameras:
description: Cameras to use. Multiple entities allowed.
required: false
type: list
keys:
camera_name:
description: Name of the camera to display.
quality:
description: Quality of the live stream. (`'high'`, `'medium'`, `'low'` or `'poor'`)
required: false
type: string
default: high
{% endconfiguration %}
If **home** and **cameras** are not provided, all cameras will be displayed. For more control over your cameras check the configuration sample below.
```yaml
# Example configuration.yaml entry
camera:
platform: netatmo
home: home_name
quality: medium
cameras:
- camera_name1
- camera_name2
```
## {% linkable_title Climate %}
The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat) thermostat. This component allows you to view the current temperature and setpoint.
### {% linkable_title Camera Advanced configuration %}
If you want to select specific homes or specific rooms,
set discovery to `false` for [netatmo](/components/netatmo/)
and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
climate:
- platform: netatmo
```
{% configuration %}
homes:
description: Will display the thermostats of the homes listed.
required: false
type: list
keys:
name:
required: true
description: The home name.
rooms:
description: Rooms to be displayed. Multiple entities allowed.
required: false
type: [list, string]
description: List of the names of the rooms to be displayed.
{% endconfiguration %}
If **homes** and **rooms** are not provided, all thermostats will be displayed.
```yaml
# Example configuration.yaml entry
climate:
platform: netatmo
homes:
- name: home1_name
rooms:
- room1_name
- room2_name
- name: home2_name
rooms:
- room3_name
- room4_name
- room5_name
```
## {% linkable_title Sensor %}
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
## {% linkable_title Advanced sensor configuration %}
If you want to select a specific sensor, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
sensor:
# Personal sensors
- platform: netatmo
station: STATION_NAME
modules:
module_name1:
- temperature
module_name2:
- temperature
- battery_vp
# Public sensor
- platform: netatmo
areas:
- lat_ne: 40.719
lon_ne: -73.735
lat_sw: 40.552
lon_sw: -74.105
monitored_conditions:
- temperature
- pressure
- humidity
- rain
- windstrength
- guststrength
```
{% configuration %}
station:
required: false
description: The name of the weather station. Needed if several stations are associated with the account.
type: string
modules:
required: false
description: Modules to use. Multiple entries allowed. Please check the next section about how to retrieve the module names.
type: list
keys:
module_name:
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
type: map
keys:
lat_ne:
description: Latitude of north-eastern corner of area.
required: true
type: string
lon_ne:
description: Longitude of north-eastern corner of area.
required: true
type: string
lat_sw:
description: Latitude of south-western corner of area.
required: true
type: string
lon_sw:
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
type: string
default: Netatmo Public Data
mode:
description: "How to calculate the value of the sensor if there are multiple stations reporting data. Accepts `max` or `avg`."
required: false
type: string
default: avg
{% endconfiguration %}
## {% linkable_title Find your modules name %}
You can find your modules name in your [online NetAtmo account](https://my.netatmo.com/app/station). These names can be found and changed in parameters. You have to provide these name in your Home Assistant `configuration.yaml` file.
<p class='img'>
<img src='/images/screenshots/netatmo_module.png' />
</p>

View File

@ -1,88 +0,0 @@
---
layout: page
title: "Netatmo Public"
description: "Instructions on how to add sensors using Netatmo public data to Home Assistant."
date: 2018-07-22 21:18
sidebar: true
comments: false
sharing: true
footer: true
logo: netatmo.png
ha_category:
- Environment
ha_iot_class: Cloud Polling
ha_release: 0.77
redirect_from:
- /components/sensor.netatmo_public/
---
The `netatmo_public` sensor allows you to expose data from [Netatmo](https://weathermap.netatmo.com/) to Home Assistant, even if you don't have a Netatmo device yourself. Currently the following conditions are supported:
* temperature
* pressure
* humidity
* rain
* windstrength
* guststrength
To enable the Netatmo sensor, you have to set up [netatmo](/components/netatmo/).
## {% linkable_title Configuration %}
Next, enable the sensor by adding the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: netatmo_public
areas:
- lat_ne: 40.719
lon_ne: -73.735
lat_sw: 40.552
lon_sw: -74.105
monitored_conditions:
- temperature
- pressure
- humidity
- rain
- windstrength
- guststrength
```
{% configuration %}
areas:
description: The list contains one or more areas to add as sensors.
required: true
type: map
keys:
lat_ne:
description: Latitude of north-eastern corner of area.
required: true
type: string
lon_ne:
description: Longitude of north-eastern corner of area.
required: true
type: string
lat_sw:
description: Latitude of south-western corner of area.
required: true
type: string
lon_sw:
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
type: string
default: Netatmo Public Data
mode:
description: "How to calculate the value of the sensor if there are multiple stations reporting data. Accepts `max` or `avg`."
required: false
type: string
default: avg
{% endconfiguration %}

View File

@ -146,15 +146,33 @@ Messages arriving in the modem inbox are sent as events of type `netgear_lte_sms
## {% linkable_title Services %}
### {% linkable_title Service `netgear_lte.delete_sms` %}
### {% linkable_title Service `netgear_lte.connect_lte` %}
The integration makes a service call available to delete messages from the modem inbox. This can be used to clean up after incoming SMS events.
This service asks the modem to establish its LTE connection, useful if the modem does not autoconnect.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `host` | no | The modem that should have a message deleted.
| `host` | yes | The modem that should connect (optional when just one modem is configured).
### {% linkable_title Service `netgear_lte.delete_sms` %}
The integration makes a service available to delete messages from the modem inbox. This can be used to clean up after incoming SMS events.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `host` | yes | The modem that should have a message deleted (optional when just one modem is configured).
| `sms_id` | no | Integer or list of integers with inbox IDs of messages to delete.
### {% linkable_title Service `netgear_lte.set_option` %}
This service can set modem configuration options (otherwise available in the modem web UI).
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `host` | yes | The modem to set options on (optional when just one modem is configured).
| `autoconnect` | yes | Autoconnect value: `never`/`home`/`always`, with `home` meaning "not roaming".
| `failover` | yes | Failover mode: `wire` (wired connection only), `mobile` (mobile connection only), `auto` (wired connection with failover to mobile connection).
## {% linkable_title Examples %}
The following automation example processes incoming SMS messages with the [Conversation](/components/conversation/) integration and then deletes the message from the inbox.

View File

@ -0,0 +1,58 @@
---
layout: page
title: "Public Transit (Nextbus)"
description: "Instructions on how to use public transit data from Nextbus in Home Assistant."
date: 2019-02-20 00:00
sidebar: true
comments: false
sharing: true
footer: true
logo: train.png
ha_category:
- Transport
- Sensor
ha_iot_class: Local Polling
ha_release: 0.93
---
The `nextbus` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from [NextBus](https://www.nextbus.com), which provides real time transit data for a number of transit authorities.
It is possible to get the tag information from the NextBus website.
1. Visit https://www.nextbus.com/
2. Use the drop downs to select the transit system, route, direction, and stop
3. Extract the tags from the URL. It is constructed with the following pattern:
https://www.nextbus.com/#!/<agency>/<route>/<direction>/<stop>
If tags are incorrect, valid ones will be displayed in the logs as a
convenience.
```yaml
# Example configuration.yaml entry
sensor:
- platform: nextbus
agency: AGENCY_TAG
route: ROUTE_TAG
stop: STOP_TAG
```
{% configuration %}
agency:
description: The agency tag from NextBus.
required: true
type: string
route:
description: The route tag from NextBus.
required: true
type: string
stop:
description: The stop tag from NextBus.
required: true
type: integer
name:
description: Name to use in the frontend.
required: false
default: <Agency> - <Route>
type: string
{% endconfiguration %}

View File

@ -0,0 +1,85 @@
---
layout: page
title: "Orange Pi GPIO"
description: "Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant."
date: 2019-03-29 19:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category:
- DIY
- Binary Sensor
ha_release: 0.93
ha_iot_class: Local Push
---
The `orangepi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages.
## {% linkable_title Binary Sensor %}
The `orangepi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your Orange Pi or NanoPi.
## {% linkable_title Configuration %}
To use your Orange Pi's GPIO in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: orangepi_gpio
pin_mode: pc
ports:
11: PIR Office
12: PIR Bedroom
```
{% configuration %}
pin_mode:
description: Type of pin mode to use. This depends on which device you are actually using ([PIN_MODE](/components/orangepi_gpio#pin_mode)).
required: true
type: string
ports:
description: List of used ports.
required: true
type: map
keys:
"port: name":
description: The port numbers (physical pin numbers) and corresponding names.
required: true
type: string
invert_logic:
description: If `true`, inverts the output logic to ACTIVE LOW.
required: false
type: boolean
default: "`false` (ACTIVE HIGH)"
{% endconfiguration %}
Compared to the [Raspberry Pi GPIO](/components/rpi_gpio/) component, this component does not support pull-up resistors or port debouncing. Use external pull-ups and external port-debouncing.
## {% linkable_title Pin_mode %}
As this platform supports different types of GPIO pinouts for difference Orange Pi or Nano Pi devices, we use the `pin_mode` value to specify which one to use. Enabled values are:
| Value | Description |
| ----- | ----------- |
| `pc` | Supports the Orange Pi Lite, One, PC and Prime |
| `zeroplus` | Supports the Orange Pi Zero Plus |
| `zeroplus2` | Supports the Orange Pi Zero Plus 2 |
| `duo` | Supports the NanoPi Duo |
| `neocore2` | Supports the NanoPi Neocore 2 |
## {% linkable_title Additional steps %}
This component uses the `SYSFS` filesystem to get control of the GPIOs. Therefore an operatings system with `CONFIG_GPIO_SYSFS` is required. As far as I know, most out-of-the-box distributions still enable this by default.
As of Linux 4.8 sysfs-gpio is marked as obsolete. However as of today, the alternative GPIO character device is not widely used. Therefore we will use this until the new character device is more widely supported.
Normally the `/sys/class/gpio` path is owned by root, so Home Assistant does not have access. As we don't want to run Home Assistant as root, we will add the group `gpio` to have control over this path. I will assume you added the `homeassistant` user already to the `gpio` group as recommended in the [Manual installation guide](/docs/installation/raspberry-pi/)
Create a new file in `/etc/udev/rules.d/` named `10-gpio.rules` with the following contents:
```
SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'find -L /sys/class/gpio/ -maxdepth 2 -exec chown root:gpio {} \; -exec chmod 770 {} \; || true'"
```
Home Assistant will now be able to control your GPIO pins.

View File

@ -0,0 +1,118 @@
---
layout: page
title: "PTVSD Debugger (Visual Studio Code)"
description: "Debugging from Visual Studio Code."
date: 2019-04-24 09:00
sidebar: true
comments: false
sharing: true
footer: true
logo: visual-studio.png
ha_category:
- Utility
ha_release: 0.93
---
The `ptvsd` component allows you to use the Visual Studio Code PTVSD debugger with Home Assistant.
This is useful in testing changes on a local development install, or connecting to a production server to debug issues.
To enable the `ptvsd` component add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
ptvsd:
```
By default this will listen on all local interfaces, on port 5678, and will not wait for a connection.
{% configuration %}
host:
description: The local interface to listen on.
required: false
default: 0.0.0.0 (all interfaces).
type: string
port:
description: Port to listen on.
required: false
default: 5678
type: port
wait:
description: If true, wait for the debugger to connect before starting up home assistant.
required: false
default: false
type: boolean
{% endconfiguration %}
### {% linkable_title Security %}
Ensure if this is a public-facing server, that the port is secured. Anyone who is able to access the debugger port can *execute arbitary code* on the home assistant server, which is very unsafe.
If the home assistant server is behind your firewall with only the http(s) port exposed, then this is safe from outside connections.
Another way of securing the port is to set `host` to localhost and have a secured SSH TCP tunnel with a client certificate for access from the outside internet.
### {% linkable_title Waiting at startup %}
If you want to debug something in the boot-up sequence, configure the component to wait for a connection first:
```yaml
# Example configuration.yaml entry
ptvsd:
wait: True
```
The ptvsd debugger is loaded quite early on in the boot-up sequence, before any other components. This will allow you to set breakpoints in `async_setup` or similar and debug the loading of the component.
### {% linkable_title Alternate host and port %}
You can also listen on a different server address or port:
```yaml
# Example configuration.yaml entry
ptvsd:
host: localhost
port: 6789
```
This is useful for multi-homed servers, or for localhost only access
### {% linkable_title Example Visual Studio Code configuration %}
This can be copied into your `launch.json` in the `.vscode` subdirectory in your Visual Studio Code project to connect to the debugger.
```json
{
"version": "0.2.0",
"configurations": [
{
// Example of attaching to local debug server running on WSL
"name": "Python: Attach Local",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "c:\\Users\\Penny\\Documents\\Software\\home-assistant\\",
"remoteRoot": "/mnt/c/Users/Penny/Documents/Software/home-assistant"
}
],
},
{
// Example of attaching to my production server
"name": "Python: Attach Brontosarus",
"type": "python",
"request": "attach",
"port": 5678,
"host": "10.0.0.3", // Within my firewall so I don't need to secure the port.
"pathMappings": [
{
"localRoot": "c:\\Users\\Penny\\Documents\\Software\\home-assistant\\",
"remoteRoot": "/usr/src/app" // setup for docker container.
}
],
}
]
}
```

View File

@ -88,7 +88,7 @@ binary_sensors:
description: The conditions to create sensors from.
required: false
type: list
default: all (`extra_water_on_hot_days`, `freeze`, `freeze_protection`, `hourly`, `month`, `raindelay`, `rainsensor`, `weekday`)
default: all (`extra_water_on_hot_days`, `flow_sensor`, `freeze`, `freeze_protection`, `hourly`, `month`, `raindelay`, `rainsensor`, `weekday`)
sensors:
description: Sensor-related configuration options.
required: false
@ -98,7 +98,7 @@ sensors:
description: The conditions to create sensors from.
required: false
type: list
default: all (`freeze_protect_temp`)
default: all (`flow_sensor_clicks_cubic_meter`, `flow_sensor_consumed_liters`, `flow_sensor_start_index`, `flow_sensor_watering_clicks`,`freeze_protect_temp`)
switches:
description: Switch-related configuration options.
required: false

View File

@ -82,6 +82,9 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
json_attributes:
description: (Deprecated, replaced by json_attributes_topic) A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes.
required: false
@ -150,6 +153,29 @@ sensor:
```
{% endraw %}
### {% linkable_title JSON attributes template configuration %}
The example sensor below shows a configuration example which uses a JSON dict: `{"Timer1":{"Arm": <status>, "Time": <time>}, "Timer2":{"Arm": <status>, "Time": <time>}}` on topic `tele/sonoff/sensor` with a template to add `Timer1.Arm` and `Timer1.Time` as extra attributes. Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `Arm` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.timer1', 'Arm') }}`{% endraw %}.
{% raw %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: mqtt
name: "Timer 1"
state_topic: "tele/sonoff/sensor"
value_template: "{{ value_json.Timer1.Arm }}"
json_attributes_topic: "tele/sonoff/sensor"
json_attributes_template: "{{ value_json.Timer1 | tojson }}"
- platform: mqtt
name: "Timer 2"
state_topic: "tele/sonoff/sensor"
value_template: "{{ value_json.Timer2.Arm }}"
json_attributes_topic: "tele/sonoff/sensor"
json_attributes_template: "{{ value_json.Timer2 | tojson }}"
```
{% endraw %}
### {% linkable_title Get battery level %}
If you are using the [OwnTracks](/components/device_tracker.owntracks/) and enable the reporting of the battery level then you can use a MQTT sensor to keep track of your battery. A regular MQTT message from OwnTracks looks like this:

View File

@ -1,104 +0,0 @@
---
layout: page
title: "Netatmo Sensor"
description: "Instructions on how to integrate Netatmo sensors into Home Assistant."
date: 2016-06-23 11:10
sidebar: true
comments: false
sharing: true
footer: true
logo: netatmo.png
ha_category:
- Weather
ha_iot_class: Cloud Polling
ha_release: 0.11
---
The `netatmo` sensor platform is consuming the information provided by a [Netatmo Weather Station](https://www.netatmo.com/en-us/weather/weatherstation) or a
[Netatmo Home Coach](https://www.netatmo.com/en-us/aircare/homecoach) [Netatmo](https://www.netatmo.com) devices.
To enable the Netatmo sensor, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your sensor.
## {% linkable_title Advanced configuration %}
If you want to select a specific sensor, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
The `netatmo` sensor platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) device.
To enable the Netatmo sensor, you first have to set up [netatmo](/components/netatmo/), and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
sensor:
- platform: netatmo
station: STATION_NAME
modules:
module_name1:
- temperature
module_name2:
- temperature
- battery_vp
```
{% configuration %}
station:
required: false
description: The name of the weather station. Needed if several stations are associated with the account.
type: string
modules:
required: true
description: Modules to use. Multiple entries allowed. Please check the next section about how to retrieve the module names.
type: list
keys:
module_name:
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.
{% endconfiguration %}
## {% linkable_title Find your modules name %}
You can find your modules name in your [online NetAtmo account](https://my.netatmo.com/app/station). These names can be found and changed in parameters. You have to provide these name in your Home Assistant `configuration.yaml` file.
<p class='img'>
<img src='/images/screenshots/netatmo_module.png' />
</p>

View File

@ -178,13 +178,12 @@ 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`
| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) (required) | `fan mode`
| `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)
| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute)
#### {% linkable_title Thermostats %}

View File

@ -21,7 +21,7 @@ redirect_from:
- /components/device_tracker.snmp/
---
A lot of WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks, and WiFi registrations.
A lot of WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks and WiFi registrations.
There is currently support for the following device types within Home Assistant:
@ -65,7 +65,7 @@ device_tracker:
baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
```
If you want to use encryption, you must enable SNMP version 3 by adding `authkey` and `privkey` variables and enabling SNMP version 3 on your router. Currently only SHA1 is supported for authentication and AES for encryption. Example of SNMPv3 configuration:
If you want to use encryption, you must enable SNMP version 3 by adding `auth_key` and `priv_key` variables and enabling SNMP version 3 on your router. Currently only SHA1 is supported for authentication and AES for encryption. Example of SNMPv3 configuration:
```yaml
# Example configuration.yaml entry for SNMP version 3
@ -73,8 +73,8 @@ device_tracker:
- platform: snmp
host: 192.168.1.1
community: USERNAME
authkey: AUTHPASS
privkey: PRIVPASS
auth_key: AUTHPASS
priv_key: PRIVPASS
baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
```
@ -91,12 +91,12 @@ baseoid:
description: The OID prefix where wireless client registrations can be found, usually vendor specific. It's advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device.
required: true
type: string
authkey:
description: Authentication key for SNMPv3. Variable privkey must also be set.
auth_key:
description: A"uthentication key for SNMPv3. Variable `priv_key` must also be set."
required: inclusive
type: string
privkey:
description: Privacy key SNMPv3. Variable authkey must also be set.
priv_key:
description: "Privacy key SNMPv3. Variable `auth_key` must also be set."
required: inclusive
type: string
{% endconfiguration %}
@ -105,7 +105,7 @@ See the [device tracker component page](/components/device_tracker/) for instruc
## {% linkable_title Sensor %}
The `snmp` sensor platform displays information available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object, and is mainly supported by network-oriented devices such as routers, modems, and printers.
The `snmp` sensor platform displays information available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object, and is mainly supported by network-oriented devices such as routers, modems and printers.
To enable this sensor in your installation, add the following to your `configuration.yaml` file:
@ -190,7 +190,7 @@ default_value:
type: string
{% endconfiguration %}
Valid values for auth_protocol:
Valid values for `auth_protocol`:
- **none**
- **hmac-md5**
@ -200,7 +200,7 @@ Valid values for auth_protocol:
- **hmac256-sha384**
- **hmac384-sha512**
Valid values for priv_protocol:
Valid values for `priv_protocol`:
- **none**
- **des**
@ -342,7 +342,7 @@ command_payload_off:
You should check with your device's vendor to find out the correct BaseOID and what values turn the switch on and off.
Valid values for auth_protocol:
Valid values for `auth_protocol`:
- **none**
- **hmac-md5**
@ -352,7 +352,7 @@ Valid values for auth_protocol:
- **hmac256-sha384**
- **hmac384-sha512**
Valid values for priv_protocol:
Valid values for `priv_protocol`:
- **none**
- **des**

View File

@ -24,7 +24,7 @@ If you don't have the discovery component enabled, you can configure the Sonos c
Sonos makes various services available to allow configuring groups. They are currently registered under the media player component.
### {% linkable_title Service `media_player.sonos_snapshot` %}
### {% linkable_title Service `sonos.snapshot` %}
Take a snapshot of what is currently playing on one or more speakers. This service, and the following one, are useful if you want to play a doorbell or notification sound and resume playback afterwards. If no `entity_id` is provided, all speakers are snapshotted.
@ -38,12 +38,12 @@ The queue is not snapshotted and must be left untouched until the restore. Using
| `with_group` | yes | Should we also snapshot the group layout and the state of other speakers in the group.
### {% linkable_title Service `media_player.sonos_restore` %}
### {% linkable_title Service `sonos.restore` %}
Restore a previously taken snapshot of one or more speakers. If no `entity_id` is provided, all speakers are restored.
<p class='note'>
The playing queue is not snapshotted. Using `media_player.sonos_restore` on a speaker that has replaced its queue will restore the playing position, but in the new queue!
The playing queue is not snapshotted. Using `sonos.restore` on a speaker that has replaced its queue will restore the playing position, but in the new queue!
</p>
<p class='note'>
@ -55,24 +55,24 @@ A cloud queue cannot be restarted. This includes queues started from within Spot
| `entity_id` | yes | String or list of `entity_id`s that should have their snapshot restored.
| `with_group` | yes | Should we also restore the group layout and the state of other speakers in the group.
### {% linkable_title Service `media_player.sonos_join` %}
### {% linkable_title Service `sonos.join` %}
Group players together under a single coordinator. This will make a new group or join to an existing group.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `master` | no | A single `entity_id` that will become/stay the coordinator speaker.
| `entity_id` | no | String or list of `entity_id`s to join to the master.
| `entity_id` | yes | String or list of `entity_id`s to join to the master.
### {% linkable_title Service `media_player.sonos_unjoin` %}
### {% linkable_title Service `sonos.unjoin` %}
Remove one or more speakers from their group of speakers. If no `entity_id` is provided, all speakers are unjoined.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s to separate from their coordinator speaker.
| `entity_id` | yes | String or list of `entity_id`s to separate from their coordinator speaker.
### {% linkable_title Service `media_player.sonos_set_sleep_timer` %}
### {% linkable_title Service `sonos.set_sleep_timer` %}
Sets a timer that will turn off a speaker by tapering the volume down to 0 after a certain amount of time. Protip: If you set the sleep_time value to 0, then the speaker will immediately start tapering the volume down.
@ -81,7 +81,7 @@ Sets a timer that will turn off a speaker by tapering the volume down to 0 after
| `entity_id` | no | String or list of `entity_id`s that will have their timers set.
| `sleep_time` | no | Integer number of seconds that the speaker should wait until it starts tapering. Cannot exceed 86399 (one day).
### {% linkable_title Service `media_player.sonos_clear_sleep_timer` %}
### {% linkable_title Service `sonos.clear_sleep_timer` %}
Clear the sleep timer on a speaker, if one is set.
@ -89,7 +89,7 @@ Clear the sleep timer on a speaker, if one is set.
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. Must be a coordinator speaker.
### {% linkable_title Service `media_player.sonos_update_alarm` %}
### {% linkable_title Service `sonos.update_alarm` %}
Update an existing Sonos alarm.
@ -102,7 +102,7 @@ Update an existing Sonos alarm.
| `enabled` | yes | Boolean for whether or not to enable this alarm.
| `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players.
### {% linkable_title Service `media_player.sonos_set_option` %}
### {% linkable_title Service `sonos.set_option` %}
Set Sonos speaker options.

View File

@ -108,6 +108,10 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
device:
description: "Information about the device this switch is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set."
required: false

View File

@ -0,0 +1,70 @@
---
layout: page
title: "Switcher"
description: "Controlling your Switcher V2 Water Heater."
date: 2018-04-10 17:30
sidebar: true
comments: false
sharing: true
footer: true
logo: switcher_boiler.png
ha_category:
- Switch
redirect_from:
- /components/switch.switcher_kis
ha_release: 0.93
ha_iot_class: Local Push
---
This `Switcher` component allows you to control the [Switcher V2 Water Heater](https://www.switcher.co.il/).
To enable it, add an entry to your `configuration.yaml` according to the following configuration instructions.
To retrieve your device's details, please follow the instructions [here](https://github.com/NightRang3r/Switcher-V2-Python).
<p class='note warning'>
Please note, the Switcher-V2-Python script is written in python 2.7 syntax, it won't run with python 3.x.
</p>
<p class='note warning'>
Please note, for the Switcher-V2-Python script to run successfully, you need to configure your device to work locally.
</p>
<p class='note warning'>
Please note, on the original script repository, users recently reported difficulties controling the device after upgrading the firmware to the new 3.0 version.As this component is based on that script, please do not upgrade to version 3.0 until this issue is resolved. You can follow the issue [here](https://github.com/NightRang3r/Switcher-V2-Python/issues/3).
</p>
```yaml
switcher_kis:
phone_id: 'REPLACE_WITH_PHONE_ID'
device_id: 'REPLACE_WITH_DEVICE_ID'
device_password: 'REPLACE_WITH_DEVICE_PASSWORD'
```
{% configuration %}
phone_id:
description: The device's phone id.
required: true
type: string
device_id:
description: The device's id.
required: true
type: string
device_password:
description: The device's password.
required: true
type: string
{% endconfiguration %}
## {% linkable_title Switch State Attributes %}
| Attribute | Type | Description | Example |
| --------- | ---- | ----------- | ------- |
| `friendly_name` | string | Defaults to the device's configured name. | "Switcher Boiler" |
| `auto_off_set` | string | The auto shutdown time limit configured on the device. | "01:30:00" |
| `remaining_time` | string | Time remaining to shutdown (auto or timer). | "01:29:41" |
| `electric_current` | float | The electric current in amps. | 12.5 |
| `current_power_w` | integer | The current power used in watts. | 2756 |
<p class='note warning'>
Please note, the following attributes are not eligible when the device is off and therefore will not appear as state attributes: `remaining_time`, `electric_current`, `current_power_w`.
</p>

View File

@ -36,7 +36,7 @@ Send a notification.
| `parse_mode` | yes | Parser for the message text: `html` or `markdown`. |
| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. |
| `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
### {% linkable_title Service `telegram_bot.send_photo` and `telegram_bot.send_sticker` %}
@ -54,7 +54,7 @@ Send a photo.
| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. |
| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. |
| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
### {% linkable_title Service `telegram_bot.send_video` %}
@ -72,7 +72,7 @@ Send a video.
| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. |
| `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. |
| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
### {% linkable_title Service `telegram_bot.send_document` %}
@ -90,7 +90,7 @@ Send a document.
| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. |
| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. |
| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
### {% linkable_title Service `telegram_bot.send_location` %}
@ -103,7 +103,7 @@ Send a location.
| `longitude` | no | The longitude to send. |
| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed `chat_id`. |
| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
### {% linkable_title Service `telegram_bot.edit_message` %}

View File

@ -52,6 +52,7 @@ Supported models:
- EVW3200-Wifi
- EVW320B
- EVW32C-0N
- EVW3226@UPC
<p class='note info'>
This component uses <a href='https://github.com/mzdrale/pyubee'>pyUbee library</a>, which was tested with models listed above. If you have different model of <a href='http://www.ubeeinteractive.com/products'>Ubee Router</a> and it doesn't work with this component, please <a href='https://github.com/mzdrale/pyubee/issues/new'>create pyUbee issue</a> to request for support for your model.

View File

@ -14,6 +14,11 @@ ha_release: 0.54
---
The `mqtt` vacuum component allows you to control your MQTT-enabled vacuum.
There are 2 possible message schemas - `legacy` and `state`.
New installation should use `state` schema as `legacy` is deprecated and might be removed someday in the future.
`state` schema is preferred because the vacuum will then be represented as a `StateVacuumDevice` which is preferred parent vacuum entity.
This documentation has 3 sections. Config for `legacy` vacuum with examples, config for `state` vacuum with examples and shared section with examples which are the same for both schemas.
## {% linkable_title Configuration %}
@ -25,14 +30,23 @@ vacuum:
- platform: mqtt
```
## {% linkable_title Legacy Configuration %}
Legacy MQTT vacuum configuration section.
{% configuration %}
name:
description: The name of the vacuum.
required: false
type: string
default: MQTT Vacuum
schema:
description: The schema to use.
required: false
type: string
default: legacy
supported_features:
description: "List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)."
description: List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)."
required: false
type: string list
default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`"
@ -163,9 +177,13 @@ json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
json_attributes_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
{% endconfiguration %}
### {% linkable_title Full configuration example %}
### {% linkable_title Legacy configuration example %}
{% raw %}
```yaml
@ -208,11 +226,11 @@ vacuum:
```
{% endraw %}
### {% linkable_title Default MQTT Protocol %}
## {% linkable_title Legacy MQTT Protocol %}
The above configuration for this component expects an MQTT protocol like the following.
#### {% linkable_title Basic Commands %}
### {% linkable_title Legacy Basic Commands %}
MQTT topic: `vacuum/command`
@ -226,52 +244,7 @@ Possible MQTT payloads:
- `locate` - Locate the vacuum (typically by playing a song)
- `start_pause` - Toggle the vacuum between cleaning and stopping
#### {% linkable_title Set Fan Speed %}
MQTT topic: `vacuum/set_fan_speed`
Possible MQTT payloads:
- `min` - Minimum fan speed
- `medium` - Medium fan speed
- `high` - High fan speed
- `max` - Max fan speed
#### {% linkable_title Send Custom Command %}
Vacuum send_command allows three parameters:
- entity_id
- command
- params - optional
If params are not provided it sends command as payload to MQTT send_command topic.
If params are provided service sends json as payload with such structure:
```
{
'command': 'command',
'param1-key': 'param1-value'
}
```
Service trigger example:
```
- alias: Push command based on sensor
trigger:
- platform: state
entity_id: sensor.sensor
action:
service: vacuum.send_command
data:
entity_id: 'vacuum.vacuum_entity'
command: 'custom_command'
params:
- key: value
```
MQTT topic: `vacuum/send_command`
#### {% linkable_title Status/Sensor Updates %}
### {% linkable_title Status/Sensor Updates %}
MQTT topic: `vacuum/state`
@ -288,6 +261,270 @@ MQTT payload:
}
```
## {% linkable_title State Configuration %}
State MQTT vacuum configuration section.
{% configuration %}
name:
description: The name of the vacuum.
required: false
type: string
default: MQTT Vacuum
schema:
description: The schema to use.
required: false
type: string
default: legacy
supported_features:
description: "List of features that the vacuum supports (possible values are `start`, `stop`, `pause`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`)."
required: false
type: string list
default: "`start`, `stop`, `return_home`, `status`, `battery`, `clean_spot`"
command_topic:
description: The MQTT topic to publish commands to control the vacuum.
required: false
type: string
qos:
description: The maximum QoS level of the state topic.
required: false
type: integer
default: 0
retain:
description: If the published message should have the retain flag on or not.
required: false
type: boolean
default: false
payload_start:
description: "The payload to send to the `command_topic` to begin the cleaning cycle."
required: false
type: string
default: start
payload_stop:
description: "The payload to send to the `command_topic` to stop cleaning."
required: false
type: string
default: stop
payload_return_to_base:
description: The payload to send to the `command_topic` to tell the vacuum to return to base.
required: false
type: string
default: return_to_base
payload_clean_spot:
description: The payload to send to the `command_topic` to begin a spot cleaning cycle.
required: false
type: string
default: clean_spot
payload_locate:
description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song).
required: false
type: string
default: locate
payload_pause:
description: The payload to send to the `command_topic` to pause the vacuum.
required: false
type: string
default: pause
state_topic:
description: The MQTT topic subscribed to receive state messages from the vacuum. State topic is extracting json if no `value_template` is defined.
required: false
type: string
value_template:
description: "Defines a [template](/topics/templating/) to extract possible states from the vacuum."
required: false
type: string
set_fan_speed_topic:
description: The MQTT topic to publish commands to control the vacuum's fan speed.
required: false
type: string
fan_speed_list:
description: List of possible fan speeds for the vacuum.
required: false
type: string list
send_command_topic:
description: The MQTT topic to publish custom commands to the vacuum.
required: false
type: string
availability_topic:
description: The MQTT topic subscribed to receive availability (online/offline) updates.
required: false
type: string
payload_available:
description: The payload that represents the available state.
required: false
type: string
default: online
payload_not_available:
description: The payload that represents the unavailable state.
required: false
type: string
default: offline
json_attributes_topic:
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation.
required: false
type: string
{% endconfiguration %}
### {% linkable_title State configuration example %}
{% raw %}
```yaml
# Example configuration.yaml entry
vacuum:
- platform: mqtt
name: "MQTT Vacuum"
schema: state
supported_features:
- start
- pause
- stop
- return_home
- battery
- status
- locate
- clean_spot
- fan_speed
- send_command
command_topic: "vacuum/command"
state_topic: "vacuum/state"
set_fan_speed_topic: "vacuum/set_fan_speed"
fan_speed_list:
- min
- medium
- high
- max
send_command_topic: 'vacuum/send_command'
```
{% endraw %}
## {% linkable_title State MQTT Protocol %}
The above configuration for this component expects an MQTT protocol like the following.
### {% linkable_title State Basic Commands %}
MQTT topic: `vacuum/command`
Possible MQTT payloads:
- `start` - Start cleaning
- `pause` - Pause cleaning
- `return_to_base` - Return to base/dock
- `stop` - Stop the vacuum.
- `clean_spot` - Initialize a spot cleaning cycle
- `locate` - Locate the vacuum (typically by playing a song)
### {% linkable_title Send Custom Command %}
Vacuum send_command allows three parameters:
- entity_id
- command
- params - optional
If params are not provided it sends command as payload to MQTT send_command topic.
If params are provided service sends json as payload with such structure:
```
{
'command': 'command',
'param1-key': 'param1-value'
}
```
Service trigger example:
```
- alias: Push command based on sensor
trigger:
- platform: state
entity_id: sensor.sensor
action:
service: vacuum.send_command
data:
entity_id: 'vacuum.vacuum_entity'
command: 'custom_command'
params:
- key: value
```
MQTT topic: `vacuum/send_command`
### {% linkable_title Status/Sensor Updates %}
MQTT topic: `vacuum/state`
MQTT payload:
```json
{
"battery_level": 61,
"state": "docked",
"fan_speed": "off"
}
```
State has to be one of vacuum states supported by Home Assistant:
- cleaning,
- docked,
- paused,
- idle,
- returning,
- error.
## {% linkable_title Shared MQTT Protocol %}
The configuration for this component expects an MQTT protocol like the following.
These services are identical for both - legacy and state vacuum.
### {% linkable_title Set Fan Speed %}
MQTT topic: `vacuum/set_fan_speed`
Possible MQTT payloads:
- `min` - Minimum fan speed
- `medium` - Medium fan speed
- `high` - High fan speed
- `max` - Max fan speed
### {% linkable_title Send Custom Command %}
Vacuum send_command allows three parameters:
- entity_id
- command
- params - optional
If params are not provided it sends command as payload to MQTT send_command topic.
If params are provided service sends json as payload with such structure:
```
{
'command': 'command',
'param1-key': 'param1-value'
}
```
Service trigger example:
```
- alias: Push command based on sensor
trigger:
- platform: state
entity_id: sensor.sensor
action:
service: vacuum.send_command
data:
entity_id: 'vacuum.vacuum_entity'
command: 'custom_command'
params:
- key: value
```
MQTT topic: `vacuum/send_command`
### {% linkable_title Usage with cloudless Xiaomi vacuums %}
This component is supported by the cloud-free Xiaomi Vacuum Webinterface [Valetudo](https://github.com/Hypfer/Valetudo).

View File

@ -1,7 +1,7 @@
---
layout: page
title: "Vizio SmartCast TV"
description: "Instructions on how to integrate Vizio SmartCast TV into Home Assistant."
title: "Vizio SmartCast Device"
description: "Instructions on how to integrate Vizio SmartCast TVs and Sound Bars into Home Assistant."
date: 2017-07-10 19:00
sidebar: true
comments: false
@ -16,14 +16,18 @@ redirect_from:
- /components/media_player.vizio/
---
The `vizio` component will allow you to control [SmartCast](https://www.vizio.com/smartcast-app) compatible TVs (2016+ models).
The `vizio` component will allow you to control [SmartCast](https://www.vizio.com/smartcast-app) compatible TVs and Sound Bars (2016+ models).
## Pairing
Before adding your TV to Home Assistant you'll need to pair it manually. To do so follow these steps:
## {% linkable_title Find your device %}
Install the command-line tool using `pip` (or you can choose to download it manually):
```bash
$ pip3 install pyvizio
```
or
```bash
$ pip3 install git+https://github.com/vkorn/pyvizio.git@master
```
@ -34,18 +38,30 @@ or
$ pip3 install -I .
```
Make sure that your TV is on before continuing.
If you don't know IP address of your TV run following command:
```bash
$ pyvizio --ip=0 --auth=0 discover
Find your device using the following command:
```
pyvizio --ip=0 discover
```
and note it's IP address. If using your IP address by itself does not lead to success, you may need to append `:9000` or `:7345` to it when using it as a parameter in future commands.
## {% linkable_title Pairing %}
Before adding your device to Home Assistant you may need to pair it manually. For a Sound Bar, it is unclear how the device would notify you of a valid auth token, so it's best to first skip the pairing process entirely, specify a `device_class` of `soundbar` in your configuration, and try interacting with the entity to see if you have any success. If the media player controls aren't working, and if specifying different ports as mentioned above doesn't work, you will need to find a way to get the auth token during this process.
To obtain an auth token, follow these steps:
Make sure that your device is on before continuing.
| Parameter | Description |
|:----------------|:---------------------|
| `ip` | IP address (possibly including port) obtained from the previous section |
| `device_type` | The type of device you are connecting to. Options are `tv` or `soundbar` |
Enter the following command to initiate pairing:
```bash
$ pyvizio --ip={ip} pair
$ pyvizio --ip={ip} --device_type={device_type} pair
```
Initiation will show you two different values:
@ -58,12 +74,12 @@ Initiation will show you two different values:
Finally, at this point a PIN code should be displayed at the top of your TV. With all these values, you can now finish pairing:
```bash
$ pyvizio --ip={ip} pair-finish --token={challenge_token} --pin={tv_pin}
$ pyvizio --ip={ip} --device_type={device_type} pair-finish --token={challenge_token} --pin={pin}
```
You will need the authentication token returned by this command to configure Home Assistant.
## Configuration
## {% linkable_title Configuration %}
To add your Vizio TV to your installation, add the following to your `configuration.yaml` file:
@ -77,13 +93,18 @@ media_player:
{% configuration %}
host:
description: IP address of your TV.
description: IP address of your device.
required: true
type: string
access_token:
description: Authentication token you received in the last step of the pairing process.
required: true
description: Authentication token you received in the last step of the pairing process (if applicable).
required: false
type: string
device_class:
description: The class of your device. Your choices are `tv` or `soundbar`
required: false
type: string
default: tv
suppress_warning:
description: Set to `true` to disable self-signed certificate warnings.
required: false
@ -91,16 +112,16 @@ suppress_warning:
type: string
{% endconfiguration %}
## Notes and limitations
## {% linkable_title Notes and limitations %}
### Turning TV on
### {% linkable_title Turning device on %}
If the `Power Mode` of your TV is set to `Eco Mode`, turning the device ON won't work.
If the `Power Mode` of your device is set to `Eco Mode`, turning the device ON won't work.
### Changing tracks
### {% linkable_title Changing tracks %}
Changing tracks works like channels switching. If you have source other than regular TV it might end do nothing.
### Sources
### {% linkable_title Sources %}
Source list shows all external devices connected to the TV through HDMI plus list of internal devices (TV mode, Chrome Cast, etc.).
Source list shows all external devices connected to the device through HDMI plus list of internal devices (TV mode, Chrome Cast, etc.).

View File

@ -0,0 +1,12 @@
---
layout: page
title: "Configuration.yaml by Mahasri Kalavala (@skalavala)"
description: ""
date: 2016-10-25 10:45
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Example configuration.yaml
ha_external_link: https://github.com/skalavala/mysmarthome
---

View File

@ -19,10 +19,10 @@ script:
sonos_say:
alias: "Sonos TTS script"
sequence:
- service: media_player.sonos_snapshot
- service: sonos.snapshot
data_template:
entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %}
- service: media_player.sonos_unjoin
- service: sonos.unjoin
data_template:
entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %}
- service: media_player.volume_set
@ -34,7 +34,7 @@ script:
entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %}
message: {% raw %}"{{ message }}"{% endraw %}
- delay: {% raw %}"{{ delay }}"{% endraw %}
- service: media_player.sonos_restore
- service: sonos.restore
data_template:
entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %}
```

View File

@ -51,7 +51,7 @@ After=network-online.target
[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/YOUR_USER/.homeassistant"
ExecStart=/srv/homeassistant/bin/hass -c "/home/%i/.homeassistant"
[Install]
WantedBy=multi-user.target

View File

@ -99,6 +99,7 @@ Supported abbreviations:
'cln_tpl': 'cleaning_template',
'cmd_t': 'command_topic',
'curr_temp_t': 'current_temperature_topic',
'curr_temp_tpl': 'current_temperature_template',
'dev': 'device',
'dev_cla': 'device_class',
'dock_t': 'docked_topic',
@ -162,6 +163,7 @@ Supported abbreviations:
'send_if_off': 'send_if_off',
'set_pos_tpl': 'set_position_template',
'set_pos_t': 'set_position_topic',
'pos_t': 'position_topic',
'spd_cmd_t': 'speed_command_topic',
'spd_stat_t': 'speed_state_topic',
'spd_val_tpl': 'speed_value_template',
@ -296,7 +298,7 @@ Setting up a climate component (heat only) with abbreviated configuration variab
"temp_stat_t":"homeassistant/climate/livingroom/state",
"temp_stat_tpl":"{{value_json.target_temp}}",
"curr_temp_t":"homeassistant/climate/livingroom/state",
"current_temperature_template":"{{value_json.current_temp}}",
"curr_temp_tpl":"{{value_json.current_temp}}",
"min_temp":"15",
"max_temp":"25",
"temp_step":"0.5",

View File

@ -51,6 +51,11 @@ show_icon:
description: Show icon.
type: boolean
default: "true"
icon_height:
required: false
description: Set the height for the icon. This is in pixels which is handled by the config ui. (Advanced users can use other CSS values if they like)
type: string
default: auto
tap_action:
required: false
description: Action to take on tap

View File

@ -56,6 +56,10 @@ style:
description: Position and style the element using CSS.
type: object
default: "position: absolute, transform: translate(-50%, -50%)"
title:
required: false
description: State badge tooltip. Set to null to hide.
type: string
{% endconfiguration %}
### {% linkable_title Icon representing an entity state %}
@ -69,6 +73,14 @@ entity:
required: true
description: The entity id to use.
type: string
icon:
required: false
description: Overwrites icon.
type: string
title:
required: false
description: Icon tooltip. Set to null to hide.
type: string
tap_action:
required: false
description: Action to take on tap
@ -145,6 +157,10 @@ suffix:
required: false
description: Text after entity state.
type: string
title:
required: false
description: Label tooltip. Set to null to hide.
type: string
tap_action:
required: false
description: Action to take on tap
@ -241,7 +257,7 @@ icon:
type: string
title:
required: false
description: Icon tooltip.
description: Icon tooltip. Set to null to hide.
type: string
entity:
required: false
@ -315,6 +331,10 @@ entity:
required: false
description: Entity to use for state_image and state_filter and also target for actions.
type: string
title:
required: false
description: Image tooltip. Set to null to hide.
type: string
tap_action:
required: false
description: Action to take on tap

View File

@ -0,0 +1,831 @@
---
layout: post
title: "0.93: Essent, AmbiClimate, VS Code debugging"
description: "This release improves our onboarding experience and our automation page."
date: 2019-05-16 04:11:03
date_formatted: "May 16, 2019"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
og_image: /images/blog/2019-05-release-93/components.png
---
<a href='/components/#version/0.93'><img src='/images/blog/2019-05-release-93/components.png' style='border: 0;box-shadow: none;'></a>
It's time for our 0.93 release and it is a whopping cool one. It's a day later than usual as I am travelling. [Frenck](https://www.github.com/frenck) streams his work on Home Assistant / Hass.io each Tuesday and Friday, and last Tuesday I decided to surprise him and visit his house during the stream 😛. We ended up talking about everything Home Assistant with the viewers for over 3 hours. For the full conversation, check out [Frenck's blog](https://frenck.dev/home-assistant-paulus-invaded-my-live-stream/). Clip of me walking into the stream:
<div class='videoWrapper'>
<iframe
src="https://clips.twitch.tv/embed?clip=DifferentEnjoyableCormorantEagleEye"
width="560" height="315"
frameborder="0" allowfullscreen></iframe>
</div>
Last week we also wrote about [our updated plans](/blog/2019/05/03/update-from-the-field/) for Home Assistant for this year. If you haven't read it yet, worth the read!
If you are a Nest user, we have some sad news: Google announced that they are [shutting down the Nest API](/blog/2019/05/08/nest-data-bye-bye/) at the end of August. This will cause Nest hardware to no longer work with Home Assistant (╯°□°)╯︵ ┻━┻
As always, this release is accompanied by [a new episode of the Home Assistant podcast](https://hasspodcast.io/ha050/). Rohan and Phil discuss the new release, the Nest API and a lot more. This episode is their 50th episode already, congratulations on this milestone!
## {% linkable_title Home Assistant 1.0 %}
As we mentioned in [our updated plans post](/blog/2019/05/03/update-from-the-field/), we're working hard on Home Assistant 1.0. Over the next releases we will work on polishing the UI, the backend architecture, and everything in between.
One of the new things that we introduced is a new step in our onboarding allowing users to set up integrations. We will automatically highlight discovered integrations. Once the user finishes the onboarding flow, entities will be automatically grouped by the areas that they are in. Neat!
<div class='videoWrapper'>
<iframe width="560" height="315" src="https://www.youtube.com/embed/0oIquYNEHaA" frameborder="0" allowfullscreen></iframe>
</div>
We've also been working on polishing parts of our config UI. The automation editor will now show all automations, the last time they got triggered, and allow users to enable/disable them.
<p class='img'>
<img src='/images/blog/2019-05-release-93/automation-editor.png' alt='Screenshot of the updated automation editor.'>
Screenshot of the updated automation editor.
</p>
## {% linkable_title Sonos %}
The Sonos integration has a number of changes in this release, some of them breaking existing configuration.
First, the Sonos custom services have been moved to the `sonos` domain. The new service names are as follows:
- `sonos.join` (before: `media_player.sonos_join`)
- `sonos.unjoin` (before: `media_player.sonos_unjoin`)
- `sonos.snapshot` (before: `media_player.sonos_snapshot`)
- `sonos.restore` (before: `media_player.sonos_restore`)
- `sonos.set_sleep_timer` (before: `media_player.sonos_set_sleep_timer`)
- `sonos.clear_sleep_timer` (before: `media_player.sonos_clear_sleep_timer`)
- `sonos.update_alarm` (before: `media_player.sonos_update_alarm`)
- `sonos.set_option` (before: `media_player.sonos_set_option`)
The last four of those services no longer target all entities by default since that is usually a mistake. The `entity_id` attribute is thus becoming mandatory for those services. If you really do want to target all you can use `entity_id: all`.
Next, YAML configuration of Sonos under the `media_player:` key is no longer accepted. While auto-configuration through the Integrations UI is now the preferred way, static configuration can still be specified under a `sonos:` key, for example:
```yaml
sonos:
media_player:
hosts:
- 192.0.2.25
- 192.0.2.26
```
For those of you that like to power down your Sonos, Home Assistant should now handle that without logging errors. Also, speakers that are powered on will be added to Home Assistant without needing a restart.
## {% linkable_title New Integrations %}
- Adds Orange Pi GPIO platform ([@pascallj] - [#22541]) ([orangepi_gpio docs]) (new-integration) (new-platform)
- Essent sensor ([@TheLastProject] - [#23513]) ([essent docs]) (new-integration) (new-platform)
- Ptvsd debugger component. ([@Swamp-Ig] - [#23336]) ([ptvsd docs]) (new-integration)
- Ambiclimate ([@Danielhiversen] - [#22827]) ([ambiclimate docs]) (new-integration) (new-platform)
- Add Intergas InComfort Lan2RF gateway ([@zxdavb] - [#23736]) ([incomfort docs]) (new-integration) (new-platform)
## {% linkable_title New Platforms %}
- Adds Orange Pi GPIO platform ([@pascallj] - [#22541]) ([orangepi_gpio docs]) (new-integration) (new-platform)
- Added component named switcher_kis switcher water heater integration. ([@TomerFi] - [#22325]) ([switcher_kis docs]) (new-platform)
- MQTT Vacuum State Device ([@pszafer] - [#23171]) ([mqtt docs]) (new-platform)
- Add new nextbus sensor ([@ViViDboarder] - [#20197]) ([nextbus docs]) (new-platform)
- Add sensor support for dyson 2018 models ([@etheralm] - [#22578]) ([dyson docs]) (new-platform)
- Add Bizkaibus, Biscays (Spain) bus service component ([@UgaitzEtxebarria] - [#22934]) ([bizkaibus docs]) (new-platform)
- Added new binary sensor meteoalarm to get weather alerts in Europe ([@rolfberkenbosch] - [#23663]) ([meteoalarm docs]) (new-integration) (new-platform)
- Add water_heater to geniushub, bump client library ([@zxdavb] - [#23384]) ([geniushub docs]) (new-platform)
- New cover platform for ADS integration ([@carstenschroeder] - [#23377]) ([ads docs]) (new-platform)
## {% linkable_title If you need help... %}
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
## {% linkable_title Reporting Issues %}
Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
<!--more-->
## {% linkable_title Breaking Changes %}
- __Homematic IP Cloud__ - Adds homematicip cloud temperature sensor from thermostats. Entity IDs of HmIP-SLO (Light Sensor Outdoor) will change and stale entities will need to be removed from the entity registry. ([@SukramJ] - [#23263]) ([homematicip_cloud docs])
- __Pollen.com__
* IQVIA is the parent company which hosts a variety of sites (https://pollen.com, https://flustar.com, etc.) from which valid data can come. To accommodate this, the Pollen.com sensor platform is now the IQVIA component and the configuration.yaml schema has changed accordingly. ([@bachya] - [#22986]) ([iqvia docs]) ([pollen docs])
* The IQVIA component no longer provides historical data for allergen and asthma conditions. Tactically, this means all historical sensors including "Yesterday" sensors will no longer appear; users will need to update any automations that previously relied on these sensors. ([@bachya] - [#23258]) ([iqvia docs])
Example configuration:
```
iqvia:
zip_code: "12345"
```
- __Sonos__
* Configuring the Sonos integration as a media_player: platform in configuration.yaml was deprecated in 0.72 and has now been removed. Please see the notes above in this release post as well as the component documentation for further info. ([@amelchio] - [#23385]) ([sonos docs])
* Sonos-specific services have been moved from the media_player domain to the sonos domain. For example, media_player.sonos_join has become sonos.join. Services sonos.set_sleep_timer, sonos.clear_sleep_timer, sonos.update_alarm and sonos.set_option now require the entity_id parameter and will not target all when it is missing. You can use all to target all. ([@amelchio] - [#23670]) ([sonos docs])
- __Nmap__ - In Linux, and when running a setuid nmap, MAC addresses are reported with a leading zero in each byte. Under Mac OS X, when running the arp command, there is no leading zero. This makes it annoying to share config files between a Mac and Linux setup. This change fixes this by forcing MAC addresses to be zero padded, "breaking" Mac detection on a Mac by aligning it to the convention on Linux ([@mikeage] - [#23492]) ([nmap_tracker docs])
- __Frontend__ - This change converts the frontend to do client-side modern JS detection. It is no longer possible to force the frontend version that is shown to a browser by specifying a javascript_version option. Instead, we use feature detection to make sure that each browser receives the latest supported version. Because of feature detection, we no longer have ES5 specific index pages, which means the option extra_html_url_es5 no longer does anything. All usages of extra_html_url should be migrated to use Lovelace imports.([@balloob] - [#23618]) ([frontend docs])
- __Epson Workforce__ - This change adds the option to add photo black cartridge as a setting. It also corrects the spelling of "Inklevel" to "Ink level"([@ThaStealth] - [#23433]) ([epsonworkforce docs])
Example configuration:
```
- platform: epsonworkforce
host: IP_ADDRESS
monitored_conditions:
- black
- photoblack
- yellow
- magenta
- cyan
- clean
```
- __SNMP__ - The configuration of the SNMP device tracker was aligned with the other SNMP switch and the sensor configuration. If you are using authentication key and private key then change your configuration to auth_key: and priv_key:. ([@fabaff] - [#23678]) ([snmp docs])
- __Netatmo__ The netatmo_public sensor will be merged into the netatmo integration. In the config platform: netatmo_public becomes platform: netatmo, everything else stays the same. ([@cgtobi] - [#23531]) ([netatmo docs])
- __Sesame Smart Lock__ - The Sesame smart lock's 1.0 API uses a username/password pair to authenticate, and may be deprecated in the future. The V3 API uses an API key, so it will require users to update their HA config. ([@zanglang] - [#23621]) ([sesame docs])
Example configuration:
```
lock:
- platform: sesame
api_key: !secret sesame_api_key
```
## {% linkable_title Beta Fixes %}
- Sort discovered entries by 'st' to ensure getting the same device each discovery ([@StevenLooman] - [#23763]) ([upnp docs]) (beta fix)
- Bump pyatmo to v1.11 ([@cgtobi] - [#23766]) ([netatmo docs]) (beta fix)
- Fix for issue #23739. Added unique_id property so ([@dreed47] - [#23769]) ([zestimate docs]) (beta fix)
- Beta Fix: ONVIF ([@hunterjm] - [#23787]) ([onvif docs]) (beta fix)
- Synchronize Sonos service calls ([@amelchio] - [#23791]) ([sonos docs]) (beta fix)
- Do not add coordinator to the ZHA entities. ([@Adminiuga] - [#23803]) ([zha docs]) (beta fix)
- fix onvif wsdl import - take 2 ([@hunterjm] - [#23807]) ([onvif docs]) (beta fix)
- Correct ZHA illumination conversion ([@dmulcahey] - [#23853]) ([zha docs]) (beta fix)
- Fix ZHA battery when readings produce an unknown value ([@dmulcahey] - [#23854]) ([zha docs]) (beta fix)
- bump zha-quirks ([@dmulcahey] - [#23855]) ([zha docs]) (beta fix)
- Fix improper usage of body attribute on web.Response. Should be text since we arent sending bytes ([@robbiet480] - [#23857]) ([geofency docs]) ([locative docs]) ([mobile_app docs]) (beta fix)
## {% linkable_title All changes %}
- Pass configured host string instead of always forcing an ip-address ([@itn3rd77] - [#23164]) ([homematic docs])
- Make less imports from yeelight ([@zewelor] - [#23124]) ([yeelight docs])
- Add @Jc2k to codeowners for homekit_controller ([@Jc2k] - [#23173]) ([homekit_controller docs])
- Add minimum/maximum to counter ([@rohankapoorcom] - [#22608]) ([counter docs])
- Adds Orange Pi GPIO platform ([@pascallj] - [#22541]) ([orangepi_gpio docs]) (new-integration) (new-platform)
- Potential None ([@Swamp-Ig] - [#23187]) ([automation docs])
- Add storage for cacheable homekit entity maps. ([@Jc2k] - [#23191]) ([homekit_controller docs])
- Misc. ZHA changes ([@dmulcahey] - [#23190]) ([zha docs])
- set myself as codeowner of xmpp, removed me from notify/* ([@flowolf] - [#23207]) ([notify docs]) ([xmpp docs])
- Update vizio component to support latest pyvizio with soundbar support ([@raman325] - [#22294]) ([vizio docs])
- Add json_attributes_template ([@emontnemery] - [#22981]) ([mqtt docs])
- Only comment with changed coverage on release PRs [skip-ci] ([@balloob] - [#23224])
- Fix optimistic mode + other bugs, tests ([@emontnemery] - [#22976]) ([mqtt docs])
- Set default value for input_datetime ([@tsvi] - [#21919]) ([input_datetime docs])
- Remove archived 17track packages from the entity registry ([@bachya] - [#23049]) ([seventeentrack docs])
- Change configuration for orangepi ([@pascallj] - [#23231]) ([orangepi_gpio docs])
- Add and use an async_fire_service_discovered helper ([@Jc2k] - [#23232])
- Review feedback from #23191 ([@Jc2k] - [#23233]) ([homekit_controller docs])
- Add missing service for persistent_notification ([@bieniu] - [#23230])
- Add more CPU temp. labels to Glances ([@Chris-V] - [#23179]) ([glances docs])
- Add accuracy and status for Traccar ([@GoNzCiD] - [#23180]) ([traccar docs])
- Avoid calling async code in sync context ([@Jc2k] - [#23235]) ([homekit_controller docs])
- Drop unnecessary block_till_done, improve tests ([@emontnemery] - [#23246])
- Drop unnecessary block_till_done, improve tests ([@emontnemery] - [#23247])
- Drop unnecessary block_till_done, improve tests ([@emontnemery] - [#23248])
- Drop unnecessary block_till_done, improve tests ([@emontnemery] - [#23249])
- Drop unnecessary block_till_done ([@emontnemery] - [#23250])
- Drop unnecessary block_till_done ([@emontnemery] - [#23251])
- Drop unnecessary block_till_done, improve tests ([@emontnemery] - [#23252])
- Added component named switcher_kis switcher water heater integration. ([@TomerFi] - [#22325]) ([switcher_kis docs]) (new-platform)
- Drop unnecessary block_till_done for MQTT fan tests ([@emontnemery] - [#23253])
- Drop unnecessary block_till_done for MQTT tests ([@emontnemery] - [#23254])
- Drop unnecessary block_till_done, improve tests for MQTT Cover tests ([@emontnemery] - [#23255])
- Drop unnecessary block_till_done ([@emontnemery] - [#23256])
- Add ctags file to .gitignore ([@bachya] - [#23279])
- Upgrade xmltodict to 0.12.0 ([@BKPepe] - [#23277]) ([bluesound docs]) ([startca docs]) ([ted5000 docs]) ([yr docs]) ([zestimate docs])
- Upgrade pyotp to 2.2.7 ([@BKPepe] - [#23274]) ([otp docs])
- Add homematicip cloud temperature sensor from thermostats ([@SukramJ] - [#23263]) ([homematicip_cloud docs]) (breaking change)
- Improve MQTT tests ([@emontnemery] - [#23296])
- Add support to play url ([@andrewsayre] - [#23273]) ([heos docs])
- RFC: Upgrade philips_js component version and support channels and sources ([@elupus] - [#23061]) ([philips_js docs])
- MQTT Vacuum State Device ([@pszafer] - [#23171]) ([mqtt docs]) (new-platform)
- Add connection control for netgear_lte ([@amelchio] - [#22946]) ([netgear_lte docs])
- Set placeholders in homekit config flow title ([@Jc2k] - [#23311]) ([homekit_controller docs])
- Random hassfest fixes ([@balloob] - [#23314])
- Add get_states faster ([@balloob] - [#23315]) ([websocket_api docs])
- Handle traccar connection errors ([@ludeeus] - [#23289]) ([traccar docs])
- Upgrade attrs to 19.1.0 ([@BKPepe] - [#23323])
- Fix ps4 not able to use different PSN accounts ([@ktnrg45] - [#22799]) ([ps4 docs])
- Reorg Homematic IP Cloud imports and minor fixes ([@SukramJ] - [#23330]) ([homematicip_cloud docs])
- Changes due to manifest.json. Awaiting coroutines instead of creating tasks ([@alengwenus] - [#23321]) ([lcn docs])
- Fix Switchbot restore state ([@Danielhiversen] - [#23325]) ([switchbot docs])
- Added override for kwikset 888. ([@sowelie] - [#23327]) ([zwave docs])
- Upgrade youtube_dl to 2019.04.17 ([@fabaff] - [#23342]) ([media_extractor docs])
- Fix Homematic IP Cloud remaining light imports ([@SukramJ] - [#23339]) ([homematicip_cloud docs])
- Volume trait for google assistant ([@elupus] - [#23237]) ([google_assistant docs])
- Upgrade ruamel.yaml to 0.15.94 ([@fabaff] - [#23344])
- Netatmo 5min fetch interval ([@pvizeli] - [#23341]) ([netatmo docs])
- Fixed test ([@Swamp-Ig] - [#23343])
- Device type garage for binary sensor garage_door ([@elupus] - [#23345]) ([google_assistant docs])
- Fix non-syncthru supporting printers ([@nielstron] - [#21482]) ([syncthru docs])
- Add support for a wider variety of EnOcean devices ([@bdurrer] - [#22052]) ([enocean docs])
- Convert Pollen.com sensor into IQVIA component ([@bachya] - [#22986]) ([iqvia docs]) ([pollen docs]) (breaking change) (new-integration) (new-platform)
- Upgrade to pyubee==0.6 ([@StevenLooman] - [#23355]) ([ubee docs])
- Fix tox.ini lint target ([@ViViDboarder] - [#23359])
- Add media player external url ([@balloob] - [#23337]) ([media_player docs])
- Fix race condition. ([@mitchellrj] - [#21244]) ([plex docs])
- Add amcrest camera services and deprecate switches ([@pnbruckner] - [#22949]) ([amcrest docs])
- Convert some test helpers to coroutines and adjust tests ([@emontnemery] - [#23352])
- Update xiaomi library ([@Danielhiversen] - [#23391]) ([xiaomi_aqara docs])
- Add device classes for media player and map to google types ([@elupus] - [#23236]) ([google_assistant docs]) ([media_player docs])
- Bump youtube-dl version to 2019.04.24 ([@cgtobi] - [#23398]) ([media_extractor docs])
- add key parameter ([@panosmz] - [#23381]) ([oasa_telematics docs])
- check if sabotage attr is in device ([@SukramJ] - [#23397]) ([homematicip_cloud docs])
- Add Types to Homematic IP ([@SukramJ] - [#23401]) ([homematicip_cloud docs])
- Add device info for Logi Circle camera and sensor entities ([@evanjd] - [#23373]) ([logi_circle docs])
- Bump requirement to v55 ([@Kane610] - [#23410]) ([deconz docs])
- restore battery_quantity for zha devices ([@vigonotion] - [#23320]) ([zha docs])
- Remove support for deprecated Sonos configuration ([@amelchio] - [#23385]) ([sonos docs]) (breaking change)
- Additional cleanup of IQVIA integration ([@bachya] - [#23403]) ([iqvia docs])
- Add new nextbus sensor ([@ViViDboarder] - [#20197]) ([nextbus docs]) (new-platform)
- Remove historical allergen and asthma sensors from IQVIA ([@bachya] - [#23258]) ([iqvia docs]) (breaking change)
- Return of travis ([@amelchio] - [#23409])
- Fix broken forecast trend attribute in IQVIA ([@bachya] - [#23454]) ([iqvia docs])
- Bump amcrest to 1.4.0 and use new storage_all method ([@pnbruckner] - [#23446]) ([amcrest docs])
- Added option to use self-signed certificates ([@anrudolph] - [#23139]) ([caldav docs])
- No longer promote imports inside methods ([@amelchio] - [#23471])
- Improve handling of unavailable Sonos speakers ([@amelchio] - [#23472]) ([sonos docs])
- Use remote image for HEOS ([@andrewsayre] - [#23420]) ([heos docs])
- Add a warning that honeywell/EU is to be deprecated ([@zxdavb] - [#23469]) ([honeywell docs])
- Skip flaky stream tests ([@amelchio] - [#23493])
- Display person component as occupancy sensor HomeKit ([@chmielowiec] - [#23451]) ([homekit docs])
- Fixes local_file camera service ([@robmarkcole] - [#23479]) ([local_file docs])
- Update aiolifx_effects to 0.2.2 ([@arsaboo] - [#23473]) ([lifx docs])
- Catch RequestException in influxdb writer ([@amelchio] - [#23508]) ([influxdb docs])
- Fixed bug with max_result ([@atomic7777] - [#23507]) ([google docs])
- Return state when changing optimistic covers ([@balloob] - [#23498]) ([google_assistant docs])
- Update Philips js to v0.0.8 ([@elupus] - [#23462]) ([philips_js docs])
- Fixed AlexaPowerController to report power state for thermostats ([@mcc05] - [#23468]) ([alexa docs])
- Continuous discovery of Sonos speakers ([@amelchio] - [#23484]) ([sonos docs])
- Ignore stale directories ([@amelchio] - [#23464])
- Do not log tracebacks for influxdb write errors ([@amelchio] - [#23522]) ([influxdb docs])
- limit concurrent updates to avoid network flood ([@dmulcahey] - [#23534]) ([zha docs])
- Add current disease data to IQVIA ([@bachya] - [#23052]) ([iqvia docs])
- Allow direct binding via ZHA for the ZLL profile ([@dmulcahey] - [#23536]) ([zha docs])
- Improve logging of exceptions in async_create_task ([@emontnemery] - [#22689]) ([cast docs])
- Install requirements when checking config ([@balloob] - [#23500])
- Always print invalid configuration data ([@emontnemery] - [#21972])
- Don't use zigpy profiles for ZHA entities ([@dmulcahey] - [#22844]) ([zha docs])
- Add HomeKit low battery threshold config ([@adrum] - [#23363]) ([homekit docs])
- Add sensor support for dyson 2018 models ([@etheralm] - [#22578]) ([dyson docs]) (new-platform)
- Bump homekit_python to 0.14.0 ([@Jc2k] - [#23562]) ([homekit_controller docs])
- Upgrade pysonos to 0.0.12 ([@amelchio] - [#23560]) ([sonos docs])
- Clean up ZHA discovery logic ([@dmulcahey] - [#23563]) ([zha docs])
- Migrate tests to pytest ([@emontnemery] - [#23544])
- bump zha-quirks version ([@dmulcahey] - [#23568]) ([zha docs])
- Add core APIs to migrate device identifiers and entity unique_id ([@andrewsayre] - [#23481])
- Essent sensor ([@TheLastProject] - [#23513]) ([essent docs]) (new-integration) (new-platform)
- Upgrade discord.py to v1.0.1 ([@cyrosy] - [#23523]) ([discord docs])
- Always pad mac addresses from nmap tracker with leading zeros ([@mikeage] - [#23492]) ([nmap_tracker docs]) (breaking change)
- Update mysensors sensor icons ([@MartinHjelmare] - [#23491]) ([mysensors docs])
- Add bypass and automatic bypass switch for Danfor Air. ([@JonasPed] - [#23572]) ([danfoss_air docs])
- Ptvsd debugger component. ([@Swamp-Ig] - [#23336]) ([ptvsd docs]) (new-integration)
- Fix min/max temp and humidity for homekit_controller climate ([@Jc2k] - [#23421]) ([homekit_controller docs])
- Fix failing state update tests ([@etheralm] - [#23575])
- render_with_collect method for template ([@Swamp-Ig] - [#23283])
- Upgrade youtube_dl to 2019.04.30 ([@fabaff] - [#23579]) ([media_extractor docs])
- Bumpped the pyeconet version ([@w1ll1am23] - [#23578]) ([econet docs])
- Simplify Travis cache config ([@scop] - [#23592])
- Fix low_battery_threshold issue HomeKit ([@cdce8p] - [#23593]) ([homekit docs])
- Redesign AlarmControlPanel for Homematic IP ([@SukramJ] - [#23565]) ([homematicip_cloud docs])
- Ambiclimate ([@Danielhiversen] - [#22827]) ([ambiclimate docs]) (new-integration) (new-platform)
- Move I/O to executor thread pool ([@cyrosy] - [#23589]) ([discord docs])
- Update bomradarloop to v0.1.3 ([@maddenp] - [#23599]) ([bom docs])
- updated manifest.json with correct version of hangup ([@teliov] - [#23596]) ([hangouts docs])
- Add and improve Homekit controller pairing messages and errors ([@Jc2k] - [#23532]) ([homekit_controller docs])
- Added message to data_template at notify REST ([@4lloyd] - [#23108]) ([rest docs])
- Fixed unhandled exception in OpenUV data update ([@bachya] - [#23611]) ([openuv docs])
- Support STATE_AUTO in homekit_controller climate ([@Jc2k] - [#23583]) ([homekit_controller docs])
- Add support for flow sensor metrics in RainMachine ([@bachya] - [#23221]) ([rainmachine docs])
- Clean caldav calendar tests ([@MartinHjelmare] - [#23609])
- Improve sun automation tests ([@emontnemery] - [#23588])
- Update pyvesync_v2 version to 0.9.7 ([@bwarden] - [#23603]) ([vesync docs])
- Prevent turning on tellduslive lights with 0 brightness ([@brange] - [#23135]) ([tellduslive docs])
- Update docstrings ([@fabaff] - [#23624]) ([panasonic_bluray docs])
- Order imports ([@fabaff] - [#23623]) ([opple docs])
- Polling is default ([@fabaff] - [#23622]) ([serial_pm docs])
- Loosen discovery config validation to avoid breaking changes ([@Jc2k] - [#23625]) ([discovery docs])
- Clean up redundant same-package ..package imports ([@scop] - [#23587]) ([greeneye_monitor docs]) ([huawei_lte docs]) ([tplink_lte docs])
- Upgrade pytest to 4.4.1 ([@scop] - [#23584])
- Upgrade mypy ([@scop] - [#23586])
- Allow removing Telegram reply keyboard ([@max-te] - [#23467]) ([telegram_bot docs])
- Convert frontend to do client-side modern JS detection ([@balloob] - [#23618]) ([frontend docs]) (breaking change)
- Refactor evohome to prepare for water_heater ([@zxdavb] - [#23489]) ([evohome docs])
- Extend play_media support ([@andrewsayre] - [#23580]) ([heos docs])
- update switchbot library ([@Danielhiversen] - [#23643]) ([switchbot docs])
- Add "soc-thermal 1" as CPU Temp label to Glances ([@phdelodder] - [#23635]) ([glances docs])
- deCONZ - Retry on BridgeBusy errors ([@Kane610] - [#23436]) ([deconz docs])
- Added option to select photoblack cartridge ([@ThaStealth] - [#23433]) ([epsonworkforce docs]) (breaking change)
- Fix bad request for some IP ONVIF camera ([@GeertvanHorrik] - [#22972]) ([onvif docs])
- Bump pyteleloisirs version ([@SNoof85] - [#23661]) ([liveboxplaytv docs])
- Upgrade psutil to 5.6.2 ([@fabaff] - [#23671]) ([systemmonitor docs])
- Upgrade shodan to 1.13.0 ([@fabaff] - [#23675]) ([shodan docs])
- Upgrade slacker to 0.13.0 ([@fabaff] - [#23672]) ([slack docs])
- Upgrade tapsaff to 0.2.1 ([@fabaff] - [#23676]) ([tapsaff docs])
- Upgrade sqlalchemy to 1.3.3 ([@fabaff] - [#23674]) ([recorder docs]) ([sql docs])
- Remove extraneous update call in SimpliSafe ([@bachya] - [#23680]) ([simplisafe docs])
- Upgrade pysnmp to 4.4.9 ([@fabaff] - [#23677]) ([snmp docs])
- Upgrade spotcrime to 1.0.4 (fixes #13189) ([@fabaff] - [#23679]) ([spotcrime docs])
- Add Bizkaibus, Biscays (Spain) bus service component ([@UgaitzEtxebarria] - [#22934]) ([bizkaibus docs]) (new-platform)
- Add HomeKit Television functionality ([@adrum] - [#22968]) ([homekit docs])
- Clean and fix google calendar tests ([@MartinHjelmare] - [#23608]) ([google docs])
- Update requirements for pyvlx. ([@Julius2342] - [#23694]) ([velux docs])
- Clean up mqtt device tracker tests ([@MartinHjelmare] - [#23700])
- Clean up device tracker tests ([@MartinHjelmare] - [#23695])
- Move Sonos services to sonos domain ([@amelchio] - [#23670]) ([sonos docs]) (breaking change)
- Move owntracks device tracker test under owntracks ([@MartinHjelmare] - [#23701])
- Add support for SET_AWAY_MODE and TURN_ON/OFF on Daikin Climate ([@fredrike] - [#23585]) ([daikin docs])
- Bump ZHA modules versions. ([@Adminiuga] - [#23705]) ([zha docs])
- Add additional single input cluster entries - ZHA ([@dmulcahey] - [#23697]) ([zha docs])
- Add media_type_app to media_player ([@ktnrg45] - [#23666]) ([media_player docs]) ([ps4 docs])
- Add a TCP timeout of 5 seconds to ffmpeg ([@droopanu] - [#23617]) ([stream docs])
- Catch thethingsnetwork TypeError ([@fabaff] - [#23667]) ([thethingsnetwork docs])
- Use local constant in Daikin for STATE_OFF ([@fredrike] - [#23712]) ([daikin docs])
- Upgrade sendgrid to 6.0.5 ([@fabaff] - [#23711]) ([sendgrid docs])
- bump zha-quirks ([@dmulcahey] - [#23714]) ([zha docs])
- Update IDs after firmware upgrade in HEOS ([@andrewsayre] - [#23641]) ([heos docs])
- huawei_lte: handle icons for None sensor values gracefully ([@scop] - [#23649]) ([huawei_lte docs])
- Upgrade switchbot , fixes #23702 ([@Danielhiversen] - [#23716]) ([switchbot docs])
- Share snmp constants across all platforms ([@fabaff] - [#23678]) ([snmp docs]) (breaking change)
- Add TTL support and custom headers support. ([@pszafer] - [#22988]) ([html5 docs])
- Added new binary sensor meteoalarm to get weather alerts in Europe ([@rolfberkenbosch] - [#23663]) ([meteoalarm docs]) (new-integration) (new-platform)
- add abbreviation for current_temperature_template ([@unixko] - [#23733]) ([mqtt docs])
- Add water_heater to geniushub, bump client library ([@zxdavb] - [#23384]) ([geniushub docs]) (new-platform)
- Add debug prints to sun ([@emontnemery] - [#23598]) ([sun docs])
- Add HEOS sign-in/out services ([@andrewsayre] - [#23729]) ([heos docs])
- Fix Hue sensor integration with multiple bridges. ([@mitchellrj] - [#23713]) ([hue docs])
- Fix effects on HUE integration for Osram bulbs ([@SukramJ] - [#22789]) ([hue docs])
- Upgrade aiodns to 2.0.0 ([@fabaff] - [#23743]) ([dnsip docs])
- Add abbreviation for position_topic ([@bieniu] - [#23740]) ([mqtt docs])
- Update PR template ([@balloob] - [#23520])
- Add Intergas InComfort Lan2RF gateway ([@zxdavb] - [#23736]) ([incomfort docs]) (new-integration) (new-platform)
- Fix upnp logger name ([@StevenLooman] - [#23724]) ([upnp docs])
- Add update events to registries ([@balloob] - [#23746]) ([websocket_api docs])
- Add integration step to onboarding ([@balloob] - [#23732]) ([onboarding docs])
- Merge netatmo_public sensor into the netatmo integration ([@cgtobi] - [#23531]) ([netatmo docs]) (breaking change)
- Upgrade numpy to 1.16.3 ([@fabaff] - [#23673]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs])
- Upgrade Mastodon.py to 1.4.0 ([@fabaff] - [#23753]) ([mastodon docs])
- New cover platform for ADS integration ([@carstenschroeder] - [#23377]) ([ads docs]) (new-platform)
- Prompt for pin only on open / unlock ([@Swamp-Ig] - [#23751]) ([google_assistant docs])
- Upgrade defusedxml to 0.6.0 ([@scop] - [#23651]) ([ihc docs]) ([namecheapdns docs]) ([ohmconnect docs]) ([upc_connect docs])
- Refactor child validation ([@MartinHjelmare] - [#23482]) ([mysensors docs])
- Update Sesame component to use Candy House's library using the V3 API ([@zanglang] - [#23621]) ([sesame docs]) (breaking change)
- Upgrade zeroconf to 0.22.0 ([@BKPepe] - [#23524]) ([zeroconf docs])
- No longer rely on requests ([@balloob] - [#23685]) ([ps4 docs])
- Sort discovered entries by 'st' to ensure getting the same device each discovery ([@StevenLooman] - [#23763]) ([upnp docs]) (beta fix)
- Bump pyatmo to v1.11 ([@cgtobi] - [#23766]) ([netatmo docs]) (beta fix)
- Fix for issue #23739. Added unique_id property so ([@dreed47] - [#23769]) ([zestimate docs]) (beta fix)
- Beta Fix: ONVIF ([@hunterjm] - [#23787]) ([onvif docs]) (beta fix)
- Synchronize Sonos service calls ([@amelchio] - [#23791]) ([sonos docs]) (beta fix)
- Do not add coordinator to the ZHA entities. ([@Adminiuga] - [#23803]) ([zha docs]) (beta fix)
- fix onvif wsdl import - take 2 ([@hunterjm] - [#23807]) ([onvif docs]) (beta fix)
- Correct ZHA illumination conversion ([@dmulcahey] - [#23853]) ([zha docs]) (beta fix)
- Fix ZHA battery when readings produce an unknown value ([@dmulcahey] - [#23854]) ([zha docs]) (beta fix)
- bump zha-quirks ([@dmulcahey] - [#23855]) ([zha docs]) (beta fix)
- Fix improper usage of body attribute on web.Response. Should be text since we arent sending bytes ([@robbiet480] - [#23857]) ([geofency docs]) ([locative docs]) ([mobile_app docs]) (beta fix)
[#20197]: https://github.com/home-assistant/home-assistant/pull/20197
[#21244]: https://github.com/home-assistant/home-assistant/pull/21244
[#21482]: https://github.com/home-assistant/home-assistant/pull/21482
[#21919]: https://github.com/home-assistant/home-assistant/pull/21919
[#21972]: https://github.com/home-assistant/home-assistant/pull/21972
[#22052]: https://github.com/home-assistant/home-assistant/pull/22052
[#22294]: https://github.com/home-assistant/home-assistant/pull/22294
[#22325]: https://github.com/home-assistant/home-assistant/pull/22325
[#22541]: https://github.com/home-assistant/home-assistant/pull/22541
[#22578]: https://github.com/home-assistant/home-assistant/pull/22578
[#22608]: https://github.com/home-assistant/home-assistant/pull/22608
[#22689]: https://github.com/home-assistant/home-assistant/pull/22689
[#22789]: https://github.com/home-assistant/home-assistant/pull/22789
[#22799]: https://github.com/home-assistant/home-assistant/pull/22799
[#22827]: https://github.com/home-assistant/home-assistant/pull/22827
[#22844]: https://github.com/home-assistant/home-assistant/pull/22844
[#22934]: https://github.com/home-assistant/home-assistant/pull/22934
[#22946]: https://github.com/home-assistant/home-assistant/pull/22946
[#22949]: https://github.com/home-assistant/home-assistant/pull/22949
[#22968]: https://github.com/home-assistant/home-assistant/pull/22968
[#22972]: https://github.com/home-assistant/home-assistant/pull/22972
[#22976]: https://github.com/home-assistant/home-assistant/pull/22976
[#22981]: https://github.com/home-assistant/home-assistant/pull/22981
[#22986]: https://github.com/home-assistant/home-assistant/pull/22986
[#22988]: https://github.com/home-assistant/home-assistant/pull/22988
[#23049]: https://github.com/home-assistant/home-assistant/pull/23049
[#23052]: https://github.com/home-assistant/home-assistant/pull/23052
[#23061]: https://github.com/home-assistant/home-assistant/pull/23061
[#23108]: https://github.com/home-assistant/home-assistant/pull/23108
[#23124]: https://github.com/home-assistant/home-assistant/pull/23124
[#23135]: https://github.com/home-assistant/home-assistant/pull/23135
[#23139]: https://github.com/home-assistant/home-assistant/pull/23139
[#23164]: https://github.com/home-assistant/home-assistant/pull/23164
[#23171]: https://github.com/home-assistant/home-assistant/pull/23171
[#23173]: https://github.com/home-assistant/home-assistant/pull/23173
[#23179]: https://github.com/home-assistant/home-assistant/pull/23179
[#23180]: https://github.com/home-assistant/home-assistant/pull/23180
[#23187]: https://github.com/home-assistant/home-assistant/pull/23187
[#23190]: https://github.com/home-assistant/home-assistant/pull/23190
[#23191]: https://github.com/home-assistant/home-assistant/pull/23191
[#23207]: https://github.com/home-assistant/home-assistant/pull/23207
[#23221]: https://github.com/home-assistant/home-assistant/pull/23221
[#23224]: https://github.com/home-assistant/home-assistant/pull/23224
[#23230]: https://github.com/home-assistant/home-assistant/pull/23230
[#23231]: https://github.com/home-assistant/home-assistant/pull/23231
[#23232]: https://github.com/home-assistant/home-assistant/pull/23232
[#23233]: https://github.com/home-assistant/home-assistant/pull/23233
[#23235]: https://github.com/home-assistant/home-assistant/pull/23235
[#23236]: https://github.com/home-assistant/home-assistant/pull/23236
[#23237]: https://github.com/home-assistant/home-assistant/pull/23237
[#23246]: https://github.com/home-assistant/home-assistant/pull/23246
[#23247]: https://github.com/home-assistant/home-assistant/pull/23247
[#23248]: https://github.com/home-assistant/home-assistant/pull/23248
[#23249]: https://github.com/home-assistant/home-assistant/pull/23249
[#23250]: https://github.com/home-assistant/home-assistant/pull/23250
[#23251]: https://github.com/home-assistant/home-assistant/pull/23251
[#23252]: https://github.com/home-assistant/home-assistant/pull/23252
[#23253]: https://github.com/home-assistant/home-assistant/pull/23253
[#23254]: https://github.com/home-assistant/home-assistant/pull/23254
[#23255]: https://github.com/home-assistant/home-assistant/pull/23255
[#23256]: https://github.com/home-assistant/home-assistant/pull/23256
[#23258]: https://github.com/home-assistant/home-assistant/pull/23258
[#23263]: https://github.com/home-assistant/home-assistant/pull/23263
[#23273]: https://github.com/home-assistant/home-assistant/pull/23273
[#23274]: https://github.com/home-assistant/home-assistant/pull/23274
[#23277]: https://github.com/home-assistant/home-assistant/pull/23277
[#23279]: https://github.com/home-assistant/home-assistant/pull/23279
[#23283]: https://github.com/home-assistant/home-assistant/pull/23283
[#23289]: https://github.com/home-assistant/home-assistant/pull/23289
[#23296]: https://github.com/home-assistant/home-assistant/pull/23296
[#23311]: https://github.com/home-assistant/home-assistant/pull/23311
[#23314]: https://github.com/home-assistant/home-assistant/pull/23314
[#23315]: https://github.com/home-assistant/home-assistant/pull/23315
[#23320]: https://github.com/home-assistant/home-assistant/pull/23320
[#23321]: https://github.com/home-assistant/home-assistant/pull/23321
[#23323]: https://github.com/home-assistant/home-assistant/pull/23323
[#23325]: https://github.com/home-assistant/home-assistant/pull/23325
[#23327]: https://github.com/home-assistant/home-assistant/pull/23327
[#23330]: https://github.com/home-assistant/home-assistant/pull/23330
[#23336]: https://github.com/home-assistant/home-assistant/pull/23336
[#23337]: https://github.com/home-assistant/home-assistant/pull/23337
[#23339]: https://github.com/home-assistant/home-assistant/pull/23339
[#23341]: https://github.com/home-assistant/home-assistant/pull/23341
[#23342]: https://github.com/home-assistant/home-assistant/pull/23342
[#23343]: https://github.com/home-assistant/home-assistant/pull/23343
[#23344]: https://github.com/home-assistant/home-assistant/pull/23344
[#23345]: https://github.com/home-assistant/home-assistant/pull/23345
[#23352]: https://github.com/home-assistant/home-assistant/pull/23352
[#23355]: https://github.com/home-assistant/home-assistant/pull/23355
[#23359]: https://github.com/home-assistant/home-assistant/pull/23359
[#23363]: https://github.com/home-assistant/home-assistant/pull/23363
[#23373]: https://github.com/home-assistant/home-assistant/pull/23373
[#23377]: https://github.com/home-assistant/home-assistant/pull/23377
[#23381]: https://github.com/home-assistant/home-assistant/pull/23381
[#23384]: https://github.com/home-assistant/home-assistant/pull/23384
[#23385]: https://github.com/home-assistant/home-assistant/pull/23385
[#23391]: https://github.com/home-assistant/home-assistant/pull/23391
[#23397]: https://github.com/home-assistant/home-assistant/pull/23397
[#23398]: https://github.com/home-assistant/home-assistant/pull/23398
[#23401]: https://github.com/home-assistant/home-assistant/pull/23401
[#23403]: https://github.com/home-assistant/home-assistant/pull/23403
[#23409]: https://github.com/home-assistant/home-assistant/pull/23409
[#23410]: https://github.com/home-assistant/home-assistant/pull/23410
[#23420]: https://github.com/home-assistant/home-assistant/pull/23420
[#23421]: https://github.com/home-assistant/home-assistant/pull/23421
[#23433]: https://github.com/home-assistant/home-assistant/pull/23433
[#23436]: https://github.com/home-assistant/home-assistant/pull/23436
[#23446]: https://github.com/home-assistant/home-assistant/pull/23446
[#23451]: https://github.com/home-assistant/home-assistant/pull/23451
[#23454]: https://github.com/home-assistant/home-assistant/pull/23454
[#23462]: https://github.com/home-assistant/home-assistant/pull/23462
[#23464]: https://github.com/home-assistant/home-assistant/pull/23464
[#23467]: https://github.com/home-assistant/home-assistant/pull/23467
[#23468]: https://github.com/home-assistant/home-assistant/pull/23468
[#23469]: https://github.com/home-assistant/home-assistant/pull/23469
[#23471]: https://github.com/home-assistant/home-assistant/pull/23471
[#23472]: https://github.com/home-assistant/home-assistant/pull/23472
[#23473]: https://github.com/home-assistant/home-assistant/pull/23473
[#23479]: https://github.com/home-assistant/home-assistant/pull/23479
[#23481]: https://github.com/home-assistant/home-assistant/pull/23481
[#23482]: https://github.com/home-assistant/home-assistant/pull/23482
[#23484]: https://github.com/home-assistant/home-assistant/pull/23484
[#23489]: https://github.com/home-assistant/home-assistant/pull/23489
[#23491]: https://github.com/home-assistant/home-assistant/pull/23491
[#23492]: https://github.com/home-assistant/home-assistant/pull/23492
[#23493]: https://github.com/home-assistant/home-assistant/pull/23493
[#23498]: https://github.com/home-assistant/home-assistant/pull/23498
[#23500]: https://github.com/home-assistant/home-assistant/pull/23500
[#23507]: https://github.com/home-assistant/home-assistant/pull/23507
[#23508]: https://github.com/home-assistant/home-assistant/pull/23508
[#23513]: https://github.com/home-assistant/home-assistant/pull/23513
[#23520]: https://github.com/home-assistant/home-assistant/pull/23520
[#23522]: https://github.com/home-assistant/home-assistant/pull/23522
[#23523]: https://github.com/home-assistant/home-assistant/pull/23523
[#23524]: https://github.com/home-assistant/home-assistant/pull/23524
[#23531]: https://github.com/home-assistant/home-assistant/pull/23531
[#23532]: https://github.com/home-assistant/home-assistant/pull/23532
[#23534]: https://github.com/home-assistant/home-assistant/pull/23534
[#23536]: https://github.com/home-assistant/home-assistant/pull/23536
[#23544]: https://github.com/home-assistant/home-assistant/pull/23544
[#23560]: https://github.com/home-assistant/home-assistant/pull/23560
[#23562]: https://github.com/home-assistant/home-assistant/pull/23562
[#23563]: https://github.com/home-assistant/home-assistant/pull/23563
[#23565]: https://github.com/home-assistant/home-assistant/pull/23565
[#23568]: https://github.com/home-assistant/home-assistant/pull/23568
[#23572]: https://github.com/home-assistant/home-assistant/pull/23572
[#23575]: https://github.com/home-assistant/home-assistant/pull/23575
[#23578]: https://github.com/home-assistant/home-assistant/pull/23578
[#23579]: https://github.com/home-assistant/home-assistant/pull/23579
[#23580]: https://github.com/home-assistant/home-assistant/pull/23580
[#23583]: https://github.com/home-assistant/home-assistant/pull/23583
[#23584]: https://github.com/home-assistant/home-assistant/pull/23584
[#23585]: https://github.com/home-assistant/home-assistant/pull/23585
[#23586]: https://github.com/home-assistant/home-assistant/pull/23586
[#23587]: https://github.com/home-assistant/home-assistant/pull/23587
[#23588]: https://github.com/home-assistant/home-assistant/pull/23588
[#23589]: https://github.com/home-assistant/home-assistant/pull/23589
[#23592]: https://github.com/home-assistant/home-assistant/pull/23592
[#23593]: https://github.com/home-assistant/home-assistant/pull/23593
[#23596]: https://github.com/home-assistant/home-assistant/pull/23596
[#23598]: https://github.com/home-assistant/home-assistant/pull/23598
[#23599]: https://github.com/home-assistant/home-assistant/pull/23599
[#23603]: https://github.com/home-assistant/home-assistant/pull/23603
[#23608]: https://github.com/home-assistant/home-assistant/pull/23608
[#23609]: https://github.com/home-assistant/home-assistant/pull/23609
[#23611]: https://github.com/home-assistant/home-assistant/pull/23611
[#23617]: https://github.com/home-assistant/home-assistant/pull/23617
[#23618]: https://github.com/home-assistant/home-assistant/pull/23618
[#23621]: https://github.com/home-assistant/home-assistant/pull/23621
[#23622]: https://github.com/home-assistant/home-assistant/pull/23622
[#23623]: https://github.com/home-assistant/home-assistant/pull/23623
[#23624]: https://github.com/home-assistant/home-assistant/pull/23624
[#23625]: https://github.com/home-assistant/home-assistant/pull/23625
[#23635]: https://github.com/home-assistant/home-assistant/pull/23635
[#23641]: https://github.com/home-assistant/home-assistant/pull/23641
[#23643]: https://github.com/home-assistant/home-assistant/pull/23643
[#23649]: https://github.com/home-assistant/home-assistant/pull/23649
[#23651]: https://github.com/home-assistant/home-assistant/pull/23651
[#23661]: https://github.com/home-assistant/home-assistant/pull/23661
[#23663]: https://github.com/home-assistant/home-assistant/pull/23663
[#23666]: https://github.com/home-assistant/home-assistant/pull/23666
[#23667]: https://github.com/home-assistant/home-assistant/pull/23667
[#23670]: https://github.com/home-assistant/home-assistant/pull/23670
[#23671]: https://github.com/home-assistant/home-assistant/pull/23671
[#23672]: https://github.com/home-assistant/home-assistant/pull/23672
[#23673]: https://github.com/home-assistant/home-assistant/pull/23673
[#23674]: https://github.com/home-assistant/home-assistant/pull/23674
[#23675]: https://github.com/home-assistant/home-assistant/pull/23675
[#23676]: https://github.com/home-assistant/home-assistant/pull/23676
[#23677]: https://github.com/home-assistant/home-assistant/pull/23677
[#23678]: https://github.com/home-assistant/home-assistant/pull/23678
[#23679]: https://github.com/home-assistant/home-assistant/pull/23679
[#23680]: https://github.com/home-assistant/home-assistant/pull/23680
[#23685]: https://github.com/home-assistant/home-assistant/pull/23685
[#23694]: https://github.com/home-assistant/home-assistant/pull/23694
[#23695]: https://github.com/home-assistant/home-assistant/pull/23695
[#23697]: https://github.com/home-assistant/home-assistant/pull/23697
[#23700]: https://github.com/home-assistant/home-assistant/pull/23700
[#23701]: https://github.com/home-assistant/home-assistant/pull/23701
[#23705]: https://github.com/home-assistant/home-assistant/pull/23705
[#23711]: https://github.com/home-assistant/home-assistant/pull/23711
[#23712]: https://github.com/home-assistant/home-assistant/pull/23712
[#23713]: https://github.com/home-assistant/home-assistant/pull/23713
[#23714]: https://github.com/home-assistant/home-assistant/pull/23714
[#23716]: https://github.com/home-assistant/home-assistant/pull/23716
[#23724]: https://github.com/home-assistant/home-assistant/pull/23724
[#23729]: https://github.com/home-assistant/home-assistant/pull/23729
[#23732]: https://github.com/home-assistant/home-assistant/pull/23732
[#23733]: https://github.com/home-assistant/home-assistant/pull/23733
[#23736]: https://github.com/home-assistant/home-assistant/pull/23736
[#23740]: https://github.com/home-assistant/home-assistant/pull/23740
[#23743]: https://github.com/home-assistant/home-assistant/pull/23743
[#23746]: https://github.com/home-assistant/home-assistant/pull/23746
[#23751]: https://github.com/home-assistant/home-assistant/pull/23751
[#23753]: https://github.com/home-assistant/home-assistant/pull/23753
[#23763]: https://github.com/home-assistant/home-assistant/pull/23763
[#23766]: https://github.com/home-assistant/home-assistant/pull/23766
[#23769]: https://github.com/home-assistant/home-assistant/pull/23769
[#23787]: https://github.com/home-assistant/home-assistant/pull/23787
[#23791]: https://github.com/home-assistant/home-assistant/pull/23791
[#23803]: https://github.com/home-assistant/home-assistant/pull/23803
[#23807]: https://github.com/home-assistant/home-assistant/pull/23807
[#23853]: https://github.com/home-assistant/home-assistant/pull/23853
[#23854]: https://github.com/home-assistant/home-assistant/pull/23854
[#23855]: https://github.com/home-assistant/home-assistant/pull/23855
[#23857]: https://github.com/home-assistant/home-assistant/pull/23857
[@4lloyd]: https://github.com/4lloyd
[@Adminiuga]: https://github.com/Adminiuga
[@BKPepe]: https://github.com/BKPepe
[@Chris-V]: https://github.com/Chris-V
[@Danielhiversen]: https://github.com/Danielhiversen
[@GeertvanHorrik]: https://github.com/GeertvanHorrik
[@GoNzCiD]: https://github.com/GoNzCiD
[@Jc2k]: https://github.com/Jc2k
[@JonasPed]: https://github.com/JonasPed
[@Julius2342]: https://github.com/Julius2342
[@Kane610]: https://github.com/Kane610
[@MartinHjelmare]: https://github.com/MartinHjelmare
[@SNoof85]: https://github.com/SNoof85
[@StevenLooman]: https://github.com/StevenLooman
[@SukramJ]: https://github.com/SukramJ
[@Swamp-Ig]: https://github.com/Swamp-Ig
[@ThaStealth]: https://github.com/ThaStealth
[@TheLastProject]: https://github.com/TheLastProject
[@TomerFi]: https://github.com/TomerFi
[@UgaitzEtxebarria]: https://github.com/UgaitzEtxebarria
[@ViViDboarder]: https://github.com/ViViDboarder
[@adrum]: https://github.com/adrum
[@alengwenus]: https://github.com/alengwenus
[@amelchio]: https://github.com/amelchio
[@andrewsayre]: https://github.com/andrewsayre
[@anrudolph]: https://github.com/anrudolph
[@arsaboo]: https://github.com/arsaboo
[@atomic7777]: https://github.com/atomic7777
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bdurrer]: https://github.com/bdurrer
[@bieniu]: https://github.com/bieniu
[@brange]: https://github.com/brange
[@bwarden]: https://github.com/bwarden
[@carstenschroeder]: https://github.com/carstenschroeder
[@cdce8p]: https://github.com/cdce8p
[@cgtobi]: https://github.com/cgtobi
[@chmielowiec]: https://github.com/chmielowiec
[@cyrosy]: https://github.com/cyrosy
[@dmulcahey]: https://github.com/dmulcahey
[@dreed47]: https://github.com/dreed47
[@droopanu]: https://github.com/droopanu
[@elupus]: https://github.com/elupus
[@emontnemery]: https://github.com/emontnemery
[@etheralm]: https://github.com/etheralm
[@evanjd]: https://github.com/evanjd
[@fabaff]: https://github.com/fabaff
[@flowolf]: https://github.com/flowolf
[@fredrike]: https://github.com/fredrike
[@hunterjm]: https://github.com/hunterjm
[@itn3rd77]: https://github.com/itn3rd77
[@ktnrg45]: https://github.com/ktnrg45
[@ludeeus]: https://github.com/ludeeus
[@maddenp]: https://github.com/maddenp
[@max-te]: https://github.com/max-te
[@mcc05]: https://github.com/mcc05
[@mikeage]: https://github.com/mikeage
[@mitchellrj]: https://github.com/mitchellrj
[@nielstron]: https://github.com/nielstron
[@panosmz]: https://github.com/panosmz
[@pascallj]: https://github.com/pascallj
[@phdelodder]: https://github.com/phdelodder
[@pnbruckner]: https://github.com/pnbruckner
[@pszafer]: https://github.com/pszafer
[@pvizeli]: https://github.com/pvizeli
[@raman325]: https://github.com/raman325
[@robbiet480]: https://github.com/robbiet480
[@robmarkcole]: https://github.com/robmarkcole
[@rohankapoorcom]: https://github.com/rohankapoorcom
[@rolfberkenbosch]: https://github.com/rolfberkenbosch
[@scop]: https://github.com/scop
[@sowelie]: https://github.com/sowelie
[@teliov]: https://github.com/teliov
[@tsvi]: https://github.com/tsvi
[@unixko]: https://github.com/unixko
[@vigonotion]: https://github.com/vigonotion
[@w1ll1am23]: https://github.com/w1ll1am23
[@zanglang]: https://github.com/zanglang
[@zewelor]: https://github.com/zewelor
[@zxdavb]: https://github.com/zxdavb
[ads docs]: /components/ads/
[alexa docs]: /components/alexa/
[ambiclimate docs]: /components/ambiclimate/
[amcrest docs]: /components/amcrest/
[automation docs]: /components/automation/
[bizkaibus docs]: /components/bizkaibus/
[bluesound docs]: /components/bluesound/
[bom docs]: /components/bom/
[caldav docs]: /components/caldav/
[cast docs]: /components/cast/
[counter docs]: /components/counter/
[daikin docs]: /components/daikin/
[danfoss_air docs]: /components/danfoss_air/
[deconz docs]: /components/deconz/
[discord docs]: /components/discord/
[discovery docs]: /components/discovery/
[dnsip docs]: /components/dnsip/
[dyson docs]: /components/dyson/
[econet docs]: /components/econet/
[enocean docs]: /components/enocean/
[epsonworkforce docs]: /components/epsonworkforce/
[essent docs]: /components/essent/
[evohome docs]: /components/evohome/
[frontend docs]: /components/frontend/
[geniushub docs]: /components/geniushub/
[geofency docs]: /components/geofency/
[glances docs]: /components/glances/
[google docs]: /components/google/
[google_assistant docs]: /components/google_assistant/
[greeneye_monitor docs]: /components/greeneye_monitor/
[hangouts docs]: /components/hangouts/
[heos docs]: /components/heos/
[homekit docs]: /components/homekit/
[homekit_controller docs]: /components/homekit_controller/
[homematic docs]: /components/homematic/
[homematicip_cloud docs]: /components/homematicip_cloud/
[honeywell docs]: /components/honeywell/
[html5 docs]: /components/html5/
[huawei_lte docs]: /components/huawei_lte/
[hue docs]: /components/hue/
[ihc docs]: /components/ihc/
[incomfort docs]: /components/incomfort/
[influxdb docs]: /components/influxdb/
[input_datetime docs]: /components/input_datetime/
[iqvia docs]: /components/iqvia/
[lcn docs]: /components/lcn/
[lifx docs]: /components/lifx/
[liveboxplaytv docs]: /components/liveboxplaytv/
[local_file docs]: /components/local_file/
[locative docs]: /components/locative/
[logi_circle docs]: /components/logi_circle/
[mastodon docs]: /components/mastodon/
[media_extractor docs]: /components/media_extractor/
[media_player docs]: /components/media_player/
[meteoalarm docs]: /components/meteoalarm/
[mobile_app docs]: /components/mobile_app/
[mqtt docs]: /components/mqtt/
[mysensors docs]: /components/mysensors/
[namecheapdns docs]: /components/namecheapdns/
[netatmo docs]: /components/netatmo/
[netatmo_public docs]: /components/netatmo_public/
[netgear_lte docs]: /components/netgear_lte/
[nextbus docs]: /components/nextbus/
[nmap_tracker docs]: /components/nmap_tracker/
[notify docs]: /components/notify/
[oasa_telematics docs]: /components/oasa_telematics/
[ohmconnect docs]: /components/ohmconnect/
[onboarding docs]: /components/onboarding/
[onvif docs]: /components/onvif/
[opencv docs]: /components/opencv/
[openuv docs]: /components/openuv/
[opple docs]: /components/opple/
[orangepi_gpio docs]: /components/orangepi_gpio/
[otp docs]: /components/otp/
[panasonic_bluray docs]: /components/panasonic_bluray/
[philips_js docs]: /components/philips_js/
[plex docs]: /components/plex/
[pollen docs]: /components/pollen/
[ps4 docs]: /components/ps4/
[ptvsd docs]: /components/ptvsd/
[rainmachine docs]: /components/rainmachine/
[recorder docs]: /components/recorder/
[rest docs]: /components/rest/
[sendgrid docs]: /components/sendgrid/
[serial_pm docs]: /components/serial_pm/
[sesame docs]: /components/sesame/
[seventeentrack docs]: /components/seventeentrack/
[shodan docs]: /components/shodan/
[simplisafe docs]: /components/simplisafe/
[slack docs]: /components/slack/
[snmp docs]: /components/snmp/
[sonos docs]: /components/sonos/
[spotcrime docs]: /components/spotcrime/
[sql docs]: /components/sql/
[startca docs]: /components/startca/
[stream docs]: /components/stream/
[sun docs]: /components/sun/
[switchbot docs]: /components/switchbot/
[switcher_kis docs]: /components/switcher_kis/
[syncthru docs]: /components/syncthru/
[systemmonitor docs]: /components/systemmonitor/
[tapsaff docs]: /components/tapsaff/
[ted5000 docs]: /components/ted5000/
[telegram_bot docs]: /components/telegram_bot/
[tellduslive docs]: /components/tellduslive/
[tensorflow docs]: /components/tensorflow/
[thethingsnetwork docs]: /components/thethingsnetwork/
[tplink_lte docs]: /components/tplink_lte/
[traccar docs]: /components/traccar/
[trend docs]: /components/trend/
[ubee docs]: /components/ubee/
[upc_connect docs]: /components/upc_connect/
[upnp docs]: /components/upnp/
[velux docs]: /components/velux/
[vesync docs]: /components/vesync/
[vizio docs]: /components/vizio/
[websocket_api docs]: /components/websocket_api/
[xiaomi_aqara docs]: /components/xiaomi_aqara/
[xmpp docs]: /components/xmpp/
[yeelight docs]: /components/yeelight/
[yr docs]: /components/yr/
[zeroconf docs]: /components/zeroconf/
[zestimate docs]: /components/zestimate/
[zha docs]: /components/zha/
[zwave docs]: /components/zwave/

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 KiB