Merge branch 'rc' into current

This commit is contained in:
Paulus Schoutsen 2019-03-06 15:46:33 -08:00
commit 869f3918c5
59 changed files with 2284 additions and 281 deletions

View File

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

View File

@ -40,7 +40,7 @@ To enable ADS, add the following lines to your `configuration.yaml` file:
# Example configuration.yaml entry
ads:
device: '127.0.0.1.1.1'
port: 48898
port: 801
```
{% configuration %}
@ -137,7 +137,7 @@ name:
## {% linkable_title Sensor %}
The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT* or *BYTE*.
The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT*, *BYTE*, *DINT* or *UDINT*.
To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
file:
@ -158,7 +158,7 @@ adsvar:
type: string
adstype:
required: false
description: The datatype of the ADS variable, possible values are int, uint, byte.
description: The datatype of the ADS variable, possible values are int, uint, byte, dint, udint.
default: int
type: string
name:
@ -197,4 +197,4 @@ name:
required: false
description: An identifier for the switch in the frontend.
type: string
{% endconfiguration %}
{% endconfiguration %}

View File

@ -92,6 +92,11 @@ verify_ssl:
required: false
type: boolean
default: true
timeout:
description: Defines max time to wait data from the endpoint.
required: false
type: positive integer
default: 10
authentication:
description: "Type of the HTTP authentication. `basic` or `digest`."
required: false

View File

@ -0,0 +1,76 @@
---
layout: page
title: "Times of the Day Binary Sensor"
description: "Instructions on how to integrate Times of the Day binary sensors within Home Assistant."
date: 2019-01-14 23:35
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Binary Sensor
ha_release: 0.89
ha_iot_class: "Local Push"
logo: home-assistant.png
ha_qa_scale: internal
---
The `tod` platform supports binary sensors which get their values by checking if the current time is within defined time ranges.
The time ranges can be provided as absolute local time or using the `sunrise` or `sunset` keyword calculated based on the sun position for location. The location must be provided in the configuration.
In addition for sun position based ranges, the negative or positive offset can be configured.
## {% linkable_title Configuration %}
Here is an example of adding a sensor to the `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: tod
name: Early Morning
after: sunrise
after_offset: '-02:00'
before: '07:00'
```
{% configuration %}
name:
description: Name of the sensor.
required: true
type: string
before:
description: The absolute local time value or sun event for beginning of the time range.
required: true
type: string or time
before_offset:
description: The time offset of the beginning time range.
required: false
type: time
after:
description: The absolute local time value or sun event for ending of the time range.
required: true
type: string or time
after_offset:
description: The time offset of the beginning time range.
type: time
required: false
{% endconfiguration %}
## {% linkable_title Considerations %}
The primary purpose of this sensor is to use a simple time range definition instead of creating a complex template with references to `sun.sun` component attributes.
The sensor state is ON when this condition `after` + `after_offset` <= `current time` < `before` + `before_offset`.
If `after` time is later than `before` then the next day is considered, i.e.:
```yaml
binary_sensor:
- platform: tod
name: Night
after: sunset
before: sunrise
```
In the above example, the next day `sunrise` is calculated as a time range end.

View File

@ -23,9 +23,15 @@ The display style of each entity can be modified in the [customize section](/get
The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for covers:
- **None**: Generic cover. This is the default and doesn't need to be set.
- **damper**: Ventilation damper controller.
- **garage**: Garage door controller.
- **window**: Window controller.
- **awning**: Control of an awning, such as an exterior retractable window, door, or patio cover.
- **blind**: Control of blinds, which are linked slats that expand or collapse to cover an opening or may be tilted to partially covering an opening, such as window blinds.
- **curtain**: Control of curtains or drapes, which is often fabric hung above a window or door that can be drawn open.
- **damper**: Control of a mechanical damper that reduces airflow, sound, or light.
- **door**: Control of a door or gate that provides access to an area.
- **garage**: Control of a garage door that provides access to a garage.
- **shade**: Control of shades, which are a continuous plane of material or connected cells that expanded or collapsed over an opening, such as window shades.
- **shutter**: Control of shutters, which are linked slats that swing out/in to covering an opening or may be tilted to partially cover an opening, such as indoor or exterior window shutters.
- **window**: Control of a physical window that opens and closes or may tilt.
## {% linkable_title Services %}

View File

@ -19,8 +19,10 @@ ha_category:
ha_release: "0.61"
ha_iot_class: "Local Push"
ha_qa_scale: platinum
ha_config_flow: true
redirect_from:
- /components/binary_sensor.deconz/
- /components/climate.deconz/
- /components/cover.deconz/
- /components/light.deconz/
- /components/scene.deconz/
@ -34,12 +36,13 @@ redirect_from:
There is currently support for the following device types within Home Assistant:
- [Binary Sensor](/components/deconz/#binary-sensor)
- [Cover](/components/deconz/#cover)
- [Light](/components/deconz/#light)
- [Scene](/components/deconz/#scene)
- [Sensor](/components/deconz/#sensor)
- [Switch](/components/deconz/#switch)
- [Binary Sensor](#binary-sensor)
- [Climate](#climate)
- [Cover](#cover)
- [Light](#light)
- [Scene](#scene)
- [Sensor](#sensor)
- [Switch](#switch)
## {% linkable_title Recommended way of running deCONZ %}
@ -324,6 +327,21 @@ The `entity_id` name will be `binary_sensor.device_name`, where `device_name` is
- Xiaomi Motion Sensor
- Xiaomi Smart Home Aqara Human Body Sensor
## {% linkable_title Climate %}
See the [deCONZ main component](/components/deconz/) for configuration instructions.
Climate currently represent thermostats.
Note that devices in the climate platform identify as sensors, so there is a manually curated list that defines which "sensors" are climate devices.
The `entity_id` name will be `climate.device_name`, where `device_name` is defined in deCONZ.
#### {% linkable_title Verified supported climate devices %}
- Bitron Thermostat 902010/32
- Eurotronic SPZB0001
## {% linkable_title Cover %}
Covers are devices like ventilation dampers or smart window covers.

View File

@ -19,7 +19,7 @@ The `google_maps` platform allows you to detect presence using the unofficial AP
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).
This platform will create a file named `.google_maps_location_sharing.cookies` where it caches your login session.
This platform will create a file named `.google_maps_location_sharing.cookies` extended with the slugified username where it caches your login session.
<p class='note warning'>
Since this platform is using an unofficial API with the help of [locationsharinglib](https://github.com/costastf/locationsharinglib), Google seems to block access to your data the first time you've logged in with this platform.

View File

@ -60,4 +60,17 @@ verify_ssl:
required: false
type: boolean
default: true
{% endconfiguration %}
monitored_conditions:
description: Additional traccar computed attributes or device-related attributes to include in the scan.
required: false
type: list
{% endconfiguration %}
The parameter `monitored_conditions` allows you to track non standard attributes from the traccar platform and use them in your Home Assistant. For example if you need to monitor the state of the non standard attribute `alarm` and a custom computed attribute `mycomputedattribute` just fill the configuration with:
```yaml
device_tracker:
- platform: traccar
...
monitored_conditions: ['alarm', 'mycomputedattribute']
```

View File

@ -0,0 +1,44 @@
---
layout: page
title: "Ubee Router"
description: "Instructions on how to integrate Ubee routers into Home Assistant."
date: 2018-12-26 18:00
sidebar: true
comments: false
sharing: true
footer: true
logo: ubee.png
ha_category: Presence Detection
ha_release: 0.89
---
This platform offers presence detection by looking at connected devices to a [Ubee Router](http://www.ubeeinteractive.com/products).
To use a Ubee router in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
device_tracker:
- platform: ubee
host: ROUTER_IP_ADDRESS
username: YOUR_ADMIN_USERNAME
password: YOUR_ADMIN_PASSWORD
```
{% configuration %}
host:
description: The IP address of your router, e.g., `192.168.1.1`.
required: true
type: string
username:
description: The username of a user with administrative privileges, usually `admin`.
required: true
type: string
password:
description: The password for your given admin account.
required: true
type: string
{% endconfiguration %}
By default, Home Assistant pulls information about connected devices from Ubee router every 5 seconds.
See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked.

View File

@ -6,6 +6,7 @@ date: 2018-12-16 14:20
sidebar: true
comments: false
sharing: true
featured: true
footer: true
logo: esphome.png
ha_category: DIY

View File

@ -59,6 +59,11 @@ devices:
required: false
type: boolean
default: false
track_devices:
description: Setting to tell the component to track nearby devices.
required: false
type: boolean
default: true
{% endconfiguration %}
## {% linkable_title Device types %}

View File

@ -8,17 +8,23 @@ comments: false
sharing: true
footer: true
logo: iperf3.png
ha_category: System Monitor
ha_category:
- System Monitor
- Sensor
featured: false
ha_release: 0.71
ha_iot_class: "Local Polling"
redirect_from:
- /components/sensor.iperf3/
---
The `iperf3` sensor component allows you to measure network bandwidth performance against a private or public Iperf3 server.
## {% linkable_title Configuration %}
Enabling this component will automatically create the Iperf3 Sensors for the monitored conditions (below).
By default, it will run every hour. The user can change the update frequency in the config by defining the minute, hour, and day for a iperf3 test to run.
By default, it will run every hour. The user can change the update frequency in the config by defining the `scan_interval` for a iperf3 test to run.
## {% linkable_title Configuration %}
To add the `iperf3` sensor to your installation, add the following to your `configuration.yaml` file:
@ -28,26 +34,48 @@ Once per hour, on the hour (default):
# Example configuration.yaml entry
sensor:
- platform: iperf3
host: iperf.he.net
monitored_conditions:
- download
- upload
hosts:
- host: iperf.he.net
```
{% configuration %}
monitored_conditions:
description: Sensors to display in the frontend.
required: true
required: false
type: list
keys:
download:
description: Download speed (Mbit/s)
upload:
description: Upload speed (Mbit/s)
hosts:
description: A list of Iperf3 servers to perform the test against.
required: true
type: list
scan_interval:
description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)."
required: false
default: 60 minutes
type: time
manual:
description: >
`true` or `false` to turn manual mode on or off. Manual mode will disable scheduled tests.
required: false
type: boolean
default: false
{% endconfiguration %}
Configuration variables (host):
{% configuration %}
host:
description: Specify the Iperf3 test to perform the test against.
description: Server name/ip address running Iperf3 to test against.
required: true
type: string
port:
description: Port that Iperf3 is running on.
required: false
default: 5201
type: integer
duration:
description: Specify the test duration in seconds. Default is 10 and the valid range is from 5 to 10.
required: false
@ -62,13 +90,20 @@ sensor:
required: false
default: tcp
type: string
scan_interval:
description: Specify the frequency in seconds which the test will be perfomed. Default value is 1 hour.
required: false
default: 3600
type: integer
{% endconfiguration %}
#### {% linkable_title Time period dictionary example %}
```yaml
scan_interval:
# At least one of these must be specified:
days: 0
hours: 0
minutes: 3
seconds: 30
milliseconds: 0
```
You can find a list of public Iperf3 servers [here](https://iperf.fr/iperf-servers.php). You can also start your own Iperf3 server using the [mlabbe/iperf3's](https://hub.docker.com/r/mlabbe/iperf3/) docker image or just refer to your `iperf3` command's man page.
The frequency when the test will be automatically triggered can be adjusted by setting the value `scan_interval` in seconds.
@ -77,10 +112,12 @@ Parallel streams can help in some situations. As TCP attempts to be fair and con
You can use the service `sensor.iperf3_update` to trigger a manual speed test for all sensors. Iperf3 has its own service call that allow to perform a speed test on a particular entity.
### {% linkable_title Service `sensor.iperf3_update` %}
### {% linkable_title Service %}
Once loaded, the `iperf3` component will expose a service (`iperf3.speedtest`) that can be called to run a speed test on demand. This can be useful if you have enabled manual mode.
| Service data attribute | Description |
| `entity_id` | String that point at `entity_id`s of the Iperf3 sensor. Else targets all.
| `host` | String that point at a configured `host` from configuration.yaml. Otherwise, tests will be run against all configured hosts.
## {% linkable_title Notes %}

View File

@ -10,6 +10,7 @@ footer: true
logo: lcn.png
ha_category:
- Hub
- Cover
- Light
- Switch
ha_release: 0.85
@ -17,6 +18,7 @@ ha_iot_class: "Local Push"
redirect_from:
- /components/light.lcn/
- /components/switch.lcn/
- /components/cover.lcn/
---
The `lcn` integration for Home Assistant allows you to connect to [LCN](http://www.lcn.eu) hardware devices.
@ -26,6 +28,7 @@ With this setup sending and receiving commands to and from LCN modules is possib
There is currently support for the following device types within Home Assistant:
- [Cover](#cover)
- [Light](#light)
- [Switch](#switch)
@ -43,14 +46,19 @@ lcn:
port: 4114
username: lcn
password: lcn
covers:
- name: Living room cover
address: myhome.s0.m7
motor: motor1
lights:
- name: Bedroom light
address: myhome.s0.m7
output: output1
dimmable: true
transition: 5
switches:
- name: Sprinkler switch
address: myhome.s0.m7
@ -95,6 +103,24 @@ connections:
default: steps50
type: string
covers:
description: List of your covers.
required: false
type: map
keys:
name:
description: Name of the cover.
required: true
type: string
address:
description: "[Address](/components/lcn#lcn-addresses) of the module/group."
required: true
type: string
motor:
description: "Motor port ([MOTOR_PORT](/components/lcn#ports))."
required: true
type: string
lights:
description: List of your lights.
required: true
@ -184,6 +210,20 @@ 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` |
The [MOTOR_PORT](/components/lcn#ports) values specify which hardware relay configuration will be used:
| Motor | Relay on/off | Relay up/down |
| :------: | :----------: | :-----------: |
| `motor1` | `relay1` | `relay2` |
| `motor2` | `relay3` | `relay4` |
| `motor3` | `relay5` | `relay6` |
| `motor4` | `relay7` | `relay8` |
## {% linkable_title Cover %}
The `lcn` cover platform allows the control of [LCN](http://www.lcn.eu) relays which have been configured as motor controllers.
## {% linkable_title Light %}
@ -197,4 +237,4 @@ The `lcn` light platform allows the control of the following [LCN](http://www.lc
The `lcn` switch platform allows the control of the following [LCN](http://www.lcn.eu) ports:
- Output ports
- Relays
- Relays

View File

@ -160,6 +160,7 @@ Start flow with specified transitions
|---------------------------|----------|---------------------------------------------------------------------------------------------|
| `entity_id` | no | Only act on a specific lights. |
| `count` | yes | The number of times to run this flow (0 to run forever). |
| `action` | yes | The action to take after the flow stops. Can be 'recover', 'stay', 'off'. Default 'recover' |
| `transitions` | no | Array of transitions. See [examples below](#custom-effects). |
## {% linkable_title Examples %}
@ -198,11 +199,11 @@ light:
### {% linkable_title Custom effects %}
This example shows how you can add your custom effects in your configuration.
This example shows how you can add your custom effects in your configuration. To turn on the effect you can use [light.turn_on](/components/light/#service-lightturn_on) service.
Possible transitions are `RGBTransition`, `HSVTransition`, `TemperatureTransition`, `SleepTransition`.
where the array values are as per the following:
Where the array values are as per the following:
- RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%)
- HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%)
- TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%)

View File

@ -42,12 +42,11 @@ media_player:
host: 192.168.0.222
adbkey: "/config/android/adbkey"
# a device for which getting the current app (source) and the running apps (sources) cause issues
# use an ADB server for sending ADB commands instead of the Python ADB implementation
- platform: firetv
name: Fire TV 3
host: 192.168.0.123
get_source: false
get_sources: false
adb_server_ip: 127.0.0.1
```
{% configuration %}
@ -69,11 +68,15 @@ adbkey:
description: The path to your `adbkey` file. Note that the file `adbkey.pub` must be in the same directory.
required: false
type: string
get_source:
description: Whether or not to retrieve the current app as the source.
adb_server_ip:
description: The IP address of the ADB server.
required: false
default: true
type: boolean
type: string
adb_server_port:
description: The port for the ADB server.
required: false
default: 5037
type: port
get_sources:
description: Whether or not to retrieve the running apps as the list of sources.
required: false
@ -81,6 +84,13 @@ get_sources:
type: boolean
{% endconfiguration %}
## {% linkable_title ADB Setup %}
This component works by sending ADB commands to your Fire TV device. There are two ways to accomplish this:
1. Using the `adb` Python package. If your device requires ADB authentication, you will need to follow the instructions in the "ADB Authentication (for Fire TV devices with recent software)" section below. Once you have an authenticated key, this approach does not require any additional setup or addons. However, users with newer devices may find that the ADB connection is unstable. If setting the `get_sources` configuration option to `false` does not help, they should use the next option.
2. Using an ADB server. For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/v0.1.0/README.md) addon. With this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
### {% linkable_title ADB Authentication (for Fire TV devices with recent software) %}
If you get a "Device authentication required, no keys available" error when trying to set up Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your Fire TV from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html).

View File

@ -0,0 +1,129 @@
---
layout: page
title: "Météo-France"
description: "Instructions on how to integrate Météo-France within Home Assistant."
date: 2018-10-18 08:00
sidebar: true
comments: false
sharing: true
footer: true
logo: meteo-france.png
ha_category: Hub
ha_release: 0.89
ha_iot_class: "Cloud Polling"
ha_category:
- Sensor
- Weather
ha_iot_class: "Local Push"
redirect_from:
- /components/sensor.meteo_france/
- /components/weather.meteo_france/
---
The `meteo_france` component uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `city` configured in your `configuration.yaml` file.
There is currently support for the following device types within Home Assistant:
- Sensor
- Weather
It displays the current weather along with a 4 days forecast and can create sensors based on the `monitored_conditions` set in your `configuration.yaml` file.
## {% linkable_title Configuration %}
To add Météo-France to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
meteo_france:
- city: '76000'
```
{% configuration %}
city:
description: Name of the city ([see below](#about-city-configuration)).
required: true
type: string
monitored_conditions:
description: The conditions types to monitor.
required: true
type: list
keys:
temperature:
description: The current temperature.
weather:
description: A human-readable text summary of the current conditions.
wind_speed:
description: The wind speed.
uv:
description: The current UV index.
next_rain:
description: Time to the next rain if happening for the next hour ([see note below](#about-next_rain-condition-sensor)).
freeze_chance:
description: Probability of temperature below 0°C for the day.
rain_chance:
description: Probability of rain for the day.
snow_chance:
description: Probability of snow for the day.
thunder_chance:
description: Probability of thunderstorm for the day.
{% endconfiguration %}
### {% linkable_title About `city` configuration %}
This component use the Météo-France search API to get the first city from the results returned.
It works well with french postal code, city name, etc. In case your expected result doesn't come first, you can set a more specified query like `<city name>, <postal_code>`.
It also works with international city, with mixed results. You may have to find the correct city query.
For example `Montreal, Canada` will return a city in Ardèche, France, whereas `Montreal, america` works
[http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/previsions/search/montreal,amerique](http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/previsions/search/montreal,amerique)
```yaml
# Example configuration.yaml entry for Montreal, Canada
meteo_france:
- city: 'montreal,amerique'
```
### {% linkable_title About `next_rain` condition sensor %}
<p class='note warning'>
The 1 hour rain forecast is supported for more than 75 % of metropolitan France.<br/>
You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie).
</p>
The `next_rain` sensor value is the time to next rain, from 0 to 55 minutes.
If no rain is forecasted for the next hour, value will be "No rain".
Attributes also give the forecast for the next hour in 5 minutes intervals.
Possible value for each intervals attributes are:
- 1 No rain
- 2 Light rain
- 3 Moderate rain
- 4 Heavy rain
### {% linkable_title Complete example %}
This is an example for 3 cities forecast with different monitored conditions:
```yaml
# Complete example configuration.yaml entry
meteo_france:
- city: 'Rouen'
monitored_conditions:
- rain_chance
- freeze_chance
- thunder_chance
- snow_chance
- weather
- next_rain
- wind_speed
- temperature
- uv
- city: 'Oslo, norvege'
monitored_conditions:
- temperature
- city: '51100'
```

View File

@ -0,0 +1,20 @@
---
layout: page
title: "Mobile App"
description: "The Mobile App component allows a generic platform for integrating with mobile apps."
date: 2019-03-06 01:30
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: "Other"
ha_release: 0.89
ha_qa_scale: internal
---
The Mobile App component allows Home Assistant mobile apps to easily integrate with Home Assistant.
If you are planning to use a mobile application that integrates with Home Assistant, we recommend that you keep this component enabled.
If you are a mobile app developer, see the [developer documentation](https://developers.home-assistant.io/docs/en/app_integration_index.html) for instructions on how to build your app on top of the mobile app component.

View File

@ -9,7 +9,7 @@ sharing: true
footer: true
logo: mysensors.png
ha_category: DIY
featured: true
featured: false
ha_iot_class: "Local Push"
---

View File

@ -42,7 +42,7 @@ password:
{% endconfiguration %}
<p class='note'>
After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. More information on how to update can be found [here](https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5-).
After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. More information on how to update can be found [here](https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5-).
</p>
## {% linkable_title Vacuum %}
@ -54,7 +54,7 @@ The status will contain attributes on the robots last clean session.
If you notice the robot stops responding to commands check the state to see if the robot is "unavailable". If you see "unavailable" first try to restart the vacuum and wait about 5 minutes to see if it is no longer "unavailable". If you are still having issues check the Neato app and make sure your robot is connected and working. If it is not then follow the steps in the app to reset your robot and give it the same name as before then restart Home Assistant.
</p>
### {% linkable_title Configuration %}
### {% linkable_title Services %}
Currently supported services are:
@ -65,6 +65,30 @@ Currently supported services are:
- `locate`
- `spot_clean`
And a specific Platform Service:
- `vacuum.neato_custom_cleaning`
### {% linkable_title Platform Services %}
#### {% linkable_title Service `vacuum.neato_custom_cleaning` %}
Starts a custom cleaning of your house. You can set the various options like in the mobile application (mode, map usage, navigation mode, zone).
<p class='note'>
Not all Botvac models support all the attributes. Only the Neato Botvac D7 supports the `zone` attribute.
Some information about the capabilities might be found on the [Neato Developer Portal](https://developers.neatorobotics.com/api/robot-remote-protocol/housecleaning).
</p>
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `entity_id` | no | Only act on a specific robot |
| `mode` | yes | Set the cleaning mode: 1 for eco and 2 for turbo. Defaults to turbo if not set. |
| `navigation` | yes | Set the navigation mode: 1 for normal, 2 for extra care, 3 for deep. Defaults to normal if not set. |
| `category` | yes | Whether to use a persistent map or not for cleaning (i.e. No go lines): 2 for no map, 4 for map. Default to using map if not set (and fallback to no map if no map is found). |
| `zone` | yes | Only supported on the Botvac D7. Name of the zone to clean. Defaults to no zone i.e. complete house cleanup. |
## {% linkable_title Camera %}
The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/).
@ -73,4 +97,4 @@ The `neato` camera platform allows you to view the latest cleaning map of your [
The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/).
To add `neato` switch, camera and vacuum to your installation, follow instructions above.
To add `neato` switch, camera and vacuum to your installation, follow instructions above.

View File

@ -46,8 +46,13 @@ password:
discovery:
description: Whether to discover Netatmo devices. Set it to False, if you want to choose which Netatmo device you want to add.
required: false
type: string
type: boolean
default: true
webhooks:
description: Enable webhooks for instant events of the Welcome and Presence cameras.
required: false
type: boolean
default: false
{% endconfiguration %}
### {% linkable_title Get API and Secret Key %}
@ -69,3 +74,58 @@ That's it. You can copy and paste your new `client id` and `client secret` in yo
<p class='img'>
<img src='/images/screenshots/netatmo_api.png' />
</p>
### {% linkable_title Webhooks %}
The Welcome and Presence cameras can send instant events to Home Assistant by using webhooks. There are different types of events, each with slightly different data attached. To enable the webhooks add `webhooks: true` to your configuration. It is also required to have your camera enabled in Home Assistant. You can do this either by manually setting up the [platform](https://www.home-assistant.io/components/camera.netatmo/) or by enabeling [discovery](https://www.home-assistant.io/components/netatmo/#discovery).
To be able to receive events from Netatmo, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](https://www.home-assistant.io/addons/duckdns/)) and you need to have the base_url configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)).
Events coming in from Netatmo will be available as events in Home Assistant and are fired as netatmo_*, along with their data. You can use this event to trigger automations.
#### {% linkable_title Events %}
The following events are available:
- netatmo_person (Welcome)
- netatmo_movement (Welcome & Presence)
- netatmo_human (Presence)
- netatmo_animal (Presence)
- netatmo_vehicle (Presence)
- netatmo_other (Welcome & Presence)
All events (except `netatmo_other`) contain the following attributes:
| Attribute | Description |
| --------- | ----------- |
| event_type | Type of event. E.G. `movement`.
| home_name | Name of the home the camera belongs to.
| camera_id | MAC address of the camera.
| message | Message describing what has been seen by the camera.
The Presence camera additionally has these attributes:
| Attribute | Description |
| --------- | ----------- |
| snapshot_url | URL to a picture of the full frame of the event.
| vignette_url | URL to a picture cropped down to the area of interest.
The Welcome camera additionally has these attributes for `netatmo_person` events:
| Attribute | Description |
| --------- | ----------- |
| id | ID of the person that has been seen.
| name | Name of the person that has been seen.
| is_known | Boolean value if the person is known.
| face_url | URL to a picture of the person.
The `netatmo_other` event passes all the webhook data through for all webhook events that don't match any of the above. Set the [level of logging](https://www.home-assistant.io/components/logger/) for the `netatmo` component to `debug` to view the data in the Home Assistant logs.
### {% linkable_title Services (only for webhooks) %}
There are two services to manually add and drop the webhooks. This might be useful if your webhook has been banned and you want to readd the webhook without restarting Home Assistant.
| Service | Description |
| ------- | ----------- |
| addwebhook | Subscribe to webhooks. By default the automatically generated URL will be used. But you can pass `{"url": "https://yourdomain.com/yourwebhook/"}` as service data to the service call if you want to use a manually created [webhook trigger](https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger). In this case you have to manually process the data that is sent by Netatmo.
| dropwebhook | Unsubscribe existing webhooks.

View File

@ -0,0 +1,142 @@
---
layout: page
title: "Nissan Leaf"
description: "Instructions for how to integrate Nissan Leaf(s) into Home Assistant."
date: 2019-01-05 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: nissan.png
ha_category: Car
ha_release: 0.89
ha_iot_class: "Cloud Polling"
redirect_from:
- /components/binary_sensor.nissan_leaf/
- /components/sensor.nissan_leaf/
- /components/switch.nissan_leaf/
---
The `nissan_leaf` component offers integration with the [NissanConnect EV](http://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers:
* sensors for the battery status, range and charging status
* a switch to start and stop the climate control
* a device tracker to locate the car (only on later Leaf models)
* services to request updates from the car and to request the car starts charging.
## {% linkable_title Configuration %}
To use Nissan Leaf in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
nissan_leaf:
username: "YOUR_USERNAME"
password: "YOUR_PASSWORD"
region: "YOUR_REGION"
```
{% configuration %}
username:
description: The username associated with your NissanConnect EV account. Enclose in quotes.
required: true
type: string
password:
description: The password for your given NissanConnect EV account. Enclose in quotes.
required: true
type: string
region:
description: The region where the NissanConnect EV account is registered. Should be one of the following, NE (for Europe), NNA (USA), NCI (Canada), NMA (Australia), NML (Japan).
required: true
type: string
nissan_connect:
description: If your car has the updated head unit (NissanConnect rather than Carwings) then the location can be aquired and exposed via a device tracker. If you have a pre-2014 24 kWh Leaf then you will have Carwings and this should be set to false.
required: false
type: boolean
update_interval:
description: The interval between updates if the climate control is off and the car is not charging. Set in any time unit (e.g. minutes, hours, days!).
required: false
default: 1 hour
type: time
update_interval_charging:
description: The interval in minutes between updates if charging.
required: false
default: 15
type: time
update_interval_climate:
description: The interval in minutes between updates if climate control on.
required: false
default: 5
type: time
{% endconfiguration %}
## {% linkable_title Full configuration sample %}
A more advanced example for setting the update interval:
```yaml
# Example configuration.yaml entry
nissan_leaf:
username: "YOUR_USERNAME"
password: "YOUR_PASSWORD"
region: "YOUR_REGION"
nissan_connect: true
update_interval:
hours: 1
update_interval_charging:
minutes: 15
update_interval_climate:
minutes: 5
force_miles: true
```
## {% linkable_title Starting a Charge %}
You can use the `nissan_leaf.start_charge` service to send a request to the Nissan servers to start a charge. The car must be plugged in! The service requires you to provide the vehicle identification number (VIN) as a parameter. You can see the VIN on the attributes of all the entities created by this component, except the device_tracker.
```yaml
- service: nissan_leaf.start_charge
data:
vin: '1HGBH41JXMN109186' # replace
```
## {% linkable_title Updating on-demand using Automation %}
You can also use the `nissan_leaf.update` service to request an on-demand update. To update almost exclusively via the service set the `update_interval` to a high value in the component configuration. The service requests the VIN number as described above.
```yaml
- id: update_when_driver_not_home
alias: 'Update when driver not home'
initial_state: on
trigger:
- platform: time_pattern
minutes: '/30'
condition:
- condition: state
entity_id: device_tracker.drivername # replace
state: 'not_home'
action:
- service: nissan_leaf.update
data:
vin: '1HGBH41JXMN109186' # replace
```
## {% linkable_title Hints %}
* The update interval has a minimum of two minutes.
* Requesting updates uses a small amount of power from the 12 V battery. The 12 V battery charges from the main traction battery when the car is not plugged in. If the car is left plugged in for a long time, or if the main traction battery is very low then the 12 V battery may gradually discharge. A low update interval may cause the 12 V battery to become flat. When the 12 V battery is flat the car will not start. _Do not set the update interval too low. Use at your own risk._
* This component communicates with the Nissan Servers which then communicate with the car. The communication between the car and the Nissan Servers is very slow, and takes up to five minutes to get information from the car, therefore the default polling interval is set to one hour to not overwhelm the connection.
* Responses from the Nissan servers are received separately for the battery/range, climate control and location. The `updated_on` attribute will show the last time the data was retrieved from the server. There are separate attributes for when the `next_update` is scheduled, and to indicate if `update_in_progress`. The `nissan_leaf.update` service will reset the `next_update` attribute.
* The Nissan APIs do not allow charging to be stopped remotely.
* The Nissan servers have a history of being unstable, therefore please confirm that the official Nissan Leaf app/website is working correctly before reporting bugs.
Please report bugs using the following logger configuration.
```yaml
logger:
default: critical
logs:
homeassistant.components.nissan_leaf: debug
homeassistant.components.device_tracker.nissan_leaf: debug
homeassistant.components.sensor.nissan_leaf: debug
homeassistant.components.switch.nissan_leaf: debug
```

View File

@ -0,0 +1,61 @@
---
layout: page
title: "Owlet"
description: "Instructions on how to integrate Owlet baby monitor into Home Assistant."
date: 2019-01-19
sidebar: true
comments: false
sharing: true
footer: true
logo: owlet.svg
ha_category:
- Health
- Binary Sensor
- Sensor
ha_release: "0.89"
ha_iot_class: "Cloud Polling"
---
[Owlet Care](https://owletcare.com/) baby monitors check your baby's oxygen level and heart rate while sleeping.
Configuring this component will enable tracking of heart rate, oxygen level, motion and base station connection status. Battery status is available as an attribute on oxygen and heart rate sensors.
This component enables the following platforms automatically:
#### {% linkable_title Binary Sensors %}
- Base Station Status
- Motion
#### {% linkable_title Sensors %}
- Heart rate
- Oxygen level
### {% linkable_title Configuration %}
```yaml
# Example configuration.yaml entry
owlet:
username: OWLET_USER
password: OWLET_PASSWORD
```
{% configuration %}
username:
description: Your Owlet account user ID.
required: true
type: string
password:
description: Your Owlet account password.
required: true
type: string
name:
description: Custom name for your Owlet device.
required: false
type: string
{% endconfiguration %}
<p class='warning'>
The intended purpose of this component is to enable data logging and automations such as battery status updates and charging reminders. This component should not replace the Owlet app nor should it be used for life-critical notifications.
</p>

View File

@ -13,7 +13,27 @@ ha_qa_scale: internal
ha_release: 0.88
---
The `person` component allows to connect device tracker entities to one or more person entities. The last state update of a connected device tracker will set the state of the person. For example if you connect your router and your OwnTracks device as trackers to your person, the last state update from either the router or your OwnTracks device will set the state of your person.
The person component allows to connect device tracker entities to one or more person entities. The state updates of a connected device trackers will set the state of the person. When multiple device tracers used, the state of berson will be determined next way:
1. If there are stationary sources (which type is not 'gps') presenting status 'home', than latest of this sources will be taken.
2. If there are sources of type 'gps', than latest of this sources will be taken.
3. Otherwise will be taken latest source with status 'not_home'.
Lets say for example, that you have 3 trackers: 'tracker_gps', 'tracker_router' and 'tracker_ble'.
1. You're at home, all 3 devices shows status 'home' - status of your Person entity will be 'home' with source 'tracker_router' or 'tracker_ble', whatever was latest.
2. You're going out. 'tracker_gps' shows status 'not_home', but other two trackers show status 'home' according to their setting 'consider_home'. You are still considered to be at home.
3. After some time both stationary trackers show status 'not_home'. Now your Person entity has status 'not_home' with source 'tracker_gps'.
4. While you are outside your home, your Home Assistant was suddenly restarted. Until 'tracker_gps' receives update, your status will be determined by stationary tracker, which gets latest update after restart. Obviously the status will be 'not_home'.
5. Than you're going into area marked as 'zone1', 'tracker_gps' is getting update, and now your status is 'zone1' with source 'tracker_gps'.
6. You've returned home, and your mobile device has connected to router, but GPS update yet didn't occur. Your status will be 'home' with source 'tracker_router'.
7. After GPS update occurs, your status still be 'home' with source 'tracker_router' or 'tracker_ble', whatever updates later.
TL;DR: When you're at home, your position is determined firstly by stationary trackers (if any) and then by GPS. When you're outside your home, your position is determined firstly by GPS and then by stationary trackers.
**Hint**: When you use multiple device trackers together, especially stationary and GPS trackers, it's advisable to set `consider_home`for stationary trackers as low as possible.
You can manage persons via the UI from the person page inside the configuration panel or via `YAML`.

View File

@ -10,26 +10,29 @@ footer: true
logo: minut.svg
ha_category:
- Hub
- Alarm
- Binary Sensor
- Sensor
featured: false
ha_release: "0.83"
ha_config_flow: true
ha_iot_class: "Cloud Polling"
ha_qa_scale: silver
ha_qa_scale: gold
redirect_from:
- /components/binary_sensor.point/
- /components/sensor.point/
---
The Point component is the main component to integrate the [Minut Point](https://minut.com/). To connect Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` using the `callback url` as `base_url` + `/api/minut`, e.g., `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below.
The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below.
Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link. When you follow the link and click on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**.
There is currently support for the following device types within Home Assistant:
- [Alarm](#alarm)
- [Binary Sensor](#binary-sensor)
- [Sensor](#sensor)
Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link when you follow the link and have clicked on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**.
### {% linkable_title Configuration %}
```yaml
@ -50,9 +53,23 @@ client_secret:
type: string
{% endconfiguration %}
# {% linkable_title Device types %}
The integration supports the following device types within Home Assistant:
- [Alarm](#alarm)
- [Binary Sensor](#binary-sensor)
- [Sensor](#sensor)
<p class='note'>
The Point is just active occasionally so the sensors are only updated every hour or so.
The events sent from the Point is sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks.
The Point is just active occasionally so the [Sensors](#sensor) are only updated every hour or so. The [Binary Sensors](#binary-sensor) are however updated via [Cloud Push](https://www.home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/#cloud-pushing-new-state), making the changes close to instant.
</p>
## {% linkable_title Alarm %}
Each home configured in the Point mobile application will show up as a separate alarm control panel. The panels allow **arming** and **disarming** of the Point home alarm system.
<p class="note">
The Point only supports a Arm/Disarm action, so there is no difference between `Arm Home` and `Arm Away`.
</p>
## {% linkable_title Binary Sensor %}
@ -69,14 +86,57 @@ Each Point exposes the following binary sensors:
- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry)
- **motion**: `On` means motion detected, `Off` means no motion (clear)
- **sound**: `On` means sound detected, `Off` means no sound (clear)
- **tamper**: `On` means the point was removed or attached
- **tamper**: `On` means the point was removed or attached, `Off` means normal
For installation instructions, see [the Point component](#configuration).
<p class='note'>
The events sent from the Point is also sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks.
<p class="note">
The binary sensors **battery**, **button_press** and **tamper** are switched `On` for a breif moment and are then switched back to `Off`.
</p>
### {% linkable_title Automation example %}
The following example show how to implement an automation for the **button_press** binary sensor.
{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
alias: Point button press
trigger:
- platform: state
entity_id: binary_sensor.point_button_press # Change this accordingly
to: 'on'
action:
- service: persistent_notification.create
data:
title: Point button press
message: Point button was pressed.
```
{% endraw %}
### {% linkable_title Webhook events %}
The events shown as [binary sensors](#binary-sensor) are sent to Home Assistant as webhooks with the `event_type` set to `point_webhook_received`. Below is an example of how to use such a webhook do note the `trigger.event.data.event.device_id` which translates to the id of the Point device that sent the event.
{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
alias: Point button press (webhook)
trigger:
- platform: event
event_type: point_webhook_received
event_data: {}
condition:
condition: template
value_template: "{{ trigger.event.data.event.type == 'short_button_press' }}"
action:
- service: persistent_notification.create
data_template:
title: Point button press (webhook)
message: "Button press on Point {{ trigger.event.data.event.device_id }}"
```
{% endraw %}
## {% linkable_title Sensor %}
Each Point exposes the following sensors:
@ -84,10 +144,4 @@ Each Point exposes the following sensors:
- **temperature**: Temperature in °C.
- **humidity**: Percentage of humidity in the air.
- **pressure**: Pressure in hPa.
- **sound_level**: Sound level in dBa.
For installation instructions, see [the Point component](#configuration).
<p class='note'>
The Point is just active occasionally so the sensors are only updated every hour or so.
</p>
- **sound_level**: Sound level in dBA

View File

@ -0,0 +1,117 @@
---
layout: page
title: "Sony PlayStation 4"
description: "Instructions on how to integrate a Sony PlayStation 4 into Home Assistant."
date: 2019-02-12 01:08
sidebar: true
comments: false
sharing: true
footer: true
logo: ps4.png
ha_category: Media Player
ha_release: 0.89
ha_iot_class: "Local Polling"
---
The `ps4` component allows you to control a
[Sony PlayStation 4 console](https://www.playstation.com/en-us/explore/ps4/).
- This component supports controlling a single PlayStation 4 for your instance. Additional consoles may be supported in a future release.
## {% linkable_title Requirements %}
- Android or iOS device
- PS4 Second Screen App for [Android](https://play.google.com/store/apps/details?id=com.playstation.mobile2ndscreen&hl=en_US) or [iOS](https://itunes.apple.com/us/app/ps4-second-screen/id1201372796?mt=8) installed on device.
## {% linkable_title Set up %}
1. Download the Second Screen App and make sure that you can find and control your PlayStation 4 normally.
<p class='note'>
Read the section "Granting Port Access" below before continuing.
</p>
2. Navigate to `Configuration -> Integrations` and select `Configure` for `PlayStation 4`.
3. Follow instructions displayed to generate user credentials. You will know this step is completed when a form with fields appears.
4. Pair Home Assistant to your PlayStation 4 by filling in the fields.
- **Note:** To find your correct region refer to the section [Regions](#regions)
## {% linkable_title Granting Port Access %}
The PlayStation 4 component requires the use of privileged ports to work correctly, specifically UDP port 987 and TCP port 997. Depending on your OS of your Home Assistant instance you may need to allow usage of privileged ports manually.
Home Assistant installed on a Debian-type OS for example, such as *Debian*, *Hassbian*, *Rassbian*, and *Armbian* may require configuration.
<p class='note warning'>
Do not run your <b>Home Assistant</b> instance itself as <b>root</b> or with <b>root/sudo privileges</b> to accomplish this. This would create a security risk for your host system.
</p>
There are varying methods to perform this, dependent on your OS that is running Home Assistant. Specifically, your *Python Interpreter* which runs your Home Assistant instance needs access to the mentioned ports.
<p class='note'>
If your Home Assistant device is running <b>Hass.io</b> on <b>HassOS</b>, it does not require additional configuration.
</p>
- Example for Debian:
`sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5`
Replace "/usr/bin/python3.5" with your path to Python that is running Home Assistant.
### {% linkable_title Docker %}
When running Home Assistant using Docker, make sure that the Home Assistant container is discoverable by the PS4. This can be achieved by ensuring that the Home Assistant container uses the `host` network driver (by passing `--net=host` to the container when creating, or adding `network_mode: "host"` to your compose file when using `docker-compose`).
## {% linkable_title Configuration %}
<p class='note'>
The PlayStation 4 component does not use entries from `configuration.yaml`. You must configure this component by using `Integrations`
</p>
## {% linkable_title Regions %}
Some titles will have different SKUs in the PlayStation Store database depending on your region. You must select your specific region in the setup in order to retrieve the cover art for such titles correctly. If you do not know your [region](https://www.gamerbraves.com/ps4-games-region-codes-explained/), reference the table below:
| Region ID | Locales |
| ----------- | ---------------------------------------------- |
| R1 | Bermuda, Canada, United States |
| | and U.S. territories |
| R2 | The Middle East, Western Europe, |
| | Central Europe, Egypt, |
| | French overseas territories, Greenland, |
| | Japan, Lesotho, South Africa and Swaziland |
| R3 | Southeast Asia, Hong Kong, Macau, |
| | South Korea and Taiwan |
| R4 | Australasia, Central America, |
| | the Caribbean, Mexico, Oceania, South America |
| R5 | The rest of Africa, Former Soviet Union, |
| | the Indian subcontinent, Mongolia, North Korea |
<p class='note'>
Region 6: Mainland China, is not supported as there is no English database available.
</p>
## {% linkable_title Services %}
### {% linkable_title Service `send_command` %}
Emulate button press on PlayStation 4. This emulates the commands available for the PS4 Second Screen App. This is not to be confused with DualShock 4 controller buttons.
| Service data attribute | Optional | Example | Description |
| ---------------------- | -------- | ---------------------------- | ------------------------------------- |
| `entity_id` | No | `media_player.playstation_4` | The entity id for your PlayStation 4. |
| `command` | No | `ps` | The command you want to send. |
#### {% linkable_title Available Commands %}
Full list of supported commands.
| Command | Button Emulated |
| -------- | ---------------- |
| `ps` | PS (PlayStation) |
| `option` | Option |
| `enter` | Enter |
| `back` | Back |
| `up` | Swipe Up |
| `down` | Swipe Down |
| `left` | Swipe Left |
| `right` | Swipe Right |

View File

@ -32,6 +32,8 @@ sensor:
token: YOUR_TOKEN
```
The monitored conditions can create a sensor which displays the amount of records currently in your collection and/or wantlist, and an option to pick a random record from your collection.
{% configuration %}
token:
description: The Discogs API token to use as identification to get your collection.
@ -41,4 +43,15 @@ name:
description: Name to use in the frontend.
required: false
type: string
monitored_conditions:
description: A list of sensor to include.
required: false
type: list
keys:
collection:
description: Shows the amount of records in the user's collection.
wantlist:
description: Shows the amount of records in the user's wantlist.
random_record:
description: Proposes a random record from the collection to play.
{% endconfiguration %}

View File

@ -125,6 +125,8 @@ resources:
description: The number of threads.
process_sleeping:
description: The number of sleeping processes.
cpu_use_percent:
description: The used CPU in percent.
cpu_temp:
description: The CPU temperature (may not be available on all platforms).
docker_active:

View File

@ -139,7 +139,7 @@ sensor:
## {% linkable_title Updating sensors on-demand using Automation %}
You can also use the `sensor.google_travel_sensor_update` service to update the sensor on-demand. For example, if you want to update `sensor.morning_commute` every 2 minutes on weekday mornings, you can use the following automation:
You can also use the `homeassistant.update` service to update the sensor on-demand. For example, if you want to update `sensor.morning_commute` every 2 minutes on weekday mornings, you can use the following automation:
```yaml
- id: update_morning_commute_sensor
@ -160,7 +160,7 @@ You can also use the `sensor.google_travel_sensor_update` service to update the
- thu
- fri
action:
- service: sensor.google_travel_sensor_update
- service: homeassistant.update
data:
entity_id: sensor.morning_commute
```

View File

@ -1,85 +0,0 @@
---
layout: page
title: "Météo-France Sensor"
description: "Show 1hr rain forecast from Météo-France."
date: 2018-10-18 08:00
sidebar: true
comments: false
sharing: true
footer: true
logo: meteo-france.png
ha_category: Sensor
ha_release: 0.82
ha_iot_class: "Cloud Polling"
---
The `meteo_france` platform uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `postal_code` configured in your `configuration.yaml` file.
## {% linkable_title Configuration %}
To add Météo-France to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: meteo_france
postal_code: '76000'
monitored_conditions:
- temperature
- weather
- wind_speed
- uv
- next_rain
- freeze_chance
- rain_chance
- snow_chance
- thunder_chance
```
{% configuration %}
postal_code:
description: Postal code of the city.
required: true
type: string
monitored_conditions:
description: The conditions types to monitor.
required: true
type: list
keys:
temperature:
description: The current temperature.
weather:
description: A human-readable text summary of the current conditions.
wind_speed:
description: The wind speed.
uv:
description: The current UV index.
next_rain:
description: Time to the next rain if happening for the next hour. (see note below)
freeze_chance:
description: Probability of temperature below 0°C for the day.
rain_chance:
description: Probability of rain for the day.
snow_chance:
description: Probability of snow for the day.
thunder_chance:
description: Probability of thunderstorm for the day.
{% endconfiguration %}
### {% linkable_title About `next_rain` condition sensor %}
<p class='note warning'>
The 1 hour rain forecast is supported for more than 75% of metropolitan France.<br/>
You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie)
</p>
The `next_rain` sensor value is the time to next rain, from 0 to 55min.
If no rain is forecasted for the next hour, value will be "No rain".
Attributes also give the forecast for the next hour in 5min intervals.
Possible value for each intervals attributes are :
- 1 No rain
- 2 Light rain
- 3 Moderate rain
- 4 Heavy rain

View File

@ -65,6 +65,8 @@ modules:
description: Noise level in dB.
humidity:
description: "Humidity in %."
health_idx:
description: "Air health as one of the values Healthy, Fine, Fair, Poor, Unhealthy."
rain:
description: Estimated rainfall for today in mm.
sum_rain_1:

View File

@ -26,6 +26,7 @@ sensor:
station_from: "STATION_1"
station_to: "STATION_2"
station_live: "STATION_1"
exclude_vias: true
```
The stations can only be provided by their standard names and not ids. The list of stations can be checked on the NMBS/SCNB website but for most accurate results check them on the [iRail API page](https://api.irail.be/stations/) which this component uses internally.
@ -43,9 +44,19 @@ station_live:
description: Setting this will create another sensor to monitor the liveboard in a station.
required: false
type: string
exclude_vias:
description: Setting this will not show connections for which you have to transfer to another station.
required: false
type: boolean
default: false
name:
description: Name to use in the frontend.
required: false
type: string
default: "`NMBS`, `NMBS Live` for the liveboard sensor when set."
show_on_map:
description: Show the station on the map.
required: false
type: boolean
default: false
{% endconfiguration %}

View File

@ -0,0 +1,59 @@
---
layout: page
title: "Reddit Sensor"
description: "How to integrate the Reddit sensor into Home Assistant."
date: 2018-02-21 20:00
sidebar: true
comments: false
sharing: true
footer: true
logo: reddit.png
ha_category: Sensor
ha_release: 0.89
ha_iot_class: "Cloud Polling"
---
The Reddit sensor integrates data from [Reddit](https://reddit.com/) to monitor your favorite subreddits.
## {% linkable_title Setup %}
To set up this sensor, you will need to generate a `client_id` and `client_secret` for the user account you will use to connect. Follow the first steps in [this wiki](https://github.com/reddit-archive/reddit/wiki/OAuth2-Quick-Start-Example).
## {% linkable_title Configuration %}
To enable this platform, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
- platform: reddit
username: !secret reddit_username
password: !secret reddit_password
client_id: !secret reddit_client_id
client_secret: !secret reddit_client_secret
subreddits:
- news
- worldnews
```
{% configuration %}
username:
description: Your Reddit account username.
required: true
type: string
password:
description: Your Reddit account password.
required: true
type: string
client_id:
description: Your Reddit account client_id generated from the wiki above.
required: true
type: string
client_secret:
description: Your Reddit account client_secret generated from the wiki above.
required: true
type: string
subreddits:
description: List of subreddits you want to get data on.
required: true
type: list
{% endconfiguration %}

View File

@ -70,7 +70,12 @@ verify_ssl:
description: Verify the SSL certificate of the endpoint.
required: false
type: boolean
default: true
default: True
timeout:
description: Defines max time to wait data from the endpoint.
required: false
type: positive integer
default: 10
unit_of_measurement:
description: Defines the units of measurement of the sensor, if any.
required: false

View File

@ -36,6 +36,10 @@ house_number:
description: Your house number.
required: true
type: string
house_number_suffix:
description: A suffix for your house number.
required: false
type: string
name:
description: Let you overwrite the name of the device in the frontend.
required: false
@ -68,6 +72,7 @@ sensor:
- platform: rova
zip_code: ZIP_CODE
house_number: HOUSE_NUMBER
house_number_suffix: HOUSE_NUMBER_SUFFIX
name: Rova
monitored_conditions:
- bio
@ -99,3 +104,7 @@ automation:
message: 'Reminder: put out biowaste bin'
```
{% endraw %}
<p class='note warning'>
This component is not affiliated with Rova and retrieves data from the endpoints of their website. Use at your own risk.
</p>

View File

@ -38,6 +38,11 @@ attribute:
description: Get value of an attribute on the selected tag.
required: false
type: string
index:
description: Defines which of the elements returned by the CSS selector to use.
required: false
default: 0
type: integer
name:
description: Name of the sensor.
required: false

View File

@ -32,11 +32,11 @@ sensor:
{% configuration %}
origin:
description: Enter the starting address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). You can also enter the entity id of a sensor, device_tracker or zone, which provides this information in its state.
description: Enter the starting address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). You can also enter the entity id of a sensor, device_tracker, person, or zone, which provides this information in its state.
required: true
type: string
destination:
description: Enter the destination address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). You can also enter the entity id of a sensor, device_tracker or zone, which provides this information in its state.
description: Enter the destination address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). You can also enter the entity id of a sensor, device_tracker, person, or zone, which provides this information in its state.
required: true
type: string
region:

View File

@ -13,10 +13,12 @@ ha_category:
- Hub
- Binary Sensor
- Climate
- Cover
- Fan
- Light
- Lock
- Sensor
- Scene
- Switch
ha_release: "0.87"
ha_iot_class: "Cloud Push"
@ -25,6 +27,8 @@ redirect_from:
- /components/binary_sensor.smartthings/
- /components/smartthings.climate/
- /components/climate.smartthings/
- /components/smartthings.cover/
- /components/cover.smartthings/
- /components/smartthings.fan/
- /components/fan.smartthings/
- /components/smartthings.light/
@ -33,6 +37,8 @@ redirect_from:
- /components/lock.smartthings/
- /components/smartthings.sensor/
- /components/sensor.smartthings/
- /components/smartthings.scene/
- /components/scene.smartthings/
- /components/smartthings.switch/
- /components/switch.smartthings/
---
@ -125,10 +131,12 @@ Event data payloads are logged at the debug level, see [debugging](#debugging) f
SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component maps those to entity platforms in Home Assistant. A single device may be represented by one or more platforms.
- [Binary Sensor](#binary-sensor)
- [Climate](#climate)
- [Cover](#cover)
- [Fan](#fan)
- [Light](#light)
- [Lock](#lock)
- [Sensor](#sensor)
- [Sensor](#sensor)
- [Scene](#scene)
- [Switch](#switch)
Support for additional platforms will be added in the future.
@ -163,6 +171,18 @@ The SmartThings Climate platform lets you control devices that have thermostat-r
| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode`
| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute)
### {% linkable_title Cover %}
The SmartThings Cover platform lets you control devices that have open/close related capabilities. For a device to be represented by the cover platform, it must have one of the capabilities from "set a" below.
| Capability |Cover Features
|-------------------------------------|--------------------------------------------|
| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) (set a) | `open` and `close`
| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) (seb a) | `open` and `close`
| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) (set a) | `open` and `close`
| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `position`
| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery_level` (state attribute)
### {% linkable_title Fan %}
The SmartThings Fan platform lets you control devices that have fan-related capabilities. For a SmartThings device to be represented by the fan platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability.
@ -203,14 +223,12 @@ The SmartThings Sensor platform lets your view devices that have sensor-related
| [`carbonMonoxideDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Detector) | `carbonMonoxide`
| [`carbonMonoxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Measurement) | `carbonMonoxideLevel`
| [`dishwasherOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dishwasher-Operating-State) | `machineState`, `dishwasherJobState` and `completionTime`
| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) | `door`
| [`dryerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Mode) | `dryerMode`
| [`dryerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Operating-State) | `machineState`, `dryerJobState` and `completionTime`
| [`dustSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dust-Sensor) | `fineDustLevel` and `dustLevel`
| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy`
| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement`
| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel`
| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) | `door`
| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance`
| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel`
| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock`
@ -244,11 +262,20 @@ The SmartThings Sensor platform lets your view devices that have sensor-related
| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage`
| [`washerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Mode) | `washerMode`
| [`washerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Operating-State) | `machineState`, `washerJobState` and `completionTime`
| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) | `windowShade`
### {% linkable_title Scene %}
The SmartThings Scene platform lets you activate scenes defined in SmartThings with a scene entity representing each SmartThings scenes within the location.
### {% linkable_title Switch %}
The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform.
The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. The following optional capabilities will provide energy and power utilization information:
| Capability |Switch Features
|-------------------------------------|--------------------------------------------|
| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | energy consumption (`today_energy_kwh` state attribute)
| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | power consumption (`current_power_w` state attribute)
## {% linkable_title Troubleshooting %}

View File

@ -23,82 +23,151 @@ If you don't have the discovery component enabled, you can configure the Sonos c
Sonos makes various services available to allow configuring groups. They are currently registered under the media player component.
### {% linkable_title Service `sonos_snapshot` %}
### {% linkable_title Service `media_player.sonos_snapshot` %}
Take a snapshot of what is currently playing on one or more speakers. This service, and the following one, are useful if you want to play a doorbell or notification sound and resume playback afterwards. If no `entity_id` is provided, all speakers are snapshotted.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`s of coordinator speakers.
| `with_group` | yes | Should be also snapshot the group state of the speaker.
<p class='note'>
The queue is not snapshotted and must be left untouched until the restore. Using `media_player.play_media` is safe and can be used to play a notification sound, including [TTS](/components/tts/) announcements.
</p>
### {% linkable_title Service `sonos_restore` %}
{% configuration %}
entity_id:
description: The speakers to snapshot.
required: false
type: entity_id
with_group:
description: Should we also snapshot the group layout and the state of other speakers in the group.
required: false
type: boolean
{% endconfiguration %}
### {% linkable_title Service `media_player.sonos_restore` %}
Restore a previously taken snapshot of one or more speakers. If no `entity_id` is provided, all speakers are restored.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`s of coordinator speakers.
| `with_group` | yes | Should be also restore the group state of the speaker. Only if was snapshot with group.
<p class='note'>
The playing queue is not snapshotted. Using `media_player.sonos_restore` on a speaker that has replaced its queue will restore the playing position, but in the new queue!
</p>
### {% linkable_title Service `sonos_join` %}
<p class='note'>
A cloud queue cannot be restarted. This includes queues started from within Spotify and queues controlled by Amazon Alexa.
</p>
Do group players together under a single coordinator. That will make a new group or join to exists group.
{% configuration %}
entity_id:
description: The speakers that should have their snapshot restored.
required: false
type: entity_id
with_group:
description: Should we also restore the group layout and the state of other speakers in the group.
required: false
type: boolean
{% endconfiguration %}
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `master` | no | A single `entity_id` that will become/hold the coordinator speaker.
| `entity_id` | no | String or list of a single `entity_id` that will group to master speaker.
### {% linkable_title Service `media_player.sonos_join` %}
### {% linkable_title Service `sonos_unjoin` %}
Group players together under a single coordinator. This will make a new group or join to an existing group.
Remove one or more speakers from a group of speakers. If no `entity_id` is provided, all speakers are unjoined.
{% configuration %}
master:
description: A single `entity_id` that will become/stay the coordinator speaker.
required: true
type: entity_id
entity_id:
description: The speakers to join to the master.
required: false
type: entity_id
{% endconfiguration %}
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will be separated from their coordinator speaker.
### {% linkable_title Service `media_player.sonos_unjoin` %}
### {% linkable_title Service `sonos_set_sleep_timer` %}
Remove one or more speakers from their group of speakers. If no `entity_id` is provided, all speakers are unjoined.
{% configuration %}
entity_id:
description: The speakers to separate from their coordinator speaker.
required: false
type: entity_id
{% endconfiguration %}
### {% linkable_title Service `media_player.sonos_set_sleep_timer` %}
Sets a timer that will turn off a speaker by tapering the volume down to 0 after a certain amount of time. Protip: If you set the sleep_time value to 0, then the speaker will immediately start tapering the volume down.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will have their timers set. Must be a coordinator speaker.
| `sleep_time` | no | Integer number of seconds that the speaker should wait until it starts tapering. Cannot exceed 86399 (one day).
{% configuration %}
entity_id:
description: The speakers that will have their timers set.
required: true
type: entity_id
sleep_time:
description: Number of seconds that the speaker should wait until it starts tapering. Cannot exceed 86399 (one day).
required: true
type: integer
{% endconfiguration %}
### {% linkable_title Service `sonos_clear_sleep_timer` %}
### {% linkable_title Service `media_player.sonos_clear_sleep_timer` %}
Clear the sleep timer on a speaker, if one is set.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. Must be a coordinator speaker.
{% configuration %}
entity_id:
description: The speakers that will have their timers cleared.
required: true
type: entity_id
{% endconfiguration %}
### {% linkable_title Service `sonos_update_alarm` %}
### {% linkable_title Service `media_player.sonos_update_alarm` %}
Update an existing Sonos alarm.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. Must be a coordinator speaker.
| `alarm_id` | no | Integer that is used in Sonos to refer to your alarm.
| `time` | yes | Time to set the alarm.
| `volume` | yes | Float for volume level.
| `enabled` | yes | Boolean for whether or not to enable this alarm.
| `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players.
{% configuration %}
entity_id:
description: The speaker that will have its alarm updated.
required: true
type: entity_id
alarm_id:
description: Integer that is used in Sonos to refer to your alarm.
required: true
type: integer
time:
description: Time to set the alarm.
required: no
type: time
volume:
description: Float for volume level (0.0-1.0).
required: no
type: float
enabled:
description: Boolean for whether or not to enable this alarm.
required: no
type: boolean
include_linked_zones:
description: Boolean that defines if the alarm also plays on grouped players.
required: no
type: boolean
{% endconfiguration %}
### {% linkable_title Service `sonos_set_option` %}
### {% linkable_title Service `media_player.sonos_set_option` %}
Set Sonos speaker options.
Night Sound and Speech Enhancement modes are only supported on Sonos PLAYBAR and PLAYBASE speakers when playing from the TV source. Other speaker types will ignore these options.
Night Sound and Speech Enhancement modes are only supported when playing from the TV source of products like Sonos Playbar and Sonos Beam. Other speaker types will ignore these options.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s that will have their options set.
| `night_sound` | yes | Boolean to control Night Sound mode.
| `speech_enhance` | yes | Boolean to control Speech Enhancement mode.
{% configuration %}
entity_id:
description: The speakers that will have their options set.
required: true
type: entity_id
night_sound:
description: Boolean to control Night Sound mode.
required: no
type: boolean
speech_enhance:
description: Boolean to control Speech Enhancement mode.
required: no
type: boolean
{% endconfiguration %}
## {% linkable_title Advanced use %}
@ -133,9 +202,3 @@ sonos:
- 192.0.2.26
- 192.0.2.27
```
## {% linkable_title Additional information %}
This component is using the [SoCo](https://github.com/SoCo/SoCo) project.
To be able to support the Sonos components and features it is mandatory to have TCP port 1400 opened. This port is used to receive events about changes on the Sonos network. For more details please see the [SoCo documentation](https://github.com/SoCo/SoCo) and source code of the SoCo project.

View File

@ -0,0 +1,22 @@
---
layout: page
title: "Danfoss Air Switch"
description: "Instructions for how to setup Danfoss Air switches within Home Assistant."
date: 2019-02-13 13:00
sidebar: true
comments: false
sharing: true
footer: true
logo: danfoss_air.png
ha_category: Switch
ha_release: 0.89
ha_iot_class: "Local Polling"
---
<p class='note'>
To get your Danfoss Air sensors working with Home Assistant, follow the instructions for the general [Danfoss Air component](/components/danfoss_air/).
</p>
The following switches.
* **Boost:** Switch to manually activate boost.

View File

@ -0,0 +1,39 @@
---
layout: page
title: "Sony Projector Switch"
description: "Instructions on how to integrate Sony Projector switches into Home Assistant."
date: 2019-01-01 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: sony.png
ha_category: Multimedia
ha_iot_class: "Local Polling"
ha_release: 0.89
---
The `sony_projector` switch platform allows you to control the state of SDCP compatible network-connected projectors from [Sony](http://www.sony.com).
## {% linkable_title Configuration %}
To use your Sony Projector in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
switch:
- platform: sony_projector
host: "192.168.1.47"
name: "Projector"
```
{% configuration %}
host:
description: The hostname or IP address of the projector.
required: true
type: string
name:
description: The name to use when displaying this switch.
required: false
type: string
{% endconfiguration %}

View File

@ -8,10 +8,10 @@ comments: false
sharing: true
footer: true
ha_category:
- Hub
- Climate
- Binary Sensor
- Energy
- Sensor
- Switch
ha_release: 0.56
logo: toon.png
ha_iot_class: "Cloud Polling"
@ -21,52 +21,52 @@ redirect_from:
- /components/switch.toon/
---
The `toon` component platform can be used to control your Toon thermostat. This component adds a climate device for your Toon thermostat and sensors for power and gas consumption. The component also auto-detects any smart plugs, solar panels and smoke detectors connected to Toon and adds sensors and switches for them.
The `toon` component platform can be used to control your Toon thermostat. This component adds a climate device for your Toon thermostat, sensors for power and gas consumption, sensors for solar production and several binary sensors for things like boiler burner on/off, hot tap water and boiler health status.
For the `toon` component to work, you'll need an active Toon subscription with Eneco and a Toon API developer account.
There is currently support for the following device types within Home Assistant:
- Binary Sensor
- [Climate](#climate)
- Sensor
- Switch
For the `toon` component to work, you'll need an active Toon subscription with Eneco. The component uses your Mijn Eneco credentials to control your thermostat through the [toonopafstand](https://toonopafstand.eneco.nl) domain.
## {% linkable_title Setting up a developer account %}
In order to be able to use this component, you'll need to sign up for a free Toon API developer account.
1. Visit the [Toon API developers website](https://developer.toon.eu/), and [sign in](https://developer.toon.eu/user/login). [Create an account](https://developer.toon.eu/user/register) if you dont have one already.
2. Open the "[My Apps](https://developer.toon.eu/user/me/apps)" page and click on "Add a new App" button on the top right.
3. The "Add App" page shows a form with two fields:
- **App Name**: Can be anything you like, for example, "Home Assistant" will just do.
- **Callback URL**: Fill in `localhost` in this field.
4. Click on "Create App" to complete the creation process.
5. Open the "[My Apps](https://developer.toon.eu/user/me/apps)" page again and click on the app that you've just created.
6. You need the codes now shown: "Consumer Key" and "Consumer Secret".
7. Add the Toon component to your `configuration.yaml` and restart Home Assistant. Then, go to `Configuration > Integrations` and select `CONFIGURE` next to Toon and follow the setup instructions.
## {% linkable_title Configuration %}
To use your Toon thermostat in your installation, add the following to your `configuration.yaml` file:
To use your Toon in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
toon:
username: YOUR_USERNAME
password: YOUR_PASSWORD
client_id: YOUR_CONSUMER_KEY
client_secret: YOUR_CONSUMER_SECRET
```
{% configuration %}
username:
description: Username for Mijn Eneco.
client_id:
description: Toon API Consumer Key.
required: true
type: string
password:
description: Password for Mijn Eneco.
client_secret:
description: Toon API Consumer Secret.
required: true
type: string
gas:
description: With this option you can choose whether you want to measure gas consumption.
required: false
type: boolean
default: true
solar:
description: With this option you can choose whether you want to measure electricity production.
required: false
type: boolean
default: false
{% endconfiguration %}
Toon is a smart thermostat delivered by the Eneco power company in The Netherlands. It can measure energy consumption (power and gas), but also the amount of energy generated in case solar panels are connected to it. Toon also acts as a z-wave hub for supported devices like the wall plug and the smoke detector. This component uses the [toonlib library](https://github.com/costastf/toonlib) by Costas Tyfoxylos that connects to the unofficial API on [https://toonopafstand.eneco.nl](https://toonopafstand.eneco.nl).
The current version of this component supports setting any of the four built-in programs and setting the temperature manually. It polls the Toon API at 30 second intervals so the status is relatively fresh without overloading the API.
## {% linkable_title Climate %}
The `toon` climate platform allows you to interact with your Toon thermostat. For compatibility reasons, the states in Home Assistant are different from the states displayed on your Toon device and are mapped as follows:
@ -77,3 +77,7 @@ The `toon` climate platform allows you to interact with your Toon thermostat. Fo
| Heat | Thuis |
| Eco | Weg |
| Cool | Slapen |
It also supports setting the temperature manually.
The Toon API is polled at a 30-second interval, so the status is relatively fresh without overloading the API.

View File

@ -0,0 +1,133 @@
---
layout: page
title: "TP-Link Smart Home Devices"
description: "Instructions on integrating TP-Link Smart Home Devices to Home Assistant."
date: 2018-09-12 13:00
sidebar: true
comments: false
sharing: true
footer: true
logo: tp-link.png
ha_category: Hub
featured: false
ha_release: 0.89
ha_iot_class: "Local Polling"
redirect_from:
- /components/switch.tplink/
- /components/light.tplink/
---
The `tplink` component allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as smart plugs and smart bulbs.
In order to activate the support, you will have to enable the integration inside the config panel.
The supported devices in your network are automatically discovered, but if you want to control devices residing in other networks you will need to configure them manually as shown below.
## {% linkable_title Supported Devices %}
This component supports devices that are controllable with the [KASA app](https://www.tp-link.com/us/kasa-smart/kasa.html).
The following devices are known to work with this component.
### {% linkable_title Plugs %}
- HS100
- HS103
- HS105
- HS110
### {% linkable_title Wall Switches %}
- HS200
- HS210
- HS220 (acts as a light)
### {% linkable_title Bulbs %}
- LB100
- LB110
- LB120
- LB130
- LB230
- KL110
- KL120
- KL130
## {% linkable_title Configuration %}
```yaml
# Example configuration.yaml
tplink:
```
{% configuration %}
discovery:
description: Whether to do automatic discovery of devices.
required: false
type: boolean
default: true
light:
description: List of light devices.
required: false
type: list
keys:
host:
description: Hostname or IP address of the device.
required: true
type: string
switch:
description: List of switch devices.
required: false
type: list
keys:
host:
description: Hostname or IP address of the device.
required: true
type: string
{% endconfiguration %}
## {% linkable_title Manual configuration example %}
```yaml
# Example configuration.yaml entry with manually specified addresses
tplink:
discovery: false
light:
- host: 192.168.200.1
- host: 192.168.200.2
switch:
- host: 192.168.200.3
- host: 192.168.200.4
```
## {% linkable_title Extracting Energy Sensor data %}
In order to get the power consumption readings from supported devices, you'll have to create a [template sensor](/components/switch.template/).
In the example below, change all of the `my_tp_switch`'s to match your device's entity ID.
{% raw %}
```yaml
sensor:
- platform: template
sensors:
my_tp_switch_amps:
friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current"
value_template: '{{ states.switch.my_tp_switch.attributes["current_a"] | float }}'
unit_of_measurement: 'A'
my_tp_switch_watts:
friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current Consumption"
value_template: '{{ states.switch.my_tp_switch.attributes["current_power_w"] | float }}'
unit_of_measurement: 'W'
my_tp_switch_total_kwh:
friendly_name_template: "{{ states.switch.my_tp_switch.name}} Total Consumption"
value_template: '{{ states.switch.my_tp_switch.attributes["total_energy_kwh"] | float }}'
unit_of_measurement: 'kWh'
my_tp_switch_volts:
friendly_name_template: "{{ states.switch.my_tp_switch.name}} Voltage"
value_template: '{{ states.switch.my_tp_switch.attributes["voltage"] | float }}'
unit_of_measurement: 'V'
my_tp_switch_today_kwh:
friendly_name_template: "{{ states.switch.my_tp_switch.name}} Today's Consumption"
value_template: '{{ states.switch.my_tp_switch.attributes["today_energy_kwh"] | float }}'
unit_of_measurement: 'kWh'
```
{% endraw %}

View File

@ -50,6 +50,11 @@ offset:
required: false
default: 0
type: integer
net_consumption:
description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative.
required: false
default: false
type: boolean
tariffs:
description: List of tariffs supported by the utility meter.
required: false

View File

@ -25,6 +25,7 @@ Currently supported services are:
- `clean_spot`
- `set_fan_speed`
- remote control of your robot.
- `xiaomi_clean_zone`
## {% linkable_title Configuration %}
@ -64,6 +65,7 @@ In addition to all of the services provided by the `vacuum` component (`start`,
- `xiaomi_remote_control_stop`
- `xiaomi_remote_control_move`
- `xiaomi_remote_control_move_step`
- `xiaomi_clean_zone`
### {% linkable_title Service `vacuum.xiaomi_remote_control_start` %}
@ -103,6 +105,73 @@ Enter remote control mode, make one move, stop, and exit remote control mode.
| `rotation` | no | Rotation: between -179 degrees and 179 degrees |
| `duration` | no | The number of milliseconds that the robot should move for |
### {% linkable_title Service `vacuum.xiaomi_clean_zone` %}
Start the cleaning operation in the areas selected for the number of repeats indicated.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific robot; default targets all |
| `zone` | no | List of zones. Each zone is an array of 4 integer value. Example: [[23510,25311,25110,26361]] |
| `repeats` | no | Number of cleaning repeats for each zone between 1 and 3. |
Example of `vacuum.xiaomi_clean_zone` use:
Inline array:
```yaml
automation:
- alias: Test vacuum zone3
trigger:
- event: start
platform: homeassistant
condition: []
action:
- service: vacuum.xiaomi_clean_zone
data_template:
entity_id: vacuum.xiaomi_vacuum
repeats_template: '{{states.input_number.vacuum_passes.state|int}}'
zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]]
```
Array with inline zone:
```yaml
automation:
- alias: Test vacuum zone3
trigger:
- event: start
platform: homeassistant
condition: []
action:
- service: vacuum.xiaomi_clean_zone
data_template:
entity_id: vacuum.xiaomi_vacuum
repeats_template: '{{states.input_number.vacuum_passes.state|int}}'
zone:
- [30914,26007,35514,28807]
- [20232,22496,26032,26496]
```
Array mode:
```yaml
automation:
- alias: Test vacuum zone3
trigger:
- event: start
platform: homeassistant
condition: []
action:
- service: vacuum.xiaomi_clean_zone
data:
entity_id: vacuum.xiaomi_vacuum
repeats: 1
zone:
- - 30914
- 26007
- 35514
- 28807
- - 20232
- 22496
- 26032
- 26496
```
## {% linkable_title Attributes %}
In addition to [all of the attributes provided by the `vacuum` component](/components/vacuum/#attributes),
@ -293,22 +362,19 @@ Software Required:
- [Mi-Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/)
- [Android Backup Extractor](https://sourceforge.net/projects/adbextractor/)
- [SQLite Browser](https://sqlitebrowser.org/)
Steps to take:
1. Install an old Version of MiHome (e.g. Mi-Home version 5.0.30) on your Android-Device.
2. Open MiHome, log-in and add your devices.
3. Enable USB-Debugging on your Android.
4. Create a backup from your MiHome App, by using adb:
```bash
adb backup com.xiaomi.smarthome
```
Now the backup App opens on you Android-Device. You don't need to set a password, just click save.
5. Extract the backup-file with android-backup-extractor:
```bash
java -jar abe.jar unpack backup.ab backup.tar
```
After that, extract the file with WinRAR, 7-Zip (or similar).
6. Go to `\apps\com.xiaomi.smarthome\db`.
7. Open `miio2.db` with the SQLite Browser.
8. You can find your device tokens in `devicerecord` table.
1. Install an old Version of MiHome (e.g. Mi-Home version 5.0.30) on your Android-Device
2. Open MiHome, log-in and add your devices
3. Enable USB-Debugging on your Android
4. Create a backup from your MiHome App, by using adb
```bash
adb backup com.xiaomi.smarthome
```
Now the backup App opens on you Android-Device. You don't need to set a password, just click save.
5. Extract the backup-file with android-backup-extractor
```bash
java -jar abe.jar unpack backup.ab backup.tar
```
After that, you kann open the file with WinRaR or what ever you like.
6. Go to \apps\com.xiaomi.smarthome\db
7. Open miio2.db with SQLite Browser
8. You can find your device tokens in "devicerecord" table

View File

@ -20,6 +20,8 @@ redirect_from:
[Velux](http://www.velux.com) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200.
At least firmware version > 2.0.0.0 is required on the KLF 200 device. The firmware images may be obtained [here](https://www.velux.com/api/klf200) and may be imported via the webinterface of your KLF 200.
There is currently support for the following device types within Home Assistant:
- Cover

View File

@ -39,7 +39,7 @@ name:
type: string
default: OpenWeatherMap
mode:
description: "Can specify `hourly` or `daily`. Select `hourly` for a three-hour forecast or `daily` for daily forecast."
description: "Can specify `hourly`, `daily` of `freedaily`. Select `hourly` for a three-hour forecast, `daily` for daily forecast or `freedaily` for a five days forecast with the free tier."
required: false
type: string
default: "`hourly`"

View File

@ -35,6 +35,10 @@ There is currently support for the following device types within Home Assistant:
- Switch
- Fan
ZHA exception and deviation handling:
Zigbee devices that deviate from or do not fully conform to the standard specification set by the [Zigbee Alliance](https://www.zigbee.org) may require the development of custom [ZHA Device Handlers](https://github.com/dmulcahey/zha-device-handlers) (ZHA quirks handler implementation) to for all their functions to work properly with the ZHA component in Home Assistant.
Known working Zigbee radio modules:
- EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)

View File

@ -63,7 +63,7 @@ The Trusted Networks auth provider defines a range of IP addresses for which no
When you log in from one of these networks, you will be asked which user account to use and won't need to enter a password.
<p class='note info'>
The [multi-factor authentication module](/docs/authentication/multi-factor-auth/) will not participate in the login process if you using this auth provider.
The [multi-factor authentication module](/docs/authentication/multi-factor-auth/) will not participate in the login process if you are using this auth provider.
</p>
Here is an example in `configuration.yaml` to set up Trusted Networks:
@ -71,18 +71,16 @@ Here is an example in `configuration.yaml` to set up Trusted Networks:
```yaml
homeassistant:
auth_providers:
- type: trusted_networks
# Temporary, this will be moved to be part of auth provider config
# https://github.com/home-assistant/home-assistant/issues/16149
http:
trusted_networks:
- 127.0.0.1
- ::1
- 192.168.0.0/24
- fd00::/8
- type: trusted_networks
trusted_networks:
- 127.0.0.1
- ::1
- 192.168.0.0/24
- fd00::/8
```
If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically if `trusted_networks` was configured under `http` section.
### {% linkable_title Command Line %}
The Command Line auth provider executes a configurable shell command to perform user authentication. Two environment variables, `username` and `password`, are passed to the command. Access is granted when the command exits successfully (with exit code 0).
@ -141,6 +139,8 @@ http:
Activating this auth provider will also allow you to provide the API password using an authentication header to make requests against the Home Assistant API. This feature will be dropped in the future in favor of long-lived access tokens.
If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically if `api_password` was configured under `http` section.
<p class='note warning'>
[Issue 16441](https://github.com/home-assistant/home-assistant/issues/16441): the legacy API password auth provider, won't be automatically configured if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing.
</p>

View File

@ -134,3 +134,11 @@ When working on Home Assistant, you can easily restart the system and then watch
$ sudo systemctl restart home-assistant@YOUR_USER && sudo journalctl -f -u home-assistant@YOUR_USER
```
### {% linkable_title Automatically restarting Home Assistant on failure %}
If you want to restart the Home Assistant service automatically after a crash, add the following lines to the `[Service]` section of your unit file:
```
Restart=on-failure
RestartSec=5s
```

View File

@ -37,8 +37,6 @@ sensor:
switch:
- platform: vera
- platform: tplink
host: IP_ADDRESS
```
## {% linkable_title Style 2: List each device separately %}
@ -65,8 +63,7 @@ switch 1:
platform: vera
switch 2:
platform: tplink
host: IP_ADDRESS
platform: vera
```
## {% linkable_title Grouping devices %}

View File

@ -17,9 +17,7 @@
{%- assign imp_url = imp_name | prepend: '/components/' | append: '/' -%}
{%- assign parent_name = file_parts[0] -%}
{%- assign parent_url = parent_name | prepend: '/components/' | append: '/' -%}
{%- assign embedded_url = imp_name | prepend: '/components/' | append: '/' -%}
{%- assign embedded_component = components | where: 'url', embedded_url | first -%}
{%- assign parent_component = components | where: 'url', parent_url | first -%}
{%- assign parent_component = components | where: 'url', imp_url | first -%}
{%- else -%}
{%- assign is_platform = false -%}
{%- assign imp_name = file_parts | first -%}

View File

@ -397,6 +397,38 @@ style:
default: "position: absolute, transform: translate(-50%, -50%)"
{% endconfiguration %}
### {% linkable_title Conditional Element %}
Much like the Conditional card, this element will let you show its sub-elements based on entity states.
{% configuration %}
type:
required: true
description: conditional
type: string
conditions:
required: true
description: List of entity IDs and matching states.
type: list
keys:
entity:
required: true
description: HA entity ID.
type: string
state:
required: false
description: Entity state is equal to this value.*
type: string
state_not:
required: false
description: Entity state is unequal to this value.*
type: string
elements:
required: true
description: One or more elements of any type to show when conditions are met. See below for an example.
type: list
{% endconfiguration %}
### {% linkable_title Custom Elements %}
{% configuration %}
@ -554,3 +586,26 @@ elements:
left: 75%
width: 5%
```
## {% linkable_title Conditional Example %}
```yaml
type: picture-elements
image: /local/House.png
elements:
# conditionally show TV off button shortcut when dad's away and daughter is home
- type: conditional
conditions:
- entity: sensor.presence_daughter
state: 'home'
- entity: sensor.presence_dad
state: 'not_home'
elements:
- type: state-icon
entity: switch.tv
tap_action:
action: toggle
style:
top: 47%
left: 42%
```

View File

@ -0,0 +1,675 @@
---
layout: post
title: "0.89: Nissan Leaf, PlayStation 4, Point alarm control, Owlet baby monitor"
description: "Vroom vroom vrooooooooooom."
date: 2019-03-06 00:11:03
date_formatted: "March 6, 2019"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
og_image: /images/blog/2019-03-release-89/components.png
---
<a href='/components/#version/0.89'><img src='/images/blog/2019-03-release-89/components.png' style='border: 0;box-shadow: none;'></a>
It's time for release 0.89. It's another great new release with some cool new features, bug fixes and improvements. The first cool new feature is that yet another car is integrated into Home Assistant: the Nissan Leaf. Both deConz and SmartThings integrations keep expanding to cover more devices.
This release introduces a new mobile app component. [@robbiet480], who also works on the iOS app, has taken the best parts of the Home Assistant iOS app component and turned it into a standardized API that any mobile app can build upon. This will allow any mobile apps to integrate with Home Assistant with a great user experience. If you are a mobile app developer, please check the updated [app integration docs](https://developers.home-assistant.io/docs/en/app_integration_index.html). We will be fine tuning the API in upcoming releases. Feedback is welcome.
## {% linkable_title Noteworthy Breaking Changes %}
__Custom Components file structure change:__ A significant change in how the "under the hood" of Home Assistant works has led to forcing platforms to be resolved based off the component path, if it exists.
Today, if you want, you can override the Hue light platform, but not the other parts of the Hue integration. If a future update evolves the Hue component, removing or changing internal methods that the custom platform relied upon, the custom platform will start failing ([like this report](https://github.com/home-assistant/home-assistant/issues/17943#issuecomment-462014778)).
To avoid this, we're going to __no longer allow custom components to be partial overlays__ (just a platform). Instead, if you want to override a built-in platform, __you will need to override the whole component__.
This is enforced by first resolving the platform as a component, and if it exists, limiting the lookup path to the component path.
Example: if I look up the hue component, and it is provided by a custom component, then all platform lookups will also be looked up in the custom component dir. The same works the other way around, if a user would only try to override `hue/light.py` but not` hue/__init__.py`, the custom platform will be ignored.
Paulus has written some detailed information about this change on the developers' blog, if you'd like more information. [The Great Migration by Paulus](https://developers.home-assistant.io/blog/2019/02/19/the-great-migration.html)
__Existing SmartThings configuration entries will be removed,__ including the SmartApp/Automation from the SmartThings app. Home Assistant will prompt you to configure the integration again or it can be invoked from the integrations page. The configuration process is the same as before. To prepare, have your _personal access token and a mobile device with the SmartThings Classic App handy._ This will not affect the naming of devices or entities and is a __one-time inconvenience.__ The implementation switches over to the SmartApp access token to synchronize subscriptions during setup of the config entry, which cannot be done using the personal access token.
## {% linkable_title New Platforms %}
- Météo-France platform for the weather component ([@victorcerutti] - [#18404]) ([sensor.meteo_france docs]) ([weather.meteo_france docs]) (new-platform)
- Point alarm control ([@fredrike] - [#20972]) ([point docs]) (new-platform)
- Nissan Leaf Integration (Carwings / NissanConnect EV) ([@filcole] - [#19786]) ([device_tracker docs]) ([nissan_leaf docs]) ([binary_sensor.nissan_leaf docs]) ([sensor.nissan_leaf docs]) ([switch.nissan_leaf docs]) (new-platform)
- Rewrite of Toon component ([@frenck] - [#21186]) ([toon docs]) (breaking change) (new-platform)
- Times of The Day Binary Sensor ([@kstaniek] - [#20068]) ([binary_sensor.tod docs]) (new-platform)
- Add switch platform for Danfoss Air and additional sensors. ([@JonasPed] - [#21046]) ([danfoss_air docs]) (new-platform)
- Owlet baby monitor component ([@oblogic7] - [#21108]) ([owlet docs]) (new-platform)
- deCONZ thermostat support ([@Kane610] - [#20586]) ([deconz docs]) (new-platform)
- Added device tracker support for Ubee Router ([@mzdrale] - [#19586]) ([device_tracker docs]) (new-platform)
- Add LCN cover platform ([@alengwenus] - [#20288]) ([lcn docs]) ([cover.lcn docs]) (new-platform)
- Add initial support for Sony SDCP projector control ([@alistairg] - [#20269]) ([switch.sony_projector docs]) (new-platform)
- Add SmartThings Cover platform and add cover device classes ([@andrewsayre] - [#21192]) ([cover docs]) ([smartthings docs]) (breaking change) (new-platform)
- Add SmartThings Scene platform ([@andrewsayre] - [#21405]) ([smartthings docs]) (new-platform)
- Reddit Sensor ([@ljmerza] - [#21344]) ([sensor.reddit docs]) (new-platform)
- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
- Add component media player.ps4 ([@ktnrg45] - [#21074]) ([ps4 docs])
## {% linkable_title If you need help... %}
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
## {% linkable_title Reporting Issues %}
Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
<!--more-->
## {% linkable_title Breaking Changes %}
- __HomeMatic component's wireless actors__ are having two RSSI values. The way the component was programmed one of them was being overwritten. With this new change, the __`rssi` attribute of HomeMatic entities has been removed.__ As a replacement the attributes rssi_device and rssi_peer have been added. The attribute of `rssi` will no longer be available, you'll need to __update to `rssi_device`,__ and you can add `rssi_peer` now as well! (fixes #20900) ([@dagobert] - [#20902]) ([homematic docs]) (breaking change)
- You can now specifiy an action when calling the __yeelight_start_flow service__ on your yeelights. The __default action will be 'recover'__ if you do not specify something else. This action will be taken after the flow stops. ([@zewelor] - [#21195]) ([light.yeelight docs]) (breaking change)
- Custom platforms that override a built-in platform that has a component, should now also include the component in the custom_components/ folder. So if you want to override `hue/light.py` with a custom version, __you will also need to provide/copy over `hue/__init__.py`.__ See details in main section about this change. ([@balloob] - [#21070]) (breaking change)
- Automatic discovery of __TP-Link switches, bulbs and dimmers.__ This is a continuation of #15329 and adds support for automatic discovery of TP-Link bulbs, switches, and dimmers based on the new config flow. The integration needs to be enabled either in the __integration configuration or__ alternatively by __adding tplink component__ to the configuration file. As the devices are now configured on the component, this is a __breaking change for light.tplink and switch.tplink.__ ([@rytilahti] - [#18091]) ([tplink docs]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change)
- Enhance __SmartThings component__ subscription. See details in main section about this change. ([@andrewsayre] - [#21124]) ([smartthings docs]) (breaking change) (new-feature)
- The __iperf3 sensor platform__ has been __separated__ into a component and a sensor to remove the service from the sensor platform. Configuration options have changed, __please review the documentation__ and select the correct options. ([@rohankapoorcom] - [#21138]) ([iperf3 docs]) __([sensor.iperf3 docs])__ (breaking change) (new-platform)
- The __`google_travel_time`__ platform no longer has an update service, use __homeassistant.update with the appropriate entity_id(s) instead.__ ([@rohankapoorcom] - [#21153]) ([sensor.google_travel_time docs]) (breaking change)
- Add ADB server functionality to __Fire TV.__ This change __removes the `get_source`__ configuration option. ([@JeffLIrion] - [#21221]) ([media_player.firetv docs]) (breaking change)
- With the addition of the __SmartThings Cover__ platform, the SmartThings __Sensor platform will no longer represent Door, Garage Door and Window Share attributes.__ Additionally, if the cover device reports battery status, the value will be present as a __state attribute__ (battery_level) and not a discrete sensor. ([@andrewsayre] - [#21192]) ([cover docs]) ([smartthings docs]) (breaking change) (new-platform)
- The __Toon component__ was broken some time ago, so now requires a Toon API developer account and __can be configured using the Home Assistant integrations.__ Support for Switches & Smoke detectors has been removed. ([@frenck] - [#21186]) ([toon docs]) (breaking change) (new-platform)
- Addition of config for __trusted networks auth provider.__ It is a breaking changes for users who __manually configured__ trusted network auth provider. An invalid config error will be thrown and HA won't be able to fully started. (It is NOT a breaking changes for user who didn't manual configured trusted network auth provider.) ([@awarecan] - [#21111]) (breaking change)
- For some __HomeMatic devices the `sabotage` attribute is replaced by `error`.__ The value (if not 0) is a device specific error code. ([@dagobert] - [#21009]) ([homematic docs]) (breaking change)
## {% linkable_title Beta Fixes %}
- Add PLATFORM_SCHEMA_BASE to telegram_bot component ([@veleek] - [#21155]) ([telegram_bot docs]) (beta fix)
- Add watchdog to Ambient PWS ([@bachya] - [#21507]) ([ambient_station docs]) (beta fix)
- Improve new Sonos snapshot/restore ([@amelchio] - [#21509]) ([sonos docs]) (beta fix)
- Fix lint ([@balloob] - [#21520]) ([person docs]) ([sensor.airvisual docs]) (beta fix)
- Only use a single store instance ([@balloob] - [#21521]) ([frontend docs]) (beta fix)
- Allow skip-pip applied to HA core ([@awarecan] - [#21527]) (beta fix)
- Updated variable name for readability ([@gorynychzmey] - [#21528]) ([person docs]) (beta fix)
- Add missing retain option to mqtt.climate configuration schema ([@emontnemery] - [#21536]) ([mqtt docs]) (beta fix)
- Fix warning ([@awarecan] - [#21538]) ([http docs]) (beta fix)
- Fix incorrect pyairvisual call ([@bachya] - [#21542]) ([sensor.airvisual docs]) (beta fix)
- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
- Make time trigger data trigger.now local ([@emontnemery] - [#21544]) (beta fix)
- Bump zigpy-deconz ([@damarco] - [#21566]) ([zha docs]) (beta fix)
- Re-thrown exception occurred in the blocking service call ([@awarecan] - [#21573]) ([websocket_api docs]) (beta fix)
- Upgrade PyXiaomiGateway library ([@Danielhiversen] - [#21582]) ([xiaomi_aqara docs]) (beta fix)
- Log exception occurred in WS service call command ([@awarecan] - [#21584]) ([websocket_api docs]) (beta fix)
- Word the tplink deprecation warning more strongly ([@amelchio] - [#21586]) ([tplink docs]) (beta fix)
- Handle when installed app has already been removed ([@andrewsayre] - [#21595]) ([smartthings docs]) (beta fix)
- Resolve race condition when HA auth provider is loading ([@awarecan] - [#21619]) (beta fix)
- Upgrade pysonos to 0.0.8 ([@amelchio] - [#21624]) ([sonos docs]) (beta fix)
- Fix calc next ([@balloob] - [#21630]) (beta fix)
- Cast displaytime to int for JSON RPC ([@GGeezes] - [#21649]) ([notify docs]) (beta fix)
- :shirt: Corrects unit of measurement symbol for Watt ([@frenck] - [#21654]) ([toon docs]) (beta fix)
- Rename Google Assistant evenets ([@balloob] - [#21655]) ([google_assistant docs]) (beta fix)
- :ambulance: Fixes Toon doing I/O in coroutines ([@frenck] - [#21657]) ([toon docs]) (beta fix)
- Upgrade toonapilib to 3.1.0 ([@frenck] - [#21661]) ([toon docs]) (beta fix)
- Avoid recorder thread crashing ([@balloob] - [#21668]) (beta fix)
- check we have a tb ([@dgomes] - [#21670]) ([system_log docs]) (beta fix)
- Fix ADS race condition ([@carstenschroeder] - [#21677]) ([ads docs]) (beta fix)
- resync hass that changes have occured ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix)
- Upgrade toonapilib to 3.2.1 ([@frenck] - [#21706]) ([toon docs]) (beta fix)
## {% linkable_title All changes %}
- Météo-France platform for the weather component ([@victorcerutti] - [#18404]) ([sensor.meteo_france docs]) ([weather.meteo_france docs]) (new-platform)
- Update file header ([@fabaff] - [#21061])
- Climate const.py move ([@elupus] - [#20945])
- Update file header ([@fabaff] - [#21067])
- Rename CONF_ATTRIBUTION to ATTRIBUTION ([@fabaff] - [#21069])
- Bump pyHik library to 0.2.2, improve connections, add sensors ([@mezz64] - [#21086]) ([binary_sensor.hikvision docs])
- Meteo france ([@fabaff] - [#21065]) ([meteo_france docs])
- Fix "Unable to find entity" at Waze component ([@VirtualL] - [#21087]) ([sensor.waze_travel_time docs])
- Point alarm control ([@fredrike] - [#20972]) ([point docs]) (new-platform)
- Times of The Day Binary Sensor ([@kstaniek] - [#20068]) ([binary_sensor.tod docs]) (new-platform)
- Nissan Leaf Integration (Carwings / NissanConnect EV) ([@filcole] - [#19786]) ([device_tracker docs]) ([nissan_leaf docs]) ([binary_sensor.nissan_leaf docs]) ([sensor.nissan_leaf docs]) ([switch.nissan_leaf docs]) (new-platform)
- Add switch platform for Danfoss Air and additional sensors. ([@JonasPed] - [#21046]) ([danfoss_air docs]) (new-platform)
- Config Entry migrations ([@andrewsayre] - [#20888])
- Refactor http CachingStaticResource ([@awarecan] - [#21062]) ([http docs])
- Add index parameter to scrape sensor ([@davidbb] - [#21084]) ([sensor.scrape docs])
- Owlet baby monitor component ([@oblogic7] - [#21108]) ([owlet docs]) (new-platform)
- Order imports ([@fabaff] - [#21117]) ([owlet docs])
- Add Groups to Homematic IP ([@SukramJ] - [#21076]) ([homematicip_cloud docs])
- Remove outdated url pattern match support for static file hosting ([@awarecan] - [#21109]) ([http docs])
- Upgrade pytest to 4.2.1 ([@scop] - [#21112])
- Make Netatmo able to discover both Weather station and Health Coach ([@msvinth] - [#20274])
- Add webhook support for Netatmo Cameras ([@danielperna84] - [#20755]) ([netatmo docs])
- Logging to find what deCONZ events get created ([@Kane610] - [#20551])
- Add traccar scan_interval configuration option ([@lapy] - [#21079]) ([device_tracker docs])
- Add component media player.ps4 ([@ktnrg45] - [#21074]) ([ps4 docs])
- Add traccar monitored_conditions option ([@lapy] - [#21149]) ([device_tracker docs])
- RSSI_PEER and RSSI_DEVICE are different things (fixes #20900) ([@dagobert] - [#20902]) ([homematic docs]) (breaking change)
- Upgrade voluptuous-serialize to 2.1.0 ([@fabaff] - [#21166])
- Upgrade youtube_dl to 2019.02.18 ([@fabaff] - [#21164]) ([media_extractor docs])
- Upgrade sqlalchemy to 1.2.18 ([@fabaff] - [#21162]) ([sensor.sql docs])
- Upgrade psutil to 5.5.1 ([@fabaff] - [#21171]) ([sensor.systemmonitor docs])
- Fix HomematicIP Cloud fix cover position property ([@mxworm] - [#21154]) ([homematicip_cloud docs])
- Clean up upc_connect tests ([@MartinHjelmare] - [#21150])
- deCONZ thermostat support ([@Kane610] - [#20586]) ([deconz docs]) (new-platform)
- Add context to service call event ([@balloob] - [#21181])
- Expose effect_list attribute for turned off lights ([@OleksandrBerchenko] - [#20750])
- Philips Hue: Add bridge update prompt ([@starkillerOG] - [#21119]) ([hue docs])
- Upgrade crimereports to 1.0.1 ([@fabaff] - [#21187]) ([sensor.crimereports docs])
- Netatmo, address comments from #20755 ([@danielperna84] - [#21157]) ([netatmo docs])
- Use constants from const.py ([@fabaff] - [#21068]) ([insteon docs]) ([knx docs]) ([raspihats docs]) ([light.rpi_gpio_pwm docs]) ([sensor.etherscan docs]) ([sensor.ripple docs]) ([sensor.sochain docs])
- Bump Synology SRM dependency to version 0.0.6 ([@aerialls] - [#21212]) ([device_tracker docs])
- Upgrade numpy to 1.16.1 ([@fabaff] - [#21190]) ([binary_sensor.trend docs]) ([image_processing.tensorflow docs]) ([sensor.pollen docs])
- Fix Homematic IP Cloud configuration ([@bauerj] - [#21202]) ([homematicip_cloud docs])
- Add yeelight flow action support ([@zewelor] - [#21195]) ([light.yeelight docs]) (breaking change)
- Fix the build ([@balloob] - [#21229])
- Update pyhomematic to 0.1.56 ([@danielperna84] - [#21227]) ([homematic docs])
- Add self to integration sensor and utility_meter ([@dgomes] - [#21226])
- Add zone and reps for Xiaomi vacuum ([@marcogazzola] - [#19777]) ([vacuum.xiaomi_miio docs])
- Bump zigpy ([@damarco] - [#21203]) ([zha docs])
- Support OpenWRT 18.06 in luci device tracker ([@fbradyirl] - [#21236]) ([device_tracker docs])
- Remove constraint from regex ([@balloob] - [#21239])
- Upgrade opensensemap-api to 0.1.4 ([@fabaff] - [#21240]) ([air_quality docs])
- Alarm trigger support for Point ([@fredrike] - [#21207]) ([point docs])
- Prevent partial custom component overlays ([@balloob] - [#21070]) (breaking change)
- Correctly detect devices, which went offline during HA restart ([@OleksandrBerchenko] - [#20933]) ([device_tracker docs])
- Update rova component with suffix for house number ([@GidoHakvoort] - [#21182]) ([sensor.rova docs])
- Added device tracker support for Ubee Router ([@mzdrale] - [#19586]) ([device_tracker docs]) (new-platform)
- account specific cookies file to enable multiple accounts ([@ToSa27] - [#19811]) ([device_tracker docs])
- Add support for automatic discovery of TP-Link switches, bulbs and dimmers ([@rytilahti] - [#18091]) ([tplink docs]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change)
- Version bump: python-anthemav to v1.1.9 ([@nugget] - [#21273]) ([media_player.anthemav docs])
- Do not warn for internally loaded components ([@balloob] - [#21287])
- Remove index ([@fabaff] - [#21304])
- Adding myself as codeowner for Freebox component ([@SNoof85] - [#21288])
- Nissanleaf ([@filcole] - [#21145]) ([nissan_leaf docs]) (new-platform)
- Config entry options ([@Kane610] - [#18929]) ([deconz docs])
- Enhance SmartThings component subscription ([@andrewsayre] - [#21124]) ([smartthings docs]) (breaking change) (new-feature)
- Add more ads plc types ([@philipperequile] - [#19801]) ([ads docs])
- Add note to issue template regarding iOS issues ([@robbiet480] - [#21342])
- Allow google home component device tracker to be optional ([@dshokouhi] - [#21335]) ([googlehome docs])
- Add LCN cover platform ([@alengwenus] - [#20288]) ([lcn docs]) ([cover.lcn docs]) (new-platform)
- Add location to Norway airquality ([@Danielhiversen] - [#21347]) ([air_quality docs]) ([weather.met docs])
- Updated pyvlx from 0.2.8 to 0.2.9. This version has slightly improved logging ([@Julius2342] - [#21349]) ([velux docs])
- Update buienradar.py ([@hmmbob] - [#21351]) ([sensor.buienradar docs])
- Fixes the sensor.filter outlier filter (handle step-changes correctly) ([@siberx] - [#21332]) ([sensor.filter docs])
- Allows the utility_meter to net meter rather than only allow increases. ([@JBassett] - [#21204]) ([utility_meter docs])
- implementing freedaily mode ([@tmechen] - [#21314]) ([weather.openweathermap docs])
- Add voltage per phase ([@leeuwte] - [#21319]) ([sensor.dsmr docs])
- Add conf_key check for LCN platform load ([@alengwenus] - [#21354]) ([lcn docs])
- Update luci device tracker ([@fbradyirl] - [#21321]) ([device_tracker docs])
- Support the person component in Prometheus ([@mitchellrj] - [#21363]) ([prometheus docs])
- Update Starling Bank Integration to v2 API ([@Dullage] - [#21358]) ([sensor.starlingbank docs])
- Split out iperf3 into a component with a sensor platform ([@rohankapoorcom] - [#21138]) ([iperf3 docs]) ([sensor.iperf3 docs]) (breaking change) (new-platform)
- Add custom and zone cleaning to Neato Vacuums ([@RomRider] - [#20779]) ([neato docs])
- Add initial support for Sony SDCP projector control ([@alistairg] - [#20269]) ([switch.sony_projector docs]) (new-platform)
- Check for attribute existence for HS220 support ([@rytilahti] - [#21309]) ([tplink docs])
- Generate new Discogs sensors + fix scan interval ([@thibmaek] - [#19443]) ([sensor.discogs docs])
- Update panasonic_viera.py ([@Tony763] - [#21365]) ([media_player.panasonic_viera docs])
- Handle connection issue for netatmo ([@Danielhiversen] - [#21346]) ([netatmo docs])
- Refactoring. Moved LCN constants to const.py ([@alengwenus] - [#21376]) ([lcn docs]) (new-platform)
- Clean up owntracks tests ([@MartinHjelmare] - [#21378])
- Remove the google travel time update service ([@rohankapoorcom] - [#21153]) ([sensor.google_travel_time docs]) (breaking change)
- SmartThings Lock platform state attributes enhancement ([@andrewsayre] - [#21379]) ([smartthings docs]) (new-feature)
- Upgrade shodan to 1.11.0 ([@fabaff] - [#21384]) ([sensor.shodan docs])
- Update ordering ([@fabaff] - [#21377]) ([modbus docs])
- Bump nessclient version to 0.9.10 ([@nickw444] - [#21388]) ([ness_alarm docs])
- Handle capitalized HomeKit property names ([@koreth] - [#21382]) ([homekit_controller docs])
- Update WazeTravelSensor to 0.9 ([@hmmbob] - [#21130]) ([sensor.waze_travel_time docs])
- Clean up geofency test ([@MartinHjelmare] - [#21397])
- Clean up locative tests ([@MartinHjelmare] - [#21400])
- Add Sonos discovery of multiple households ([@amelchio] - [#21337]) ([sonos docs])
- Philips js state ([@elupus] - [#21407]) ([media_player.philips_js docs])
- Add ADB server functionality to Fire TV ([@JeffLIrion] - [#21221]) ([media_player.firetv docs]) (breaking change)
- Upgrade pytest to 4.3.0 ([@scop] - [#21412])
- Upgrade mypy to 0.670 ([@scop] - [#20934])
- Update pylinky ([@tiste] - [#21416]) ([sensor.linky docs])
- Mark water_heater as significant domain ([@elupus] - [#21390]) ([history docs])
- Add power and energy attributes to SmartThings switch ([@andrewsayre] - [#21375]) ([smartthings docs]) (new-feature)
- Add SmartThings Cover platform and add cover device classes ([@andrewsayre] - [#21192]) ([cover docs]) ([smartthings docs]) (breaking change) (new-platform)
- Add ESPHome User-Defined Services ([@OttoWinter] - [#21409]) ([esphome docs])
- Handle GA Disconnect intent ([@balloob] - [#21387]) ([google_assistant docs])
- Fix double events on Lutron Pico keypads ([@koreth] - [#21408]) ([lutron docs])
- Fix Sonos snapshot/restore ([@amelchio] - [#21411]) ([sonos docs])
- Increase travis timeout ([@andrewsayre] - [#21447])
- Rewrite of Toon component ([@frenck] - [#21186]) ([toon docs]) (breaking change) (new-platform)
- Check if a script requirement is available before install ([@kellerza] - [#20517])
- Add timeout option to sensor.rest and binary_sensor.rest. ([@glogiotatidis] - [#20065]) ([binary_sensor.rest docs]) ([sensor.rest docs])
- Clean up codeowners file ([@amelchio] - [#21442])
- Upgrade flake8 to 3.7.7 ([@scop] - [#21452])
- Clean up ZHA post rewrite ([@dmulcahey] - [#21448]) ([zha docs])
- Add friendly name to devices in the device registry ([@dmulcahey] - [#21318]) ([config docs])
- Fix ESPHome nodes being auto-added without user confirmation ([@OttoWinter] - [#21444]) ([esphome docs])
- Fix for Snips platform update that breaks hermes api. ([@ptc] - [#21443]) ([snips docs])
- Remove launching a server in a test ([@balloob] - [#21445])
- Add SmartThings Scene platform ([@andrewsayre] - [#21405]) ([smartthings docs]) (new-platform)
- Adjust GTFS dates when crossing midnight ([@renemarc] - [#20916]) ([sensor.gtfs docs])
- Reddit Sensor ([@ljmerza] - [#21344]) ([sensor.reddit docs]) (new-platform)
- Add config for trusted networks auth provider ([@awarecan] - [#21111]) (breaking change)
- Add HomematicIP HmIP-OC8 module ([@mxworm] - [#21401]) ([homematicip_cloud docs])
- Added new econet states ([@w1ll1am23] - [#21420]) ([water_heater docs])
- Comment out bluepy libraries from requirements_all.txt ([@Danielhiversen] - [#20856]) ([switch.switchbot docs]) ([switch.switchmate docs])
- Update sensor.nmbs to support vias better + show on map ([@thibmaek] - [#20063]) ([sensor.nmbs docs])
- Add mitemp bt sensor device class ([@blackray12] - [#20293]) ([sensor.mitemp_bt docs])
- Add Somfy IO Garage door ([@dfournie] - [#21320]) ([tahoma docs])
- Add person support for Waze Travel Time ([@Petro31] - [#21471]) ([sensor.waze_travel_time docs])
- Add cpu_use_percent as a new resource to the Glances sensor. ([@kevintuhumury] - [#21455]) ([sensor.glances docs])
- Added a digit for precipitation ([@helto4real] - [#21439]) ([smhi docs])
- Upgrade bcrypt to 3.1.6 ([@fabaff] - [#21476])
- Upgrade shodan to 1.11.1 ([@fabaff] - [#21478]) ([sensor.shodan docs])
- Upgrade astral to 1.10.1 ([@fabaff] - [#21474])
- Refactor async_turn_on() for ZHA Light. ([@Adminiuga] - [#21156]) ([zha docs])
- Add device_info to enable HA-devices for Homematic IP ([@SukramJ] - [#21241]) ([homematicip_cloud docs])
- Fire events when Google Assistant commands come in #15139 ([@Swamp-Ig] - [#20204]) ([google_assistant docs])
- pylint 2.3.0 ([@Danielhiversen] - [#21485])
- HomeMatic: Add error-attribute ([@dagobert] - [#21009]) ([homematic docs]) (breaking change)
- Avoid unnecessary commands in Vizio update function ([@JeffLIrion] - [#20867])
- Upgrade pyairvisual to 3.0.1 ([@bachya] - [#21512]) ([sensor.airvisual docs])
- Bump simplisafe-python to 3.4.1 ([@bachya] - [#21511]) ([simplisafe docs])
- Upgrade aioambient to 0.1.3 ([@bachya] - [#21510]) ([ambient_station docs])
- Upgrade tibber lib ([@Danielhiversen] - [#21486]) ([tibber docs])
- ness_alarm: Bump nessclient version to 0.9.13 ([@nickw444] - [#21466]) ([ness_alarm docs])
- Bump ihc to 2.3.0 ([@msvinth] - [#21494]) ([ihc docs])
- Changed source priority for Person ([@gorynychzmey] - [#21479])
- Add PLATFORM_SCHEMA_BASE to telegram_bot component ([@veleek] - [#21155]) ([telegram_bot docs]) (beta fix)
- Add watchdog to Ambient PWS ([@bachya] - [#21507]) ([ambient_station docs]) (beta fix)
- Improve new Sonos snapshot/restore ([@amelchio] - [#21509]) ([sonos docs]) (beta fix)
- Fix lint ([@balloob] - [#21520]) ([person docs]) ([sensor.airvisual docs]) (beta fix)
- Only use a single store instance ([@balloob] - [#21521]) ([frontend docs]) (beta fix)
- Allow skip-pip applied to HA core ([@awarecan] - [#21527]) (beta fix)
- Updated variable name for readability ([@gorynychzmey] - [#21528]) ([person docs]) (beta fix)
- Add missing retain option to mqtt.climate configuration schema ([@emontnemery] - [#21536]) ([mqtt docs]) (beta fix)
- Fix warning ([@awarecan] - [#21538]) ([http docs]) (beta fix)
- Fix incorrect pyairvisual call ([@bachya] - [#21542]) ([sensor.airvisual docs]) (beta fix)
- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
- Make time trigger data trigger.now local ([@emontnemery] - [#21544]) (beta fix)
- Bump zigpy-deconz ([@damarco] - [#21566]) ([zha docs]) (beta fix)
- Re-thrown exception occurred in the blocking service call ([@awarecan] - [#21573]) ([websocket_api docs]) (beta fix)
- Upgrade PyXiaomiGateway library ([@Danielhiversen] - [#21582]) ([xiaomi_aqara docs]) (beta fix)
- Log exception occurred in WS service call command ([@awarecan] - [#21584]) ([websocket_api docs]) (beta fix)
- Word the tplink deprecation warning more strongly ([@amelchio] - [#21586]) ([tplink docs]) (beta fix)
- Handle when installed app has already been removed ([@andrewsayre] - [#21595]) ([smartthings docs]) (beta fix)
- Resolve race condition when HA auth provider is loading ([@awarecan] - [#21619]) (beta fix)
- Upgrade pysonos to 0.0.8 ([@amelchio] - [#21624]) ([sonos docs]) (beta fix)
- Fix calc next ([@balloob] - [#21630]) (beta fix)
- Cast displaytime to int for JSON RPC ([@GGeezes] - [#21649]) ([notify docs]) (beta fix)
- :shirt: Corrects unit of measurement symbol for Watt ([@frenck] - [#21654]) ([toon docs]) (beta fix)
- Rename Google Assistant evenets ([@balloob] - [#21655]) ([google_assistant docs]) (beta fix)
- :ambulance: Fixes Toon doing I/O in coroutines ([@frenck] - [#21657]) ([toon docs]) (beta fix)
- Upgrade toonapilib to 3.1.0 ([@frenck] - [#21661]) ([toon docs]) (beta fix)
- Avoid recorder thread crashing ([@balloob] - [#21668]) (beta fix)
- check we have a tb ([@dgomes] - [#21670]) ([system_log docs]) (beta fix)
- Fix ADS race condition ([@carstenschroeder] - [#21677]) ([ads docs]) (beta fix)
- resync hass that changes have occured ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix)
- Upgrade toonapilib to 3.2.1 ([@frenck] - [#21706]) ([toon docs]) (beta fix)
[#18091]: https://github.com/home-assistant/home-assistant/pull/18091
[#18404]: https://github.com/home-assistant/home-assistant/pull/18404
[#18929]: https://github.com/home-assistant/home-assistant/pull/18929
[#19443]: https://github.com/home-assistant/home-assistant/pull/19443
[#19586]: https://github.com/home-assistant/home-assistant/pull/19586
[#19777]: https://github.com/home-assistant/home-assistant/pull/19777
[#19786]: https://github.com/home-assistant/home-assistant/pull/19786
[#19801]: https://github.com/home-assistant/home-assistant/pull/19801
[#19811]: https://github.com/home-assistant/home-assistant/pull/19811
[#20063]: https://github.com/home-assistant/home-assistant/pull/20063
[#20065]: https://github.com/home-assistant/home-assistant/pull/20065
[#20068]: https://github.com/home-assistant/home-assistant/pull/20068
[#20204]: https://github.com/home-assistant/home-assistant/pull/20204
[#20269]: https://github.com/home-assistant/home-assistant/pull/20269
[#20274]: https://github.com/home-assistant/home-assistant/pull/20274
[#20288]: https://github.com/home-assistant/home-assistant/pull/20288
[#20293]: https://github.com/home-assistant/home-assistant/pull/20293
[#20517]: https://github.com/home-assistant/home-assistant/pull/20517
[#20551]: https://github.com/home-assistant/home-assistant/pull/20551
[#20586]: https://github.com/home-assistant/home-assistant/pull/20586
[#20750]: https://github.com/home-assistant/home-assistant/pull/20750
[#20755]: https://github.com/home-assistant/home-assistant/pull/20755
[#20779]: https://github.com/home-assistant/home-assistant/pull/20779
[#20856]: https://github.com/home-assistant/home-assistant/pull/20856
[#20867]: https://github.com/home-assistant/home-assistant/pull/20867
[#20888]: https://github.com/home-assistant/home-assistant/pull/20888
[#20902]: https://github.com/home-assistant/home-assistant/pull/20902
[#20916]: https://github.com/home-assistant/home-assistant/pull/20916
[#20933]: https://github.com/home-assistant/home-assistant/pull/20933
[#20934]: https://github.com/home-assistant/home-assistant/pull/20934
[#20945]: https://github.com/home-assistant/home-assistant/pull/20945
[#20972]: https://github.com/home-assistant/home-assistant/pull/20972
[#21009]: https://github.com/home-assistant/home-assistant/pull/21009
[#21046]: https://github.com/home-assistant/home-assistant/pull/21046
[#21061]: https://github.com/home-assistant/home-assistant/pull/21061
[#21062]: https://github.com/home-assistant/home-assistant/pull/21062
[#21065]: https://github.com/home-assistant/home-assistant/pull/21065
[#21067]: https://github.com/home-assistant/home-assistant/pull/21067
[#21068]: https://github.com/home-assistant/home-assistant/pull/21068
[#21069]: https://github.com/home-assistant/home-assistant/pull/21069
[#21070]: https://github.com/home-assistant/home-assistant/pull/21070
[#21074]: https://github.com/home-assistant/home-assistant/pull/21074
[#21076]: https://github.com/home-assistant/home-assistant/pull/21076
[#21079]: https://github.com/home-assistant/home-assistant/pull/21079
[#21084]: https://github.com/home-assistant/home-assistant/pull/21084
[#21086]: https://github.com/home-assistant/home-assistant/pull/21086
[#21087]: https://github.com/home-assistant/home-assistant/pull/21087
[#21108]: https://github.com/home-assistant/home-assistant/pull/21108
[#21109]: https://github.com/home-assistant/home-assistant/pull/21109
[#21111]: https://github.com/home-assistant/home-assistant/pull/21111
[#21112]: https://github.com/home-assistant/home-assistant/pull/21112
[#21117]: https://github.com/home-assistant/home-assistant/pull/21117
[#21119]: https://github.com/home-assistant/home-assistant/pull/21119
[#21124]: https://github.com/home-assistant/home-assistant/pull/21124
[#21130]: https://github.com/home-assistant/home-assistant/pull/21130
[#21138]: https://github.com/home-assistant/home-assistant/pull/21138
[#21145]: https://github.com/home-assistant/home-assistant/pull/21145
[#21149]: https://github.com/home-assistant/home-assistant/pull/21149
[#21150]: https://github.com/home-assistant/home-assistant/pull/21150
[#21153]: https://github.com/home-assistant/home-assistant/pull/21153
[#21154]: https://github.com/home-assistant/home-assistant/pull/21154
[#21155]: https://github.com/home-assistant/home-assistant/pull/21155
[#21156]: https://github.com/home-assistant/home-assistant/pull/21156
[#21157]: https://github.com/home-assistant/home-assistant/pull/21157
[#21162]: https://github.com/home-assistant/home-assistant/pull/21162
[#21164]: https://github.com/home-assistant/home-assistant/pull/21164
[#21166]: https://github.com/home-assistant/home-assistant/pull/21166
[#21171]: https://github.com/home-assistant/home-assistant/pull/21171
[#21181]: https://github.com/home-assistant/home-assistant/pull/21181
[#21182]: https://github.com/home-assistant/home-assistant/pull/21182
[#21186]: https://github.com/home-assistant/home-assistant/pull/21186
[#21187]: https://github.com/home-assistant/home-assistant/pull/21187
[#21190]: https://github.com/home-assistant/home-assistant/pull/21190
[#21192]: https://github.com/home-assistant/home-assistant/pull/21192
[#21195]: https://github.com/home-assistant/home-assistant/pull/21195
[#21202]: https://github.com/home-assistant/home-assistant/pull/21202
[#21203]: https://github.com/home-assistant/home-assistant/pull/21203
[#21204]: https://github.com/home-assistant/home-assistant/pull/21204
[#21207]: https://github.com/home-assistant/home-assistant/pull/21207
[#21212]: https://github.com/home-assistant/home-assistant/pull/21212
[#21221]: https://github.com/home-assistant/home-assistant/pull/21221
[#21226]: https://github.com/home-assistant/home-assistant/pull/21226
[#21227]: https://github.com/home-assistant/home-assistant/pull/21227
[#21229]: https://github.com/home-assistant/home-assistant/pull/21229
[#21236]: https://github.com/home-assistant/home-assistant/pull/21236
[#21239]: https://github.com/home-assistant/home-assistant/pull/21239
[#21240]: https://github.com/home-assistant/home-assistant/pull/21240
[#21241]: https://github.com/home-assistant/home-assistant/pull/21241
[#21273]: https://github.com/home-assistant/home-assistant/pull/21273
[#21287]: https://github.com/home-assistant/home-assistant/pull/21287
[#21288]: https://github.com/home-assistant/home-assistant/pull/21288
[#21304]: https://github.com/home-assistant/home-assistant/pull/21304
[#21309]: https://github.com/home-assistant/home-assistant/pull/21309
[#21314]: https://github.com/home-assistant/home-assistant/pull/21314
[#21318]: https://github.com/home-assistant/home-assistant/pull/21318
[#21319]: https://github.com/home-assistant/home-assistant/pull/21319
[#21320]: https://github.com/home-assistant/home-assistant/pull/21320
[#21321]: https://github.com/home-assistant/home-assistant/pull/21321
[#21332]: https://github.com/home-assistant/home-assistant/pull/21332
[#21335]: https://github.com/home-assistant/home-assistant/pull/21335
[#21337]: https://github.com/home-assistant/home-assistant/pull/21337
[#21342]: https://github.com/home-assistant/home-assistant/pull/21342
[#21344]: https://github.com/home-assistant/home-assistant/pull/21344
[#21346]: https://github.com/home-assistant/home-assistant/pull/21346
[#21347]: https://github.com/home-assistant/home-assistant/pull/21347
[#21349]: https://github.com/home-assistant/home-assistant/pull/21349
[#21351]: https://github.com/home-assistant/home-assistant/pull/21351
[#21354]: https://github.com/home-assistant/home-assistant/pull/21354
[#21358]: https://github.com/home-assistant/home-assistant/pull/21358
[#21363]: https://github.com/home-assistant/home-assistant/pull/21363
[#21365]: https://github.com/home-assistant/home-assistant/pull/21365
[#21375]: https://github.com/home-assistant/home-assistant/pull/21375
[#21376]: https://github.com/home-assistant/home-assistant/pull/21376
[#21377]: https://github.com/home-assistant/home-assistant/pull/21377
[#21378]: https://github.com/home-assistant/home-assistant/pull/21378
[#21379]: https://github.com/home-assistant/home-assistant/pull/21379
[#21382]: https://github.com/home-assistant/home-assistant/pull/21382
[#21384]: https://github.com/home-assistant/home-assistant/pull/21384
[#21387]: https://github.com/home-assistant/home-assistant/pull/21387
[#21388]: https://github.com/home-assistant/home-assistant/pull/21388
[#21390]: https://github.com/home-assistant/home-assistant/pull/21390
[#21397]: https://github.com/home-assistant/home-assistant/pull/21397
[#21400]: https://github.com/home-assistant/home-assistant/pull/21400
[#21401]: https://github.com/home-assistant/home-assistant/pull/21401
[#21405]: https://github.com/home-assistant/home-assistant/pull/21405
[#21407]: https://github.com/home-assistant/home-assistant/pull/21407
[#21408]: https://github.com/home-assistant/home-assistant/pull/21408
[#21409]: https://github.com/home-assistant/home-assistant/pull/21409
[#21411]: https://github.com/home-assistant/home-assistant/pull/21411
[#21412]: https://github.com/home-assistant/home-assistant/pull/21412
[#21416]: https://github.com/home-assistant/home-assistant/pull/21416
[#21420]: https://github.com/home-assistant/home-assistant/pull/21420
[#21439]: https://github.com/home-assistant/home-assistant/pull/21439
[#21442]: https://github.com/home-assistant/home-assistant/pull/21442
[#21443]: https://github.com/home-assistant/home-assistant/pull/21443
[#21444]: https://github.com/home-assistant/home-assistant/pull/21444
[#21445]: https://github.com/home-assistant/home-assistant/pull/21445
[#21447]: https://github.com/home-assistant/home-assistant/pull/21447
[#21448]: https://github.com/home-assistant/home-assistant/pull/21448
[#21452]: https://github.com/home-assistant/home-assistant/pull/21452
[#21455]: https://github.com/home-assistant/home-assistant/pull/21455
[#21466]: https://github.com/home-assistant/home-assistant/pull/21466
[#21471]: https://github.com/home-assistant/home-assistant/pull/21471
[#21474]: https://github.com/home-assistant/home-assistant/pull/21474
[#21475]: https://github.com/home-assistant/home-assistant/pull/21475
[#21476]: https://github.com/home-assistant/home-assistant/pull/21476
[#21478]: https://github.com/home-assistant/home-assistant/pull/21478
[#21479]: https://github.com/home-assistant/home-assistant/pull/21479
[#21485]: https://github.com/home-assistant/home-assistant/pull/21485
[#21486]: https://github.com/home-assistant/home-assistant/pull/21486
[#21494]: https://github.com/home-assistant/home-assistant/pull/21494
[#21507]: https://github.com/home-assistant/home-assistant/pull/21507
[#21509]: https://github.com/home-assistant/home-assistant/pull/21509
[#21510]: https://github.com/home-assistant/home-assistant/pull/21510
[#21511]: https://github.com/home-assistant/home-assistant/pull/21511
[#21512]: https://github.com/home-assistant/home-assistant/pull/21512
[#21520]: https://github.com/home-assistant/home-assistant/pull/21520
[#21521]: https://github.com/home-assistant/home-assistant/pull/21521
[#21527]: https://github.com/home-assistant/home-assistant/pull/21527
[#21528]: https://github.com/home-assistant/home-assistant/pull/21528
[#21536]: https://github.com/home-assistant/home-assistant/pull/21536
[#21538]: https://github.com/home-assistant/home-assistant/pull/21538
[#21542]: https://github.com/home-assistant/home-assistant/pull/21542
[#21544]: https://github.com/home-assistant/home-assistant/pull/21544
[#21566]: https://github.com/home-assistant/home-assistant/pull/21566
[#21573]: https://github.com/home-assistant/home-assistant/pull/21573
[#21582]: https://github.com/home-assistant/home-assistant/pull/21582
[#21584]: https://github.com/home-assistant/home-assistant/pull/21584
[#21586]: https://github.com/home-assistant/home-assistant/pull/21586
[#21595]: https://github.com/home-assistant/home-assistant/pull/21595
[#21619]: https://github.com/home-assistant/home-assistant/pull/21619
[#21624]: https://github.com/home-assistant/home-assistant/pull/21624
[#21630]: https://github.com/home-assistant/home-assistant/pull/21630
[#21649]: https://github.com/home-assistant/home-assistant/pull/21649
[#21654]: https://github.com/home-assistant/home-assistant/pull/21654
[#21655]: https://github.com/home-assistant/home-assistant/pull/21655
[#21657]: https://github.com/home-assistant/home-assistant/pull/21657
[#21661]: https://github.com/home-assistant/home-assistant/pull/21661
[#21668]: https://github.com/home-assistant/home-assistant/pull/21668
[#21670]: https://github.com/home-assistant/home-assistant/pull/21670
[#21677]: https://github.com/home-assistant/home-assistant/pull/21677
[#21705]: https://github.com/home-assistant/home-assistant/pull/21705
[#21706]: https://github.com/home-assistant/home-assistant/pull/21706
[@Adminiuga]: https://github.com/Adminiuga
[@Danielhiversen]: https://github.com/Danielhiversen
[@Dullage]: https://github.com/Dullage
[@GGeezes]: https://github.com/GGeezes
[@GidoHakvoort]: https://github.com/GidoHakvoort
[@JBassett]: https://github.com/JBassett
[@JeffLIrion]: https://github.com/JeffLIrion
[@JonasPed]: https://github.com/JonasPed
[@Julius2342]: https://github.com/Julius2342
[@Kane610]: https://github.com/Kane610
[@MartinHjelmare]: https://github.com/MartinHjelmare
[@OleksandrBerchenko]: https://github.com/OleksandrBerchenko
[@OttoWinter]: https://github.com/OttoWinter
[@Petro31]: https://github.com/Petro31
[@RomRider]: https://github.com/RomRider
[@SNoof85]: https://github.com/SNoof85
[@SukramJ]: https://github.com/SukramJ
[@Swamp-Ig]: https://github.com/Swamp-Ig
[@ToSa27]: https://github.com/ToSa27
[@Tony763]: https://github.com/Tony763
[@VirtualL]: https://github.com/VirtualL
[@aerialls]: https://github.com/aerialls
[@alengwenus]: https://github.com/alengwenus
[@alistairg]: https://github.com/alistairg
[@amelchio]: https://github.com/amelchio
[@andrewsayre]: https://github.com/andrewsayre
[@awarecan]: https://github.com/awarecan
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bauerj]: https://github.com/bauerj
[@blackray12]: https://github.com/blackray12
[@carstenschroeder]: https://github.com/carstenschroeder
[@dagobert]: https://github.com/dagobert
[@damarco]: https://github.com/damarco
[@danielperna84]: https://github.com/danielperna84
[@davidbb]: https://github.com/davidbb
[@dfournie]: https://github.com/dfournie
[@dgomes]: https://github.com/dgomes
[@dmulcahey]: https://github.com/dmulcahey
[@dshokouhi]: https://github.com/dshokouhi
[@elupus]: https://github.com/elupus
[@emontnemery]: https://github.com/emontnemery
[@fabaff]: https://github.com/fabaff
[@fbradyirl]: https://github.com/fbradyirl
[@filcole]: https://github.com/filcole
[@fredrike]: https://github.com/fredrike
[@frenck]: https://github.com/frenck
[@glogiotatidis]: https://github.com/glogiotatidis
[@gorynychzmey]: https://github.com/gorynychzmey
[@helto4real]: https://github.com/helto4real
[@hmmbob]: https://github.com/hmmbob
[@kellerza]: https://github.com/kellerza
[@kevintuhumury]: https://github.com/kevintuhumury
[@koreth]: https://github.com/koreth
[@kstaniek]: https://github.com/kstaniek
[@ktnrg45]: https://github.com/ktnrg45
[@lapy]: https://github.com/lapy
[@leeuwte]: https://github.com/leeuwte
[@ljmerza]: https://github.com/ljmerza
[@marcogazzola]: https://github.com/marcogazzola
[@mezz64]: https://github.com/mezz64
[@mitchellrj]: https://github.com/mitchellrj
[@msvinth]: https://github.com/msvinth
[@mxworm]: https://github.com/mxworm
[@mzdrale]: https://github.com/mzdrale
[@nickw444]: https://github.com/nickw444
[@nugget]: https://github.com/nugget
[@oblogic7]: https://github.com/oblogic7
[@philipperequile]: https://github.com/philipperequile
[@ptc]: https://github.com/ptc
[@renemarc]: https://github.com/renemarc
[@robbiet480]: https://github.com/robbiet480
[@rohankapoorcom]: https://github.com/rohankapoorcom
[@rytilahti]: https://github.com/rytilahti
[@scop]: https://github.com/scop
[@siberx]: https://github.com/siberx
[@starkillerOG]: https://github.com/starkillerOG
[@thibmaek]: https://github.com/thibmaek
[@tiste]: https://github.com/tiste
[@tmechen]: https://github.com/tmechen
[@veleek]: https://github.com/veleek
[@victorcerutti]: https://github.com/victorcerutti
[@w1ll1am23]: https://github.com/w1ll1am23
[@zewelor]: https://github.com/zewelor
[ads docs]: /components/ads/
[air_quality docs]: /components/air_quality/
[ambient_station docs]: /components/ambient_station/
[binary_sensor.hikvision docs]: /components/binary_sensor.hikvision/
[binary_sensor.nissan_leaf docs]: /components/binary_sensor.nissan_leaf/
[binary_sensor.rest docs]: /components/binary_sensor.rest/
[binary_sensor.tod docs]: /components/binary_sensor.tod/
[binary_sensor.trend docs]: /components/binary_sensor.trend/
[config docs]: /components/config/
[cover docs]: /components/cover/
[cover.lcn docs]: /components/cover.lcn/
[danfoss_air docs]: /components/danfoss_air/
[deconz docs]: /components/deconz/
[device_tracker docs]: /components/device_tracker/
[esphome docs]: /components/esphome/
[frontend docs]: /components/frontend/
[google_assistant docs]: /components/google_assistant/
[googlehome docs]: /components/googlehome/
[history docs]: /components/history/
[homekit_controller docs]: /components/homekit_controller/
[homematic docs]: /components/homematic/
[homematicip_cloud docs]: /components/homematicip_cloud/
[http docs]: /components/http/
[hue docs]: /components/hue/
[ihc docs]: /components/ihc/
[image_processing.tensorflow docs]: /components/image_processing.tensorflow/
[insteon docs]: /components/insteon/
[iperf3 docs]: /components/iperf3/
[knx docs]: /components/knx/
[lcn docs]: /components/lcn/
[light.rpi_gpio_pwm docs]: /components/light.rpi_gpio_pwm/
[light.tplink docs]: /components/light.tplink/
[light.yeelight docs]: /components/light.yeelight/
[lutron docs]: /components/lutron/
[media_extractor docs]: /components/media_extractor/
[media_player.anthemav docs]: /components/media_player.anthemav/
[media_player.firetv docs]: /components/media_player.firetv/
[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/
[media_player.philips_js docs]: /components/media_player.philips_js/
[meteo_france docs]: /components/meteo_france/
[mobile_app docs]: /components/mobile_app/
[modbus docs]: /components/modbus/
[mqtt docs]: /components/mqtt/
[neato docs]: /components/neato/
[ness_alarm docs]: /components/ness_alarm/
[netatmo docs]: /components/netatmo/
[nissan_leaf docs]: /components/nissan_leaf/
[notify docs]: /components/notify/
[owlet docs]: /components/owlet/
[person docs]: /components/person/
[point docs]: /components/point/
[prometheus docs]: /components/prometheus/
[ps4 docs]: /components/ps4/
[raspihats docs]: /components/raspihats/
[sensor.airvisual docs]: /components/sensor.airvisual/
[sensor.buienradar docs]: /components/sensor.buienradar/
[sensor.crimereports docs]: /components/sensor.crimereports/
[sensor.discogs docs]: /components/sensor.discogs/
[sensor.dsmr docs]: /components/sensor.dsmr/
[sensor.etherscan docs]: /components/sensor.etherscan/
[sensor.filter docs]: /components/sensor.filter/
[sensor.glances docs]: /components/sensor.glances/
[sensor.google_travel_time docs]: /components/sensor.google_travel_time/
[sensor.gtfs docs]: /components/sensor.gtfs/
[sensor.iperf3 docs]: /components/sensor.iperf3/
[sensor.linky docs]: /components/sensor.linky/
[sensor.meteo_france docs]: /components/sensor.meteo_france/
[sensor.mitemp_bt docs]: /components/sensor.mitemp_bt/
[sensor.nissan_leaf docs]: /components/sensor.nissan_leaf/
[sensor.nmbs docs]: /components/sensor.nmbs/
[sensor.pollen docs]: /components/sensor.pollen/
[sensor.reddit docs]: /components/sensor.reddit/
[sensor.rest docs]: /components/sensor.rest/
[sensor.ripple docs]: /components/sensor.ripple/
[sensor.rova docs]: /components/sensor.rova/
[sensor.scrape docs]: /components/sensor.scrape/
[sensor.shodan docs]: /components/sensor.shodan/
[sensor.sochain docs]: /components/sensor.sochain/
[sensor.sql docs]: /components/sensor.sql/
[sensor.starlingbank docs]: /components/sensor.starlingbank/
[sensor.systemmonitor docs]: /components/sensor.systemmonitor/
[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/
[simplisafe docs]: /components/simplisafe/
[smartthings docs]: /components/smartthings/
[smhi docs]: /components/smhi/
[snips docs]: /components/snips/
[sonos docs]: /components/sonos/
[switch.nissan_leaf docs]: /components/switch.nissan_leaf/
[switch.sony_projector docs]: /components/switch.sony_projector/
[switch.switchbot docs]: /components/switch.switchbot/
[switch.switchmate docs]: /components/switch.switchmate/
[switch.tplink docs]: /components/switch.tplink/
[system_log docs]: /components/system_log/
[tahoma docs]: /components/tahoma/
[telegram_bot docs]: /components/telegram_bot/
[tellduslive docs]: /components/tellduslive/
[tibber docs]: /components/tibber/
[toon docs]: /components/toon/
[tplink docs]: /components/tplink/
[utility_meter docs]: /components/utility_meter/
[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/
[velux docs]: /components/velux/
[water_heater docs]: /components/water_heater/
[weather.met docs]: /components/weather.met/
[weather.meteo_france docs]: /components/weather.meteo_france/
[weather.openweathermap docs]: /components/weather.openweathermap/
[websocket_api docs]: /components/websocket_api/
[xiaomi_aqara docs]: /components/xiaomi_aqara/
[zha docs]: /components/zha/

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143 38"><style>.a{fill:#FFF;}.b{fill:currentColor;}</style><title> Page 1@3x</title><desc> Created with Sketch.</desc><defs><polygon points="0 0.9 0 39 38.1 39 38.1 0.9"/></defs><g fill="currentColor"><g transform="translate(-120 -21)translate(120 20)"><path d="M38 20L38 20C38 20 38 20 38 20" class="a logo-word"/><path d="M38 20L38 20 36.5 21.3C36.5 21.3 37.5 20.4 38 20" class="a logo-word"/><path d="M57.6 13C54.4 13 52.6 16.1 52.6 20.9 52.6 25.7 54.4 28.8 57.6 28.8 60.9 28.8 62.7 25.7 62.7 20.9 62.7 16.1 60.9 13 57.6 13M57.6 34.8C49.8 34.8 44.6 29.2 44.6 20.9 44.6 12.6 49.8 7 57.7 7 65.5 7 70.7 12.6 70.7 20.8 70.7 29.1 65.5 34.8 57.6 34.8" class="b logo-word"/><polygon points="94.6 34.3 87.7 34.3 85.6 24.8 83.4 34.3 76.5 34.3 71.6 14.8 78.9 14.8 80.9 25.1 82.9 15.1 89.3 15.1 91.4 25.1 93.3 15.1 99.6 15.1" class="b logo-word"/><polygon points="101.1 34.3 101.1 7.3 108 6.2 108 34.3" class="b logo-word"/><path d="M138.6 34.6C134.2 34.6 131 32.9 131 27.6L131 20.6 128.6 20.6 128.6 15.1 131 15.1 131 9.6 137.9 8.5 137.9 15.1 142.4 15.1 142.4 20.6 137.9 20.6 137.9 26.5C137.9 28.1 138.7 28.7 140.2 28.7 140.6 28.7 141.9 28.6 142.4 28.5L142.4 34.1C141.3 34.4 140.3 34.6 138.6 34.6" class="b logo-word"/><path d="M118.8 18.9C117.4 18.9 116.5 20.3 116.4 23.1L121.1 23.1C121.1 20.3 120.2 18.9 118.8 18.9M127.5 26.6L116.6 26.6C116.9 29.1 118.7 29.9 120.9 29.9 122.8 29.9 125.2 29 127.4 27.9L127.4 32.8C125.3 34 122.9 34.7 120 34.7 113.9 34.7 109.7 31.6 109.7 24.8 109.7 18.5 113.6 14.7 119 14.7 121 14.7 123 15.1 124.6 16.5 126.1 17.7 127 19.2 127.4 21.1 127.7 22.7 127.7 24.5 127.5 26.6" class="b logo-word"/><g transform="translate(0 0.053)"><mask fill="currentColor"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-1"/></mask><path d="M26 24.7C24.6 24.7 23.3 24.3 22.1 23.6L19.5 26.3C19.3 26.4 19.1 26.5 19 26.5 18.8 26.5 18.6 26.4 18.4 26.3L15.8 23.7C14.7 24.3 13.3 24.7 11.9 24.7 7.6 24.7 4.1 21.2 4.1 16.9 4.1 12.6 7.6 9.1 11.9 9.1 15 9.1 17.7 10.9 19 13.6 20.2 10.9 22.9 9.1 26 9.1 30.3 9.1 33.8 12.6 33.8 16.9 33.8 21.2 30.3 24.7 26 24.7M38 20.4C38 20.3 38 20.3 38 20.3 38.1 20.2 38.1 20.1 38.1 20 38.1 15.4 36.4 11 33.5 7.6L34.8 4.9C34.9 4.7 34.9 4.4 34.7 4.2 34.6 4 34.3 3.9 34.1 3.9L30 4.4C26.8 2.1 23 0.9 19 0.9 15.1 0.9 11.3 2.1 8.1 4.4L4 3.9C3.7 3.9 3.5 4 3.3 4.2 3.2 4.4 3.2 4.7 3.3 4.9L4.6 7.6C1.6 11 0 15.4 0 20 0 20.1 0 20.3 0 20.4L0 20.4C0 20.4 0 20.4 0 20.5L1.4 21.6C3.4 23.5 5.5 25.3 8 27 12.9 30.4 12.8 33.5 12.1 36.2L11.6 37.4 11.6 37.4 11.6 37.5C11.6 37.5 11.6 37.5 11.6 37.5 13.9 38.4 16.4 39 19 39 21.6 39 24.1 38.5 26.3 37.5 26.3 37.5 26.3 37.5 26.3 37.5 26.3 37.5 26.3 37.5 26.3 37.5L25.8 36.2C25.1 33.5 25 30.4 29.9 27 32.4 25.3 34.5 23.5 36.5 21.6 36.5 21.6 37.5 20.7 38 20.4 38 20.4 38 20.4 38 20.4" mask="url(#mask-2)" class="b"/></g><path d="M37.8 22.5L36.1 24C34.5 25.4 32.7 26.8 30.7 28.2 26.7 31 26.6 33.4 27.1 35.6 27.1 35.6 27.3 36.2 27.6 36.9L27.6 36.9C27.6 37 27.7 37 27.7 37 27.7 37 27.7 36.9 27.7 36.9 27.7 36.9 27.7 36.9 27.7 37L27.7 36.9C33.2 34.1 37.1 28.8 37.9 22.5 37.9 22.5 37.8 22.5 37.8 22.5" class="b"/><path d="M10.8 35.6C11.3 33.4 11.2 31 7.2 28.2 5.2 26.8 3.4 25.4 1.8 24L0.2 22.8C1.1 28.9 4.9 34.1 10.2 36.9 10.6 36.2 10.8 35.6 10.8 35.6" class="b"/><path d="M19 24.9L17 22.9C17.8 22.2 18.5 21.3 19 20.3 19.5 21.3 20.1 22.1 21 22.9L19 24.9Z" class="b"/><path d="M15.2 18.3C14.2 19.1 13.1 19.5 11.9 19.5 10.7 19.5 9.6 19.1 8.7 18.3 8.4 18.1 7.9 18.2 7.7 18.5 7.4 18.8 7.5 19.2 7.8 19.5 9 20.4 10.4 20.9 11.9 20.9 13.4 20.9 14.9 20.4 16 19.5 16.4 19.2 16.4 18.8 16.2 18.5 15.9 18.2 15.5 18.1 15.2 18.3M5.6 16.9C5.6 13.4 8.5 10.6 12 10.6 15.3 10.6 18 13.1 18.3 16.3 18.4 16.7 18.4 17.2 18.3 17.6 18 20.8 15.3 23.3 12 23.3 8.5 23.3 5.6 20.5 5.6 16.9" class="b"/><path d="M25.8 36.3C25.8 36.3 25.8 36.3 25.8 36.3 25.8 36.3 25.8 36.3 25.8 36.3" class="b"/><path d="M27.7 37L27.6 36.9C27.7 36.9 27.7 36.9 27.7 37" class="b"/><path d="M10.2 36.9C10.2 36.9 10.2 36.9 10.2 36.9L10.2 36.9Z" class="b"/><path d="M29.2 18.3C28.2 19.1 27.1 19.5 25.9 19.5 24.7 19.5 23.6 19.1 22.7 18.3 22.4 18.1 21.9 18.2 21.7 18.5 21.4 18.8 21.5 19.2 21.8 19.5 23 20.4 24.4 20.9 25.9 20.9 27.4 20.9 28.9 20.4 30 19.5 30.4 19.2 30.4 18.8 30.2 18.5 29.9 18.2 29.5 18.1 29.2 18.3M26.1 10.6C29.6 10.6 32.5 13.4 32.5 16.9 32.5 20.5 29.6 23.3 26.1 23.3 22.8 23.3 20.1 20.8 19.7 17.6 19.7 17.3 19.7 16.8 19.7 16.3 20.1 13.1 22.8 10.6 26.1 10.6" class="b"/></g></g></svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB