Merge branch 'rc' into current

This commit is contained in:
Paulus Schoutsen 2019-08-07 11:24:56 -07:00
commit 4f04db01fd
66 changed files with 2206 additions and 641 deletions

1
.vscode/cSpell.json vendored
View File

@ -12,6 +12,7 @@
"Denon", "Denon",
"endconfiguration", "endconfiguration",
"endraw", "endraw",
"Etekcity",
"fitbit", "fitbit",
"Flexit", "Flexit",
"geizhals", "geizhals",

View File

@ -40,189 +40,4 @@ app_key:
description: The Application key to access the service. description: The Application key to access the service.
required: true required: true
type: string type: string
monitored_conditions:
description: Weather conditions to track.
required: false
type: list
keys:
24hourrainin:
description: 24h rain accumulation
baromabsin:
description: Absolute atmospheric pressure
baromrelin:
description: Relative atmospheric pressure
battout:
description: Weather station battery health
batt1:
description: Sensor 1 battery health
batt2:
description: Sensor 2 battery health
batt3:
description: Sensor 3 battery health
batt4:
description: Sensor 4 battery health
batt5:
description: Sensor 5 battery health
batt6:
description: Sensor 6 battery health
batt7:
description: Sensor 7 battery health
batt8:
description: Sensor 8 battery health
batt9:
description: Sensor 9 battery health
batt10:
description: Sensor 10 battery health
co2:
description: CO2 level
dailyrainin:
description: Daily rain accumulation
dewPoint:
description: Dewpoint temperature
eventrainin:
description: Event Rain accumulation
feelsLike:
description: Feels Like temperature
hourlyrainin:
description: Hourly rain accumulation
humidity:
description: Outdoor humidity
humidity1:
description: Sensor 1 humidity
humidity2:
description: Sensor 2 humidity
humidity3:
description: Sensor 3 humidity
humidity4:
description: Sensor 4 humidity
humidity5:
description: Sensor 5 humidity
humidity6:
description: Sensor 6 humidity
humidity7:
description: Sensor 7 humidity
humidity8:
description: Sensor 8 humidity
humidity9:
description: Sensor 9 humidity
humidity10:
description: Sensor 10 humidity
humidityin:
description: Indoor humidity
lastRain:
description: Datetime of last rain event
maxdailygust:
description: Max daily wind gust
monthlyrainin:
description: Monthly rain accumulation
relay1:
description: Sensor 1 relay status
relay2:
description: Sensor 2 relay status
relay3:
description: Sensor 3 relay status
relay4:
description: Sensor 4 relay status
relay5:
description: Sensor 5 relay status
relay6:
description: Sensor 6 relay status
relay7:
description: Sensor 7 relay status
relay8:
description: Sensor 8 relay status
relay9:
description: Sensor 9 relay status
relay10:
description: Sensor 10 relay status
soilhum1:
description: Sensor 1 soil humidity
soilhum2:
description: Sensor 2 soil humidity
soilhum3:
description: Sensor 3 soil humidity
soilhum4:
description: Sensor 4 soil humidity
soilhum5:
description: Sensor 5 soil humidity
soilhum6:
description: Sensor 6 soil humidity
soilhum7:
description: Sensor 7 soil humidity
soilhum8:
description: Sensor 8 soil humidity
soilhum9:
description: Sensor 9 soil humidity
soilhum10:
description: Sensor 10 soil humidity
soiltemp1f:
description: Sensor 1 soil temperature
soiltemp2f:
description: Sensor 2 soil temperature
soiltemp3f:
description: Sensor 3 soil temperature
soiltemp4f:
description: Sensor 4 soil temperature
soiltemp5f:
description: Sensor 5 soil temperature
soiltemp6f:
description: Sensor 6 soil temperature
soiltemp7f:
description: Sensor 7 soil temperature
soiltemp8f:
description: Sensor 8 soil temperature
soiltemp9f:
description: Sensor 9 soil temperature
soiltemp10f:
description: Sensor 10 soil temperature
solarradiation:
description: Solar radiation
temp1f:
description: Sensor 1 temperature
temp2f:
description: Sensor 2 temperature
temp3f:
description: Sensor 3 temperature
temp4f:
description: Sensor 4 temperature
temp5f:
description: Sensor 5 temperature
temp6f:
description: Sensor 6 temperature
temp7f:
description: Sensor 7 temperature
temp8f:
description: Sensor 8 temperature
temp9f:
description: Sensor 9 temperature
temp10f:
description: Sensor 10 temperature
tempf:
description: Outdoor temperature
tempinf:
description: Indoor temperature
totalrainin:
description: Lifetime rain accumulation (since last reset)
uv:
description: UV index
weeklyrainin:
description: Weekly rain accumulation
winddir:
description: Wind direction
winddir_avg10m:
description: Wind direction, 10m moving average
winddir_avg2m:
description: Wind direction, 2m moving average
windgustdir:
description: Wind gust direction
windgustmph:
description: Wind gust
windspdmph_avg10m:
description: Wind speed, 10m moving average
windspdmph_avg2m:
description: Wind speed, 2m moving average
windspeedmph:
description: Windspeed
yearlyrainin:
description: Yearly rain accumulation
{% endconfiguration %} {% endconfiguration %}

View File

