diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index 42c5d088e2f..1951a92694f 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -12,6 +12,7 @@ "Denon", "endconfiguration", "endraw", + "Etekcity", "fitbit", "Flexit", "geizhals", diff --git a/source/_components/ambient_station.markdown b/source/_components/ambient_station.markdown index 4529897565d..4be61d78c31 100644 --- a/source/_components/ambient_station.markdown +++ b/source/_components/ambient_station.markdown @@ -40,189 +40,4 @@ app_key: description: The Application key to access the service. required: true 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 %} diff --git a/source/_components/apache_kafka.markdown b/source/_components/apache_kafka.markdown new file mode 100644 index 00000000000..7169c51bd3e --- /dev/null +++ b/source/_components/apache_kafka.markdown @@ -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 %} diff --git a/source/_components/avea.markdown b/source/_components/avea.markdown new file mode 100644 index 00000000000..89f62e5a73f --- /dev/null +++ b/source/_components/avea.markdown @@ -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 +``` diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index a5f38468a43..4da6ff8fc70 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -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). required: false 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: description: The MQTT topic to publish commands to change the fan mode. required: false @@ -318,4 +323,5 @@ climate: temperature_command_topic: "study/ac/temperature/set" fan_mode_command_topic: "study/ac/fan/set" swing_mode_command_topic: "study/ac/swing/set" + precision: 1.0 ``` diff --git a/source/_components/cups.markdown b/source/_components/cups.markdown index 67ea00369a1..dd3455e5e14 100644 --- a/source/_components/cups.markdown +++ b/source/_components/cups.markdown @@ -57,3 +57,23 @@ is_cups_server: type: boolean default: true {% endconfiguration %} + +## {% linkable_title Examples %} + +Default configuration for an IPP printer: + +```yaml +# Example configuration.yaml entry for an IPP printer +sensor: + - platform: cups + host: PRINTER_IP + is_cups_server: false + printers: + - ipp/print +``` + +
+ +You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`). + +
diff --git a/source/_components/darksky.markdown b/source/_components/darksky.markdown index 759306b4407..c7ae5bca389 100644 --- a/source/_components/darksky.markdown +++ b/source/_components/darksky.markdown @@ -143,6 +143,8 @@ monitored_conditions: description: The approximate distance to the nearest storm in miles. nearest_storm_bearing: 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: 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 diff --git a/source/_components/delijn.markdown b/source/_components/delijn.markdown new file mode 100644 index 00000000000..bb4ae3c759c --- /dev/null +++ b/source/_components/delijn.markdown @@ -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: diff --git a/source/_components/elkm1.markdown b/source/_components/elkm1.markdown index c0abdf4fe92..4ddde4a4b89 100644 --- a/source/_components/elkm1.markdown +++ b/source/_components/elkm1.markdown @@ -36,18 +36,21 @@ There is currently support for the following device types within Home Assistant: ## 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: ```yaml # Example configuration.yaml entry elkm1: - host: elk://IP_ADDRESS + - host: elk://IP_ADDRESS_1 + ... + - host: elk://IP_ADDRESS_2 + prefix: gh # for guest house controller ``` {% configuration %} host: - description: Connection string to Elk of the form `://
[:port]`. `` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `
` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `` 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 `://
[:port]`. `` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `
` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `` 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 type: string username: @@ -58,6 +61,10 @@ password: description: Password to login to Elk. Only required if using `elks` connection method. required: false 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: description: The temperature unit that the Elk panel uses. Valid values are `C` and `F`. required: false diff --git a/source/_components/environment_canada.markdown b/source/_components/environment_canada.markdown index 9de19098664..8b07398d502 100644 --- a/source/_components/environment_canada.markdown +++ b/source/_components/environment_canada.markdown @@ -47,10 +47,10 @@ weather: - 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.`. - 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 {% configuration %} @@ -67,7 +67,7 @@ station: required: false type: string name: - description: Name to be used for the weather entity. + description: Name to be used for the entity ID, e.g. `weather.`. required: false type: string forecast: @@ -89,11 +89,35 @@ sensor: - 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.`. -- The sensor checks for new data every 10 minutes, and the source data is typically updated hourly within 10 minutes after the hour. +- A sensor will be created for each of the following conditions, with a default name like `sensor.temperature`: + - `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: - - 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 +- In the case of multiple alerts in the same category, the titles and details of each are concatenated together with a pipe (`|`) separator. {% configuration %} 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. required: false type: string -name: - description: Name to be used for the sensor entities. +language: + description: Language to use for entity display names and textual data (English or French). required: false type: string -monitored_conditions: - description: The conditions to monitor. A sensor will be created for each condition. - required: true - type: list - default: All keys - keys: - 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. + default: english +scan_interval: + description: The time between updates in seconds. + required: false + type: integer + default: 600 {% 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 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 ``` +

+ 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` +

+ - If no name is given, the camera entity will be named `camera._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: - 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 type: string name: - description: Name to be used for the camera entity. + description: Name to be used for the entity ID, e.g. `camera.`. required: false type: string loop: diff --git a/source/_components/fleetgo.markdown b/source/_components/fleetgo.markdown new file mode 100644 index 00000000000..b7c87e09aa4 --- /dev/null +++ b/source/_components/fleetgo.markdown @@ -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. diff --git a/source/_components/fortigate.markdown b/source/_components/fortigate.markdown new file mode 100644 index 00000000000..3d063e675d4 --- /dev/null +++ b/source/_components/fortigate.markdown @@ -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 + 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 +``` diff --git a/source/_components/fortios.markdown b/source/_components/fortios.markdown new file mode 100644 index 00000000000..404f369cc8e --- /dev/null +++ b/source/_components/fortios.markdown @@ -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 %} diff --git a/source/_components/fronius.markdown b/source/_components/fronius.markdown new file mode 100644 index 00000000000..fb23ba7b51c --- /dev/null +++ b/source/_components/fronius.markdown @@ -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 %} diff --git a/source/_components/google_maps.markdown b/source/_components/google_maps.markdown index e0dfa1f4b7f..b6a7dc4d694 100644 --- a/source/_components/google_maps.markdown +++ b/source/_components/google_maps.markdown @@ -14,9 +14,12 @@ The `google_maps` platform allows you to detect presence using the unofficial AP ## 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`.
@@ -32,7 +35,6 @@ To integrate Google Maps Location Sharing in Home Assistant, add the following s device_tracker: - platform: google_maps username: YOUR_USERNAME - password: YOUR_PASSWORD ``` {% 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. required: false type: float +scan_interval: + description: The frequency (in seconds) to check for location updates. + required: false + default: 60 + type: integer {% 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. diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown index ac475fd8bd1..f1532ff16f5 100644 --- a/source/_components/hive.markdown +++ b/source/_components/hive.markdown @@ -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: -- [Binary Sensor](#binary-sensor) -- [Climate](#climate) -- [Light](#light) -- [Sensor](#sensor) -- [Switch](#switch) +- [Binary Sensor](#Binary-Sensor) +- [Climate](#Climate) +- [Light](#Light) +- [Sensor](#Sensor) +- [Switch](#Switch) +- [Water Heater](#Water-Heater) 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: - 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 diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 4717a5c62a6..64ef560e215 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -114,11 +114,11 @@ homekit: type: map keys: 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 type: string 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 type: string low_battery_threshold: @@ -141,7 +141,7 @@ homekit: required: true type: string 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 type: string 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 -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 -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? 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. diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown index 6deea76e083..2df614d999e 100644 --- a/source/_components/homekit_controller.markdown +++ b/source/_components/homekit_controller.markdown @@ -34,7 +34,7 @@ There is currently support for the following device types within Home Assistant: - Light (HomeKit lights) - Lock (HomeKit lock) - Switch (HomeKit switches) -- Binary Sensor (HomeKit motion sensors) +- Binary Sensor (HomeKit motion sensors and contact sensors) - Sensor (HomeKit humidity, temperature, and light level sensors) The integration will be automatically configured if the [`discovery`](/components/discovery/) integration is enabled. diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown index 6d817784386..8d16d1f54b5 100644 --- a/source/_components/homematicip_cloud.markdown +++ b/source/_components/homematicip_cloud.markdown @@ -86,6 +86,7 @@ authtoken: * homematicip_cloud.binary_sensor * Window and door contact (*HmIP-SWDO, -I*) + * Contact Interface flush-mount – 1 channel (*HmIP-FCI1*) * Window Rotary Handle Sensor (*HmIP-SRH*) * Smoke sensor and alarm (*HmIP-SWSD*) * Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) @@ -110,8 +111,10 @@ authtoken: * Temperature and humidity Sensor with display (*HmIP-STHD*) * homematicip_cloud.cover - * Shutter actuator brand-mount (*HmIP-BROLL*) - * Shutter actuator flush-mount (*HmIP-FROLL*) + * Shutter actuator for brand-mount (*HmIP-BROLL*) + * Shutter actuator for flush-mount (*HmIP-FROLL*) + * Blind Actuator for brand switches (*HmIP-BBL*) + * Blind Actuator for flush-mount (*HmIP-FBL*) * homematicip_cloud.light * Switch actuator and meter for brand switches (*HmIP-BSM*) @@ -138,13 +141,83 @@ authtoken: * Switch Actuator and Meter – flush-mount (*HmIP-FSM, -FSM16*) * Open Collector Module Receiver - 8x (*HmIP-MOD-OC8*) * 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 * Weather Sensor – basic (*HmIP-SWO-B*) * Weather Sensor – plus (*HmIP-SWO-PL*) * 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). It's not possible to detect a key press event on these devices at the moment. diff --git a/source/_components/honeywell.markdown b/source/_components/honeywell.markdown index fa2b3e13c1c..5e4463aad00 100644 --- a/source/_components/honeywell.markdown +++ b/source/_components/honeywell.markdown @@ -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.
+ 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. +
### US-based Systems diff --git a/source/_components/huawei_lte.markdown b/source/_components/huawei_lte.markdown index b8b05e1dea3..09d4dff41f9 100644 --- a/source/_components/huawei_lte.markdown +++ b/source/_components/huawei_lte.markdown @@ -122,8 +122,8 @@ sensor: monitored_conditions: - device_information.SoftwareVersion - device_signal.rssi - - traffic_statistics.CurrentDownloadRate - - traffic_statistics.TotalConnectTime + - monitoring_traffic_statistics.CurrentDownloadRate + - monitoring_traffic_statistics.TotalConnectTime ``` {% configuration %} @@ -152,14 +152,14 @@ monitored_conditions: device_signal.sinr: description: The signal SINR value. default: default - traffic_statistics.CurrentDownloadRate: + monitoring_traffic_statistics.CurrentDownloadRate: description: Current download rate, bytes/sec. - traffic_statistics.CurrentUploadRate: + monitoring_traffic_statistics.CurrentUploadRate: description: Current upload rate, bytes/sec. - traffic_statistics.TotalUpload: + monitoring_traffic_statistics.TotalUpload: description: Total bytes uploaded since last reset. - traffic_statistics.TotalDownload: + monitoring_traffic_statistics.TotalDownload: description: Total bytes downloaded since last reset. - traffic_statistics.TotalConnectTime: + monitoring_traffic_statistics.TotalConnectTime: description: Total time connected since last reset. {% endconfiguration %} diff --git a/source/_components/lcn.markdown b/source/_components/lcn.markdown index f5aef008c98..146ae5852a0 100644 --- a/source/_components/lcn.markdown +++ b/source/_components/lcn.markdown @@ -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 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. 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:
- 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. + 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. They are ideal to be used in automation scripts or for the `template` platforms.
@@ -45,7 +45,7 @@ There is currently support for the following device types within Home Assistant: ## Configuration 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). ```yaml @@ -97,7 +97,7 @@ lcn: address: myhome.s0.m7 source: var3 unit_of_measurement: °C - + switches: - name: Sprinkler switch address: myhome.s0.m7 @@ -219,6 +219,10 @@ covers: description: "Motor port ([MOTOR_PORT](#ports))." required: true type: string + reverse_time: + description: "Reverse time ([REVERSE_TIME](#variables-and-units), see also [Cover](#cover))." + required: false + type: string 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.) -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: @@ -363,12 +367,12 @@ The platforms and service calls use several predefined constants as parameters. | -------- | ------ | | OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` | | 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` | | LOGICOP_PORT | `logicop1`, `logicop2`, `logicop3`, `logicop4` | | 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 | | :------: | :----------: | :-----------: | @@ -377,6 +381,11 @@ The [MOTOR_PORT](#ports) values specify which hardware relay configuration will | `motor3` | `relay5` | `relay6` | | `motor4` | `relay7` | `relay8` | +| Motor | Output up | Output down | +| :-------: | :-------: | :---------: | +| `outputs` | `output1` | `output2` | + + ### Variables and Units | 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` | | TIME_UNIT | `seconds`, `minutes`, `hours`, `days` | | RELVARREF | `current`, `prog` | +| REVERSE_TIME | `rt70`, `rt600`, `rt1200` | ### States: @@ -417,19 +427,30 @@ The binary sensor can be used in automation scripts or in conjunction with `temp ### Climate 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. -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. +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. +If the control is set lockable, the regulator can be turned on/off.
-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).
### 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:
+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). + +

+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. +

+ ### Light @@ -457,7 +478,7 @@ The sensor can be used in automation scripts or in conjunction with `template` p
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.
### Switch @@ -470,7 +491,7 @@ The `lcn` switch platform allows the control of the following [LCN](http://www.l ## 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. -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` @@ -479,9 +500,9 @@ Set absolute brightness of output port in percent. | Service data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------- | ------ | | `address` | No | [LCN address](#lcn-addresses) | -| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | -| `brightness` | Yes | Absolute brightness in percent | 0..100 | -| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | +| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | +| `brightness` | Yes | Absolute brightness in percent | 0..100 | +| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | Example: @@ -501,9 +522,9 @@ Set relative brightness of output port in percent. | Service data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------- | ------ | | `address` | No | [LCN address](#lcn-addresses) | -| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | -| `brightness` | Yes | Relative brightness in percent | -100..100 | -| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | +| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | +| `brightness` | Yes | Relative brightness in percent | -100..100 | +| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | Example: @@ -522,8 +543,8 @@ Toggle output port. | Service data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------- | ------ | | `address` | No | [LCN address](#lcn-addresses) | -| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | -| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | +| `output` | No | Output port of module | [OUTPUT_PORT](#ports) | +| `transition` | Yes | Transition (ramp) time in seconds | 0..486 | Example: @@ -682,7 +703,7 @@ data: Send keys (which executes bound commands). 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`. -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`. | Service data attribute | Optional | Description | Values | @@ -717,9 +738,9 @@ data: ### Service `lock_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 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`. | Service data attribute | Optional | Description | Values | diff --git a/source/_components/lutron.markdown b/source/_components/lutron.markdown index ca2278d0783..f905a6c2b8e 100644 --- a/source/_components/lutron.markdown +++ b/source/_components/lutron.markdown @@ -70,7 +70,7 @@ For single-action buttons (scene selection, etc.), `action` will be `single`, an ## 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. After setup, scenes will appear in Home Assistant using the area, keypad and button name. diff --git a/source/_components/mikrotik.markdown b/source/_components/mikrotik.markdown index 49199b8c8b2..1ab056dc995 100644 --- a/source/_components/mikrotik.markdown +++ b/source/_components/mikrotik.markdown @@ -53,6 +53,12 @@ password: description: The password of the given user account on the MikroTik device. required: true 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: description: RouterOS API port. required: false @@ -69,6 +75,15 @@ method: type: string {% endconfiguration %} +
+ + 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. + +
+ ## 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: diff --git a/source/_components/mvglive.markdown b/source/_components/mvglive.markdown index 8b1d94d075e..ddf7697aad2 100644 --- a/source/_components/mvglive.markdown +++ b/source/_components/mvglive.markdown @@ -44,7 +44,7 @@ lines: products: description: One or more modes of transport. 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 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. diff --git a/source/_components/n26.markdown b/source/_components/n26.markdown index 264cf0c8d3c..4842c2529c2 100644 --- a/source/_components/n26.markdown +++ b/source/_components/n26.markdown @@ -25,6 +25,17 @@ n26: 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 %} username: description: The account username. diff --git a/source/_components/neato.markdown b/source/_components/neato.markdown index 51a18b1c63f..e7e5505f2bc 100644 --- a/source/_components/neato.markdown +++ b/source/_components/neato.markdown @@ -33,6 +33,11 @@ password: description: Password for the Neato account. required: true type: string +vendor: + description: Support for additional vendors. Set to `vorwerk` for Vorwerk robots. + required: false + type: string + default: neato {% endconfiguration %}
diff --git a/source/_components/nuki.markdown b/source/_components/nuki.markdown index 1c900edfec6..b0bbda7dc71 100644 --- a/source/_components/nuki.markdown +++ b/source/_components/nuki.markdown @@ -41,7 +41,7 @@ token: ## Services -### Service `nuki_unlatch` +### Service `open` 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. -### 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. 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. | `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. diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown index e46691fa85c..f410e61d6d9 100644 --- a/source/_components/opentherm_gw.markdown +++ b/source/_components/opentherm_gw.markdown @@ -513,10 +513,6 @@ Possible LED modes and their meaning are listed here: * M. Boiler requires maintenance. * P. Raised power mode active on thermostat interface. -
-The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat. -
- # Example A full configuration example with two configured OpenTherm Gateways - one connected via USB, the other over the network - looks like the one below. diff --git a/source/_components/pioneer.markdown b/source/_components/pioneer.markdown index 737cc1adadc..53143264192 100644 --- a/source/_components/pioneer.markdown +++ b/source/_components/pioneer.markdown @@ -40,9 +40,86 @@ timeout: description: Number of seconds (float) to wait for blocking operations like connect, write and read. required: false 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 %} Notes: - 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. + +### 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' +``` diff --git a/source/_components/pushover.markdown b/source/_components/pushover.markdown index 781ac32babd..92a764c2142 100644 --- a/source/_components/pushover.markdown +++ b/source/_components/pushover.markdown @@ -53,10 +53,13 @@ Example Automation: url: "https://www.home-assistant.io/" sound: pianobar priority: 0 + attachment: "http://example.com/image.png" ``` 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/). 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 device: pixel url: "https://www.home-assistant.io/" + attachment: "/tmp/image.png" ``` {% endraw %} diff --git a/source/_components/radiotherm.markdown b/source/_components/radiotherm.markdown index a872148f75b..4f4cb9c138c 100644 --- a/source/_components/radiotherm.markdown +++ b/source/_components/radiotherm.markdown @@ -60,3 +60,4 @@ climate: - 192.168.99.137 - 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. diff --git a/source/_components/rainforest_eagle.markdown b/source/_components/rainforest_eagle.markdown new file mode 100644 index 00000000000..99414c1e55b --- /dev/null +++ b/source/_components/rainforest_eagle.markdown @@ -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 %} diff --git a/source/_components/rejseplanen.markdown b/source/_components/rejseplanen.markdown index cdfa7f78a64..03bee9fefbc 100644 --- a/source/_components/rejseplanen.markdown +++ b/source/_components/rejseplanen.markdown @@ -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: - 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) -- 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 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 | | EXB | Express bus | +| TB | Harbour bus| | LET | Letbanen | | M | Metro | | S | S-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 | diff --git a/source/_components/ritassist.markdown b/source/_components/ritassist.markdown deleted file mode 100644 index d6d050fd279..00000000000 --- a/source/_components/ritassist.markdown +++ /dev/null @@ -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. \ No newline at end of file diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 2e22f89d2ae..4ba6cd9df0a 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -8,7 +8,7 @@ ha_release: 0.47 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). @@ -40,7 +40,7 @@ longitude: required: false type: float 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 default: 60 type: integer @@ -51,8 +51,12 @@ monitored_conditions: keys: stationname: 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: - 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: description: A symbol and the current weather condition (`clear`, `cloudy`, `fog`, `rainy`, `snowy` or `lightning`). conditiondetailed: @@ -61,6 +65,8 @@ monitored_conditions: description: A symbol with the full current weather condition (in English). symbol: 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: description: The relative humidity (%). temperature: @@ -72,7 +78,7 @@ monitored_conditions: windforce: description: "The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)." 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: description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. 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. irradiance: 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: description: "The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." mintemp_1d: @@ -98,11 +108,21 @@ monitored_conditions: sunchance_1d: description: The forecasted chance for sun (%). 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: 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: 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: description: Symbol and condition code of the expected condition. condition_1d: @@ -145,11 +165,14 @@ Full configuration example (excluding forecasted conditions) where location is m longitude: 5.70 monitored_conditions: - stationname + - barometerfc + - barometerfcname - conditioncode - condition - conditiondetailed - conditionexact - symbol + - feeltemperature - humidity - temperature - groundtemperature @@ -164,6 +187,8 @@ Full configuration example (excluding forecasted conditions) where location is m - irradiance - precipitation_forecast_average - precipitation_forecast_total + - rainlast24hour + - rainlasthour ``` Configuration example with current condition and (some) forecasted values: @@ -190,21 +215,23 @@ sensor: - temperature_3d - temperature_4d - temperature_5d + - mintemp_1d - rainchance_1d - rainchance_2d - - rainchance_3d - - rainchance_4d - - rainchance_5d - sunchance_1d - sunchance_2d - - sunchance_3d - - sunchance_4d - - sunchance_5d - rain_1d - rain_2d - - rain_3d - - rain_4d - - rain_5d + - minrain_1d + - maxrain_1d + - 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) diff --git a/source/_components/simplisafe.markdown b/source/_components/simplisafe.markdown index 2922d60cfdf..d69cf12385d 100644 --- a/source/_components/simplisafe.markdown +++ b/source/_components/simplisafe.markdown @@ -15,6 +15,8 @@ There is currently support for the following device types within Home Assistant: - Alarm +## Configuration + To enable this component, add the following lines to your `configuration.yaml`: ```yaml @@ -39,3 +41,28 @@ code: required: false type: string {% 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 | diff --git a/source/_components/snapcast.markdown b/source/_components/snapcast.markdown index 14eec149b0d..a272fdd5ca8 100644 --- a/source/_components/snapcast.markdown +++ b/source/_components/snapcast.markdown @@ -32,3 +32,40 @@ port: default: 1705 type: integer {% 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. diff --git a/source/_components/splunk.markdown b/source/_components/splunk.markdown index ddb057ee181..9aa909d2f16 100644 --- a/source/_components/splunk.markdown +++ b/source/_components/splunk.markdown @@ -3,7 +3,7 @@ title: "Splunk" description: "Record events in Splunk." logo: splunk.png ha_category: - - "History" + - History ha_release: 0.13 --- @@ -49,4 +49,25 @@ name: required: false default: HASS 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 %} diff --git a/source/_components/spotify.markdown b/source/_components/spotify.markdown index 526a2e39353..6ed840a6ad5 100644 --- a/source/_components/spotify.markdown +++ b/source/_components/spotify.markdown @@ -117,6 +117,19 @@ which are part of the service. You can test this from the services 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. [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. diff --git a/source/_components/suez_water.markdown b/source/_components/suez_water.markdown new file mode 100644 index 00000000000..3b1add6172f --- /dev/null +++ b/source/_components/suez_water.markdown @@ -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`. diff --git a/source/_components/switchbot.markdown b/source/_components/switchbot.markdown index aab3a5bbc9d..468a619913a 100644 --- a/source/_components/switchbot.markdown +++ b/source/_components/switchbot.markdown @@ -32,3 +32,10 @@ name: required: false type: string {% 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`. diff --git a/source/_components/syncthru.markdown b/source/_components/syncthru.markdown index 278495c78db..1d8f4de2d31 100644 --- a/source/_components/syncthru.markdown +++ b/source/_components/syncthru.markdown @@ -23,9 +23,6 @@ sensor: - platform: syncthru resource: http://my-printer.address name: My Awesome Printer - monitored_conditions: - - toner_black - - output_tray_0 ``` {% configuration %} @@ -39,48 +36,11 @@ sensor: required: false default: Samsung Printer 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 %} + +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 diff --git a/source/_components/telnet.markdown b/source/_components/telnet.markdown index 32ad3936ddc..221ff25f97d 100644 --- a/source/_components/telnet.markdown +++ b/source/_components/telnet.markdown @@ -26,6 +26,7 @@ switch: command_off: "PWR OFF" command_state: "PWR?" value_template: '{{ value == "PWR=01" }}' + timeout: 0.9 ``` {% endraw %} @@ -69,4 +70,9 @@ switches: description: The name used to display the switch in the frontend. required: false 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 %} diff --git a/source/_components/totalconnect.markdown b/source/_components/totalconnect.markdown index 9defa1969d8..8cadb20b75c 100644 --- a/source/_components/totalconnect.markdown +++ b/source/_components/totalconnect.markdown @@ -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`: ```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: totalconnect +totalconnect: username: YOUR_USERNAME password: YOUR_PASSWORD ``` @@ -47,6 +45,8 @@ password: type: string {% 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 ```yaml diff --git a/source/_components/transmission.markdown b/source/_components/transmission.markdown index 68b10f9377b..9d4c4ff6ccb 100644 --- a/source/_components/transmission.markdown +++ b/source/_components/transmission.markdown @@ -117,3 +117,13 @@ Example of configuration of an automation with completed torrents: title: "Torrent completed!" 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 diff --git a/source/_components/twentemilieu.markdown b/source/_components/twentemilieu.markdown new file mode 100644 index 00000000000..df54c4ab44f --- /dev/null +++ b/source/_components/twentemilieu.markdown @@ -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. | diff --git a/source/_components/unifi.markdown b/source/_components/unifi.markdown index 38e523449a0..ec1c1a12d01 100644 --- a/source/_components/unifi.markdown +++ b/source/_components/unifi.markdown @@ -8,6 +8,7 @@ ha_category: - Switch ha_release: 0.81 ha_iot_class: Local Polling +ha_qa_scale: platinum redirect_from: - /components/device_tracker.unifi/ - /components/switch.unifi/ @@ -20,74 +21,43 @@ There is currently support for the following device types within Home Assistant: - [Presence Detection](#presence-detection) - [Switch](#switch) -Currently this implementation only exposes POE control for networked devices. Device tracker implementation is not using the same code base. - ## 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. - -```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: +You can augment the behavior of UniFi device tracker by adding ```yaml # Example configuration.yaml entry -device_tracker: - - platform: unifi - host: unifi - username: username - password: password - ssid_filter: - - 'HomeSSID' - - 'IoTSSID' +unifi: + controllers: + - host: unifi + site: My site + ssid_filter: + - 'HomeSSID' + 'IoTSSID' ``` {% configuration %} -username: - description: A user on the controller - type: string - required: true -password: - description: The password for the account - type: string - required: true host: - description: The hostname or IP address of your controller - default: localhost + description: Same address as relevant config entry, needed to identify config entry type: string - required: false -port: - description: The port of your controller's web interface - default: 8443 - type: integer - required: false -site_id: - description: For multisite installations, you can specify `site_id` to specify which is used + required: true + default: None +site: + description: Same site as relevant config entry, needed to identify config entry type: string + required: true + default: None +block_client: + description: Clients that can be blocked from the network + type: list required: false - default: default -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 + default: None detection_time: description: How long since the last seen time before the device is marked away, specified in seconds. type: integer @@ -98,102 +68,52 @@ ssid_filter: type: list required: false default: None -monitored_conditions: - description: A list of extra attributes to pull from the Unifi controller. - type: list - required: false - default: None {% endconfiguration %} -See the [device tracker integration page](/components/device_tracker/) for instructions how to configure the people to be tracked. - ### 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 -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. -### 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. - -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`. +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. ### 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) -### 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 -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 +``` diff --git a/source/_components/velbus.markdown b/source/_components/velbus.markdown index 1d59dd2508e..68d973de4ba 100644 --- a/source/_components/velbus.markdown +++ b/source/_components/velbus.markdown @@ -29,19 +29,23 @@ There is currently support for the following device types within Home Assistant: ## 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 # Example configuration.yaml entry for a USB or serial interface velbus: - port: '/dev/ttyUSB00' + port: 'PORT_STRING' ``` -```yaml -# Example configuration.yaml entry for a TCP/IP interface -velbus: - port: '127.0.0.1:3678' -``` +## Port Sstring + +The port string used in the user interface or the configuration file can have 2 formats: + +- For a serial device: /dev/ttyUSB00 +- For a tcp/ip device: 127.0.0.1:3678 {% configuration %} port: diff --git a/source/_components/vesync.markdown b/source/_components/vesync.markdown index fa7e38cf0b8..7d7a8d93016 100644 --- a/source/_components/vesync.markdown +++ b/source/_components/vesync.markdown @@ -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." logo: vesync.png ha_category: @@ -9,20 +9,37 @@ redirect_from: - /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 -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 # Example configuration.yaml entry -switch: - - platform: vesync +vesync: username: YOUR_USERNAME password: YOUR_PASSWORD ``` @@ -38,11 +55,50 @@ password: type: string {% 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 | -| ------------------- | ------------------------------------------------------------------- | --------------- | -| `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 | +## Outlet Exposed Attributes + +VeSync outlets will expose the following details for only the smart outlets. Energy monitoring not available for in-wall switches. + +| 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 %} diff --git a/source/_components/wwlln.markdown b/source/_components/wwlln.markdown index 6b1c2a98940..90c022d43a6 100644 --- a/source/_components/wwlln.markdown +++ b/source/_components/wwlln.markdown @@ -11,9 +11,9 @@ ha_config_flow: true The `wwlln` integration displays lightning strike information from the [World Wide Lightning Location Network (WWLLN)](http://wwlln.net). -Entities are generated, updated and removed automatically with each update -from the feed. Each entity defines latitude and longitude and will be shown -on the default map automatically, or on a map card by defining the source +Entities are generated, updated and removed automatically with each update +from the feed. Each entity defines latitude and longitude and will be shown +on the default map automatically, or on a map card by defining the source `wwlln`. The distance (in kilometers or miles, depending on your unit system) is available as the state of each entity. @@ -21,13 +21,16 @@ is available as the state of each entity.

-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 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`: + ```yaml wwlln: ``` @@ -46,7 +49,7 @@ radius: required: false type: integer 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 type: time default: 10 minutes @@ -54,16 +57,16 @@ window: ## 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: -| Attribute | Description | -|--------------------|-------------| -| latitude | Latitude of the lightning strike. | -| longitude | Longitude of the lightning strike. | -| source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | -| external_id | The external ID used in the feed to identify the lightning strike in the feed. | -| publication_date | Date and time when this event occurred. | +| Attribute | Description | +| ---------------- | ----------------------------------------------------------------------------- | +| latitude | Latitude of the lightning strike. | +| longitude | Longitude of the lightning strike. | +| source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | +| external_id | The external ID used in the feed to identify the earthquake in the feed. | +| publication_date | Date and time when this event occurred. | ## Full Configuration diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 7b521c2e262..32afab597a9 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -24,7 +24,7 @@ automation:
- 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.
@@ -50,8 +50,8 @@ automation: platform: mqtt topic: living_room/switch/ac # Optional - payload: 'on' - encoding: 'utf-8' + payload: "on" + encoding: "utf-8" ``` ### 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. {% raw %} + ```yaml automation: trigger: platform: numeric_state entity_id: sensor.temperature # Optional - value_template: '{{ state.attributes.battery }}' + value_template: "{{ state.attributes.battery }}" # At least one of the following required above: 17 below: 25 @@ -76,6 +77,7 @@ automation: minutes: 10 seconds: 5 ``` + {% endraw %}
@@ -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: {% raw %} + ```yaml automation: trigger: platform: numeric_state entity_id: sensor.temperature # Optional - value_template: '{{ state.attributes.battery }}' + value_template: "{{ state.attributes.battery }}" # At least one of the following required above: 17 below: 25 # If given, will trigger when condition has been for X time. - for: '01:10:05' + for: "01:10:05" ``` + {% endraw %} You can also use templates in the `for` option. {% raw %} + ```yaml automation: trigger: @@ -122,6 +127,7 @@ automation: message: > {{ trigger.to_state.name }} too high for {{ trigger.for }}! ``` + {% endraw %} The `for` template(s) will be evaluated when an entity changes as specified. @@ -136,23 +142,24 @@ automation: platform: state entity_id: device_tracker.paulus, device_tracker.anne_therese # Optional - from: 'not_home' + from: "not_home" # Optional - to: 'home' + to: "home" # 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. {% raw %} + ```yaml automation: trigger: platform: state entity_id: device_tracker.paulus, device_tracker.anne_therese - to: 'home' + to: "home" for: minutes: "{{ states('input_number.lock_min')|int }}" seconds: "{{ states('input_number.lock_sec')|int }}" @@ -160,13 +167,14 @@ automation: service: lock.lock entity_id: lock.my_place ``` + {% endraw %} The `for` template(s) will be evaluated when an entity changes as specified. -
- Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans. + +Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.
@@ -180,7 +188,7 @@ An optional time offset can be given to have it trigger a set time before or aft
-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.
@@ -193,7 +201,7 @@ automation: # Possible values: sunset, sunrise event: sunset # Optional time offset. This example will trigger 45 minutes before sunset. - offset: '-00:45:00' + offset: "-00:45:00" ``` #### 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: {% raw %} + ```yaml automation: alias: "Exterior Lighting on when dark outside" @@ -214,6 +223,7 @@ automation: service: switch.turn_on entity_id: switch.exterior_lighting ``` + {% 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. @@ -223,6 +233,7 @@ Although the actual amount of light depends on weather, topography and land cove - 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. + - Nautical twilight: 6° > Solar angle > -12° - 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 %}`) {% raw %} + ```yaml automation: trigger: @@ -241,13 +253,15 @@ automation: value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}" # If given, will trigger when template remains true for X time. - for: '00:01:00' + for: "00:01:00" ``` + {% endraw %} You can also use templates in the `for` option. {% raw %} + ```yaml automation: trigger: @@ -256,13 +270,13 @@ automation: for: minutes: "{{ states('input_number.minutes')|int(0) }}" ``` + {% endraw %} The `for` template(s) will be evaluated when the `value_template` becomes `true`.
Rendering templates with time (`now()`) is dangerous as trigger templates only update based on entity state changes. -
### Time trigger @@ -274,7 +288,7 @@ automation: trigger: platform: time # Military time format. This trigger will fire at 3:32 PM - at: '15:32:00' + at: "15:32:00" ``` ### Time pattern trigger @@ -292,19 +306,19 @@ automation 2: trigger: platform: time_pattern # Trigger once per minute during the hour of 3 - hours: '3' - minutes: '*' + hours: "3" + minutes: "*" automation 3: trigger: platform: time_pattern # You can also match on interval. This will match every 5 minutes - minutes: '/5' + minutes: "/5" ```
- 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.
@@ -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`. - ### 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/). @@ -333,7 +346,7 @@ automation: entity_id: device_tracker.paulus zone: zone.home # Event is either enter or leave - event: enter # or "leave" + event: enter # or "leave" ``` ### Geolocation trigger @@ -348,7 +361,7 @@ automation: source: nsw_rural_fire_service_feed zone: zone.bushfire_alert_zone # Event is either enter or leave - event: enter # or "leave" + event: enter # or "leave" ``` ### Multiple triggers @@ -358,7 +371,7 @@ When your want your automation rule to have multiple triggers, just prefix the f ```yaml automation: trigger: - # first trigger + # first trigger - platform: time_pattern minutes: 5 # our second trigger is the sunset diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 042c19a0c3a..88646073fb2 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -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 `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 `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 diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index fa561811b48..1a386e2cb0b 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -94,6 +94,36 @@ service_data: type: map {% 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 {% configuration %} diff --git a/source/_posts/2019-08-07-release-97.markdown b/source/_posts/2019-08-07-release-97.markdown new file mode 100644 index 00000000000..c11ccf3b83e --- /dev/null +++ b/source/_posts/2019-08-07-release-97.markdown @@ -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 +--- + + + +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/). + +

+Picture of a Google Nest Hub with the Home Assistant UI on it. +

+ +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 + +
+ +
+ +## 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. + + + +## 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/ diff --git a/source/images/blog/2019-08-0.97/components.png b/source/images/blog/2019-08-0.97/components.png new file mode 100644 index 00000000000..4888b9c99e7 Binary files /dev/null and b/source/images/blog/2019-08-0.97/components.png differ diff --git a/source/images/supported_brands/apache_kafka.png b/source/images/supported_brands/apache_kafka.png new file mode 100644 index 00000000000..6e22be0279c Binary files /dev/null and b/source/images/supported_brands/apache_kafka.png differ diff --git a/source/images/supported_brands/avea.png b/source/images/supported_brands/avea.png new file mode 100644 index 00000000000..a77b8fe2d5e Binary files /dev/null and b/source/images/supported_brands/avea.png differ diff --git a/source/images/supported_brands/delijn.svg b/source/images/supported_brands/delijn.svg new file mode 100644 index 00000000000..8f9ee82532c --- /dev/null +++ b/source/images/supported_brands/delijn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/images/supported_brands/fleetgo.png b/source/images/supported_brands/fleetgo.png new file mode 100644 index 00000000000..1e7355ef094 Binary files /dev/null and b/source/images/supported_brands/fleetgo.png differ diff --git a/source/images/supported_brands/fortinet.jpg b/source/images/supported_brands/fortinet.jpg new file mode 100644 index 00000000000..b764105fc00 Binary files /dev/null and b/source/images/supported_brands/fortinet.jpg differ diff --git a/source/images/supported_brands/fronius.png b/source/images/supported_brands/fronius.png new file mode 100644 index 00000000000..6b44d1cb351 Binary files /dev/null and b/source/images/supported_brands/fronius.png differ diff --git a/source/images/supported_brands/rainforest_automation_logo.png b/source/images/supported_brands/rainforest_automation_logo.png new file mode 100644 index 00000000000..26bce1cc86a Binary files /dev/null and b/source/images/supported_brands/rainforest_automation_logo.png differ diff --git a/source/images/supported_brands/ritassist.png b/source/images/supported_brands/ritassist.png deleted file mode 100644 index e29464a4938..00000000000 Binary files a/source/images/supported_brands/ritassist.png and /dev/null differ diff --git a/source/images/supported_brands/suez.png b/source/images/supported_brands/suez.png new file mode 100644 index 00000000000..57c8d53c06d Binary files /dev/null and b/source/images/supported_brands/suez.png differ diff --git a/source/images/supported_brands/twentemilieu.png b/source/images/supported_brands/twentemilieu.png new file mode 100644 index 00000000000..2f0124dec3a Binary files /dev/null and b/source/images/supported_brands/twentemilieu.png differ