@ -0,0 +1,60 @@
---
title: "Apache Kafka"
description: "Send data and events to Apache Kafka."
logo: apache_kafka.png
ha_category:
- History
ha_release: 0.97
---
The `apache_kafka` integration sends all state changes to a
[Apache Kafka](https://kafka.apache.org/) topic.
Apache Kafka is a real-time data pipeline that can read and write streams of data. It
stores its data safely in a distributed, replicated, fault-tolerant cluster.
To use the `apache_kafka` integration in your installation, add the following to your
`configuration.yaml` file:
```yaml
apache_kafka:
ip_address: localhost
port: 9092
topic: home_assistant_1
```
{% configuration %}
host:
description: The IP address or hostname of an Apache Kafka cluster.
required: true
type: string
port:
description: The port to use.
required: true
type: integer
topic:
description: The Kafka topic to send data to.
required: true
type: string
filter:
description: Filters for entities to be included/excluded.
required: false
type: map
keys:
include_domains:
description: Domains to be included.
required: false
type: list
include_entities:
description: Entities to be included.
required: false
type: list
exclude_domains:
description: Domains to be excluded.
required: false
type: list
exclude_entities:
description: Entities to be excluded.
required: false
type: list
{% endconfiguration %}

View File

@ -0,0 +1,21 @@
---
title: "Elgato Avea"
description: "Instructions on how to integrate Elgato Avea with Home Assistant."
logo: avea.png
ha_category:
- Light
ha_release: 0.97
ha_iot_class: Local Polling
---
[Elgato Avea](http://web.archive.org/web/20170930210431/https://www.elgato.com/avea) is a Bluetooth light bulb that is no longer supported by the manufacturer. The `avea` integration allows you to control all your Avea bulbs with Home Assistant.
### Configuration
To enable Avea, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
light:
- platform: avea
```

View File

@ -139,6 +139,11 @@ temperature_high_state_topic:
description: The MQTT topic to subscribe for changes in the target high temperature. If this is not set, the target high temperature works in optimistic mode (see below). description: The MQTT topic to subscribe for changes in the target high temperature. If this is not set, the target high temperature works in optimistic mode (see below).
required: false required: false
type: string type: string
precision:
description: The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`.
required: false
type: float
default: 0.1 for Celsius and 1.0 for Fahrenheit.
fan_mode_command_topic: fan_mode_command_topic:
description: The MQTT topic to publish commands to change the fan mode. description: The MQTT topic to publish commands to change the fan mode.
required: false required: false
@ -318,4 +323,5 @@ climate:
temperature_command_topic: "study/ac/temperature/set" temperature_command_topic: "study/ac/temperature/set"
fan_mode_command_topic: "study/ac/fan/set" fan_mode_command_topic: "study/ac/fan/set"
swing_mode_command_topic: "study/ac/swing/set" swing_mode_command_topic: "study/ac/swing/set"
precision: 1.0
``` ```

View File

@ -57,3 +57,23 @@ is_cups_server:
type: boolean type: boolean
default: true default: true
{% endconfiguration %} {% endconfiguration %}
## {% linkable_title Examples %}
Default configuration for an IPP printer:
```yaml
# Example configuration.yaml entry for an IPP printer
sensor:
- platform: cups
host: PRINTER_IP
is_cups_server: false
printers:
- ipp/print
```
<div class='note'>
You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`).
</div>

View File

@ -143,6 +143,8 @@ monitored_conditions:
description: The approximate distance to the nearest storm in miles. description: The approximate distance to the nearest storm in miles.
nearest_storm_bearing: nearest_storm_bearing:
description: The approximate direction of the nearest storm in degrees, with true north at 0° and progressing clockwise. description: The approximate direction of the nearest storm in degrees, with true north at 0° and progressing clockwise.
alerts:
description: Current severe weather advisories.
units: units:
description: Specify the unit system. Valid options are `auto`, `us`, `si`, `ca` and `uk2`. `auto` will let Dark Sky decide the unit system based on location. description: Specify the unit system. Valid options are `auto`, `us`, `si`, `ca` and `uk2`. `auto` will let Dark Sky decide the unit system based on location.
required: false required: false

View File

@ -0,0 +1,73 @@
---
title: "De Lijn"
description: "Instructions on how to integrate De Lijn (Flemish public transport company) departure times into Home Assistant."
ha_release: 0.97
ha_category:
- Transport
- Sensor
ha_iot_class: Cloud Polling
logo: delijn.svg
---
The `delijn` sensor will give you the departure time of the next bus, tram or subway at a specific stop of the De Lijn public transport network in Flanders (Belgium).
## Setup
Create a developer account at [De Lijn Open Data portal](https://data.delijn.be/) to get a free API subscription key.
For valid stop IDs check for the 6 digits at the physical stops or visit the [stops page](https://www.delijn.be/en/haltes/) of the De Lijn website.
## Configuration
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: delijn
api_key: 'API_SUBSCRIPTION_KEY'
next_departure:
- stop_id: 'STOP_ID'
```
{% configuration %}
api_key:
description: "API Subscription key needed to access De Lijn API's."
required: true
type: string
next_departure:
description: One or multiple departure sensors.
required: true
type: list
keys:
stop_id:
description: "ID of the stop, e.g. `200552`."
required: true
type: string
number_of_departures:
description: "Specify the maximum number of departures/passages at a stop to retrieve"
required: false
default: 5
type: integer
{% endconfiguration %}
## Examples
### Full configuration
The example below shows a full configuration with two sensors, only the abcdefg needs to be replaced with an actual API subscription key. The first stop_id will return the default next 5 passages, the second stop_id has been forced to return the next 20 passages.
```yaml
# Example configuration.yaml entry
sensor:
# De Lijn public transport
- platform: delijn
api_key: 'abcdefg'
next_departure:
- stop_id: '200018'
- stop_id: '201169'
number_of_departures: 20
```
## Custom Lovelace card
Works best with the following custom Lovelace card: <https://github.com/bollewolle/delijn-card>

View File

@ -36,18 +36,21 @@ There is currently support for the following device types within Home Assistant:
## Configuration ## Configuration
To integrate Elk-M1 controller with Home Assistant, add the following To integrate one or more Elk-M1 controllers with Home Assistant, add the following
section to your `configuration.yaml` file: section to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
elkm1: elkm1:
host: elk://IP_ADDRESS - host: elk://IP_ADDRESS_1
...
- host: elk://IP_ADDRESS_2
prefix: gh # for guest house controller
``` ```
{% configuration %} {% configuration %}
host: host:
description: Connection string to Elk of the form `<method>://<address>[:port]`. `<method>` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `<address>` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `<port>` is the port to connect to on the Elk, defaulting to 2101 for `elk` and 2601 for `elks`. For `serial` method, _address_ is the path to the tty _/dev/ttyS1_ for example and `[:baud]` is the baud rate to connect with. description: Connection string to Elk of the form `<method>://<address>[:port]`. `<method>` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `<address>` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `<port>` is the port to connect to on the Elk, defaulting to 2101 for `elk` and 2601 for `elks`. For `serial` method, _address_ is the path to the tty _/dev/ttyS1_ for example and `[:baud]` is the baud rate to connect with. You may have multiple host sections for connecting multiple controllers.
required: true required: true
type: string type: string
username: username:
@ -58,6 +61,10 @@ password:
description: Password to login to Elk. Only required if using `elks` connection method. description: Password to login to Elk. Only required if using `elks` connection method.
required: false required: false
type: string type: string
prefix:
description: The prefix to use, if any, for all the devices created for this controller. At most one host can omit the prefix, all others must have a unique prefix within the home assistant instance.
require: false
type: string
temperature_unit: temperature_unit:
description: The temperature unit that the Elk panel uses. Valid values are `C` and `F`. description: The temperature unit that the Elk panel uses. Valid values are `C` and `F`.
required: false required: false

View File

@ -47,10 +47,10 @@ weather:
- platform: environment_canada - platform: environment_canada
``` ```
- The sensor checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. - The platform checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour.
- If no name is given, the weather entity will be named `weather.<station_name>`. - If no name is given, the weather entity will be named `weather.<station_name>`.
- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: - The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either:
- A specific station code based on [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or - A specific station code of the form `AB/s0000123` based on those listed in [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or
- A specific latitude/longitude - A specific latitude/longitude
{% configuration %} {% configuration %}
@ -67,7 +67,7 @@ station:
required: false required: false
type: string type: string
name: name:
description: Name to be used for the weather entity. description: Name to be used for the entity ID, e.g. `weather.<name>`.
required: false required: false
type: string type: string
forecast: forecast:
@ -89,11 +89,35 @@ sensor:
- platform: environment_canada - platform: environment_canada
``` ```
- By default, a sensor entity is created for each monitored condition and each category of alert. Each sensor entity will be given the `device_id` of `sensor.<optional-name_><condition>`. - A sensor will be created for each of the following conditions, with a default name like `sensor.temperature`:
- The sensor checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. - `temperature` - The current temperature, in ºC.
- `dewpoint` - The current dewpoint, in ºC.
- `wind_chill` - The current wind chill, in ºC.
- `humidex` - The current humidex, in ºC.
- `pressure` - The current air pressure, in kPa.
- `tendency` - The current air pressure tendency, e.g. "Rising".
- `humidity` - The current humidity, in %.
- `visibility` - The current visibility, in km.
- `condition` - A brief text statement of the current weather conditions, e.g. "Sunny".
- `wind_speed` - The current sustained wind speed, in km/h.
- `wind_gust` - The current wind gust, in km/h.
- `wind_dir` - The current cardinal wind direction, e.g. "SSW".
- `wind_bearing` - The current wind direction in degrees.
- `high_temp` - The next forecast high temperature, in ºC.
- `low_temp` - The next forecast low temperature, in ºC.
- `uv_index` - The next forecast UV index.
- `pop` - The next forecast probability of precipitation, in %.
- `text_summary` - A textual description of the next forecast period, e.g. "Tonight. Mainly cloudy. Low -12."
- `precip_yesterday` - The total amount of precipitation that fell the previous day.
- `warnings` - Current warning alerts.
- `watches` - Current watch alerts.
- `advisories` - Current advisory alerts.
- `statements` - Current special weather statements.
- `endings` - Alerts that have recently ended.
- The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: - The platform automatically determines which weather station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either:
- A specific station code based on [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or - A specific station code of the form `AB/s0000123` based on those listed in [this CSV file](http://dd.weatheroffice.ec.gc.ca/citypage_weather/docs/site_list_towns_en.csv), or
- A specific latitude/longitude - A specific latitude/longitude
- In the case of multiple alerts in the same category, the titles and details of each are concatenated together with a pipe (`|`) separator.
{% configuration %} {% configuration %}
latitude: latitude:
@ -108,58 +132,32 @@ station:
description: The station code of a specific weather station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. Station codes must be in the form of `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code. description: The station code of a specific weather station to use. If provided, this station will be used and any latitude/longitude coordinates provided will be ignored. Station codes must be in the form of `AB/s0000123`, where `AB`is a provincial abbreviation and `s0000123` is a numeric station code.
required: false required: false
type: string type: string
name: language:
description: Name to be used for the sensor entities. description: Language to use for entity display names and textual data (English or French).
required: false required: false
type: string type: string
monitored_conditions: default: english
description: The conditions to monitor. A sensor will be created for each condition. scan_interval:
required: true description: The time between updates in seconds.
type: list required: false
default: All keys type: integer
keys: default: 600
temperature:
description: The current temperature, in ºC.
dewpoint:
description: The current dewpoint, in ºC.
wind_chill:
description: The current wind chill, in ºC.
humidex:
description: The current humidex, in ºC.
pressure:
description: The current air pressure, in kPa.
tendency:
description: The current air pressure tendency, e.g. "Rising" or "Falling".
humidity:
description: The current humidity, in %.
visibility:
description: The current visibility, in km.
condition:
description: A brief text statement of the current weather conditions, e.g. "Sunny".
wind_speed:
description: The current sustained wind speed, in km/h.
wind_gust:
description: The current wind gust, in km/h.
wind_dir:
description: The current cardinal wind direction, e.g. "SSW".
high_temp:
description: The next forecast high temperature, in ºC.
low_temp:
description: The next forecast low temperature, in ºC.
pop:
description: The next forecast probability of precipitation, in %.
warnings:
description: Current warning alerts.
watches:
description: Current watch alerts.
advisories:
description: Current advisory alerts.
statements:
description: Current special weather statements.
endings:
description: Alerts that have recently ended.
{% endconfiguration %} {% endconfiguration %}
###Alert TTS Script
If you would like to have alerts announced via a text-to-speech service, you can use a script similar to the following:
{% raw %}
```yaml
weather_alert_tts:
sequence:
- service: tts.amazon_polly_say
data_template:
message: "{{ states('sensor.warnings') }} in effect. {{ state_attr('sensor.warnings', 'alert detail') }}"
```
{% endraw %}
## Camera ## Camera
The `environment_canada` camera platform displays Environment Canada meteorological [radar imagery](https://weather.gc.ca/radar/index_e.html). The `environment_canada` camera platform displays Environment Canada meteorological [radar imagery](https://weather.gc.ca/radar/index_e.html).
@ -172,6 +170,11 @@ camera:
- platform: environment_canada - platform: environment_canada
``` ```
<p class='note'>
On Raspbian or Hassbian, you may need to manually install additional prerequisites with the following command:
`sudo apt-get install libatlas-base-dev libopenjp2-7`
</p>
- If no name is given, the camera entity will be named `camera.<station_name>_radar`. - If no name is given, the camera entity will be named `camera.<station_name>_radar`.
- The platform automatically determines which radar station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either: - The platform automatically determines which radar station to use based on the system's latitude/longitude settings. For greater precision, it is also possible to specify either:
- A specific station ID from [this table](https://en.wikipedia.org/wiki/Canadian_weather_radar_network#List_of_radars) (remove the leading `C`, e.g. `XFT` or `ASBV`), or - A specific station ID from [this table](https://en.wikipedia.org/wiki/Canadian_weather_radar_network#List_of_radars) (remove the leading `C`, e.g. `XFT` or `ASBV`), or
@ -191,7 +194,7 @@ station:
required: false required: false
type: string type: string
name: name:
description: Name to be used for the camera entity. description: Name to be used for the entity ID, e.g. `camera.<name>`.
required: false required: false
type: string type: string
loop: loop:

View File

@ -0,0 +1,85 @@
---
title: "FleetGO"
description: "Instructions on how to use a FleetGO as a device tracker."
logo: fleetgo.png
ha_category:
- Car
ha_iot_class: Cloud Polling
ha_release: 0.76
redirect_from:
- /components/device_tracker.ritassist/
- /components/ritassist
---
The `fleetgo` device tracker platform allows you to integrate your vehicles equipped with [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map.
## Setup
To use this component, you need an **API key** and **API secret**, which can be requested by contacting [info@fleetgo.com](mailto:info@fleetgo.com?subject=API%20Key).
## Configuration
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
device_tracker:
- platform: fleetgo
client_id: YOUR_CLIENT_ID
client_secret: YOUR_CLIENT_SECRET
username: YOUR_FLEETGO_USERNAME
password: YOUR_FLEETGO_PASSWORD
include:
- LICENSE_PLATE
```
{% configuration %}
client_id:
description: The client ID used to connect to the FleetGO API.
required: true
type: string
client_secret:
description: The client secret used to connect to the FleetGO API.
required: true
type: string
username:
description: Your FleetGO username.
required: true
type: string
password:
description: Your FleetGO password.
required: true
type: string
include:
description: A list of license plates to include, if this is not specified, all vehicles will be added.
required: false
type: list
{% endconfiguration %}
See the [device tracker integration page](/components/device_tracker/) for instructions on how to configure the people to be tracked.
## Available attributes
| Attribute | Description |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| latitude | The latitude of your vehicle |
| longitude | The longitude of your vehicle |
| altitude | Altitude of your vehicle |
| id | Identifier used to identify your vehicle |
| make | The make of the vehicle |
| model | Model of your vehicle |
| license_plate | License plate number |
| active | If the engine is currently active or not |
| odo | The odometer in kilometers |
| speed | The current speed of your vehicle, in KM/h |
| last_seen | The date and time when your vehicle last communicated with the API |
| fuel_level | Fuel level of the vehicle [1] |
| malfunction_light | Are any malfunction lights burning [1] |
| coolant_temperature | Temperature of the coolant [1] |
| power_voltage | Power voltage measured by the hardware [1] |
| distance_from_home | How far is your vehicle located from your Home Assistant Home location |
| current_max_speed | The maximum speed on the road the device is currently on (if available) |
| current_address | Object with address information the device is currently on. This resolves to the closest address to the coordinates of the device. |
[1] Only available on certain cars and hardware revisions.

View File

@ -0,0 +1,75 @@
---
title: "Fortigate"
description: "Instructions on how to integrate FortiGate Firewalls into Home Assistant."
logo: fortinet.jpg
ha_category:
- Presence Detection
ha_release: 0.97
ha_iot_class: Local Polling
---
This is a FortiGate presence sensor based on device detection of the FortiGate API
## FortiGate set up
Configure the FortiGate with a USERNAME API user and assign its minimum rights profile:
```text
config system accprofile
edit "homeassistant_profile"
set authgrp read
next
end
config system api-user
edit "USERNAME"
set api-key API_KEY
set accprofile "homeassistant_profile"
set vdom "root"
config trusthost
edit 1
set ipv4-trusthost <trusted subnets>
next
end
next
end
```
## Configuration
Add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
fortigate:
host: HOST_IP
username: YPUR_USERNAME
api_key: YOUR_API_KEY
```
{% configuration %}
host:
description: The IP address of the FortiGate device.
required: true
type: string
username:
description: The username of the user that will connect to the FortiGate device.
required: true
type: string
api_key:
description: The API key associated with the user.
required: true
type: string
devices:
description: The MAC addresses of the devices to monitor.
required: false
type: string
{% endconfiguration %}
## Errors
If the rights of the profile are not sufficient, you will get the following error:
```txt
ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
```

View File

@ -0,0 +1,42 @@
---
title: "Device Tracker FortiOS"
description: "Instructions on how to use Fortinet FortiOS to track devices in Home Assistant."
logo: fortinet.jpg
ha_category:
- Presence Detection
ha_release: 0.97
ha_iot_class: Local Polling
---
This integration enables Home Assistant to do device tracking of devices with a MAC address connected to a FortiGate from [Fortinet](https://www.fortinet.com).
The integration relies on the [fortiosapi](https://pypi.org/project/fortiosapi/).
The integration has been tested both on FortiGate appliance and FortiGate VM running SW FortiOS v. 6.0.x and 6.2.0.
All devices with a MAC address identified by FortiGate would be tracked, this covers both Ethernet and WiFi devices, including devices detected by LLDP.
The integration is based on the Home Assistant `device_tracker` platform.
```yaml
# Example configuration.yaml entry
device_tracker:
- platform: fortios
host: YOUR_HOST
token: YOUR_API_USER_KEY
```
{% configuration %}
host:
description: Hostname or IP address of the FortiGate.
required: true
type: string
token:
description: "See [Fortinet Developer Network](https://fndn.fortinet.com) for how to create an API token. Remember this integration only needs read access to a FortiGate, so configure the API user to only to have limited and read-only access."
required: true
type: string
verify_ssl:
description: If the SSL certificate should be verified. In most home cases users do not have a verified certificate.
required: false
type: boolean
default: false
{% endconfiguration %}

View File

@ -0,0 +1,98 @@
---
title: "Fronius"
description: "Instructions on how to connect your Fronius Inverter to Home Assistant."
ha_category:
- Energy
- Sensor
logo: fronius.png
ha_iot_class: Local Polling
ha_release: 0.96
---
The `fronius` sensor will poll a [Fronius](http://www.fronius.com/) solar inverter, battery system or smart meter and present the values as sensors (or attributes of sensors) in Home Assistant.
## Configuration
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
sensor:
- platform: fronius
resource: FRONIUS_URL
monitored_conditions:
- sensor_type: inverter
```
{% configuration %}
resource:
description: "The IP address of the Fronius device"
required: true
type: string
monitored_conditions:
description: "Conditions to display in the frontend"
required: true
type: list
keys:
type:
description: "The kind of device, can be one of \"inverter\", \"storage\", \"meter\", or \"power_flow\""
required: true
type: string
scope:
description: "The device type for storage and inverter, can be either \"device\" or \"system\""
required: false
type: string
default: "device"
device:
description: "The id of the device to poll"
required: false
default: "\"1\" for inverters and \"0\" for other devices such as storages in compliance with Fronius Specs"
{% endconfiguration %}
## Examples
When including more of the components that one Fronius device offers,
a list of sensors that are to be integrated can be given like below.
```yaml
sensor:
- platform: fronius
resource: FRONIUS_IP_ADDRESS
monitored_conditions:
- sensor_type: inverter
device: 1
- sensor_type: meter
scope: system
- sensor_type: meter
device: 3
- sensor_type: storage
device: 0
- sensor_type: power_flow
```
## Sensors configuration
To extract more detailed values from the state of each integrated sensor and to circumvent undefined values,
it is recommended to use template sensors as an interface:
{% raw %}
```yaml
- platform: template
sensors:
electricity_inverter1_power_netto:
unit_of_measurement: 'W'
value_template: >-
{% if states.sensor.fronius_1921684247_inverter_1.attributes.power_ac is defined -%}
{{ states_attr('sensor.fronius_1921684247_inverter_1', 'power_ac') | float | round(2) }}
{%- else -%}
0
{%- endif %}
electricity_autonomy:
unit_of_measurement: '%'
value_template: >-
{% if states.sensor.fronius_1921684247_power_flow.attributes.relative_autonomy is defined -%}
{{ states_attr('sensor.fronius_1921684247_power_flow', 'relative_autonomy') | float | round(2) }}
{%- else -%}
0
{%- endif %}
```
{% endraw %}

View File

@ -14,9 +14,12 @@ The `google_maps` platform allows you to detect presence using the unofficial AP
## Configuration ## Configuration
You first need to create an additional Google account and share your location with that account. This platform will use that account to fetch the location of your device(s). You have to setup sharing through the Google Maps app on your mobile phone. You can find more information [here](https://support.google.com/accounts?p=location_sharing). You first need to create an additional Google account and share your location with that account. This platform will use that account to fetch the location of your device(s).
This platform will create a file named `.google_maps_location_sharing.cookies` extended with the slugified username where it caches your login session. 1. You have to setup sharing through the Google Maps app on your mobile phone. You can find more information [here](https://support.google.com/accounts?p=location_sharing).
2. You must use `mapscookiegettercli` to get a cookie file which can be used with this device tracker. See more information [here](#maps-cookie-getter)
3. Save the cookie file to your Home Assistant configuration directory with the following name: `.google_maps_location_sharing.cookies.` followed by the slugified username of the NEW Google account.
- For example: if your email was `location.tracker@gmail.com`, the filename would be: `.google_maps_location_sharing.cookies.location_tracker_gmail_com`.
<div class='note warning'> <div class='note warning'>
@ -32,7 +35,6 @@ To integrate Google Maps Location Sharing in Home Assistant, add the following s
device_tracker: device_tracker:
- platform: google_maps - platform: google_maps
username: YOUR_USERNAME username: YOUR_USERNAME
password: YOUR_PASSWORD
``` ```
{% configuration %} {% configuration %}
@ -48,4 +50,25 @@ max_gps_accuracy:
description: Sometimes Google Maps can report GPS locations with a very low accuracy (few kilometers). That can trigger false zoning. Using this parameter, you can filter these false GPS reports. The number has to be in meters. For example, if you put 200 only GPS reports with an accuracy under 200 will be taken into account - Defaults to 100km if not specified. description: Sometimes Google Maps can report GPS locations with a very low accuracy (few kilometers). That can trigger false zoning. Using this parameter, you can filter these false GPS reports. The number has to be in meters. For example, if you put 200 only GPS reports with an accuracy under 200 will be taken into account - Defaults to 100km if not specified.
required: false required: false
type: float type: float
scan_interval:
description: The frequency (in seconds) to check for location updates.
required: false
default: 60
type: integer
{% endconfiguration %} {% endconfiguration %}
### Maps Cookie Getter
You must run the [`mapscookiegetter`](https://mapscookiegettercli.readthedocs.io/en/latest/) tool to get the cookie file from a computer with a Web Browser. To install, your computer must have Python 3 and PIP installed:
```shell
pip3 install mapscookiegettercli
```
Then run the command:
```shell
maps-cookie-getter
```
This will open up a browser window for you to log-in to the NEW Google Account (the one you are sharing the location with, not your normal account). After logging in, the program will save the pickled cookie file `location_sharing.cookies` in the same directory as you ran the command from. Copy this to your Home Assistant configuration directory and rename as described above.

View File

@ -25,11 +25,12 @@ This integration uses the unofficial API used in the official Hive website [http
There is currently support for the following device types within Home Assistant: There is currently support for the following device types within Home Assistant:
- [Binary Sensor](#binary-sensor) - [Binary Sensor](#Binary-Sensor)
- [Climate](#climate) - [Climate](#Climate)
- [Light](#light) - [Light](#Light)
- [Sensor](#sensor) - [Sensor](#Sensor)
- [Switch](#switch) - [Switch](#Switch)
- [Water Heater](#Water-Heater)
To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file: To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file:
@ -102,3 +103,11 @@ The `hive` switch platform integrates your Hive plugs into Home Assistant, enabl
The platform supports the following Hive products: The platform supports the following Hive products:
- Hive Active Plug - Hive Active Plug
## Water Heater
The `hive` water heater platform integrates your Hive hot water into Home Assistant, enabling control of setting the **mode**.
The platform supports the following Hive products:
- Hot Water Control

View File

@ -114,11 +114,11 @@ homekit:
type: map type: map
keys: keys:
name: name:
description: Name of the entity to show in HomeKit. HomeKit will cache the name on the first run so a device must be removed and then re-added for any change to take effect. description: Name of the entity to show in HomeKit. HomeKit will cache the name on the first run so the accessory must be [reset](#resetting-accessories) for any change to take effect.
required: false required: false
type: string type: string
linked_battery_sensor: linked_battery_sensor:
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. 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 [reset](#resetting-accessories) for any change to take effect.
required: false required: false
type: string type: string
low_battery_threshold: low_battery_threshold:
@ -141,7 +141,7 @@ homekit:
required: true required: true
type: string type: string
type: type:
description: Only for `switch` entities. Type of accessory to be created within HomeKit. Valid types are `faucet`, `outlet`, `shower`, `sprinkler`, `switch` and `valve`. HomeKit will cache the type on the first run so a device must be removed and then re-added for any change to take effect. description: Only for `switch` entities. Type of accessory to be created within HomeKit. Valid types are `faucet`, `outlet`, `shower`, `sprinkler`, `switch` and `valve`. HomeKit will cache the type on the first run so a device must be [reset](#resetting-accessories) for any change to take effect.
required: false required: false
type: string type: string
default: '`switch`' default: '`switch`'
@ -460,12 +460,20 @@ To fix this, you need to unpair the `Home Assistant Bridge`, delete the `.homeki
#### The linked battery sensor isn't recognized #### 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. 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. See [resetting accessories](#resetting-accessories).
#### My media player is not showing up as a television accessory #### 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. 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. See [resetting accessories](#resetting-accessories).
#### Can't control volume of your TV media player? #### 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. 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.
#### Resetting accessories
On Home Assistant `0.97.x` or later, you may use the service `homekit.reset_accessory` with one or more entity_ids to reset accessories whose configuration may have changed. This can be useful when changing a media_player's device class to `tv`, linking a battery, or whenever HomeAssistant add supports for new HomeKit features to existing entities.
On earlier versions of Home Assistant, you can reset accessories by removing the entity from HomeKit (via [filter](#configure-filter)) and then re-adding the accessory.
With either strategy, the accessory will behave as if it's the first time the accessory has been set up, so you will need to restore the name, group, room, scene, and/or automation settings.

View File

@ -34,7 +34,7 @@ There is currently support for the following device types within Home Assistant:
- Light (HomeKit lights) - Light (HomeKit lights)
- Lock (HomeKit lock) - Lock (HomeKit lock)
- Switch (HomeKit switches) - Switch (HomeKit switches)
- Binary Sensor (HomeKit motion sensors) - Binary Sensor (HomeKit motion sensors and contact sensors)
- Sensor (HomeKit humidity, temperature, and light level sensors) - Sensor (HomeKit humidity, temperature, and light level sensors)
The integration will be automatically configured if the [`discovery`](/components/discovery/) integration is enabled. The integration will be automatically configured if the [`discovery`](/components/discovery/) integration is enabled.

View File

@ -86,6 +86,7 @@ authtoken:
* homematicip_cloud.binary_sensor * homematicip_cloud.binary_sensor
* Window and door contact (*HmIP-SWDO, -I*) * Window and door contact (*HmIP-SWDO, -I*)
* Contact Interface flush-mount 1 channel (*HmIP-FCI1*)
* Window Rotary Handle Sensor (*HmIP-SRH*) * Window Rotary Handle Sensor (*HmIP-SRH*)
* Smoke sensor and alarm (*HmIP-SWSD*) * Smoke sensor and alarm (*HmIP-SWSD*)
* Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) * Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*)
@ -110,8 +111,10 @@ authtoken:
* Temperature and humidity Sensor with display (*HmIP-STHD*) * Temperature and humidity Sensor with display (*HmIP-STHD*)
* homematicip_cloud.cover * homematicip_cloud.cover
* Shutter actuator brand-mount (*HmIP-BROLL*) * Shutter actuator for brand-mount (*HmIP-BROLL*)
* Shutter actuator flush-mount (*HmIP-FROLL*) * Shutter actuator for flush-mount (*HmIP-FROLL*)
* Blind Actuator for brand switches (*HmIP-BBL*)
* Blind Actuator for flush-mount (*HmIP-FBL*)
* homematicip_cloud.light * homematicip_cloud.light
* Switch actuator and meter for brand switches (*HmIP-BSM*) * Switch actuator and meter for brand switches (*HmIP-BSM*)
@ -138,13 +141,83 @@ authtoken:
* Switch Actuator and Meter flush-mount (*HmIP-FSM, -FSM16*) * Switch Actuator and Meter flush-mount (*HmIP-FSM, -FSM16*)
* Open Collector Module Receiver - 8x (*HmIP-MOD-OC8*) * Open Collector Module Receiver - 8x (*HmIP-MOD-OC8*)
* Multi IO Box - 2x (*HmIP-MIOB*) * Multi IO Box - 2x (*HmIP-MIOB*)
* Switch Circuit Board - 1x channels (*HmIP-PCBS*)
* Switch Circuit Board - 2x channels (*HmIP-PCBS2*)
* Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*)
* homematicip_cloud.weather * homematicip_cloud.weather
* Weather Sensor basic (*HmIP-SWO-B*) * Weather Sensor basic (*HmIP-SWO-B*)
* Weather Sensor plus (*HmIP-SWO-PL*) * Weather Sensor plus (*HmIP-SWO-PL*)
* Weather Sensor pro (*HmIP-SWO-PR*) * Weather Sensor pro (*HmIP-SWO-PR*)
Additional info: ## Services
- `homematicip_cloud.activate_eco_mode_with_duration`: Activate eco mode with duration.
- `homematicip_cloud.activate_eco_mode_with_period`: Activate eco mode with period.
- `homematicip_cloud.activate_vacation`: Activates the vacation mode until the given time.
- `homematicip_cloud.deactivate_eco_mode`: Deactivates the eco mode immediately.
- `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately.
### Service Examples
`accesspoint_id` (SGTIN) is optional for all services and only relevant if you have multiple Homematic IP Accesspoints connected to HA. If empty, service will be called for all configured Homematic IP Access Points.
The `accesspoint_id` (SGTIN) can be found on top of the integration page, or on the back of your Homematic IP Accesspoint.
Activate eco mode with duration.
```yaml
...
action:
service: homematicip_cloud.activate_eco_mode_with_duration
data:
duration: 60
accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx
```
Activate eco mode with period.
```yaml
...
action:
service: homematicip_cloud.activate_eco_mode_with_period
data:
endtime: 2019-09-17 18:00
accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx
```
Activates the vacation mode until the given time.
```yaml
...
action:
service: homematicip_cloud.activate_vacation
data:
endtime: 2019-09-17 18:00
temperature: 18.5
accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx
```
Deactivates the eco mode immediately.
```yaml
...
action:
service: homematicip_cloud.deactivate_eco_mode
data:
accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx
```
Deactivates the vacation mode immediately.
```yaml
...
action:
service: homematicip_cloud.deactivate_vacation_mode
data:
accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx
```
## Additional info
Push button devices are only available with a battery sensor. This is due to a limitation of the vendor API (eq3). Push button devices are only available with a battery sensor. This is due to a limitation of the vendor API (eq3).
It's not possible to detect a key press event on these devices at the moment. It's not possible to detect a key press event on these devices at the moment.

View File

@ -17,9 +17,11 @@ It does not support the home security functionality of TCC.
It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library. It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library.
<div class='note'> <div class='note'>
There is some potential confusion over this integration because it was previously implemented as a combination of two _distinct_ climate systems, one being US-based, the other EU-based. There is some potential confusion over this integration because it was previously implemented as a combination of two _distinct_ climate systems, one being US-based, the other EU-based.
These two regions are _not_ interchangeable, and the `eu` region is now deprecated. Ongoing support for such systems is available via the [evohome](/components/evohome/) integration. These two regions are _not_ interchangeable, and the `eu` region is now deprecated. Ongoing support for such systems is available via the [evohome](/components/evohome/) integration.
</div> </div>
### US-based Systems ### US-based Systems

View File

@ -122,8 +122,8 @@ sensor:
monitored_conditions: monitored_conditions:
- device_information.SoftwareVersion - device_information.SoftwareVersion
- device_signal.rssi - device_signal.rssi
- traffic_statistics.CurrentDownloadRate - monitoring_traffic_statistics.CurrentDownloadRate
- traffic_statistics.TotalConnectTime - monitoring_traffic_statistics.TotalConnectTime
``` ```
{% configuration %} {% configuration %}
@ -152,14 +152,14 @@ monitored_conditions:
device_signal.sinr: device_signal.sinr:
description: The signal SINR value. description: The signal SINR value.
default: default default: default
traffic_statistics.CurrentDownloadRate: monitoring_traffic_statistics.CurrentDownloadRate:
description: Current download rate, bytes/sec. description: Current download rate, bytes/sec.
traffic_statistics.CurrentUploadRate: monitoring_traffic_statistics.CurrentUploadRate:
description: Current upload rate, bytes/sec. description: Current upload rate, bytes/sec.
traffic_statistics.TotalUpload: monitoring_traffic_statistics.TotalUpload:
description: Total bytes uploaded since last reset. description: Total bytes uploaded since last reset.
traffic_statistics.TotalDownload: monitoring_traffic_statistics.TotalDownload:
description: Total bytes downloaded since last reset. description: Total bytes downloaded since last reset.
traffic_statistics.TotalConnectTime: monitoring_traffic_statistics.TotalConnectTime:
description: Total time connected since last reset. description: Total time connected since last reset.
{% endconfiguration %} {% endconfiguration %}

View File

@ -21,7 +21,7 @@ redirect_from:
The `lcn` integration for Home Assistant allows you to connect to [LCN](http://www.lcn.eu) hardware devices. The `lcn` integration for Home Assistant allows you to connect to [LCN](http://www.lcn.eu) hardware devices.
The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and a LCN hardware coupler. Alternatively a LCN-PKE coupler can be used which offers two PCHK licenses. The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and an LCN hardware coupler. Alternatively, an LCN-PKE coupler can be used which offers two PCHK licenses.
With this setup sending and receiving commands to and from LCN modules is possible. With this setup sending and receiving commands to and from LCN modules is possible.
There is currently support for the following device types within Home Assistant: There is currently support for the following device types within Home Assistant:
@ -36,8 +36,8 @@ There is currently support for the following device types within Home Assistant:
<div class='note'> <div class='note'>
Please note: Besides the implemented platforms the `lcn` integration offers a variety of [service calls](#services). Please note: Besides the implemented platforms, the `lcn` integration offers a variety of [service calls](#services).
These service calls cover functionalities of the LCN system which cannot be represented by the platform implementations. These service calls cover functionalities of the LCN system, which cannot be represented by the platform implementations.
They are ideal to be used in automation scripts or for the `template` platforms. They are ideal to be used in automation scripts or for the `template` platforms.
</div> </div>
@ -45,7 +45,7 @@ There is currently support for the following device types within Home Assistant:
## Configuration ## Configuration
To use your LCN system in your installation, add the following lines to your `configuration.yaml` file. To use your LCN system in your installation, add the following lines to your `configuration.yaml` file.
You have to specify at least one ip/port with login credentials for a PCHK host. You have to specify at least one IP/port with login credentials for a PCHK host.
Consider to store your credentials in a [secrets.yaml](/docs/configuration/secrets). Consider to store your credentials in a [secrets.yaml](/docs/configuration/secrets).
```yaml ```yaml
@ -97,7 +97,7 @@ lcn:
address: myhome.s0.m7 address: myhome.s0.m7
source: var3 source: var3
unit_of_measurement: °C unit_of_measurement: °C
switches: switches:
- name: Sprinkler switch - name: Sprinkler switch
address: myhome.s0.m7 address: myhome.s0.m7
@ -219,6 +219,10 @@ covers:
description: "Motor port ([MOTOR_PORT](#ports))." description: "Motor port ([MOTOR_PORT](#ports))."
required: true required: true
type: string type: string
reverse_time:
description: "Reverse time ([REVERSE_TIME](#variables-and-units), see also [Cover](#cover))."
required: false
type: string
lights: lights:
description: List of your lights. description: List of your lights.
@ -329,7 +333,7 @@ Modules can be arranged in _segments_. Segments can be addressed by their numeri
LCN Modules within the _same_ segment can be grouped by their group id (5..254) or 3 (= target all groups.) LCN Modules within the _same_ segment can be grouped by their group id (5..254) or 3 (= target all groups.)
The LCN integration allows the connection to more than one hardware coupler. In this case it has to be specified which hardware coupler should be used for addressing the specified module. The LCN integration allows the connection to more than one hardware coupler. In this case, it has to be specified which hardware coupler should be used for addressing the specified module.
Whenever the address of a module or a group has to be specified, it can be addressed using one of the following syntaxes: Whenever the address of a module or a group has to be specified, it can be addressed using one of the following syntaxes:
@ -363,12 +367,12 @@ The platforms and service calls use several predefined constants as parameters.
| -------- | ------ | | -------- | ------ |
| OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` | | OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` |
| RELAY_PORT | `relay1`, `relay2`, `relay3`, `relay4`, `relay5`, `relay6`, `relay7`, `relay8` | | RELAY_PORT | `relay1`, `relay2`, `relay3`, `relay4`, `relay5`, `relay6`, `relay7`, `relay8` |
| MOTOR_PORT | `motor1`, `motor2`, `motor3`, `motor4` | | MOTOR_PORT | `motor1`, `motor2`, `motor3`, `motor4`, `outputs` |
| LED_PORT | `led1`, `led2`, `led3`, `led4`, `led5`, `led6`, `led7`, `led8`, `led9`, `led10`, `led11`, `led12` | | LED_PORT | `led1`, `led2`, `led3`, `led4`, `led5`, `led6`, `led7`, `led8`, `led9`, `led10`, `led11`, `led12` |
| LOGICOP_PORT | `logicop1`, `logicop2`, `logicop3`, `logicop4` | | LOGICOP_PORT | `logicop1`, `logicop2`, `logicop3`, `logicop4` |
| BINSENSOR_PORT | `binsensor1`, `binsensor2`, `binsensor3`, `binsensor4`, `binsensor5`, `binsensor6`, `binsensor7`, `binsensor8` | | BINSENSOR_PORT | `binsensor1`, `binsensor2`, `binsensor3`, `binsensor4`, `binsensor5`, `binsensor6`, `binsensor7`, `binsensor8` |
The [MOTOR_PORT](#ports) values specify which hardware relay configuration will be used: The [MOTOR_PORT](#ports) values specify which hardware relay or outputs configuration will be used:
| Motor | Relay on/off | Relay up/down | | Motor | Relay on/off | Relay up/down |
| :------: | :----------: | :-----------: | | :------: | :----------: | :-----------: |
@ -377,6 +381,11 @@ The [MOTOR_PORT](#ports) values specify which hardware relay configuration will
| `motor3` | `relay5` | `relay6` | | `motor3` | `relay5` | `relay6` |
| `motor4` | `relay7` | `relay8` | | `motor4` | `relay7` | `relay8` |
| Motor | Output up | Output down |
| :-------: | :-------: | :---------: |
| `outputs` | `output1` | `output2` |
### Variables and Units ### Variables and Units
| Constant | Values | | Constant | Values |
@ -388,6 +397,7 @@ The [MOTOR_PORT](#ports) values specify which hardware relay configuration will
| VAR_UNIT | `native`, `°C`, `°K`, `°F`, `lux_t`, `lux_i`, `m/s`, `%`, `ppm`, `volt`, `ampere`, `degree` | | VAR_UNIT | `native`, `°C`, `°K`, `°F`, `lux_t`, `lux_i`, `m/s`, `%`, `ppm`, `volt`, `ampere`, `degree` |
| TIME_UNIT | `seconds`, `minutes`, `hours`, `days` | | TIME_UNIT | `seconds`, `minutes`, `hours`, `days` |
| RELVARREF | `current`, `prog` | | RELVARREF | `current`, `prog` |
| REVERSE_TIME | `rt70`, `rt600`, `rt1200` |
### States: ### States:
@ -417,19 +427,30 @@ The binary sensor can be used in automation scripts or in conjunction with `temp
### Climate ### Climate
The `lcn` climate platform allows the control of the [LCN](http://www.lcn.eu) climate regulators. The `lcn` climate platform allows the control of the [LCN](http://www.lcn.eu) climate regulators.
This platform depends on the correct configuration of the module's regulators which has to be done in the LCN-PRO programming software. This platform depends on the correct configuration of the module's regulators, which has to be done in the LCN-PRO programming software.
You need to specify at least the variable for the current temperature and a setpoint variable for the target temperature. You need to specify at least the variable for the current temperature and a setpoint variable for the target temperature.
If the control is set lockable, the regulator can be turned on/off. If the control is set lockable, the regulator can be turned on/off.
<div class='note'> <div class='note'>
If you intend to leave the regulation to home assistant, you should consider using the [Generic Thermostat](/components/generic_thermostat/) in conjunction with [LCN Sensor](#sensor) and [LCN Switch](#switch). If you intend to leave the regulation to Home Assistant, you should consider using the [Generic Thermostat](/components/generic_thermostat/) in conjunction with [LCN Sensor](#sensor) and [LCN Switch](#switch).
</div> </div>
### Cover ### Cover
The `lcn` cover platform allows the control of [LCN](http://www.lcn.eu) relays which have been configured as motor controllers. The `lcn` cover platform allows the control of [LCN](http://www.lcn.eu) relays and output ports which have been configured as motor controllers.
Only for the module with firmware earlier than 190C:<br>
The configuration allows the optional definition of reverse time. This is the time which is waited during the switching of the motor currents.
The reverse time should only be defined when using the [MOTOR_PORT](#ports) value `OUTPUTS`. For all other configuration, the reverse time has to be defined in the LCN Pro software.
For the reverse time, you may choose one of the following constants: `RT70` (70ms), `RT600` (600ms), `RT1200` (1,2s).
<p class='note'>
If you are using the module's output ports for motor control, ensure that you have configured the output ports as motor controllers in the LCN Pro software!
Otherwise, the output ports are not mutually interlocked and you run the risk of destroying the motor.
</p>
### Light ### Light
@ -457,7 +478,7 @@ The sensor can be used in automation scripts or in conjunction with `template` p
<div class='note'> <div class='note'>
Ensure that the LCN module is configured properly to provide the requested value. Ensure that the LCN module is configured properly to provide the requested value.
Otherwise the module might show unexpected behavior or return error messages. Otherwise, the module might show unexpected behavior or return error messages.
</div> </div>
### Switch ### Switch
@ -470,7 +491,7 @@ The `lcn` switch platform allows the control of the following [LCN](http://www.l
## Services ## Services
In order to directly interact with the LCN system, and invoke commands which are not covered by the implemented platforms, the following service calls can be used. In order to directly interact with the LCN system, and invoke commands which are not covered by the implemented platforms, the following service calls can be used.
Refer to the (Services Calls)[/docs/scripts/service-calls] page for examples on how to use them. Refer to the (Services Calls)[/docs/scripts/service-calls] page for examples on how to use them.
### Service `output_abs` ### Service `output_abs`
@ -479,9 +500,9 @@ Set absolute brightness of output port in percent.
| Service data attribute | Optional | Description | Values | | Service data attribute | Optional | Description | Values |
| ---------------------- | -------- | ----------- | ------ | | ---------------------- | -------- | ----------- | ------ |
| `address` | No | [LCN address](#lcn-addresses) | | `address` | No | [LCN address](#lcn-addresses) |
| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `output` | No | Output port of module | [OUTPUT_PORT](#ports) |
| `brightness` | Yes | Absolute brightness in percent | 0..100 | | `brightness` | Yes | Absolute brightness in percent | 0..100 |
| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 |
Example: Example:
@ -501,9 +522,9 @@ Set relative brightness of output port in percent.
| Service data attribute | Optional | Description | Values | | Service data attribute | Optional | Description | Values |
| ---------------------- | -------- | ----------- | ------ | | ---------------------- | -------- | ----------- | ------ |
| `address` | No | [LCN address](#lcn-addresses) | | `address` | No | [LCN address](#lcn-addresses) |
| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `output` | No | Output port of module | [OUTPUT_PORT](#ports) |
| `brightness` | Yes | Relative brightness in percent | -100..100 | | `brightness` | Yes | Relative brightness in percent | -100..100 |
| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 |
Example: Example:
@ -522,8 +543,8 @@ Toggle output port.
| Service data attribute | Optional | Description | Values | | Service data attribute | Optional | Description | Values |
| ---------------------- | -------- | ----------- | ------ | | ---------------------- | -------- | ----------- | ------ |
| `address` | No | [LCN address](#lcn-addresses) | | `address` | No | [LCN address](#lcn-addresses) |
| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `output` | No | Output port of module | [OUTPUT_PORT](#ports) |
| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 |
Example: Example:
@ -682,7 +703,7 @@ data:
Send keys (which executes bound commands). Send keys (which executes bound commands).
The keys attribute is a string with one or more key identifiers. Example: `a1a5d8` The keys attribute is a string with one or more key identifiers. Example: `a1a5d8`
If `state` is not defined, it is assumed to be `hit`. If `state` is not defined, it is assumed to be `hit`.
The command allow the sending of keys immediately or deferred. For a deferred sendig the attributes `time` and `time_unit` have to be specified. For deferred sending the only key state allowed is `hit`. The command allows the sending of keys immediately or deferred. For a deferred sending the attributes `time` and `time_unit` have to be specified. For deferred sending, the only key state allowed is `hit`.
If `time_unit` is not defined, it is assumed to be `seconds`. If `time_unit` is not defined, it is assumed to be `seconds`.
| Service data attribute | Optional | Description | Values | | Service data attribute | Optional | Description | Values |
@ -717,9 +738,9 @@ data:
### Service `lock_keys` ### Service `lock_keys`
Locks keys. Locks keys.
If table is not defined, it is assumend to be table `a`. If the table is not defined, it is assumed to be table `a`.
The key lock states are defined as a string with eight characters. Each character represents the state change of a key lock (1=on, 0=off, t=toggle, -=nochange). The key lock states are defined as a string with eight characters. Each character represents the state change of a key lock (1=on, 0=off, t=toggle, -=nochange).
The command allows the locking of keys for a specified time period. For a time period the attributes `time` and `time_unit` have to be specified. For a time period only table `a` is allowed. The command allows the locking of keys for a specified time period. For a time period, the attributes `time` and `time_unit` have to be specified. For a time period, only table `a` is allowed.
If `time_unit` is not defined, it is assumed to be `seconds`. If `time_unit` is not defined, it is assumed to be `seconds`.
| Service data attribute | Optional | Description | Values | | Service data attribute | Optional | Description | Values |

View File

@ -70,7 +70,7 @@ For single-action buttons (scene selection, etc.), `action` will be `single`, an
## Scene ## Scene
This integration uses keypad programming to identify scenes. Currently, it only works with SeeTouch keypads. This integration uses keypad programming to identify scenes. Currently, it works with seeTouch, hybrid seeTouch, main repeater, homeowner, and seeTouch RF tabletop keypads.
The Lutron scene platform allows you to control scenes programmed into your SeeTouch keypads. The Lutron scene platform allows you to control scenes programmed into your SeeTouch keypads.
After setup, scenes will appear in Home Assistant using the area, keypad and button name. After setup, scenes will appear in Home Assistant using the area, keypad and button name.

View File

@ -53,6 +53,12 @@ password:
description: The password of the given user account on the MikroTik device. description: The password of the given user account on the MikroTik device.
required: true required: true
type: string type: string
login_method:
description: The login method to use on the MikroTik device. The `plain` method is used by default, if you have an older RouterOS Version than 6.43, use `token` as the login method.
required: false
type: string
options: plain, token
default: plain
port: port:
description: RouterOS API port. description: RouterOS API port.
required: false required: false
@ -69,6 +75,15 @@ method:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
<div class='note info'>
As of version 6.43 of RouterOS Mikrotik introduced a new login method (plain) in addition to the old login method (token). With Version 6.45.1 the old token login method got deprecated.
In order to support both login mechanisms, the new config option `login_method` has been introduced. If this option is not set, the component will try to login with the plain method first and the token method if that fails.
That can cause log entries on the router like `login failure for user homeassistant from 192.168.23.10 via api` but doesn't keep the component from working.
To get rid of these entries, set the `login_method` to `plain` for Routers with OS versions > 6.43 or `token` for routers with OS versions < 6.43.
</div>
## Use a certificate ## Use a certificate
To use SSL to connect to the API (via `api-ssl` instead of `api` service) further configuration is required at RouterOS side. You have to upload or generate a certificate and configure `api-ssl` service to use it. Here is an example of a self-signed certificate: To use SSL to connect to the API (via `api-ssl` instead of `api` service) further configuration is required at RouterOS side. You have to upload or generate a certificate and configure `api-ssl` service to use it. Here is an example of a self-signed certificate:

View File

@ -44,7 +44,7 @@ lines:
products: products:
description: One or more modes of transport. description: One or more modes of transport.
required: false required: false
default: all 4 modes ['U-Bahn', 'Tram', 'Bus', 'S-Bahn'] default: all 5 modes ['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'Nachteule']
type: list type: list
timeoffset: timeoffset:
description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop.

View File

@ -25,6 +25,17 @@ n26:
password: YOUR_PASSWORD password: YOUR_PASSWORD
``` ```
It is possible to add more than one account:
```yaml
# Example configuration.yaml entry
n26:
- username: YOUR_EMAIL1
password: YOUR_PASSWORD1
- username: YOUR_EMAIL2
password: YOUR_PASSWORD2
```
{% configuration %} {% configuration %}
username: username:
description: The account username. description: The account username.

View File

@ -33,6 +33,11 @@ password:
description: Password for the Neato account. description: Password for the Neato account.
required: true required: true
type: string type: string
vendor:
description: Support for additional vendors. Set to `vorwerk` for Vorwerk robots.
required: false
type: string
default: neato
{% endconfiguration %} {% endconfiguration %}
<div class='note'> <div class='note'>

View File

@ -41,7 +41,7 @@ token:
## Services ## Services
### Service `nuki_unlatch` ### Service `open`
This will unlatch the door, ie. open it (provided this works with your type of door). This will unlatch the door, ie. open it (provided this works with your type of door).
@ -49,7 +49,7 @@ This will unlatch the door, ie. open it (provided this works with your type of d
| ---------------------- | -------- | ----------- | | ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. | `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks.
### Service `nuki_lock_n_go` ### Service `lock_n_go`
This will first unlock, wait a few seconds (20 by default) then re-lock. The wait period can be customized through the app. This will first unlock, wait a few seconds (20 by default) then re-lock. The wait period can be customized through the app.
See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking-with-the-smart-lock/) for more details about this feature. See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking-with-the-smart-lock/) for more details about this feature.
@ -58,3 +58,11 @@ See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking
| ---------------------- | -------- | ----------- | | ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. | `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks.
| `unlatch` | yes | Boolean - Whether to unlatch the door when first opening it. | `unlatch` | yes | Boolean - Whether to unlatch the door when first opening it.
### Service `check_connection`
This will force the communication between the bridge and the lock, updating the available attribute.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks.

View File

@ -513,10 +513,6 @@ Possible LED modes and their meaning are listed here:
* M. Boiler requires maintenance. * M. Boiler requires maintenance.
* P. Raised power mode active on thermostat interface. * P. Raised power mode active on thermostat interface.
<div class='note'>
The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat.
</div>
# Example # Example
A full configuration example with two configured OpenTherm Gateways - one connected via USB, the other over the network - looks like the one below. A full configuration example with two configured OpenTherm Gateways - one connected via USB, the other over the network - looks like the one below.

View File

@ -40,9 +40,86 @@ timeout:
description: Number of seconds (float) to wait for blocking operations like connect, write and read. description: Number of seconds (float) to wait for blocking operations like connect, write and read.
required: false required: false
type: float type: float
sources:
description: A list of mappings from source friendly name to the source code (e.g. `TV:'05'`). Valid source codes depend on the receiver (some known codes can be found below). Codes must be defined as strings (between single or double quotation marks) so that `05` is not implicitly transformed to `5`, which wouldn't be valid source code.
required: false
default: Empty list (i.e. no source selection will be possible)
type: list
{% endconfiguration %} {% endconfiguration %}
Notes: Notes:
- Some Pioneer AVRs use the port 23 default and some are reported to use 8102. - Some Pioneer AVRs use the port 23 default and some are reported to use 8102.
- `timeout` is a socket level option and should only be configured if you know what you are doing. - `timeout` is a socket level option and should only be configured if you know what you are doing.
### Source codes
Under these lines, you can find some sample `sources` lists per receiver model. Here we use the source names as shown on the remote as key for each code. However these are for display purposes only, so you could rename inputs to better match your set-up (e.g. `HDMI: '19'` to `Kodi: '19'`.
Codes must be defined as strings (between single or double quotation marks) so that `05` is not implicitly transformed to `5`, which wouldn't be valid source code.
#### VSX-921
```yaml
sources:
'PHONO': '00'
'CD': '01'
'CD-R/TAPE': '03'
'DVD': '04'
'TV/SAT': '05'
'VIDEO 1(VIDEO)': '10'
'VIDEO 2': '14'
'DVR/BDR': '15'
'iPod/USB': '17'
'HDMI1': '19'
'HDMI2': '20'
'HDMI3': '21'
'HDMI4': '22'
'HDMI5': '23'
'HDMI6': '24'
'BD': '25'
'HOME MEDIA GALLERY(Internet Radio)': '26'
```
#### VSX-822-K
```yaml
sources:
'CD': '01'
'Tuner': '02'
'DVD': '04'
'TV': '05'
'Sat/Cbl': '06'
'Video': '10'
'DVR/BDR': '15'
'iPod/USB': '17'
'BD': '25'
'Adapter': '33'
'Netradio': '38'
'Pandora': '41'
'Media Server': '44'
'Favorites': '45'
'Game': '49'
```
#### VSX-824
```yaml
sources:
'CD': '01'
'Tuner': '02'
'DVD': '04'
'TV': '05'
'Sat/Cbl': '06'
'Video': '10'
'DVR/BDR': '15'
'iPod/USB': '17'
'HDMI': '19'
'BD': '25'
'Adapter': '33'
'Netradio': '38'
'Media Server': '44'
'Favorites': '45'
'MHL': '48'
'Game': '49'
```

View File

@ -53,10 +53,13 @@ Example Automation:
url: "https://www.home-assistant.io/" url: "https://www.home-assistant.io/"
sound: pianobar sound: pianobar
priority: 0 priority: 0
attachment: "http://example.com/image.png"
``` ```
Component specific values in the nested `data` section are optional. Component specific values in the nested `data` section are optional.
Image attachments can be added using the `attachment` parameter, which can either be a valid URL for an image (ex: `http://example.com/image.png`) or a local file reference (ex: `/tmp/image.png`).
To use notifications, please see the [getting started with automation page](/getting-started/automation/). To use notifications, please see the [getting started with automation page](/getting-started/automation/).
When sending a notification, optional parameters can also be set as per the pushover [API documentation](https://pushover.net/api). When sending a notification, optional parameters can also be set as per the pushover [API documentation](https://pushover.net/api).
@ -80,6 +83,7 @@ alexa:
sound: falling sound: falling
device: pixel device: pixel
url: "https://www.home-assistant.io/" url: "https://www.home-assistant.io/"
attachment: "/tmp/image.png"
``` ```
{% endraw %} {% endraw %}

View File

@ -60,3 +60,4 @@ climate:
- 192.168.99.137 - 192.168.99.137
- 192.168.99.202 - 192.168.99.202
``` ```
Humidity is now available as the `current_humidity` attribute for each `climate.$HOST` entity. This only works for RadioThermostat devices that have a built in humidity sensor.

View File

@ -0,0 +1,40 @@
---
title: "Rainforest Eagle-200"
description: "Instructions on how to setup the Rainforest Eagle-200 with Home Assistant."
logo: rainforest_automation_logo.png
ha_category:
- Energy
- Sensor
ha_release: 0.96
ha_iot_class: Local Polling
---
A `sensor` platform for the [Rainforest Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) energy gateway.
## Configuration
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: rainforest_eagle
ip_address: IP_FOR_EAGLE
cloud_id: CLOUD_ID_FROM_EAGLE
install_code: INSTALL_CODE_FROM_EAGLE
```
{% configuration %}
ip_address:
description: The local IP address of your Eagle-200 device.
required: true
type: string
cloud_id:
description: The Cloud ID that is printed on the bottom of the Eagle-200
required: true
type: string
install_code:
description: The Install Code that is printed on the bottom of the Eagle-200
required: true
type: string
{% endconfiguration %}

View File

@ -20,9 +20,9 @@ If you know the exact name of the stop you can search the stop_id with the follo
If you don't know the name of the stop follow this guide: If you don't know the name of the stop follow this guide:
- Go to [https://www.openstreetmap.org](https://www.openstreetmap.org) - Go to [https://www.openstreetmap.org](https://www.openstreetmap.org)
- Make a search and fill in the location you want to find for. - Make a search and fill in the location you want to find for.
- The url will look like this [https://www.openstreetmap.org/#map=18/56.15756/10.20674](https://www.openstreetmap.org/#map=18/56.15756/10.20674) - The url will look like this [https://www.openstreetmap.org/#map=18/56.15756/10.20674](https://www.openstreetmap.org/#map=18/56.15756/10.20674)
- Now insert the coordinates for the location in the url, in this example it will be: [http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&](http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&) - Now insert the coordinates for the location in the url, in this example it will be: [http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&](http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=56.15756&coordY=10.20674&)
- You will now see the 30 stops closest to your location. - You will now see the 30 stops closest to your location.
You will se a output like this: You will se a output like this:
@ -118,7 +118,36 @@ The sensor can filter the timetables by one or more routes, directions and types
|--------------|-------------| |--------------|-------------|
| BUS | Normal bus | | BUS | Normal bus |
| EXB | Express bus | | EXB | Express bus |
| TB | Harbour bus|
| LET | Letbanen | | LET | Letbanen |
| M | Metro | | M | Metro |
| S | S-train | | S | S-train |
| REG | Regional train | | REG | Regional train |
| IC | Intercity train |
| LYN | Intercity express train |
| TOG | Other trains |
## Attributes
| Attribute | Description |
| ------------ | -------------------------------------- |
| `due_in` | Minutes until departure |
| `due_at` | Departure date and time |
| `type` | Transport type |
| `route` | Route code |
| `direction` | Destination stop |
| `stop` | Departure stop |
| `stop_id` | ID of departure stop |
| `attribution` | Attribution (required by data source) |
| `next_departures` | List of further departures |
### `next_departures`
| Attribute | Description |
| ------------ | -------------------------------------- |
| `due_in` | Minutes until departure |
| `due_at` | Departure date and time |
| `type` | Transport type |
| `route` | Route code |
| `direction` | Destination stop |
| `stop` | Departure stop |

View File

@ -1,84 +0,0 @@
---
title: "RitAssist"
description: "Instructions on how to use a RitAssist as a device tracker."
logo: ritassist.png
ha_category:
- Car
ha_iot_class: Cloud Polling
ha_release: 0.76
redirect_from:
- /components/device_tracker.ritassist/
---
The `ritassist` device tracker platform allows you to integrate your vehicles equipped with [RitAssist](https://ritassist.nl/) or [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map.
## Setup
To use this component, you need an **API key** and **API secret**, which can be requested by contacting [info@fleetgo.com](mailto:info@fleetgo.com?subject=API%20Key).
## Configuration
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
device_tracker:
- platform: ritassist
client_id: YOUR_CLIENT_ID
client_secret: YOUR_CLIENT_SECRET
username: YOUR_RITASSIST_USERNAME
password: YOUR_RITASSIST_PASSWORD
include:
- LICENSE_PLATE
```
{% configuration %}
client_id:
description: The client ID used to connect to the RitAssist API.
required: true
type: string
client_secret:
description: The client secret used to connect to the RitAssist API.
required: true
type: string
username:
description: Your RitAssist username.
required: true
type: string
password:
description: Your RitAssist password.
required: true
type: string
include:
description: A list of license plates to include, if this is not specified, all vehicles will be added.
required: false
type: list
{% endconfiguration %}
See the [device tracker integration page](/components/device_tracker/) for instructions on how to configure the people to be tracked.
## Available attributes
| Attribute | Description |
|---|---|
| latitude | The latitude of your vehicle |
| longitude | The longitude of your vehicle |
| altitude | Altitude of your vehicle |
| id | Identifier used to identify your vehicle |
| make | The make of the vehicle |
| model | Model of your vehicle |
| license_plate | License plate number |
| active | If the engine is currently active or not |
| odo | The odometer in kilometers |
| speed | The current speed of your vehicle, in KM/h |
| last_seen | The date and time when your vehicle last communicated with the API |
| fuel_level | Fuel level of the vehicle [1] |
| malfunction_light | Are any malfunction lights burning [1] |
| coolant_temperature | Temperature of the coolant [1] |
| power_voltage | Power voltage measured by the hardware [1] |
| distance_from_home | How far is your vehicle located from your Home Assistant Home location |
| current_max_speed | The maximum speed on the road the device is currently on (if available) |
| current_address | Object with address information the device is currently on. This resolves to the closest address to the coordinates of the device. |
[1] Only available on certain cars and hardware revisions.

View File

@ -8,7 +8,7 @@ ha_release: 0.47
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
--- ---
The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0). The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a webservice that provides detailed weather information for users in The Netherlands. The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0).
The selected weather station will provide all weather data, with the exception of the forecasted precipitation. The forecasted precipitation data will be retrieved from buienradar using your actual gps-location (and not the location of the nearest weather station). The selected weather station will provide all weather data, with the exception of the forecasted precipitation. The forecasted precipitation data will be retrieved from buienradar using your actual gps-location (and not the location of the nearest weather station).
@ -40,7 +40,7 @@ longitude:
required: false required: false
type: float type: float
timeframe: timeframe:
description: "Minutes to look ahead for precipitation forecast (min: 5 / max: 120)." description: Minutes to look ahead for precipitation forecast (minimum 5, maximum 120).
required: false required: false
default: 60 default: 60
type: integer type: integer
@ -51,8 +51,12 @@ monitored_conditions:
keys: keys:
stationname: stationname:
description: The name of the selected meteo-station. description: The name of the selected meteo-station.
barometerfc:
description: A numeric barametric forecast (1 to 7)
barometerfcname:
description: "A textual representation of the barometer forecast (eg: Thunderstorms, Stable, etc.)."
conditioncode: conditioncode:
description: A symbol and a unique code identifying the current weather condition ([a..z]). description: "A symbol and a unique code identifying the current weather condition ([a..z])."
condition: condition:
description: A symbol and the current weather condition (`clear`, `cloudy`, `fog`, `rainy`, `snowy` or `lightning`). description: A symbol and the current weather condition (`clear`, `cloudy`, `fog`, `rainy`, `snowy` or `lightning`).
conditiondetailed: conditiondetailed:
@ -61,6 +65,8 @@ monitored_conditions:
description: A symbol with the full current weather condition (in English). description: A symbol with the full current weather condition (in English).
symbol: symbol:
description: A symbol for the current weather with the full current condition (in Dutch). description: A symbol for the current weather with the full current condition (in Dutch).
feeltemperature:
description: "The current feel temperature (in [C](https://en.wikipedia.org/wiki/Celsius))."
humidity: humidity:
description: The relative humidity (%). description: The relative humidity (%).
temperature: temperature:
@ -72,7 +78,7 @@ monitored_conditions:
windforce: windforce:
description: "The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)." description: "The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)."
winddirection: winddirection:
description: "Where the wind is coming from: N (North),Z (south), NO (North-East), etc." description: "Where the wind is coming from: N (North), Z (south), NO (North-East), etc."
windazimuth: windazimuth:
description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise.
pressure: pressure:
@ -89,6 +95,10 @@ monitored_conditions:
description: The total expected precipitation/rain in mm within the given time-frame. The total expected rain in the configured time-frame will be equal to _precipitation_forecast_total_/_timeframe_ mm/min. So, with time-frame configured to 30 minutes and a value of 5, the expected rain is 5 mm in 30 minutes, which is the same as 10 mm/h. If time-frame is set to 90 minutes and a value of 5, the expected rain is 5 mm in 90 minutes, which is equal to 3.3 mm/h. description: The total expected precipitation/rain in mm within the given time-frame. The total expected rain in the configured time-frame will be equal to _precipitation_forecast_total_/_timeframe_ mm/min. So, with time-frame configured to 30 minutes and a value of 5, the expected rain is 5 mm in 30 minutes, which is the same as 10 mm/h. If time-frame is set to 90 minutes and a value of 5, the expected rain is 5 mm in 90 minutes, which is equal to 3.3 mm/h.
irradiance: irradiance:
description: "Sun intensity in Watt per square meter ([W/m2](https://en.wikipedia.org/wiki/W/m2))." description: "Sun intensity in Watt per square meter ([W/m2](https://en.wikipedia.org/wiki/W/m2))."
rainlast24hour:
description: The rail over the last 24 hours (in mm).
rainlasthour:
description: The rail over the last hour (in mm).
temperature_1d: temperature_1d:
description: "The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." description: "The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius))."
mintemp_1d: mintemp_1d:
@ -98,11 +108,21 @@ monitored_conditions:
sunchance_1d: sunchance_1d:
description: The forecasted chance for sun (%). description: The forecasted chance for sun (%).
rain_1d: rain_1d:
description: "The forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)." description: "The forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre); the average of minrain_1d and maxrain_1d."
minrain_1d:
description: "The minimum forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)."
maxrain_1d:
description: "The maximum forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)."
snow_1d: snow_1d:
description: "The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre)." description: "The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre)."
windazimuth_1d:
description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. (derived from winddirection_1d)
winddirection_1d:
description: "Where the wind will be coming from: N (North), Z (south), NO (North-East), etc."
windforce_1d: windforce_1d:
description: "The expected windforce in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)." description: "The expected windforce in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)."
windspeed_1d:
description: "The expected windspeed in [m/s](https://en.wikipedia.org/wiki/M/s) (derived from windforce_1d)."
conditioncode_1d: conditioncode_1d:
description: Symbol and condition code of the expected condition. description: Symbol and condition code of the expected condition.
condition_1d: condition_1d:
@ -145,11 +165,14 @@ Full configuration example (excluding forecasted conditions) where location is m
longitude: 5.70 longitude: 5.70
monitored_conditions: monitored_conditions:
- stationname - stationname
- barometerfc
- barometerfcname
- conditioncode - conditioncode
- condition - condition
- conditiondetailed - conditiondetailed
- conditionexact - conditionexact
- symbol - symbol
- feeltemperature
- humidity - humidity
- temperature - temperature
- groundtemperature - groundtemperature
@ -164,6 +187,8 @@ Full configuration example (excluding forecasted conditions) where location is m
- irradiance - irradiance
- precipitation_forecast_average - precipitation_forecast_average
- precipitation_forecast_total - precipitation_forecast_total
- rainlast24hour
- rainlasthour
``` ```
Configuration example with current condition and (some) forecasted values: Configuration example with current condition and (some) forecasted values:
@ -190,21 +215,23 @@ sensor:
- temperature_3d - temperature_3d
- temperature_4d - temperature_4d
- temperature_5d - temperature_5d
- mintemp_1d
- rainchance_1d - rainchance_1d
- rainchance_2d - rainchance_2d
- rainchance_3d
- rainchance_4d
- rainchance_5d
- sunchance_1d - sunchance_1d
- sunchance_2d - sunchance_2d
- sunchance_3d
- sunchance_4d
- sunchance_5d
- rain_1d - rain_1d
- rain_2d - rain_2d
- rain_3d - minrain_1d
- rain_4d - maxrain_1d
- rain_5d - windforce_1d
- windforce_2d
- windspeed_1d
- windspeed_2d
- winddirection_1d
- winddirection_2d
- windazimuth_1d
- windazimuth_2d
``` ```
[Usage statement:](https://www.buienradar.nl/overbuienradar/gratis-weerdata) [Usage statement:](https://www.buienradar.nl/overbuienradar/gratis-weerdata)

View File

@ -15,6 +15,8 @@ There is currently support for the following device types within Home Assistant:
- Alarm - Alarm
## Configuration
To enable this component, add the following lines to your `configuration.yaml`: To enable this component, add the following lines to your `configuration.yaml`:
```yaml ```yaml
@ -39,3 +41,28 @@ code:
required: false required: false
type: string type: string
{% endconfiguration %} {% endconfiguration %}
## Services
Note that the `system_id` parameter required by the below service calls can be discovered
by looking at the device state attributes for the integration's `alarm_control_panel`
entity.
### `simplisafe.remove_pin`
Remove a SimpliSafe PIN (by label or PIN value).
| Service Data Attribute | Optional | Description |
|---------------------------|----------|---------------------------------------------|
| `system_id` | no | The ID of the system to remove the PIN from |
| `label_or_pin` | no | The PIN label or value to remove |
### `simplisafe.set_pin`
Set a SimpliSafe PIN.
| Service Data Attribute | Optional | Description |
|---------------------------|----------|---------------------------------------------|
| `system_id` | no | The ID of the system to remove the PIN from |
| `label` | no | The label to show in the SimpliSafe UI |
| `pin` | no | The PIN value to use |

View File

@ -32,3 +32,40 @@ port:
default: 1705 default: 1705
type: integer type: integer
{% endconfiguration %} {% endconfiguration %}
## Services
The snapcast components provides a few services registered under the media_player component.
### Service `media_player.snapcast_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.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | The speakers to snapshot.
### Service `media_player.snapcast_restore`
Restore a previously taken snapshot of one or more speakers.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that should have their snapshot restored.
### Service `media_player.snapcast_join`
Group players together under a single group.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `master` | no | Entity ID of the player to synchronize to.
| `entity_id` | yes | String or list of `entity_id`s to join to the master.
### Service `media_player.snapcast_unjoin`
Remove one or more speakers from their group of speakers.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s to separate from their coordinator speaker.

View File

@ -3,7 +3,7 @@ title: "Splunk"
description: "Record events in Splunk." description: "Record events in Splunk."
logo: splunk.png logo: splunk.png
ha_category: ha_category:
- "History" - History
ha_release: 0.13 ha_release: 0.13
--- ---
@ -49,4 +49,25 @@ name:
required: false required: false
default: HASS default: HASS
type: string type: string
filter:
description: Filters for entities to be included/excluded from Splunk. Default is to include all entities.
required: false
type: map
keys:
include_domains:
description: Domains to be included.
required: false
type: list
include_entities:
description: Entities to be included.
required: false
type: list
exclude_domains:
description: Domains to be excluded.
required: false
type: list
exclude_entities:
description: Entities to be excluded.
required: false
type: list
{% endconfiguration %} {% endconfiguration %}

View File

@ -117,6 +117,19 @@ which are part of the
service. You can test this from the services service. You can test this from the services
control panel in the Home Assistant frontend. control panel in the Home Assistant frontend.
## Services
Extra services besides the default ones in component [Media Player component](/components/media_player/).
### Service `play_playlist`
Play a Spotify playlist with an option to start on a random position of the playlist.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `media_content_id` | no | Spotify URI of playlist. Must be playlist kind of URI.
| `random_song` | yes | True to select random song at start, False to start from beginning.
The above playlist example is a URI link to the "Reggae Infusions" playlist. The above playlist example is a URI link to the "Reggae Infusions" playlist.
[This support document from Spotify](https://support.spotify.com/us/article/sharing-music/) [This support document from Spotify](https://support.spotify.com/us/article/sharing-music/)
explains how to get this URI value to use for playlists in the Spotify component. explains how to get this URI value to use for playlists in the Spotify component.

View File

@ -0,0 +1,50 @@
---
title: "Suez Water Sensor"
description: "Instructions on how to integrate Suez Water daily data within Home Assistant."
logo: suez.png
ha_release: 0.97
ha_category:
- Sensor
ha_iot_class: Cloud Polling
---
The `suez_water` sensor platform fetches your last day consumption of water from the French water provider [Tout Sur Mon Eau](https://www.toutsurmoneau.fr) website.
It also gets the following data:
- Daily consumption for the current month
- Daily consumption for the previous month
- Monthly consumption for the last 26 months
- Highest monthly consumption
- Last year total consumption
- Current year total consumption
## Configuration
To add the Suez Water sensor to your installation, add your _Tout Sur Mon Eau_ account credentials and your `counter_id` to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: suez_water
username: YOUR_SUEZ_USERNAME
password: YOUR_SUEZ_PASSWORD
counter_id: YOUR_SUEZ_COUNTER_ID
```
{% configuration %}
username:
description: The Tout Sur Mon Eau account username.
required: true
type: string
password:
description: The Tout Sur Mon Eau account password.
required: true
type: string
counter_id:
description: The Tout Sur Mon Eau counter id.
required: true
type: integer
{% endconfiguration %}
`counter_id` is the water counter id. It can be found on your _Tout Sur Mon Eau_ [user account](https://www.toutsurmoneau.fr/mon-compte-en-ligne/historique-de-consommation-tr). Look in the source code of the page for something similar to `url: '/mon-compte-en-ligne/statMData' + '/123456789'`. The `counter_id` in this case is `123456789`.

View File

@ -32,3 +32,10 @@ name:
required: false required: false
type: string type: string
{% endconfiguration %} {% endconfiguration %}
## Switchbot Entity
There are two attributes available on the Switchbot entity to give you more information about your device.
- `last_run_success`: If `true` if the last action sent to the Switchbot succeeded. This attribute is useful for error trapping when Bluetooth connectivity is intermittent. If `false`, see home-assistant.log for specific error messgages.
- `assumed_state`: Always `true`. If the state of the Switchbot entity cannot be determined, it is assumed to be `on`.

View File

@ -23,9 +23,6 @@ sensor:
- platform: syncthru - platform: syncthru
resource: http://my-printer.address resource: http://my-printer.address
name: My Awesome Printer name: My Awesome Printer
monitored_conditions:
- toner_black
- output_tray_0
``` ```
{% configuration %} {% configuration %}
@ -39,48 +36,11 @@ sensor:
required: false required: false
default: Samsung Printer default: Samsung Printer
type: string type: string
monitored_conditions:
description: Conditions to display in the frontend.
required: false
default: all values
type: list
keys:
toner_black:
description: Black toner fill level
toner_cyan:
description: Cyan toner fill level
toner_magenta:
description: Magenta toner fill level
toner_yellow:
description: Yellow toner fill level
drum_black:
description: Black drum state
drum_cyan:
description: Cyan drum state
drum_magenta:
description: Magenta drum state
drum_yellow:
description: Yellow drum state
tray_1:
description: First paper input tray state
tray_2:
description: Second paper input tray state
tray_3:
description: Third paper input tray state
tray_4:
description: Fourth paper input tray state
tray_5:
description: Fifth paper input tray state
output_tray_0:
description: First paper output tray state
output_tray_1:
description: Second paper output tray state
output_tray_2:
description: Third paper output tray state
output_tray_3:
description: Fourth paper output tray state
output_tray_4:
description: Fifth paper output tray state
output_tray_5:
description: Sixth paper output tray state
{% endconfiguration %} {% endconfiguration %}
The following information is displayed in separate sensors, if it is available:
- Black, cyan, magenta and yellow toner fill level
- Black, cyan, magenta and yellow drum state
- First to fifth paper input tray state
- First to sixth paper output tray state

View File

@ -26,6 +26,7 @@ switch:
command_off: "PWR OFF" command_off: "PWR OFF"
command_state: "PWR?" command_state: "PWR?"
value_template: '{{ value == "PWR=01" }}' value_template: '{{ value == "PWR=01" }}'
timeout: 0.9
``` ```
{% endraw %} {% endraw %}
@ -69,4 +70,9 @@ switches:
description: The name used to display the switch in the frontend. description: The name used to display the switch in the frontend.
required: false required: false
type: string type: string
timeout:
description: How long to wait for a reply after a telnet command is sent.
required: false
default: 0.2
type: float
{% endconfiguration %} {% endconfiguration %}

View File

@ -25,9 +25,7 @@ If you have issues running this component, you may require `libxml2-dev` and `li
To enable this, add the following lines to your `configuration.yaml`: To enable this, add the following lines to your `configuration.yaml`:
```yaml ```yaml
# Example configuration.yaml entry totalconnect:
alarm_control_panel:
- platform: totalconnect
username: YOUR_USERNAME username: YOUR_USERNAME
password: YOUR_PASSWORD password: YOUR_PASSWORD
``` ```
@ -47,6 +45,8 @@ password:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
You are highly encouraged to create a Total Connect user account specifically for Home Assistant. It should not have full administrative privileges.
## Automation example ## Automation example
```yaml ```yaml

View File

@ -117,3 +117,13 @@ Example of configuration of an automation with completed torrents:
title: "Torrent completed!" title: "Torrent completed!"
message: "{{trigger.event.data.name}}" message: "{{trigger.event.data.name}}"
``` ```
## Services
### Service `add_torrent`
Adds a new torrent to download. It can either be a URL (http, https or ftp), magnet link or a local file (make sure that the path is white listed).
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `torrent` | no | Torrent to download

View File

@ -0,0 +1,44 @@
---
title: "Twente Milieu"
description: "Instructions on how to integrate Twente Milieu with Home Assistant."
logo: twentemilieu.png
ha_category:
- Sensor
- Environment
ha_release: 0.97
ha_iot_class: Cloud Polling
ha_config_flow: true
---
The Twente Milieu integration allows you to track the next scheduled waste
pickups by Twente Milieu for each of the different waste types.
## Configuration via the frontend
Menu: **Configuration** -> **Integrations**.
Click on the `+` sign to add an integration and click on **Twente Milieu**.
Follow the configuration flow, after finishing, the Twente Milieu
integration will be available.
## Sensors
This integration provides sensors for the following waste pickup dates from Twente Milieu:
- Next plastic waste pickup date.
- Next organic waste pickup date.
- Next paper waste pickup date.
- Next non-recyclable waste pickup date.
## Services
The Twente Milieu integration exposes a service that allows you to manually update
the pickup date from Twente Milieu.
### Service `update`
Update pickup dates from Twente Milieu
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ------------------------------------------------------------ |
| `id` | Yes | The unique address ID to update. |

View File

@ -8,6 +8,7 @@ ha_category:
- Switch - Switch
ha_release: 0.81 ha_release: 0.81
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_qa_scale: platinum
redirect_from: redirect_from:
- /components/device_tracker.unifi/ - /components/device_tracker.unifi/
- /components/switch.unifi/ - /components/switch.unifi/
@ -20,74 +21,43 @@ There is currently support for the following device types within Home Assistant:
- [Presence Detection](#presence-detection) - [Presence Detection](#presence-detection)
- [Switch](#switch) - [Switch](#switch)
Currently this implementation only exposes POE control for networked devices. Device tracker implementation is not using the same code base.
## Configuration ## Configuration
Home Assistant offers UniFi integration through **Configuration** -> **Integrations** -> **UniFi Controller**. Home Assistant offers UniFi integration through **Configuration** -> **Integrations** -> **UniFi Controller**. For legacy support old device_tracker configurations are imported and set up as new integrations.
Enter `host address`, `user name` and `password` and then continue to select which `site` you want to connect to Home Assistant. The user must have administrator privileges. Enter `host address`, `user name` and `password` and then continue to select which `site` you want to connect to Home Assistant. The user needs administrator privileges in order to control POE switches.
## Debugging integration ### Extra configuration for device tracker
If you have problems with UniFi or the integration you can add debug prints to the log. You can augment the behavior of UniFi device tracker by adding
```yaml
logger:
default: info
logs:
aiounifi: debug
   homeassistant.components.unifi: debug
   homeassistant.components.switch.unifi: debug
```
## Presence detection
This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](http://ubnt.com/) [Unifi](https://www.ubnt.com/enterprise/#unifi) controller.
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
device_tracker: unifi:
- platform: unifi controllers:
host: unifi - host: unifi
username: username site: My site
password: password ssid_filter:
ssid_filter: - 'HomeSSID'
- 'HomeSSID' 'IoTSSID'
- 'IoTSSID'
``` ```
{% configuration %} {% configuration %}
username:
description: A user on the controller
type: string
required: true
password:
description: The password for the account
type: string
required: true
host: host:
description: The hostname or IP address of your controller description: Same address as relevant config entry, needed to identify config entry
default: localhost
type: string type: string
required: false required: true
port: default: None
description: The port of your controller's web interface site:
default: 8443 description: Same site as relevant config entry, needed to identify config entry
type: integer
required: false
site_id:
description: For multisite installations, you can specify `site_id` to specify which is used
type: string type: string
required: true
default: None
block_client:
description: Clients that can be blocked from the network
type: list
required: false required: false
default: default default: None
verify_ssl:
description: Whether to do strict validation on SSL certificates of the Unifi controller. This can be true/false or the path to a locally trusted certificate to use for verification (i.e. "/path/to/custom_cert.pm")
type: [boolean, string]
required: false
default: true
detection_time: detection_time:
description: How long since the last seen time before the device is marked away, specified in seconds. description: How long since the last seen time before the device is marked away, specified in seconds.
type: integer type: integer
@ -98,102 +68,52 @@ ssid_filter:
type: list type: list
required: false required: false
default: None default: None
monitored_conditions:
description: A list of extra attributes to pull from the Unifi controller.
type: list
required: false
default: None
{% endconfiguration %} {% endconfiguration %}
See the [device tracker integration page](/components/device_tracker/) for instructions how to configure the people to be tracked.
### Configuring Users ### Configuring Users
The Unifi controller allows you to create multiple users on it besides the main administrator. It is recommended that you create a limited user that has `read-only` permissions for the Unifi device tracker. The UniFi controller allows you to create multiple users on it besides the main administrator. If all you want to use is the device tracker then it is recommended that you create a limited user that has `read-only` permissions for the Unifi device tracker. If you want blocking of network access or POE control as well you would need to have 'admin' permissions.
### Conflicts with MQTT ### Conflicts with MQTT
The Unifi controller can either be a dedicated hardware device (Unifi's cloud key), or as software any Linux system. If you run the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT integration as well. The Unifi controller can either be a dedicated hardware device (UniFi's cloud key), or as software any Linux system. If you run the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT integration as well.
It is recommended that you run the Unifi controller in a dedicated virtual machine to avoid that situation. It is recommended that you run the Unifi controller in a dedicated virtual machine to avoid that situation.
### Correctly specifying the Site ID ## Presence detection
For environments where there are multiple sites setup on the controller, or the default site is not being used you can use the `site_id` parameter to specify which site you would like to target. This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](http://ubnt.com/) [UniFi](https://www.ubnt.com/enterprise/#unifi) controller.
Please note that the value that is to be specificed here is not the name of the site as you would see it in controller interface, but a site ID value assigned from the software itself.
To obtain this value for your configuration file, you can take it from the URL of your browser when on the controller webpage.
For example, this is what would be seen in the URL bar when inside the dashboard page of a site:
`https://127.0.0.1:8443/manage/s/ceb1m27d/dashboard`
And your `site_id` value would be `ceb1m27d`.
### Troubleshooting and Time Synchronization ### Troubleshooting and Time Synchronization
Presence detection depends on accurate time configuration between Home Assistant and the Unifi controller. Presence detection depends on accurate time configuration between Home Assistant and the UniFi controller.
If Home Assistant and the Unifi controller are running on separate machines or VMs ensure that all clocks are synchronized. Failing to have synchronized clocks will lead to Home Assistant failing to mark a device as home. If Home Assistant and the UniFi controller are running on separate machines or VMs ensure that all clocks are synchronized. Failing to have synchronized clocks will lead to Home Assistant failing to mark a device as home.
[Related Issue](https://github.com/home-assistant/home-assistant/issues/10507) [Related Issue](https://github.com/home-assistant/home-assistant/issues/10507)
### Monitored Conditions
The Unifi controller returns a number of additional attributes that can be used for tracking devices, including signal strength, rx/tx rates, and which AP it is connected to. The list of possible options may vary depending on your Unifi controller version and if a device is wired or wireless.
Unifi Controller version 5.6.29 has the following options:
- _id
- _is_guest_by_uap
- _last_seen_by_uap
- _uptime_by_uap
- ap_mac
- assoc_time
- authorized
- bssid
- bytes-r
- ccq
- channel
- essid
- first_seen
- hostname
- idletime
- ip
- is_11r
- is_guest
- is_wired
- last_seen
- latest_assoc_time
- mac
- name
- noise
- noted
- oui
- powersave_enabled
- qos_policy_applied
- radio
- radio_proto
- rssi
- rx_bytes
- rx_bytes-r
- rx_packets
- rx_rate
- signal
- site_id
- tx_bytes
- tx_bytes-r
- tx_packets
- tx_power
- tx_rate
- uptime
- user_id
- usergroup_id
- vlan
## Switch ## Switch
Switches are network devices that are powered by POE switches from Ubuiqitis UniFi line of networking gear. ### Block network access for clients
Note that POE control actually configures the network port of the switch which the device is connected to. Allow control of network access to clients configured in `configuration.yaml`
### Control clients powered by POE
Entities appear automatically for each connected POE client. If no POE client device is in operation, no entity will be visible. Note: Unifi infrastructure devices such as access points and other switches are not (yet) supported, even if they are powered over ethernet themselves.
Note that POE control actually configures the network port of the switch which the client is connected to.
## Debugging integration
If you have problems with UniFi or the integration you can add debug prints to the log.
```yaml
logger:
default: info
logs:
aiounifi: debug
homeassistant.components.unifi: debug
homeassistant.components.device_tracker.unifi: debug
homeassistant.components.switch.unifi: debug
```

View File

@ -29,19 +29,23 @@ There is currently support for the following device types within Home Assistant:
## Configuration ## Configuration
The gateway needs to be configured by adding the following lines to your `configuration.yaml` file: There are 2 options in configuring the velbus integration:
- Via the Home Assistant user interface where it will let you enter the port string to connect to the Velbus bus.
- Via the Home Assistant `configuration.yaml` file.
```yaml ```yaml
# Example configuration.yaml entry for a USB or serial interface # Example configuration.yaml entry for a USB or serial interface
velbus: velbus:
port: '/dev/ttyUSB00' port: 'PORT_STRING'
``` ```
```yaml ## Port Sstring
# Example configuration.yaml entry for a TCP/IP interface
velbus: The port string used in the user interface or the configuration file can have 2 formats:
port: '127.0.0.1:3678'
``` - For a serial device: /dev/ttyUSB00
- For a tcp/ip device: 127.0.0.1:3678
{% configuration %} {% configuration %}
port: port:

View File

@ -1,5 +1,5 @@
--- ---
title: "VeSync Switch" title: "VeSync Integration"
description: "Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant." description: "Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant."
logo: vesync.png logo: vesync.png
ha_category: ha_category:
@ -9,20 +9,37 @@ redirect_from:
- /components/switch.vesync/ - /components/switch.vesync/
--- ---
The `vesync` switch platform enables integration with Etekcity VeSync smart wall switches and outlets. The `vesync` integration enables you to control Etekcity smart switches and outlets connected to the VeSync App.
VeSync outlets are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants. The devices must be added to the VeSync App before this integration can discover them.
Supports both the 7A round outlets and 15A rectangular outlets, as well as the in wall switches. The following platforms are supported:
- **switch**
## Supported Devices
This integration supports devices controllable by the VeSync App. The following devices are supported by this integration:
### Plugs
- Etekcity 7 Amp US outlet - ESW01-USA (Round)
- Etekcity 10 Amp US outlet - ESW10-USA (Round)
- Etekcity 10 Amp EU outlet - ESW10-EU (Round)
- Etekcity 15 Amp US outlet - ESW15-USA (Rectangular)
- Etekcity 2 Plug Outdoor Outlet - ESO15-TB
### Switches
- Etekcity In Wall Smart Switch (EWSL01-USA)
## Configuration ## Configuration
To use your VeSync switches, you must first register your switches with the VeSync app. Once registration is complete you must add the following to your `configuration.yaml` file: To use this integration, all devices must be registered with the VeSync App. Once registration is complete, you can add the VeSync integration by adding the VeSync integration in the configuration section of the frontend and entering your username and password. You can also use the traditional configuration method by adding the following to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
switch: vesync:
- platform: vesync
username: YOUR_USERNAME username: YOUR_USERNAME
password: YOUR_PASSWORD password: YOUR_PASSWORD
``` ```
@ -38,11 +55,50 @@ password:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
## Exposed Attributes ## Services
VeSync switches will expose the following details for only the smart outlets. Energy monitoring not available for in-wall switches. | Service | Description |
|---------|-------------|
| `update_devices` | Poll Vesync server to find and add any new devices |
| Attribute | Description | Example | ## Outlet Exposed Attributes
| ------------------- | ------------------------------------------------------------------- | --------------- |
| `current_power_w` | The present power consumption of the switch in watts. | 100 | VeSync outlets will expose the following details for only the smart outlets. Energy monitoring not available for in-wall switches.
| `today_energy_kwh` | The kilowatt hours used by the switch during the previous 24 hours. | 0.12 |
| Attribute | Description | Example |
| ----------------------- | ----------------------------------------------------------------------- | --------------- |
| `current_power_w` | The present power consumption of the switch in watts. | 100 |
| `today_energy_kwh` | The kilowatt hours used by the switch during the previous 24 hours. | 0.12 |
| `voltage` | Current voltage of the device | 120.32 |
| `weekly_energy_total` | Total energy usage for week starting from Monday 12:01AM in kWh | 14.74 |
| `monthly_energy_total` | Total energy usage for month starting from 12:01AM on the first in kWh | 52.30 |
| `yearly_energy_total` | Total energy usage for year start from 12:01AM on Jan 1 in kWh | 105.25 |
## Extracting Attribute data
In order to get the attributes readings from supported devices, such as energy from outlets or fan attributes, you'll have to create a [template sensor](/components/switch.template/).
In the example below, change all of the `vesync_switch`'s to match your device's entity ID.
Adapted from the [TP-Link integration](https://www.home-assistant.io/components/tplink/#plugs).
{% raw %}
```yaml
sensor:
- platform: template
vesync_switch_watts:
friendly_name_template: "{{ states.switch.vesync_switch.name}} Current Consumption"
value_template: '{{ states.switch.vesync_switch.attributes["current_power_w"] | float }}'
unit_of_measurement: 'W'
vesync_switch_total_kwh:
friendly_name_template: "{{ states.switch.vesync_switch.name}} Total Consumption"
value_template: '{{ states.switch.vesync_switch.attributes["today_energy_kwh"] | float }}'
unit_of_measurement: 'kWh'
vesync_switch_volts:
friendly_name_template: "{{ states.switch.vesync_switch.name}} Voltage"
value_template: '{{ states.switch.vesync_switch.attributes["voltage"] | float }}'
unit_of_measurement: 'V'
```
{% endraw %}

View File

@ -11,9 +11,9 @@ ha_config_flow: true
The `wwlln` integration displays lightning strike information from the The `wwlln` integration displays lightning strike information from the
[World Wide Lightning Location Network (WWLLN)](http://wwlln.net). [World Wide Lightning Location Network (WWLLN)](http://wwlln.net).
Entities are generated, updated and removed automatically with each update Entities are generated, updated and removed automatically with each update
from the feed. Each entity defines latitude and longitude and will be shown from the feed. Each entity defines latitude and longitude and will be shown
on the default map automatically, or on a map card by defining the source on the default map automatically, or on a map card by defining the source
`wwlln`. The distance (in kilometers or miles, depending on your unit system) `wwlln`. The distance (in kilometers or miles, depending on your unit system)
is available as the state of each entity. is available as the state of each entity.
@ -21,13 +21,16 @@ is available as the state of each entity.
<img src='{{site_root}}/images/screenshots/wwlln-feed-map.png' /> <img src='{{site_root}}/images/screenshots/wwlln-feed-map.png' />
</p> </p>
New data is returned every 10 minutes. New data is fetched every 10 minutes. Because data from the WWLLN may vary in terms
of how real-time it is, the default `window` parameter is set to 1 hour to ensure that as
many strikes are caught as possible.
## Configuration ## Configuration
To retrieve data from the WWLLN, edit your `configuration.yaml` file manually or use the "Integrations" feature in the GUI, you find it under Configurations - Integrations. To retrieve data from the WWLLN, edit your `configuration.yaml` file manually or use the "Integrations" feature in the GUI, you find it under Configurations - Integrations.
To manually add the component, add the following to your `configuration.yaml`: To manually add the component, add the following to your `configuration.yaml`:
```yaml ```yaml
wwlln: wwlln:
``` ```
@ -46,7 +49,7 @@ radius:
required: false required: false
type: integer type: integer
window: window:
description: The amount of time before now for which strikes should be considered "active" and shown in the UI. description: The amount of time before now for which strikes should be considered "active" and shown in the UI. Note that a window of less than 1 hour may cause Home Assistant to miss events.
required: false required: false
type: time type: time
default: 10 minutes default: 10 minutes
@ -54,16 +57,16 @@ window:
## State Attributes ## State Attributes
The following state attributes are available for each entity in addition to The following state attributes are available for each entity in addition to
the standard ones: the standard ones:
| Attribute | Description | | Attribute | Description |
|--------------------|-------------| | ---------------- | ----------------------------------------------------------------------------- |
| latitude | Latitude of the lightning strike. | | latitude | Latitude of the lightning strike. |
| longitude | Longitude of the lightning strike. | | longitude | Longitude of the lightning strike. |
| source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | | source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. |
| external_id | The external ID used in the feed to identify the lightning strike in the feed. | | external_id | The external ID used in the feed to identify the earthquake in the feed. |
| publication_date | Date and time when this event occurred. | | publication_date | Date and time when this event occurred. |
## Full Configuration ## Full Configuration

View File

@ -24,7 +24,7 @@ automation:
<div class='note warning'> <div class='note warning'>
Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' platform below instead. Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' platform below instead.
</div> </div>
@ -50,8 +50,8 @@ automation:
platform: mqtt platform: mqtt
topic: living_room/switch/ac topic: living_room/switch/ac
# Optional # Optional
payload: 'on' payload: "on"
encoding: 'utf-8' encoding: "utf-8"
``` ```
### Numeric state trigger ### Numeric state trigger
@ -59,13 +59,14 @@ automation:
Triggers when numeric value of an entity's state crosses a given threshold. On state change of a specified entity, attempts to parse the state as a number and triggers once if value is changing from above to below or from below to above the given threshold. Triggers when numeric value of an entity's state crosses a given threshold. On state change of a specified entity, attempts to parse the state as a number and triggers once if value is changing from above to below or from below to above the given threshold.
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
platform: numeric_state platform: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
# Optional # Optional
value_template: '{{ state.attributes.battery }}' value_template: "{{ state.attributes.battery }}"
# At least one of the following required # At least one of the following required
above: 17 above: 17
below: 25 below: 25
@ -76,6 +77,7 @@ automation:
minutes: 10 minutes: 10
seconds: 5 seconds: 5
``` ```
{% endraw %} {% endraw %}
<div class='note'> <div class='note'>
@ -86,25 +88,28 @@ In the example above, a numeric_state that goes to 17.1-24.9 (from 17 or below,
The `for:` can also be specified as `HH:MM:SS` like this: The `for:` can also be specified as `HH:MM:SS` like this:
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
platform: numeric_state platform: numeric_state
entity_id: sensor.temperature entity_id: sensor.temperature
# Optional # Optional
value_template: '{{ state.attributes.battery }}' value_template: "{{ state.attributes.battery }}"
# At least one of the following required # At least one of the following required
above: 17 above: 17
below: 25 below: 25
# If given, will trigger when condition has been for X time. # If given, will trigger when condition has been for X time.
for: '01:10:05' for: "01:10:05"
``` ```
{% endraw %} {% endraw %}
You can also use templates in the `for` option. You can also use templates in the `for` option.
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
@ -122,6 +127,7 @@ automation:
message: > message: >
{{ trigger.to_state.name }} too high for {{ trigger.for }}! {{ trigger.to_state.name }} too high for {{ trigger.for }}!
``` ```
{% endraw %} {% endraw %}
The `for` template(s) will be evaluated when an entity changes as specified. The `for` template(s) will be evaluated when an entity changes as specified.
@ -136,23 +142,24 @@ automation:
platform: state platform: state
entity_id: device_tracker.paulus, device_tracker.anne_therese entity_id: device_tracker.paulus, device_tracker.anne_therese
# Optional # Optional
from: 'not_home' from: "not_home"
# Optional # Optional
to: 'home' to: "home"
# If given, will trigger when state has been the to state for X time. # If given, will trigger when state has been the to state for X time.
for: '01:10:05' for: "01:10:05"
``` ```
You can also use templates in the `for` option. You can also use templates in the `for` option.
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
platform: state platform: state
entity_id: device_tracker.paulus, device_tracker.anne_therese entity_id: device_tracker.paulus, device_tracker.anne_therese
to: 'home' to: "home"
for: for:
minutes: "{{ states('input_number.lock_min')|int }}" minutes: "{{ states('input_number.lock_min')|int }}"
seconds: "{{ states('input_number.lock_sec')|int }}" seconds: "{{ states('input_number.lock_sec')|int }}"
@ -160,13 +167,14 @@ automation:
service: lock.lock service: lock.lock
entity_id: lock.my_place entity_id: lock.my_place
``` ```
{% endraw %} {% endraw %}
The `for` template(s) will be evaluated when an entity changes as specified. The `for` template(s) will be evaluated when an entity changes as specified.
<div class='note warning'> <div class='note warning'>
Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.
Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.
</div> </div>
@ -180,7 +188,7 @@ An optional time offset can be given to have it trigger a set time before or aft
<div class='note'> <div class='note'>
Since the duration of twilight is different throughout the year, it is recommended to use [sun elevation triggers][sun_elevation_trigger] instead of `sunset` or `sunrise` with a time offset to trigger automations during dusk or dawn. Since the duration of twilight is different throughout the year, it is recommended to use [sun elevation triggers][sun_elevation_trigger] instead of `sunset` or `sunrise` with a time offset to trigger automations during dusk or dawn.
</div> </div>
@ -193,7 +201,7 @@ automation:
# Possible values: sunset, sunrise # Possible values: sunset, sunrise
event: sunset event: sunset
# Optional time offset. This example will trigger 45 minutes before sunset. # Optional time offset. This example will trigger 45 minutes before sunset.
offset: '-00:45:00' offset: "-00:45:00"
``` ```
#### Sun elevation trigger #### Sun elevation trigger
@ -201,6 +209,7 @@ automation:
Sometimes you may want more granular control over an automation than simply sunset or sunrise and specify an exact elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. For most things intended to trigger during dusk or dawn, a number between 0° and -6° is suitable; -4° is used in this example: Sometimes you may want more granular control over an automation than simply sunset or sunrise and specify an exact elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. For most things intended to trigger during dusk or dawn, a number between 0° and -6° is suitable; -4° is used in this example:
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
alias: "Exterior Lighting on when dark outside" alias: "Exterior Lighting on when dark outside"
@ -214,6 +223,7 @@ automation:
service: switch.turn_on service: switch.turn_on
entity_id: switch.exterior_lighting entity_id: switch.exterior_lighting
``` ```
{% endraw %} {% endraw %}
If you want to get more precise, start with the US Naval Observatory [tool](http://aa.usno.navy.mil/data/docs/AltAz.php) which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers. If you want to get more precise, start with the US Naval Observatory [tool](http://aa.usno.navy.mil/data/docs/AltAz.php) which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers.
@ -223,6 +233,7 @@ Although the actual amount of light depends on weather, topography and land cove
- Civil twilight: 0° > Solar angle > -6° - Civil twilight: 0° > Solar angle > -6°
This is what is meant by twilight for the average person: Under clear weather conditions, civil twilight approximates the limit at which solar illumination suffices for the human eye to clearly distinguish terrestrial objects. Enough illumination renders artificial sources unnecessary for most outdoor activities. This is what is meant by twilight for the average person: Under clear weather conditions, civil twilight approximates the limit at which solar illumination suffices for the human eye to clearly distinguish terrestrial objects. Enough illumination renders artificial sources unnecessary for most outdoor activities.
- Nautical twilight: 6° > Solar angle > -12° - Nautical twilight: 6° > Solar angle > -12°
- Astronomical twilight: 12° > Solar angle > -18° - Astronomical twilight: 12° > Solar angle > -18°
@ -234,6 +245,7 @@ Template triggers work by evaluating a [template](/docs/configuration/templating
With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`) With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`)
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
@ -241,13 +253,15 @@ automation:
value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}" value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}"
# If given, will trigger when template remains true for X time. # If given, will trigger when template remains true for X time.
for: '00:01:00' for: "00:01:00"
``` ```
{% endraw %} {% endraw %}
You can also use templates in the `for` option. You can also use templates in the `for` option.
{% raw %} {% raw %}
```yaml ```yaml
automation: automation:
trigger: trigger:
@ -256,13 +270,13 @@ automation:
for: for:
minutes: "{{ states('input_number.minutes')|int(0) }}" minutes: "{{ states('input_number.minutes')|int(0) }}"
``` ```
{% endraw %} {% endraw %}
The `for` template(s) will be evaluated when the `value_template` becomes `true`. The `for` template(s) will be evaluated when the `value_template` becomes `true`.
<div class='note warning'> <div class='note warning'>
Rendering templates with time (`now()`) is dangerous as trigger templates only update based on entity state changes. Rendering templates with time (`now()`) is dangerous as trigger templates only update based on entity state changes.
</div> </div>
### Time trigger ### Time trigger
@ -274,7 +288,7 @@ automation:
trigger: trigger:
platform: time platform: time
# Military time format. This trigger will fire at 3:32 PM # Military time format. This trigger will fire at 3:32 PM
at: '15:32:00' at: "15:32:00"
``` ```
### Time pattern trigger ### Time pattern trigger
@ -292,19 +306,19 @@ automation 2:
trigger: trigger:
platform: time_pattern platform: time_pattern
# Trigger once per minute during the hour of 3 # Trigger once per minute during the hour of 3
hours: '3' hours: "3"
minutes: '*' minutes: "*"
automation 3: automation 3:
trigger: trigger:
platform: time_pattern platform: time_pattern
# You can also match on interval. This will match every 5 minutes # You can also match on interval. This will match every 5 minutes
minutes: '/5' minutes: "/5"
``` ```
<div class='note warning'> <div class='note warning'>
Do not prefix numbers with a zero - using `'00'` instead of '0' for example will result in errors. Do not prefix numbers with a zero - using `'00'` instead of '0' for example will result in errors.
</div> </div>
@ -321,7 +335,6 @@ automation:
You could test triggering the above automation by sending a POST HTTP request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. An example with no data sent to a SSL/TLS secured installation and using the command-line curl program is `curl -d "" https://your-home-assistant:8123/api/webhook/some_hook_id`. You could test triggering the above automation by sending a POST HTTP request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. An example with no data sent to a SSL/TLS secured installation and using the command-line curl program is `curl -d "" https://your-home-assistant:8123/api/webhook/some_hook_id`.
### Zone trigger ### Zone trigger
Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/).
@ -333,7 +346,7 @@ automation:
entity_id: device_tracker.paulus entity_id: device_tracker.paulus
zone: zone.home zone: zone.home
# Event is either enter or leave # Event is either enter or leave
event: enter # or "leave" event: enter # or "leave"
``` ```
### Geolocation trigger ### Geolocation trigger
@ -348,7 +361,7 @@ automation:
source: nsw_rural_fire_service_feed source: nsw_rural_fire_service_feed
zone: zone.bushfire_alert_zone zone: zone.bushfire_alert_zone
# Event is either enter or leave # Event is either enter or leave
event: enter # or "leave" event: enter # or "leave"
``` ```
### Multiple triggers ### Multiple triggers
@ -358,7 +371,7 @@ When your want your automation rule to have multiple triggers, just prefix the f
```yaml ```yaml
automation: automation:
trigger: trigger:
# first trigger # first trigger
- platform: time_pattern - platform: time_pattern
minutes: 5 minutes: 5
# our second trigger is the sunset # our second trigger is the sunset

View File

@ -277,6 +277,7 @@ Some of these functions can also be used in a [filter](http://jinja.pocoo.org/do
- Filter `min` will obtain the smallest item in a sequence. - Filter `min` will obtain the smallest item in a sequence.
- Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values. - Filter `value_one|bitwise_and(value_two)` perform a bitwise and(&) operation with two values.
- Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values. - Filter `value_one|bitwise_or(value_two)` perform a bitwise or(\|) operation with two values.
- Filter `ord` will return for a string of length one an integer representing the Unicode code point of the character when the argument is a Unicode object, or the value of the byte when the argument is an 8-bit string.
### Regular expressions ### Regular expressions

View File

@ -94,6 +94,36 @@ service_data:
type: map type: map
{% endconfiguration %} {% endconfiguration %}
### Cast
Special row to start Home Assistant Cast.
{% configuration %}
type:
required: true
description: cast
type: string
view:
required: true
description: Path to the view that needs to be shown.
type: string
name:
required: false
description: Name to show in the row
type: string
default: Home Assistant Cast
icon:
required: false
description: Icon to use
type: string
default: `hass:television`
hide_if_unavailable:
required: false
description: Hide this row if casting is not available in the browser.
type: boolean
default: false
{% endconfiguration %}
### Divider ### Divider
{% configuration %} {% configuration %}

View File

@ -0,0 +1,789 @@
---
layout: post
title: "0.97: Apache Kafka, Fortigate, Twente Milieu"
description: "Core config and configuration.yaml tools have been split up and a new reload scenes service has been introduced."
date: 2019-08-07 01:11:03
date_formatted: "August 7, 2019"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
og_image: /images/blog/2019-08-release-97/components.png
---
<a href='/components/#version/0.97'><img src='/images/blog/2019-08-release-97/components.png' style='border: 0;box-shadow: none;'></a>
It's time for Home Assistant 0.97! It has been a very busy release cycle as we have been fine-tuning our development process, which makes it easier to maintain and contribute to Home Assistant in the future.
## Python 3.5 support has been dropped
As per previous announcements, this is the first release that requires at least Python 3.6. If you are on Hassbian and are planning to upgrade Python, please take note of the [known issues with the default wheel server](/blog/2019/07/19/piwheels/).
## Docker
This is the last release that bases our Home Assistant Docker image (`homeassistant/home-assistant`) on Debian. As decided in [Architecture Decision Record 0006: Docker Images](https://github.com/home-assistant/architecture/blob/master/adr/0006-docker-images.md), the image will be based on Alpine Linux starting with the 0.98 release. These new Docker images will be running same the Home Assistant Docker image that powers Hass.io. You don't need to change anything unless you have installed Debian packages manually or made any other changes to the running container. However, if that is the case, you'll need to find the Alpine equivalent of whatever you were doing.
The main driver behind this change is that by re-using images, maintenance becomes easier, and users of the `homeassistant/home-assistant` image can benefit from the many optimizations that went into the Hass.io images.
## Reload scenes from `configuration.yaml`
Thanks to [@balloob] it is now possible to reload scenes from `configuration.yaml` without restarting Home Assistant. This is part of an effort for Home Assistant 1.0 to make scenes a first-class citizen of Home Assistant, including creating/restoring scenes on the fly in the future. To track this effort, [follow this page](https://github.com/home-assistant/home-assistant/issues/25681).
## Home Assistant Cast
In case you missed the announcement, we released Home Assistant Cast yesterday. It allows you to transform any Cast interface into a display for Home Assistant. [Read the announcement for more information.](/blog/2019/08/06/home-assistant-cast/).
<p class='img'>
<a href="/blog/2019/08/06/home-assistant-cast/"><img src='/images/blog/2019-08-home-assistant-cast/hero.png' alt='Picture of a Google Nest Hub with the Home Assistant UI on it.'></a>
</p>
Home Assistant Cast opens a whole new world of possibilities for using Lovelace, and we are really excited to learn what cool things you will do with it! If you created something, feel free to share it on social media using the `#homeassistantcast` hash-tag. We are looking forward to your pictures!
## UI changes
This release contains a couple of notable UI changes:
- [New Cast row available](/lovelace/entities/#cast) in the Lovelace entities card to start Home Assistant Cast.
- Improved accessibility for visually impaired users. This is an [ongoing effort](https://github.com/home-assistant/home-assistant-polymer/issues/3267) on making the frontend accessible.
- Split out `configuration.yaml` actions from the core configuration into a new server control config panel. Thanks [@IcyPalm]
- Markdown card now has a size + 1, if it has a header defined. Some layouts might be moved around due to this.
[@icypalm]: https://www.github.com/IcyPalm/
## In other news
[Frenck](https://github.com/frenck) wrote [an excellent blog post](https://frenck.dev/diy-smart-doorbell-for-just-2-dollar/) on how to make a $2 smart doorbell using Home Assistant and ESPHome, which doesn't require soldering.
[Aaron](https://github.com/boralyl) created a great and detailed tutorial explaining how to add an [interactive 3D floorplan to Home Assistant](https://aarongodfrey.dev/home%20automation/creating-a-3d-floorplan-in-home-assistant/).
We wrote about how we use Azure DevOps to automate the development of Home Assistant. Interested to see how Home Assistant is automatically build? [Check the developer blog](https://developers.home-assistant.io/blog/2019/07/19/building-all-the-things.html).
[@jimz011] has updated his amazing, HomeKit inspired, Lovelace config and shared it [on the forums](https://community.home-assistant.io/t/homekit-inspired-lovelace-by-jimz011-august-2019-ha-0-97-x-compatible-massive-update/117086). Sneak preview on how it looks:
[@jimz011]: https://github.com/jimz011
<div class="videoWrapper">
<iframe width="853" height="480" src="https://www.youtube-nocookie.com/embed/Ng0EDltHujY" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
## New Integrations
- Add support for recording history to Apache Kafka ([@bachya] - [#25085]) ([apache_kafka docs]) (new-integration)
- Rename RitAssist to FleetGO ([@depl0y] - [#25093]) ([fleetgo docs]) ([ritassist docs]) (breaking change) (new-integration)
- Add Twente Milieu integration ([@frenck] - [#25129]) ([twentemilieu docs]) (new-integration)
- Add Fortigate integration ([@kifeo] - [#24908]) ([fortigate docs]) (new-integration)
- Add support for Rainforest Eagle-200 ([@gtdiehl] - [#24919]) ([rainforest_eagle docs]) (new-integration)
- Add Elgato Avea integration ([@pattyland] - [#24281]) ([avea docs]) (new-integration) (new-platform)
- Suez water ([@ooii] - [#23844]) ([suez_water docs]) (new-integration)
- Add new device tracker supporting Fortinet FortiGate ([@kimfrellsen] - [#23078]) ([fortios docs]) (new-integration) (new-platform)
- Add De Lijn (Flemish Public Transport) component ([@bollewolle] - [#24265]) ([delijn docs]) (new-integration) (new-platform)
- Add Support for VeSync Devices - Outlets and Switches ([@webdjoe] - [#24953]) ([vesync docs]) (new-platform)
## If you need help...
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e).
## Reporting Issues
Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
<!--more-->
## Breaking Changes
- **Python** - Bump Python support to min Python 3.6.0 ([@balloob] - [#25582])
- **Z-Wave** - Improve handling of Z-Wave config entry vs yaml config. If a Z-Wave `network_key` is specified in configuration.yaml it will override a `network_key` specified in the Z-Wave config entry. ([@cgarwood] - [#25112]) ([zwave docs])
- **Unifi** - Unifi Device tracker is now part of config entry. After initial import the unifi device tracker configuration is no longer needed. If configuring SSID filter or detection time you will need to use the new configuration from UniFi. See UniFi component documentation for details. ([@Kane610] - [#24367]) ([unifi docs])
- **Ecobee** - Ecobee presets now represent the different Ecobee comfort settings. Selectable by name instead of unknown ID. ([@balloob] - PR link todo)
- **Calendar** - Rewrite calendar component - The calendar integration has been rewritten to follow our current standards and is mostly non breaking. The reset (clean up) of state attributes upon an event time passing has been removed, though. Attributes are no longer set to an arbitrary default value, and will now keep the attributes representing the last event. With this change, automations that rely on state attributes getting reset will need to be updated. All platforms have been converted. - ([@MartinHjelmare] - [#24950]) ([caldav docs]) ([calendar docs]) ([demo docs]) ([google docs]) ([todoist docs])
- **SyncThru** - The monitored_conditions configuration option has been removed. All available monitored conditions will be used by default. Users that have been using the monitored_conditions option need to remove it from the syncthru section in configuration.yaml. ([@nielstron] - [#25052]) ([syncthru docs])
- **KNX** - Updates the knx component to use xknx 0.11.1 . This introduces several new features and bugfixes. For a complete list see: https://github.com/XKNX/xknx/releases/tag/0.11.0 ([@farmio] - [#24738]) ([knx docs])
- `scene:` `scene_number` is now 1 indexed according to KNX standards. Previously it was 0 based. Please add 1 to your already configured scene numbers (`scene_number: 5` becomes `scene_number: 6`).
- `sensor:` `state_address` replaces `address` in configuration
- `binary_sensor:` `state_address` replace `address` in configuration when using xknx config file (`knx: config_file = ...`): Replace `group_address` in BinarySensor and Sensor with `group_address_state`.
- **RitAssist** - The company has been renamed from RitAssist to FleetGO, so this component needed to get renamed. Users of this integration will need to update their device_tracker config section to use the new name. ([@depl0y] - [#25093]) ([fleetgo docs]) ([ritassist docs])
- **N26** - Adds support for multiple N26 accounts. The generation of unique ids for spaces has been changed. Users may need to remove the stale old id entities, representing spaces, from the entity registry. ([@gorynychzmey] - [#25086]) ([n26 docs])
- **Environment Canada** - This change removes the `monitored_conditions` and `name` options and adds an optional `language` option. Sensors are now created for all provided data. ([@michaeldavie] - [#24884]) ([environment_canada docs])
```yaml
sensor:
- platform: environment_canada
language: french
```
- **TotalConnect** - Total Connect Client was upgraded to support more than one alarm panel and allow future support for additional sensors. Previous `alarm_control_panel` entries must be removed, and a new totalconnect entry must be added to configuration.yaml. See https://www.home-assistant.io/components/totalconnect/ for configuration details. ([@austinmroczek] - [#24427]) ([totalconnect docs])
- **Nuki** - The `lock.nuki_unlatch` service has been removed. It has been replaced by the `lock.open` service. The `lock.nuki_lock_n_go` service has been renamed to `nuki.lock_n_go`. Users that are using the removed or renamed services in automations need to replace them with the new services. ([@franfos] - [#22888]) ([nuki docs])
- **Snapcast** - This changes adds multiroom support for the snapcast component. It adds 2 services `media_player.snapcast_join` and `media_player.snapcast_unjoin` to group/ungroup a client with another client. Also added source selection support in the snapcast clients as the groups are unusable due to their dynamic nature. ([@lyghtnox] - [#24061]) ([snapcast docs])
- **Ambient Weather Station** - The `unique_id` for Ambient sensors uses a new formula, meaning that even though they have the same friendly names, new sensors will be created. The integration will automatically perform this migration under the hood, but if you've altered the entity IDs of any Ambient PWS entities, you'll need do the same to the new entities upon creation. Additionally, the `monitored_keys` configuration option is no longer supported in `configuration.yaml`. The integration will now create sensors for all conditions supported by the particular device.
([@bachya] - [#25284]) ([ambient_station docs])
- **Google Maps** - Google Passwords are no longer required to be provided in your config. An external program is now required to obtain the necessary cookie file to place in your Home Assistant config directory. This is due to the authentication process being removed from the underlying package. Existing users should remove the `password:` entry from their config file (username is still required). The cookie file previously generated should still be valid and will allow the tracker to continue functioning normally until the cookie is invalidated. New users will need to follow the instructions on the Google Maps Location Sharing page to create their cookie file.([@shbatm] - [#25316]) ([google_maps docs])
- **BuienRadar** - Updates to the new version of python-buienrader (1.0.1); this version now leverages the new json buienradar-api. ([@mjj4791] - [#24463]) ([buienradar docs])
The following sensor types (monitored_conditions) are no longer supported, since they are no longer provided by the json api of buienradar:
- snow_1d .. snow_5d
The following monitored conditions will change units:
- windgust (now km/h, was m/s)
- windspeed (now km/h, was m/s)
- windspeed_?d (now km/h, was m/s)
- visibility (now km, was m)
- **Rejseplanen** - Improve and align Rejseplanen with other transport components. ([@DarkFox] - [#25375]) ([rejseplanen docs])
- All attributes changed to snake_case.
- Later departure attribute has been removed.
- Added next_departures which contains a list of all later departures returned from the search, as dictionaries with the same fields as the next departure.
Any existing templates using the sensor's attributes will need to be updated as follows:
- Stop ID -> stop_id
- Stop -> stop
- Route -> route
- Type -> type
- Direction -> direction
- Due in -> due_in
- Due at -> due_at
## Beta Fixes
- Expose comfort presets as HA presets ([@balloob] - [#25491]) ([ecobee docs]) (breaking change) (beta fix)
- Fix handling of empty results from Rejseplanen ([@DarkFox] - [#25610]) ([rejseplanen docs]) (breaking change) (beta fix)
- bump quirks ([@dmulcahey] - [#25618]) ([zha docs]) (beta fix)
- Handle disabled devices ([@Kane610] - [#25625]) ([unifi docs]) (beta fix)
- Fix polling HomeKit devices with multiple services per accessory ([@Jc2k] - [#25629]) ([homekit_controller docs]) (beta fix)
- Meteofrance improve log error messages ([@oncleben31] - [#25630]) ([meteo_france docs]) (beta fix)
- Bump homekit_python to 0.15 ([@Jc2k] - [#25631]) ([homekit_controller docs]) (beta fix)
- Filter out empty results in history API ([@balloob] - [#25633]) ([history docs]) (beta fix)
- Upgrade hass-nabucasa to 0.16 ([@balloob] - [#25636]) ([cloud docs]) (beta fix)
- Feature zwave preset modes ([@Santobert] - [#25537]) ([climate docs]) ([zwave docs]) (beta fix)
- Add PRESET_AWAY to HomematicIP Cloud climate ([@SukramJ] - [#25641]) ([homematicip_cloud docs]) (beta fix)
- UniFi - allow configuration to not track clients or devices ([@Kane610] - [#25642]) ([unifi docs]) (beta fix)
- Add preset to be away and eco ([@balloob] - [#25643]) ([nest docs]) (beta fix)
- Revert flux_led to 0.89 ([@amelchio] - [#25653]) ([flux_led docs]) (beta fix)
- Options to not track wired clients ([@Kane610] - [#25669]) ([unifi docs]) (beta fix)
- Fix issue with incorrect Notion bridge IDs ([@bachya] - [#25683]) ([notion docs]) (beta fix)
- In some circumstances device.last_seen can be None ([@Kane610] - [#25690]) ([unifi docs]) (beta fix)
- UniFi - reverse connectivity logic ([@Kane610] - [#25691]) ([unifi docs]) (beta fix)
- Fix roku lxml requirement ([@pvizeli] - [#25696]) ([roku docs]) (beta fix)
- Add HmIP-SCI to Homematic IP Cloud, Fix HmIP-SWDM ([@SukramJ] - [#25639]) ([homematicip_cloud docs]) (beta fix)
- Bump envoy_reader to 0.8.6, fix missing dependency ([@jesserizzo] - [#25679]) ([enphase_envoy docs]) (beta fix)
- Add service to reload scenes from configuration.yaml ([@balloob] - [#25680]) ([homeassistant docs]) ([scene docs]) (beta fix)
- Update HTTP defaults ([@balloob] - [#25702]) ([http docs]) (beta fix)
- UniFi - handle device not having a name ([@Kane610] - [#25713]) ([unifi docs]) (beta fix)
- Bump hdate==0.9.0 (use pytz instead of dateutil) ([@tsvi] - [#25726]) ([jewish_calendar docs]) (beta fix)
- initial commit ([@zxdavb] - [#25731]) ([incomfort docs]) (beta fix)
- Revert emulated hue changes ([@balloob] - [#25732]) ([emulated_hue docs]) (beta fix)
- Fix last seen not available on certain devices ([@Kane610] - [#25735]) ([unifi docs]) (beta fix)
## All changes
- Rewrite calendar component ([@MartinHjelmare] - [#24950]) ([caldav docs]) ([calendar docs]) ([demo docs]) ([google docs]) ([todoist docs]) (breaking change)
- Remove monitored conditions from syncthru ([@nielstron] - [#25052]) ([syncthru docs]) (breaking change)
- Update KNX component to xknx 0.11 ([@farmio] - [#24738]) ([knx docs]) (breaking change)
- Support hass-release inside devcontainer ([@pvizeli] - [#25090])
- Add support for recording history to Apache Kafka ([@bachya] - [#25085]) ([apache_kafka docs]) (new-integration)
- Ps4 move send_command service to init ([@ktnrg45] - [#25094]) ([ps4 docs])
- Rename RitAssist to FleetGO ([@depl0y] - [#25093]) ([fleetgo docs]) ([ritassist docs]) (breaking change) (new-integration)
- Add support for multiple N26 accounts ([@gorynychzmey] - [#25086]) ([n26 docs]) (breaking change)
- Bump insteonplm to 0.16.3 ([@teharris1] - [#25108]) ([insteon docs])
- Use more compatible samsungtv TV key ([@escoand] - [#25083]) ([samsungtv docs])
- Add additional WWLLN test ([@bachya] - [#25111]) ([wwlln docs])
- Splunk component filter support ([@asleeis] - [#25071]) ([splunk docs])
- Add more public rain sensors ([@cgtobi] - [#25117]) ([netatmo docs])
- PS4 handle no connection/ fix spamming of logs when device is off ([@ktnrg45] - [#25091]) ([ps4 docs])
- Upgrade flake8 to 3.7.8 ([@scop] - [#25120])
- Upgrade youtube_dl to 2019.07.12 ([@fabaff] - [#25128]) ([media_extractor docs])
- Update Environment Canada platforms ([@michaeldavie] - [#24884]) ([environment_canada docs]) (breaking change)
- PS4 move load_games and save_games helpers to init from media_player ([@ktnrg45] - [#25127]) ([ps4 docs])
- Move totalconnect from platform to component config ([@austinmroczek] - [#24427]) ([totalconnect docs]) (breaking change)
- Add Twente Milieu integration ([@frenck] - [#25129]) ([twentemilieu docs]) (new-integration)
- Fix aggregation in Netatmo public sensor ([@cgtobi] - [#25132]) ([netatmo docs])
- Merge UniFi device tracker to config entry ([@Kane610] - [#24367]) ([unifi docs]) (breaking change)
- Small changes to bluetooth RSSI tracking ([@FrederikBolding] - [#25056]) ([bluetooth_tracker docs])
- PS4 Add tests for init ([@ktnrg45] - [#25161]) ([ps4 docs])
- Add HomeKit Reset Accessory ([@adrum] - [#25158]) ([homekit docs])
- Add spotify service to allow to play music from playlist ([@lealoureiro] - [#24991]) ([spotify docs])
- Add travel time attribution/coordinates ([@ljmerza] - [#24956]) ([google_travel_time docs])
- Upgrade youtube_dl to 2019.07.16 ([@fabaff] - [#25173]) ([media_extractor docs])
- Add Fortigate integration ([@kifeo] - [#24908]) ([fortigate docs]) (new-integration)
- Upgrade discord.py to 1.2.3 ([@fabaff] - [#25174]) ([discord docs])
- Upgrade ruamel.yaml to 0.15.99 ([@fabaff] - [#25175])
- Upgrade Mastodon.py to 1.4.5 ([@fabaff] - [#25176]) ([mastodon docs])
- Delete config.yml ([@pvizeli] - [#25181])
- Improve Nuki lock ([@franfos] - [#22888]) ([nuki docs]) (breaking change)
- Raise not ready when no data from API is retrieved ([@cgtobi] - [#25182]) ([opensensemap docs])
- Add severe weather sensor to Dark Sky ([@rtclauss] - [#22701]) ([darksky docs])
- Use MockConfigEntry ([@andrewsayre] - [#25190])
- Upgrade mypy to 0.720, turn on unreachability warnings ([@scop] - [#25157])
- Add HMIP-FCI / HMIP-FBL / HmIP-BBL ([@SukramJ] - [#25188]) ([homematicip_cloud docs])
- Add login_method config option to fix login issue with RouterOS Version > 6.43 ([@Bouni] - [#25194]) ([mikrotik docs])
- Handle somfy expired token ([@tetienne] - [#25195]) ([somfy docs])
- Fix issue #24495 ([@thomasgermain] - [#25199]) ([seventeentrack docs])
- Simplify cache restore ([@keesschollaart81] - [#25186])
- Add HmIP-PCBS2, HmIP-PCBS-BAT to Homematic IP Cloud ([@SukramJ] - [#25201]) ([homematicip_cloud docs])
- Bump simplisafe-python to 4.0.0 + add additional SimpliSafe attributes ([@bachya] - [#25202]) ([simplisafe docs])
- Upgrades Dockerfiles to Debian Buster ([@frenck] - [#25208])
- Add myself to songpal codeowners ([@rytilahti] - [#25221]) ([songpal docs])
- OpenWrt Luci RPC Device Tracker Module Bump ([@fbradyirl] - [#25234]) ([luci docs])
- Add hvac_action support for MQTT HVAC ([@definitio] - [#25260]) ([mqtt docs])
- Add vendor support for vorwerk robots and fix zone retrieval ([@dshokouhi] - [#25200]) ([neato docs])
- Add support for Rainforest Eagle-200 ([@gtdiehl] - [#24919]) ([rainforest_eagle docs]) (new-integration)
- Add MQTT climate precision ([@PhilRW] - [#25265]) ([mqtt docs])
- Add services to set and remove Simplisafe PINs ([@bachya] - [#25207]) ([simplisafe docs])
- Multiroom support for snapcast ([@lyghtnox] - [#24061]) ([snapcast docs]) (breaking change)
- Avoid creating temporary lists ([@nierob] - [#25317]) ([climate docs]) ([device_tracker docs]) ([google_assistant docs]) ([media_player docs]) ([nextbus docs]) ([smartthings docs]) ([system_health docs])
- Return Ambient PWS brightness sensor unit and remove CONF_MONITORED_CONDITIONS ([@bachya] - [#25284]) ([ambient_station docs]) (breaking change)
- Ps4 reformat media data ([@ktnrg45] - [#25172]) ([ps4 docs])
- Fix missing Nachteule in mvglive component ([@9R] - [#25304]) ([mvglive docs])
- Doc lint fixes ([@scop] - [#25339]) ([evohome docs]) ([hive docs])
- Remove some Python 2 compatibility code ([@scop] - [#25341]) ([html5 docs])
- Fix util.ruamel_yaml type errors ([@scop] - [#25338])
- Mypy config improvements ([@scop] - [#25340])
- Update Google Maps Location Tracker to use locationsharinglib==4.0.2 ([@shbatm] - [#25316]) ([google_maps docs]) (breaking change)
- Automatically expand WWLLN window to 1 hour (if necessary) ([@bachya] - [#25357]) ([wwlln docs])
- Type check all helpers ([@scop] - [#25373])
- Optional and Union simplifications ([@scop] - [#25365])
- Add add_torrent service to Transmission ([@postlund] - [#25144]) ([transmission docs])
- Add support for contact binary sensors in homekit_controller ([@dwradcliffe] - [#25355]) ([homekit_controller docs])
- Only poll HomeKit connection once for all entities on a single bridge/pairing ([@Jc2k] - [#25249]) ([homekit_controller docs])
- Add area support to fan service schemas ([@bachya] - [#25409]) ([fan docs])
- Add area support to cover service schemas ([@bachya] - [#25408]) ([cover docs])
- Add area support to automation service schemas ([@bachya] - [#25403]) ([automation docs])
- Add area support to counter service schemas ([@bachya] - [#25401]) ([counter docs])
- Add area support to alarm_control_panel service schemas ([@bachya] - [#25402]) ([alarm_control_panel docs])
- Clean up Netatmo sensor code ([@cgtobi] - [#25390]) ([netatmo docs])
- Add area support to script service schemas ([@bachya] - [#25439]) ([script docs])
- Add area support to scene service schemas ([@bachya] - [#25438]) ([scene docs])
- Add area support to input select service schemas ([@bachya] - [#25432]) ([input_select docs])
- Add area support to input number service schemas ([@bachya] - [#25431]) ([input_number docs])
- Add area support to input datetime service schemas ([@bachya] - [#25430]) ([input_datetime docs])
- Add area support to Wink service schemas ([@bachya] - [#25445]) ([wink docs])
- Add area support to input boolean service schemas ([@bachya] - [#25429]) ([input_boolean docs])
- Add area support to image processing service schemas ([@bachya] - [#25428]) ([image_processing docs])
- Add area support to input text service schemas ([@bachya] - [#25434]) ([input_text docs])
- Add area support to climate service schemas ([@bachya] - [#25441]) ([climate docs])
- Upgrade HPILO requirement to v4.3 ([@xt16johnny] - [#25444]) ([hp_ilo docs])
- Increase vallox robustness on startup ([@andre-richter] - [#25382]) ([vallox docs])
- Add Support for VeSync Devices - Outlets and Switches ([@webdjoe] - [#24953]) ([vesync docs]) (new-platform)
- Add area support to utility meter service schemas ([@bachya] - [#25442]) ([utility_meter docs])
- Add Elgato Avea integration ([@pattyland] - [#24281]) ([avea docs]) (new-integration) (new-platform)
- Add area support to lock service schemas ([@bachya] - [#25435]) ([lock docs])
- Add area support to remote service schemas ([@bachya] - [#25437]) ([remote docs])
- Suez water ([@ooii] - [#23844]) ([suez_water docs]) (new-integration)
- Add new device tracker supporting Fortinet FortiGate ([@kimfrellsen] - [#23078]) ([fortios docs]) (new-integration) (new-platform)
- Bump up ZHA dependencies. ([@Adminiuga] - [#25450]) ([zha docs])
- Add area support to media player service schemas ([@bachya] - [#25436]) ([media_player docs])
- Huawei LTE misc improvements ([@scop] - [#25377]) ([huawei_lte docs])
- Add area support to timer service schemas ([@bachya] - [#25440]) ([timer docs])
- Remove unnecessary REMOTE_SERVICE_SCHEMA ([@bachya] - [#25453]) ([remote docs])
- Add area support to vacuum service schemas ([@bachya] - [#25443]) ([vacuum docs])
- Daikin simplification and code cleanup ([@fredrike] - [#25416]) ([daikin docs])
- Allow configuring sources for older Pioneer receivers ([@plafue] - [#25305]) ([pioneer docs])
- Add area support to group service schemas ([@bachya] - [#25410]) ([group docs])
- Lint fixes ([@scop] - [#25462]) ([avea docs]) ([fortios docs])
- Install requirements_test.txt for flake8 in Azure CI ([@scop] - [#25463])
- Fix bloomsky unit system ([@Santobert] - [#25460]) ([bloomsky docs])
- Type check homeassistant.scripts ([@scop] - [#25464])
- Mypy config cleanups ([@scop] - [#25475])
- Add scan interval to config of Environment Canada sensor ([@michaeldavie] - [#25414]) ([environment_canada docs])
- UniFi block clients ([@Kane610] - [#25478]) ([unifi docs])
- Add a unique identifier to deCONZ groups ([@Kane610] - [#25485]) ([deconz docs])
- Add ord() to template filters ([@aschamberger] - [#25398])
- Update solax to 0.1.2 ([@squishykid] - [#25497]) ([solax docs])
- Add De Lijn (Flemish Public Transport) component ([@bollewolle] - [#24265]) ([delijn docs]) (new-integration) (new-platform)
- Fix deprecation warning in test ([@balloob] - [#25506]) ([http docs])
- Improve handling of Z-Wave config entry vs yaml config ([@cgarwood] - [#25112]) ([zwave docs]) (breaking change)
- Fire lovelace updated event when update detected ([@balloob] - [#25507]) ([lovelace docs])
- Support multiple Elk instances ([@gjbadros] - [#23839]) ([elkm1 docs])
- Add container settings for YAML extension to avoid Hass specific custom tags errors ([@oncleben31] - [#25504])
- Add last_run_success boolean attribute to Switchbot for error trapping ([@manonstreet] - [#25474]) ([switchbot docs])
- deCONZ - Add power attribute for consumption sensors ([@Kane610] - [#25512]) ([deconz docs])
- Improve seventeentrack ([@thomasgermain] - [#25454]) ([seventeentrack docs])
- Roombalocate ([@Anglac] - [#25508]) ([roomba docs])
- deCONZ - cleanup sensor attributes ([@Kane610] - [#25540]) ([deconz docs])
- Update to buienradar json api; and additional monitored_conditions ([@mjj4791] - [#24463]) ([buienradar docs]) (breaking change)
- Fix bug with WWLLN update interval ([@bachya] - [#25498]) ([wwlln docs])
- Fix WinkAC mode API calls to correct methods ([@cameronrmorris] - [#25545]) ([wink docs])
- Bump env_canada to 0.0.19 ([@michaeldavie] - [#25548]) ([environment_canada docs])
- Tibber, off peak values ([@Danielhiversen] - [#25320]) ([tibber docs])
- Enable velbus config entries ([@Cereal2nd] - [#25308]) ([velbus docs])
- huawei_lte: try unsupported data retrievals only once ([@scop] - [#25524]) ([huawei_lte docs])
- Ignore .dmypy.json ([@scop] - [#25528])
- Update eternalegypt to 0.0.8 ([@amelchio] - [#25551]) ([netgear_lte docs])
- Update Cisco Mobility Express module version ([@fbradyirl] - [#25422]) ([cisco_mobility_express docs])
- Expose last_video_id as property for Ring camera ([@Yarikx] - [#25553]) ([ring docs])
- Quiet noisy tado query logging ([@andersonshatch] - [#25529]) ([tado docs])
- Add PS4 tests for media player ([@ktnrg45] - [#25415]) ([ps4 docs])
- UniFi POE control restore clients ([@Kane610] - [#25558]) ([unifi docs])
- LCN cover control via output ports ([@alengwenus] - [#25511]) ([lcn docs])
- UniFi device tracker restore clients ([@Kane610] - [#25532]) ([unifi docs])
- Transition SimpliSafe data retrieval to its own object ([@bachya] - [#25546]) ([simplisafe docs])
- UniFi - Track devices ([@Kane610] - [#25570]) ([unifi docs])
- pylutron PyPI update ([@JonGilmore] - [#25557]) ([lutron docs])
- Make the velbus component more robust in handling errors ([@Cereal2nd] - [#25567]) ([velbus docs])
- Updated Workday Binary Sensor to use Holidays 0.9.11 and added support for Aruba Holidays. ([@orson1282] - [#25568]) ([workday docs])
- add cleaning state code for roborock s6 ([@benleb] - [#25500]) ([xiaomi_miio docs])
- ZHA log helper ([@Adminiuga] - [#25543]) ([zha docs])
- Fix : Velbus translation error ([@Quentame] - [#25575]) ([velbus docs])
- Add last event data (including "changed_by") to SimpliSafe ([@bachya] - [#25569]) ([simplisafe docs])
- Bump Python support to min Python 3.6.0 ([@balloob] - [#25582]) (breaking change)
- Bump insteonplm to 0.16.5 ([@teharris1] - [#25580]) ([insteon docs])
- Fix status of lutron switches/lights after HA reboot ([@JonGilmore] - [#25592]) ([lutron docs])
- Add support for Roku TVs to be powered on or off ([@manutenfruits] - [#25590]) ([roku docs])
- Bump env_canada to 0.0.20 ([@michaeldavie] - [#25594]) ([environment_canada docs])
- Bump venstarcolortouch to 0.9 ([@iamtpage] - [#25585]) ([venstar docs])
- Log platform import errors and correct reqs for config check ([@elupus] - [#25425])
- Improve and align Rejseplanen with other transport components (Breaking) ([@DarkFox] - [#25375]) ([rejseplanen docs]) (breaking change)
- Add migration notification for Ambient PWS ([@bachya] - [#25561]) ([ambient_station docs])
- Fix wrong exposed light for emulated hue ([@croghostrider] - [#25581]) ([demo docs]) ([emulated_hue docs])
- Fix bug and bump geniushub client ([@zxdavb] - [#25599]) ([geniushub docs])
- implemented timout setting for telnet switch ([@tofuSCHNITZEL] - [#25602]) ([telnet docs])
- remove myself from CODEOWNDERS ([@ChristianKuehnel] - [#25593])
- Change how ring polls for changes to allow more platforms to be added ([@rossdargan] - [#25534]) ([ring docs]) (new-platform)
- Introduce support for color temperature ([@yeralin] - [#25503]) ([flux_led docs])
- Netatmo climate refactor ([@cgtobi] - [#25457]) ([netatmo docs])
- Return history for entities in the order they were requested ([@thomasloven] - [#25560]) ([history docs])
- Python < 3.6 remainder cleanups ([@scop] - [#25607])
- Azure flake8 dep, docstring fixes ([@scop] - [#25605]) ([rejseplanen docs]) ([ring docs]) ([zha docs])
- Expose comfort presets as HA presets ([@balloob] - [#25491]) ([ecobee docs]) (breaking change) (beta fix)
- Fix handling of empty results from Rejseplanen ([@DarkFox] - [#25610]) ([rejseplanen docs]) (breaking change) (beta fix)
- bump quirks ([@dmulcahey] - [#25618]) ([zha docs]) (beta fix)
- Handle disabled devices ([@Kane610] - [#25625]) ([unifi docs]) (beta fix)
- Fix polling HomeKit devices with multiple services per accessory ([@Jc2k] - [#25629]) ([homekit_controller docs]) (beta fix)
- Meteofrance improve log error messages ([@oncleben31] - [#25630]) ([meteo_france docs]) (beta fix)
- Bump homekit_python to 0.15 ([@Jc2k] - [#25631]) ([homekit_controller docs]) (beta fix)
- Filter out empty results in history API ([@balloob] - [#25633]) ([history docs]) (beta fix)
- Upgrade hass-nabucasa to 0.16 ([@balloob] - [#25636]) ([cloud docs]) (beta fix)
- Feature zwave preset modes ([@Santobert] - [#25537]) ([climate docs]) ([zwave docs]) (beta fix)
- Add PRESET_AWAY to HomematicIP Cloud climate ([@SukramJ] - [#25641]) ([homematicip_cloud docs]) (beta fix)
- UniFi - allow configuration to not track clients or devices ([@Kane610] - [#25642]) ([unifi docs]) (beta fix)
- Add preset to be away and eco ([@balloob] - [#25643]) ([nest docs]) (beta fix)
- Revert flux_led to 0.89 ([@amelchio] - [#25653]) ([flux_led docs]) (beta fix)
- Options to not track wired clients ([@Kane610] - [#25669]) ([unifi docs]) (beta fix)
- Fix issue with incorrect Notion bridge IDs ([@bachya] - [#25683]) ([notion docs]) (beta fix)
- In some circumstances device.last_seen can be None ([@Kane610] - [#25690]) ([unifi docs]) (beta fix)
- UniFi - reverse connectivity logic ([@Kane610] - [#25691]) ([unifi docs]) (beta fix)
- Fix roku lxml requirement ([@pvizeli] - [#25696]) ([roku docs]) (beta fix)
- Add HmIP-SCI to Homematic IP Cloud, Fix HmIP-SWDM ([@SukramJ] - [#25639]) ([homematicip_cloud docs]) (beta fix)
- Bump envoy_reader to 0.8.6, fix missing dependency ([@jesserizzo] - [#25679]) ([enphase_envoy docs]) (beta fix)
- Add service to reload scenes from configuration.yaml ([@balloob] - [#25680]) ([homeassistant docs]) ([scene docs]) (beta fix)
- Update HTTP defaults ([@balloob] - [#25702]) ([http docs]) (beta fix)
- UniFi - handle device not having a name ([@Kane610] - [#25713]) ([unifi docs]) (beta fix)
- Bump hdate==0.9.0 (use pytz instead of dateutil) ([@tsvi] - [#25726]) ([jewish_calendar docs]) (beta fix)
- initial commit ([@zxdavb] - [#25731]) ([incomfort docs]) (beta fix)
- Revert emulated hue changes ([@balloob] - [#25732]) ([emulated_hue docs]) (beta fix)
- Fix last seen not available on certain devices ([@Kane610] - [#25735]) ([unifi docs]) (beta fix)
[#22701]: https://github.com/home-assistant/home-assistant/pull/22701
[#22888]: https://github.com/home-assistant/home-assistant/pull/22888
[#23078]: https://github.com/home-assistant/home-assistant/pull/23078
[#23839]: https://github.com/home-assistant/home-assistant/pull/23839
[#23844]: https://github.com/home-assistant/home-assistant/pull/23844
[#24061]: https://github.com/home-assistant/home-assistant/pull/24061
[#24265]: https://github.com/home-assistant/home-assistant/pull/24265
[#24281]: https://github.com/home-assistant/home-assistant/pull/24281
[#24367]: https://github.com/home-assistant/home-assistant/pull/24367
[#24427]: https://github.com/home-assistant/home-assistant/pull/24427
[#24463]: https://github.com/home-assistant/home-assistant/pull/24463
[#24738]: https://github.com/home-assistant/home-assistant/pull/24738
[#24884]: https://github.com/home-assistant/home-assistant/pull/24884
[#24908]: https://github.com/home-assistant/home-assistant/pull/24908
[#24919]: https://github.com/home-assistant/home-assistant/pull/24919
[#24950]: https://github.com/home-assistant/home-assistant/pull/24950
[#24953]: https://github.com/home-assistant/home-assistant/pull/24953
[#24956]: https://github.com/home-assistant/home-assistant/pull/24956
[#24991]: https://github.com/home-assistant/home-assistant/pull/24991
[#25052]: https://github.com/home-assistant/home-assistant/pull/25052
[#25056]: https://github.com/home-assistant/home-assistant/pull/25056
[#25071]: https://github.com/home-assistant/home-assistant/pull/25071
[#25083]: https://github.com/home-assistant/home-assistant/pull/25083
[#25085]: https://github.com/home-assistant/home-assistant/pull/25085
[#25086]: https://github.com/home-assistant/home-assistant/pull/25086
[#25090]: https://github.com/home-assistant/home-assistant/pull/25090
[#25091]: https://github.com/home-assistant/home-assistant/pull/25091
[#25093]: https://github.com/home-assistant/home-assistant/pull/25093
[#25094]: https://github.com/home-assistant/home-assistant/pull/25094
[#25108]: https://github.com/home-assistant/home-assistant/pull/25108
[#25111]: https://github.com/home-assistant/home-assistant/pull/25111
[#25112]: https://github.com/home-assistant/home-assistant/pull/25112
[#25117]: https://github.com/home-assistant/home-assistant/pull/25117
[#25120]: https://github.com/home-assistant/home-assistant/pull/25120
[#25127]: https://github.com/home-assistant/home-assistant/pull/25127
[#25128]: https://github.com/home-assistant/home-assistant/pull/25128
[#25129]: https://github.com/home-assistant/home-assistant/pull/25129
[#25132]: https://github.com/home-assistant/home-assistant/pull/25132
[#25144]: https://github.com/home-assistant/home-assistant/pull/25144
[#25157]: https://github.com/home-assistant/home-assistant/pull/25157
[#25158]: https://github.com/home-assistant/home-assistant/pull/25158
[#25161]: https://github.com/home-assistant/home-assistant/pull/25161
[#25172]: https://github.com/home-assistant/home-assistant/pull/25172
[#25173]: https://github.com/home-assistant/home-assistant/pull/25173
[#25174]: https://github.com/home-assistant/home-assistant/pull/25174
[#25175]: https://github.com/home-assistant/home-assistant/pull/25175
[#25176]: https://github.com/home-assistant/home-assistant/pull/25176
[#25181]: https://github.com/home-assistant/home-assistant/pull/25181
[#25182]: https://github.com/home-assistant/home-assistant/pull/25182
[#25186]: https://github.com/home-assistant/home-assistant/pull/25186
[#25188]: https://github.com/home-assistant/home-assistant/pull/25188
[#25190]: https://github.com/home-assistant/home-assistant/pull/25190
[#25194]: https://github.com/home-assistant/home-assistant/pull/25194
[#25195]: https://github.com/home-assistant/home-assistant/pull/25195
[#25199]: https://github.com/home-assistant/home-assistant/pull/25199
[#25200]: https://github.com/home-assistant/home-assistant/pull/25200
[#25201]: https://github.com/home-assistant/home-assistant/pull/25201
[#25202]: https://github.com/home-assistant/home-assistant/pull/25202
[#25207]: https://github.com/home-assistant/home-assistant/pull/25207
[#25208]: https://github.com/home-assistant/home-assistant/pull/25208
[#25221]: https://github.com/home-assistant/home-assistant/pull/25221
[#25234]: https://github.com/home-assistant/home-assistant/pull/25234
[#25249]: https://github.com/home-assistant/home-assistant/pull/25249
[#25260]: https://github.com/home-assistant/home-assistant/pull/25260
[#25265]: https://github.com/home-assistant/home-assistant/pull/25265
[#25284]: https://github.com/home-assistant/home-assistant/pull/25284
[#25304]: https://github.com/home-assistant/home-assistant/pull/25304
[#25305]: https://github.com/home-assistant/home-assistant/pull/25305
[#25308]: https://github.com/home-assistant/home-assistant/pull/25308
[#25316]: https://github.com/home-assistant/home-assistant/pull/25316
[#25317]: https://github.com/home-assistant/home-assistant/pull/25317
[#25320]: https://github.com/home-assistant/home-assistant/pull/25320
[#25338]: https://github.com/home-assistant/home-assistant/pull/25338
[#25339]: https://github.com/home-assistant/home-assistant/pull/25339
[#25340]: https://github.com/home-assistant/home-assistant/pull/25340
[#25341]: https://github.com/home-assistant/home-assistant/pull/25341
[#25355]: https://github.com/home-assistant/home-assistant/pull/25355
[#25357]: https://github.com/home-assistant/home-assistant/pull/25357
[#25365]: https://github.com/home-assistant/home-assistant/pull/25365
[#25373]: https://github.com/home-assistant/home-assistant/pull/25373
[#25375]: https://github.com/home-assistant/home-assistant/pull/25375
[#25377]: https://github.com/home-assistant/home-assistant/pull/25377
[#25382]: https://github.com/home-assistant/home-assistant/pull/25382
[#25390]: https://github.com/home-assistant/home-assistant/pull/25390
[#25398]: https://github.com/home-assistant/home-assistant/pull/25398
[#25401]: https://github.com/home-assistant/home-assistant/pull/25401
[#25402]: https://github.com/home-assistant/home-assistant/pull/25402
[#25403]: https://github.com/home-assistant/home-assistant/pull/25403
[#25408]: https://github.com/home-assistant/home-assistant/pull/25408
[#25409]: https://github.com/home-assistant/home-assistant/pull/25409
[#25410]: https://github.com/home-assistant/home-assistant/pull/25410
[#25414]: https://github.com/home-assistant/home-assistant/pull/25414
[#25415]: https://github.com/home-assistant/home-assistant/pull/25415
[#25416]: https://github.com/home-assistant/home-assistant/pull/25416
[#25422]: https://github.com/home-assistant/home-assistant/pull/25422
[#25425]: https://github.com/home-assistant/home-assistant/pull/25425
[#25428]: https://github.com/home-assistant/home-assistant/pull/25428
[#25429]: https://github.com/home-assistant/home-assistant/pull/25429
[#25430]: https://github.com/home-assistant/home-assistant/pull/25430
[#25431]: https://github.com/home-assistant/home-assistant/pull/25431
[#25432]: https://github.com/home-assistant/home-assistant/pull/25432
[#25434]: https://github.com/home-assistant/home-assistant/pull/25434
[#25435]: https://github.com/home-assistant/home-assistant/pull/25435
[#25436]: https://github.com/home-assistant/home-assistant/pull/25436
[#25437]: https://github.com/home-assistant/home-assistant/pull/25437
[#25438]: https://github.com/home-assistant/home-assistant/pull/25438
[#25439]: https://github.com/home-assistant/home-assistant/pull/25439
[#25440]: https://github.com/home-assistant/home-assistant/pull/25440
[#25441]: https://github.com/home-assistant/home-assistant/pull/25441
[#25442]: https://github.com/home-assistant/home-assistant/pull/25442
[#25443]: https://github.com/home-assistant/home-assistant/pull/25443
[#25444]: https://github.com/home-assistant/home-assistant/pull/25444
[#25445]: https://github.com/home-assistant/home-assistant/pull/25445
[#25450]: https://github.com/home-assistant/home-assistant/pull/25450
[#25453]: https://github.com/home-assistant/home-assistant/pull/25453
[#25454]: https://github.com/home-assistant/home-assistant/pull/25454
[#25457]: https://github.com/home-assistant/home-assistant/pull/25457
[#25460]: https://github.com/home-assistant/home-assistant/pull/25460
[#25462]: https://github.com/home-assistant/home-assistant/pull/25462
[#25463]: https://github.com/home-assistant/home-assistant/pull/25463
[#25464]: https://github.com/home-assistant/home-assistant/pull/25464
[#25474]: https://github.com/home-assistant/home-assistant/pull/25474
[#25475]: https://github.com/home-assistant/home-assistant/pull/25475
[#25478]: https://github.com/home-assistant/home-assistant/pull/25478
[#25485]: https://github.com/home-assistant/home-assistant/pull/25485
[#25491]: https://github.com/home-assistant/home-assistant/pull/25491
[#25497]: https://github.com/home-assistant/home-assistant/pull/25497
[#25498]: https://github.com/home-assistant/home-assistant/pull/25498
[#25500]: https://github.com/home-assistant/home-assistant/pull/25500
[#25503]: https://github.com/home-assistant/home-assistant/pull/25503
[#25504]: https://github.com/home-assistant/home-assistant/pull/25504
[#25506]: https://github.com/home-assistant/home-assistant/pull/25506
[#25507]: https://github.com/home-assistant/home-assistant/pull/25507
[#25508]: https://github.com/home-assistant/home-assistant/pull/25508
[#25511]: https://github.com/home-assistant/home-assistant/pull/25511
[#25512]: https://github.com/home-assistant/home-assistant/pull/25512
[#25524]: https://github.com/home-assistant/home-assistant/pull/25524
[#25528]: https://github.com/home-assistant/home-assistant/pull/25528
[#25529]: https://github.com/home-assistant/home-assistant/pull/25529
[#25532]: https://github.com/home-assistant/home-assistant/pull/25532
[#25534]: https://github.com/home-assistant/home-assistant/pull/25534
[#25537]: https://github.com/home-assistant/home-assistant/pull/25537
[#25540]: https://github.com/home-assistant/home-assistant/pull/25540
[#25543]: https://github.com/home-assistant/home-assistant/pull/25543
[#25545]: https://github.com/home-assistant/home-assistant/pull/25545
[#25546]: https://github.com/home-assistant/home-assistant/pull/25546
[#25548]: https://github.com/home-assistant/home-assistant/pull/25548
[#25551]: https://github.com/home-assistant/home-assistant/pull/25551
[#25553]: https://github.com/home-assistant/home-assistant/pull/25553
[#25557]: https://github.com/home-assistant/home-assistant/pull/25557
[#25558]: https://github.com/home-assistant/home-assistant/pull/25558
[#25560]: https://github.com/home-assistant/home-assistant/pull/25560
[#25561]: https://github.com/home-assistant/home-assistant/pull/25561
[#25567]: https://github.com/home-assistant/home-assistant/pull/25567
[#25568]: https://github.com/home-assistant/home-assistant/pull/25568
[#25569]: https://github.com/home-assistant/home-assistant/pull/25569
[#25570]: https://github.com/home-assistant/home-assistant/pull/25570
[#25575]: https://github.com/home-assistant/home-assistant/pull/25575
[#25580]: https://github.com/home-assistant/home-assistant/pull/25580
[#25581]: https://github.com/home-assistant/home-assistant/pull/25581
[#25582]: https://github.com/home-assistant/home-assistant/pull/25582
[#25585]: https://github.com/home-assistant/home-assistant/pull/25585
[#25590]: https://github.com/home-assistant/home-assistant/pull/25590
[#25592]: https://github.com/home-assistant/home-assistant/pull/25592
[#25593]: https://github.com/home-assistant/home-assistant/pull/25593
[#25594]: https://github.com/home-assistant/home-assistant/pull/25594
[#25599]: https://github.com/home-assistant/home-assistant/pull/25599
[#25602]: https://github.com/home-assistant/home-assistant/pull/25602
[#25605]: https://github.com/home-assistant/home-assistant/pull/25605
[#25607]: https://github.com/home-assistant/home-assistant/pull/25607
[#25610]: https://github.com/home-assistant/home-assistant/pull/25610
[#25618]: https://github.com/home-assistant/home-assistant/pull/25618
[#25625]: https://github.com/home-assistant/home-assistant/pull/25625
[#25629]: https://github.com/home-assistant/home-assistant/pull/25629
[#25630]: https://github.com/home-assistant/home-assistant/pull/25630
[#25631]: https://github.com/home-assistant/home-assistant/pull/25631
[#25633]: https://github.com/home-assistant/home-assistant/pull/25633
[#25636]: https://github.com/home-assistant/home-assistant/pull/25636
[#25639]: https://github.com/home-assistant/home-assistant/pull/25639
[#25641]: https://github.com/home-assistant/home-assistant/pull/25641
[#25642]: https://github.com/home-assistant/home-assistant/pull/25642
[#25643]: https://github.com/home-assistant/home-assistant/pull/25643
[#25653]: https://github.com/home-assistant/home-assistant/pull/25653
[#25669]: https://github.com/home-assistant/home-assistant/pull/25669
[#25679]: https://github.com/home-assistant/home-assistant/pull/25679
[#25680]: https://github.com/home-assistant/home-assistant/pull/25680
[#25683]: https://github.com/home-assistant/home-assistant/pull/25683
[#25690]: https://github.com/home-assistant/home-assistant/pull/25690
[#25691]: https://github.com/home-assistant/home-assistant/pull/25691
[#25696]: https://github.com/home-assistant/home-assistant/pull/25696
[#25702]: https://github.com/home-assistant/home-assistant/pull/25702
[#25713]: https://github.com/home-assistant/home-assistant/pull/25713
[#25726]: https://github.com/home-assistant/home-assistant/pull/25726
[#25731]: https://github.com/home-assistant/home-assistant/pull/25731
[#25732]: https://github.com/home-assistant/home-assistant/pull/25732
[#25735]: https://github.com/home-assistant/home-assistant/pull/25735
[@9R]: https://github.com/9R
[@Adminiuga]: https://github.com/Adminiuga
[@Anglac]: https://github.com/Anglac
[@Bouni]: https://github.com/Bouni
[@Cereal2nd]: https://github.com/Cereal2nd
[@ChristianKuehnel]: https://github.com/ChristianKuehnel
[@Danielhiversen]: https://github.com/Danielhiversen
[@DarkFox]: https://github.com/DarkFox
[@FrederikBolding]: https://github.com/FrederikBolding
[@Jc2k]: https://github.com/Jc2k
[@JonGilmore]: https://github.com/JonGilmore
[@Kane610]: https://github.com/Kane610
[@MartinHjelmare]: https://github.com/MartinHjelmare
[@PhilRW]: https://github.com/PhilRW
[@Quentame]: https://github.com/Quentame
[@Santobert]: https://github.com/Santobert
[@SukramJ]: https://github.com/SukramJ
[@Yarikx]: https://github.com/Yarikx
[@adrum]: https://github.com/adrum
[@alengwenus]: https://github.com/alengwenus
[@amelchio]: https://github.com/amelchio
[@andersonshatch]: https://github.com/andersonshatch
[@andre-richter]: https://github.com/andre-richter
[@andrewsayre]: https://github.com/andrewsayre
[@aschamberger]: https://github.com/aschamberger
[@asleeis]: https://github.com/asleeis
[@austinmroczek]: https://github.com/austinmroczek
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@benleb]: https://github.com/benleb
[@bollewolle]: https://github.com/bollewolle
[@cameronrmorris]: https://github.com/cameronrmorris
[@cgarwood]: https://github.com/cgarwood
[@cgtobi]: https://github.com/cgtobi
[@croghostrider]: https://github.com/croghostrider
[@definitio]: https://github.com/definitio
[@depl0y]: https://github.com/depl0y
[@dmulcahey]: https://github.com/dmulcahey
[@dshokouhi]: https://github.com/dshokouhi
[@dwradcliffe]: https://github.com/dwradcliffe
[@elupus]: https://github.com/elupus
[@escoand]: https://github.com/escoand
[@fabaff]: https://github.com/fabaff
[@farmio]: https://github.com/farmio
[@fbradyirl]: https://github.com/fbradyirl
[@franfos]: https://github.com/franfos
[@fredrike]: https://github.com/fredrike
[@frenck]: https://github.com/frenck
[@gjbadros]: https://github.com/gjbadros
[@gorynychzmey]: https://github.com/gorynychzmey
[@gtdiehl]: https://github.com/gtdiehl
[@iamtpage]: https://github.com/iamtpage
[@jesserizzo]: https://github.com/jesserizzo
[@keesschollaart81]: https://github.com/keesschollaart81
[@kifeo]: https://github.com/kifeo
[@kimfrellsen]: https://github.com/kimfrellsen
[@ktnrg45]: https://github.com/ktnrg45
[@lealoureiro]: https://github.com/lealoureiro
[@ljmerza]: https://github.com/ljmerza
[@lyghtnox]: https://github.com/lyghtnox
[@manonstreet]: https://github.com/manonstreet
[@manutenfruits]: https://github.com/manutenfruits
[@michaeldavie]: https://github.com/michaeldavie
[@mjj4791]: https://github.com/mjj4791
[@nielstron]: https://github.com/nielstron
[@nierob]: https://github.com/nierob
[@oncleben31]: https://github.com/oncleben31
[@ooii]: https://github.com/ooii
[@orson1282]: https://github.com/orson1282
[@pattyland]: https://github.com/pattyland
[@plafue]: https://github.com/plafue
[@postlund]: https://github.com/postlund
[@pvizeli]: https://github.com/pvizeli
[@rossdargan]: https://github.com/rossdargan
[@rtclauss]: https://github.com/rtclauss
[@rytilahti]: https://github.com/rytilahti
[@scop]: https://github.com/scop
[@shbatm]: https://github.com/shbatm
[@squishykid]: https://github.com/squishykid
[@teharris1]: https://github.com/teharris1
[@tetienne]: https://github.com/tetienne
[@thomasgermain]: https://github.com/thomasgermain
[@thomasloven]: https://github.com/thomasloven
[@tofuSCHNITZEL]: https://github.com/tofuSCHNITZEL
[@tsvi]: https://github.com/tsvi
[@webdjoe]: https://github.com/webdjoe
[@xt16johnny]: https://github.com/xt16johnny
[@yeralin]: https://github.com/yeralin
[@zxdavb]: https://github.com/zxdavb
[alarm_control_panel docs]: /components/alarm_control_panel/
[ambient_station docs]: /components/ambient_station/
[apache_kafka docs]: /components/apache_kafka/
[automation docs]: /components/automation/
[avea docs]: /components/avea/
[bloomsky docs]: /components/bloomsky/
[bluetooth_tracker docs]: /components/bluetooth_tracker/
[buienradar docs]: /components/buienradar/
[caldav docs]: /components/caldav/
[calendar docs]: /components/calendar/
[cisco_mobility_express docs]: /components/cisco_mobility_express/
[climate docs]: /components/climate/
[cloud docs]: /components/cloud/
[counter docs]: /components/counter/
[cover docs]: /components/cover/
[daikin docs]: /components/daikin/
[darksky docs]: /components/darksky/
[deconz docs]: /components/deconz/
[delijn docs]: /components/delijn/
[demo docs]: /components/demo/
[device_tracker docs]: /components/device_tracker/
[discord docs]: /components/discord/
[ecobee docs]: /components/ecobee/
[elkm1 docs]: /components/elkm1/
[emulated_hue docs]: /components/emulated_hue/
[enphase_envoy docs]: /components/enphase_envoy/
[environment_canada docs]: /components/environment_canada/
[evohome docs]: /components/evohome/
[fan docs]: /components/fan/
[fleetgo docs]: /components/fleetgo/
[flux_led docs]: /components/flux_led/
[fortigate docs]: /components/fortigate/
[fortios docs]: /components/fortios/
[geniushub docs]: /components/geniushub/
[google docs]: /components/google/
[google_assistant docs]: /components/google_assistant/
[google_maps docs]: /components/google_maps/
[google_travel_time docs]: /components/google_travel_time/
[group docs]: /components/group/
[history docs]: /components/history/
[hive docs]: /components/hive/
[homeassistant docs]: /components/homeassistant/
[homekit docs]: /components/homekit/
[homekit_controller docs]: /components/homekit_controller/
[homematicip_cloud docs]: /components/homematicip_cloud/
[hp_ilo docs]: /components/hp_ilo/
[html5 docs]: /components/html5/
[http docs]: /components/http/
[huawei_lte docs]: /components/huawei_lte/
[image_processing docs]: /components/image_processing/
[incomfort docs]: /components/incomfort/
[input_boolean docs]: /components/input_boolean/
[input_datetime docs]: /components/input_datetime/
[input_number docs]: /components/input_number/
[input_select docs]: /components/input_select/
[input_text docs]: /components/input_text/
[insteon docs]: /components/insteon/
[jewish_calendar docs]: /components/jewish_calendar/
[knx docs]: /components/knx/
[lcn docs]: /components/lcn/
[lock docs]: /components/lock/
[lovelace docs]: /components/lovelace/
[luci docs]: /components/luci/
[lutron docs]: /components/lutron/
[mastodon docs]: /components/mastodon/
[media_extractor docs]: /components/media_extractor/
[media_player docs]: /components/media_player/
[meteo_france docs]: /components/meteo_france/
[mikrotik docs]: /components/mikrotik/
[mqtt docs]: /components/mqtt/
[mvglive docs]: /components/mvglive/
[n26 docs]: /components/n26/
[neato docs]: /components/neato/
[nest docs]: /components/nest/
[netatmo docs]: /components/netatmo/
[netgear_lte docs]: /components/netgear_lte/
[nextbus docs]: /components/nextbus/
[notion docs]: /components/notion/
[nuki docs]: /components/nuki/
[opensensemap docs]: /components/opensensemap/
[pioneer docs]: /components/pioneer/
[ps4 docs]: /components/ps4/
[rainforest_eagle docs]: /components/rainforest_eagle/
[rejseplanen docs]: /components/rejseplanen/
[remote docs]: /components/remote/
[ring docs]: /components/ring/
[ritassist docs]: /components/ritassist/
[roku docs]: /components/roku/
[roomba docs]: /components/roomba/
[samsungtv docs]: /components/samsungtv/
[scene docs]: /components/scene/
[script docs]: /components/script/
[seventeentrack docs]: /components/seventeentrack/
[simplisafe docs]: /components/simplisafe/
[smartthings docs]: /components/smartthings/
[snapcast docs]: /components/snapcast/
[solax docs]: /components/solax/
[somfy docs]: /components/somfy/
[songpal docs]: /components/songpal/
[splunk docs]: /components/splunk/
[spotify docs]: /components/spotify/
[suez_water docs]: /components/suez_water/
[switchbot docs]: /components/switchbot/
[syncthru docs]: /components/syncthru/
[system_health docs]: /components/system_health/
[tado docs]: /components/tado/
[telnet docs]: /components/telnet/
[tibber docs]: /components/tibber/
[timer docs]: /components/timer/
[todoist docs]: /components/todoist/
[totalconnect docs]: /components/totalconnect/
[transmission docs]: /components/transmission/
[twentemilieu docs]: /components/twentemilieu/
[unifi docs]: /components/unifi/
[utility_meter docs]: /components/utility_meter/
[vacuum docs]: /components/vacuum/
[vallox docs]: /components/vallox/
[velbus docs]: /components/velbus/
[venstar docs]: /components/venstar/
[vesync docs]: /components/vesync/
[wink docs]: /components/wink/
[workday docs]: /components/workday/
[wwlln docs]: /components/wwlln/
[xiaomi_miio docs]: /components/xiaomi_miio/
[zha docs]: /components/zha/
[zwave docs]: /components/zwave/

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB