Merge branch 'rc' into current

This commit is contained in:
Paulus Schoutsen 2018-09-17 19:05:04 +02:00
commit a3201ab599
51 changed files with 1515 additions and 314 deletions

1
.gitignore vendored
View File

@ -20,3 +20,4 @@ source/.jekyll-metadata
/.vs/slnx.sqlite-journal /.vs/slnx.sqlite-journal
/.vs/VSWorkspaceState.json /.vs/VSWorkspaceState.json
.vscode .vscode
*.suo

View File

@ -141,9 +141,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 0 current_major_version: 0
current_minor_version: 77 current_minor_version: 78
current_patch_version: 3 current_patch_version: 0
date_released: 2018-09-03 date_released: 2018-09-15
# Either # or the anchor link to latest release notes in the blog post. # Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it. # Must be prefixed with a # and have double quotes around it.

View File

@ -18,6 +18,7 @@ Load and update configuration files for Home Assistant from a [Git](https://git-
"git_branch": "master", "git_branch": "master",
"git_command": "pull", "git_command": "pull",
"git_remote": "origin", "git_remote": "origin",
"git_prune": "false",
"repeat": { "repeat": {
"active": false, "active": false,
"interval": 300 "interval": 300
@ -38,8 +39,9 @@ Load and update configuration files for Home Assistant from a [Git](https://git-
``` ```
- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your GitHub repository URL (see example configuration) - **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your GitHub repository URL (see example configuration)
- **git_branch** (*Required*): Branch name of the Git repo, leave this as 'master' if you are unsure. - **git_branch** (*Required*): Branch name of the Git repo. If left empty, the currently checked out branch will be updated. Leave this as 'master' if you are unsure.
- **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure. - **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure.
- **git_prune** (*Required*): If set to true, the add-on will cleanup branches that are deleted on the remote repository, but still have cached entries on the local machine. Leave this as `false` if you are unsure.
- **git_command** (*Required*): Must be either `pull` or `reset`. Leave this as `pull` if you are unsure. - **git_command** (*Required*): Must be either `pull` or `reset`. Leave this as `pull` if you are unsure.
* **pull**: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files. * **pull**: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files.

View File

@ -0,0 +1,60 @@
---
layout: page
title: "Yale Smart Alarm Control"
description: "Instructions on how to integrate Yale Smart Alarms into Home Assistant."
date: 2018-09-01 11:11
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Alarm
ha_release: 0.78
---
The `yale_smart_alarm` platform provides connectivity with the Yale Smart Alarm systems and Smart Hub through Yale's API.
This platform supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` (duplicate of home) and `alarm_disarm`.
Currently only one alarm is supported.
To enable, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
alarm_control_panel:
- platform: yale_smart_alarm
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
Configuration variables:
- **name** (*Optional*): Name of device in Home Assistant.
- **username** (*Required*): Username used to sign into the Yale app/web client.
- **password** (*Required*): Password used to sign into the Yale app/web client.
- **area_id** (*Optional*): Area ID of the device when talking to Yale's API if required ('1' by default).
Automation example:
```yaml
automation:
- alias: "Alarm: Disarmed Daytime"
trigger:
platform: state
entity_id: alarm_control_panel.yale_smart_alarm
to: 'disarmed'
condition:
condition: sun
before: sunset
action:
service: scene.turn_on
entity_id: scene.OnDisarmedDaytime
- alias: "Alarm: Armed Away"
trigger:
platform: state
entity_id: alarm_control_panel.yale_smart_alarm
to: 'armed_away'
action:
service: scene.turn_on
entity_id: scene.OnArmedAway
```

View File

@ -15,6 +15,8 @@ ha_iot_class: "Local Polling"
In addition to the [APCUPSd Sensor](/components/sensor.apcupsd/) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times. In addition to the [APCUPSd Sensor](/components/sensor.apcupsd/) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times.
## {% linkable_title Configuration %}
To enable this sensor, you first have to set up [apcupsd](/components/apcupsd/), and add the following lines to your `configuration.yaml` file: To enable this sensor, you first have to set up [apcupsd](/components/apcupsd/), and add the following lines to your `configuration.yaml` file:
```yaml ```yaml
@ -23,6 +25,10 @@ binary_sensor:
- platform: apcupsd - platform: apcupsd
``` ```
Configuration variables: {% configuration %}
name:
- **name** (*Optional*): Name to use in the front end. description: Name to use in the frontend.
required: false
type: string
default: UPS Online Status
{% endconfiguration %}

View File

@ -15,26 +15,24 @@ ha_iot_class: "Local Polling"
The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) binary sensors. The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) binary sensors.
## {% linkable_title Configuration %}
The `knx` component must be configured correctly, see [KNX Component](/components/knx). The `knx` component must be configured correctly, see [KNX Component](/components/knx).
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
binary_sensor: binary_sensor:
- platform: knx - platform: knx
name: "Entrance.Motion.Sensor"
address: '6/0/2' address: '6/0/2'
device_class: 'motion'
#significant_bit: 2
#reset_after: 100
``` ```
Configuration variables: Configuration variables:
- **address** (*Required*): KNX group address of the binary sensor.
- **name** (*Optional*): A name for this device used within Home Assistant. - **name** (*Optional*): A name for this device used within Home Assistant.
- **address**: KNX group address of the binary sensor. - **device_class** (*Optional*): HASS device class e.g., "motion".
- **device_class** (Optional): HASS device class e.g., "motion". - **significant_bit** (*Optional*): Specify which significant bit of the KNX value should be used. Default is 1.
- **significant_bit** (Optional): Specify which significant bit of the KNX value should be used. Default is 1. - **reset_after** (*Optional*): Reset back to OFF state after specified milliseconds.
- **reset_after** (Optional): Reset back to OFF state after specified milliseconds.
You can also attach actions to binary sensors (e.g., to switch on a light when a switch was pressed). In this example, one light is switched on when the button was pressed once and two others when the button was pressed a second time. You can also attach actions to binary sensors (e.g., to switch on a light when a switch was pressed). In this example, one light is switched on when the button was pressed once and two others when the button was pressed a second time.

View File

@ -25,11 +25,9 @@ The `push` camera can as an example be used with [motionEye](https://github.com/
In motionEye, under **File Storage -> Run A Command** type in: In motionEye, under **File Storage -> Run A Command** type in:
```bash ```bash
curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera?token=12345678
``` ```
Please take note that you might need to add `-H "x-ha-access: YOUR_PASSWORD"` if you have API authentication enabled.
Optionally configure motionEye to save only motion triggered images by going into **Still Images -> Capture Mode** and setting **Motion Triggered**. Tune your preferences under **Motion Detection**. Optionally configure motionEye to save only motion triggered images by going into **Still Images -> Capture Mode** and setting **Motion Triggered**. Tune your preferences under **Motion Detection**.
In this setup, you can configure the push camera to continuously replay the last motion triggered event using a configuration such as: In this setup, you can configure the push camera to continuously replay the last motion triggered event using a configuration such as:
@ -40,6 +38,7 @@ camera:
name: MotionEye Outdoor name: MotionEye Outdoor
buffer: 3 buffer: 3
timeout: 5 timeout: 5
token: 12345678
``` ```
## {% linkable_title Configuration %} ## {% linkable_title Configuration %}
@ -51,6 +50,7 @@ To enable this camera in your installation, add the following to your `configura
camera: camera:
- platform: push - platform: push
name: My Push Camera name: My Push Camera
token: 12345678
``` ```
{% configuration %} {% configuration %}
@ -69,6 +69,10 @@ timeout:
required: false required: false
default: 5 seconds default: 5 seconds
type: time type: time
token:
description: User provided token acting as access control, should be a large string (more then 8 chars). Required if you can't use HA new auth system (0.77).
required: false
type: string
field: field:
description: HTTP POST field containing the image file description: HTTP POST field containing the image file
required: false required: false

View File

@ -1,86 +0,0 @@
---
layout: page
title: "Xiaomi Cameras"
description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant."
date: 2018-06-20 13:00
sidebar: true
comments: false
sharing: true
footer: true
logo: xiaomi.png
ha_category: Camera
ha_release: 0.72
ha_iot_class: "Local Polling"
---
The `Xiaomi` camera platform allows you to utilize Xiaomi Cameras within Home Assistant.
To successfully implement this platform, the Home Assistant host should be capable of multiple simultaneous reads. For every concurrent Home Assistant user, a connection will be made to the camera every 10 seconds. This should normally not be a problem.
## {% linkable_title Preparing the Device %}
### {% linkable_title Installing Alternative Firmware %}
In order to integrate the camera with Home Assistant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found for each models.
* [Yi 720p](https://github.com/fritz-smh/yi-hack)
* [Yi Home 17CN / 27US / 47US / 1080p Home / Dome / 1080p Dome](https://github.com/shadow-1/yi-hack-v3)
* [Xiaofang 1080p Camera](https://github.com/samtap/fang-hacks)
Once installed, please ensure that you have enabled FTP.
<p class='note warning'>
Currently, version 0.1.4-beta2 of the custom firmware is the highest supported. Firmwares higher than this version use [Pure-FTPd](https://www.pureftpd.org/project/pure-ftpd), which has a bug that prevents FFmpeg from correctly rendering video files.
</p>
<p class='note warning'>
Hassbian users: don't forget to install ffmpeg support on your platform, otherwise, you'll not see video.
</p>
<p class='note warning'>
The live stream writing by the camera is not an supported format when the hass reads through FTP for Yi 720p and Xiaofang Cameras, so this component retrives the video which was saved 1 minute earlier.
</p>
<p class='note warning'>
If you enabled RTSP server, you can connect to your camera via other Home Assistant camera platforms. However, this RTSP server disables the ability to use the supremely-useful Mi Home app. In order to maintain both Home Assistant compatibility _and_ the native app, this platform retrieves videos via FTP.
</p>
## {% linkable_title Configuring the Platform %}
To enable the platform, add the following lines to your`configuration.yaml` file:
```yaml
camera:
- platform: xiaomi
name: Camera
host: '192.168.1.100'
model: 'yi'
password: my_password_123
```
Configuration variables:
- **name** (*Required*): A human-friendly name for the camera.
- **host** (*Required*): The IP address or hostname of the camera.
- **model** (*Required*): The model of Xiaomi Camera, currently supporting yi and xiaofang.
- **password** (*Required*): The password to the FTP server on the camera (from above), can be any string as the current firmware doesn't allow setting ftp passwords.
- **path** (*Optional*): The path to the raw MP4 files. Defaults to `/tmp/sd/record`.
- **username** (*Optional*): The user that can access the FTP server. Defaults to `root`.
- **ffmpeg_arguments** (*Optional*): Extra options to pass to `ffmpeg` (e.g., image quality or video filter options).
## {% linkable_title Image quality %}
Any option supported by [`ffmpeg` camera](/components/camera.ffmpeg/) can be utilized via the `ffmpeg_arguments` configuration parameter.
One particularly useful adjustment deals with video size. Since Yi videos are fairly large (especially on the 1080p cameras), the following configuration will bring them down to a manageable size:
```yaml
camera:
- platform: xiaomi
name: My Camera
host: '192.168.1.100'
model: 'xiaofang'
password: my_password_123
path: /home/camera/feed
ffmpeg_arguments: '-vf scale=800:450'
```

View File

@ -62,7 +62,7 @@ Configuration variables:
- **host** (*Required*): The IP address or hostname of the camera. - **host** (*Required*): The IP address or hostname of the camera.
- **model** (*Required*): The model of Xiaomi Camera, currently supporting yi and xiaofang. - **model** (*Required*): The model of Xiaomi Camera, currently supporting yi and xiaofang.
- **password** (*Required*): The password to the FTP server on the camera (from above), can be any string as the current firmware doesn't allow setting ftp passwords. - **password** (*Required*): The password to the FTP server on the camera (from above), can be any string as the current firmware doesn't allow setting ftp passwords.
- **path** (*Optional*): The path to the raw MP4 files. Defaults to `/tmp/sd/record`. - **path** (*Optional*): The path to the raw MP4 files. Defaults to `/media/mmcblk0p1/record`.
- **username** (*Optional*): The user that can access the FTP server. Defaults to `root`. - **username** (*Optional*): The user that can access the FTP server. Defaults to `root`.
- **ffmpeg_arguments** (*Optional*): Extra options to pass to `ffmpeg` (e.g., image quality or video filter options). - **ffmpeg_arguments** (*Optional*): Extra options to pass to `ffmpeg` (e.g., image quality or video filter options).

View File

@ -0,0 +1,65 @@
---
layout: page
title: "OpenTherm Gateway"
description: "Control your OpenTherm Gateway from Home Assistant."
date: 2018-08-29 16:23
sidebar: true
comments: false
sharing: true
footer: true
logo: opentherm.png
ha_category: Climate
ha_release: 0.78
ha_iot_class: "Local Push"
---
The `opentherm_gw` climate platform is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant.
# {% linkable_title Configuration %}
```yaml
# Example configuration.yaml entry
climate:
- platform: opentherm_gw
device: /dev/ttyUSB0
```
{% configuration %}
device:
description: "Path to OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)."
required: true
type: string
name:
description: The name for the device within Home Assistant.
required: false
type: string
default: OpenTherm Gateway
precision:
description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`."
required: false
type: float
default: "`0.5` for Celsius and `1.0` for Fahrenheit."
floor_temperature:
description: Some thermostats round all temperatures down to the lower value according to their precision. Default behaviour for Home Assistant is to round temperatures to the nearest value. Set this to `True` to override Home Assistant and round to the lower value according to the configured `precision`.
required: false
type: boolean
{% endconfiguration %}
<p class='note'>
The OpenTherm protocol is based on polling. The thermostat sends requests to the boiler at specific intervals. As a result, it may take some time for changes to propagate between Home Assistant and the thermostat.
</p>
# {% linkable_title Example %}
A full configuration example with the OpenTherm Gateway connected to a remote host running `ser2net` looks like the one below.
```yaml
# Full example configuration.yaml entry
climate:
- platform: opentherm_gw
device: socket://otgw.example.org:2345
name: Thermostat
precision: 0.5
floor_temperature: True
```

View File

@ -0,0 +1,22 @@
---
layout: page
title: "Insteon Cover"
description: "Instructions on how to setup the Insteon cover locally within Home Assistant."
date: 2018-08-20 16:00
sidebar: true
comments: false
sharing: true
footer: true
logo: insteon.png
ha_category: Cover
ha_iot_class: "Local Push"
ha_version: 0.78
---
The `insteon` cover platform lets you control your [Open/Close Micro Module]
through an INSTEON Modem (PLM and Hub) device connected directly to your system
on a USB, serial port or TCPIP connection. To add support, set up the primary
[insteon] component.
[insteon]: /components/insteon/
[Open/Close Micro Module]: https://www.insteon.com/open-close-micro-module/

View File

@ -29,7 +29,7 @@ See [deCONZ wiki](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/
Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file. Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file.
If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry. If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Settings** -> **Gateway** -> **Advanced** -> **Authenticate app** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry.
You can add the following to your `configuration.yaml` file if you are not using the `discovery:` component: You can add the following to your `configuration.yaml` file if you are not using the `discovery:` component:
@ -79,16 +79,16 @@ logger:
## {% linkable_title Device services %} ## {% linkable_title Device services %}
Available services: `configure`. Available services: `configure` and `deconz.refresh_devices`.
#### {% linkable_title Service `deconz.configure` %} #### {% linkable_title Service `deconz.configure` %}
Set attribute of device in Deconz using [Rest API](http://dresden-elektronik.github.io/deconz-rest-doc/rest/). Set attribute of device in deCONZ using [Rest API](http://dresden-elektronik.github.io/deconz-rest-doc/rest/).
| Service data attribute | Optional | Description | | Service data attribute | Optional | Description |
|-----------|----------|-------------| |-----------|----------|-------------|
| `field` | No | String representing a specific device in deCONZ. | | `field` | No | String representing a specific device in deCONZ. |
| `entity` | No | String representing a specific HASS entity of a device in deCONZ. | | `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. |
| `data` | No | Data is a JSON object with what data you want to alter. | | `data` | No | Data is a JSON object with what data you want to alter. |
Field and entity are exclusive, i.e you can only use one in a request. Field and entity are exclusive, i.e you can only use one in a request.
@ -99,9 +99,15 @@ Field and entity are exclusive, i.e you can only use one in a request.
{ "field": "/config", "data": {"permitjoin": 60} } { "field": "/config", "data": {"permitjoin": 60} }
#### {% linkable_title Service `deconz.refresh_devices` %}
Refresh with devices added to deCONZ after Home Assistants latest restart.
Note: deCONZ automatically signals Home Assistant when new sensors are added, but other devices must at this point in time (deCONZ v2.05.35) be added manually using this service or a restart of Home Assistant.
## {% linkable_title Remote control devices %} ## {% linkable_title Remote control devices %}
Remote controls (ZHASwitch category) will be not be exposed as a regular entity, but as events named 'deconz_event' with a payload of 'id' and 'event'. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. Remote controls (ZHASwitch category) will be not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level.
Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here.

View File

@ -22,6 +22,7 @@ Available demo platforms:
- [Climate](/components/climate/) (`climate`) - [Climate](/components/climate/) (`climate`)
- [Cover](/components/cover/) (`cover`) - [Cover](/components/cover/) (`cover`)
- [Fan](/components/fan/) (`fan`) - [Fan](/components/fan/) (`fan`)
- [Geo Location](/components/geo_location/) (`geo_location`)
- [Image Processing](/components/image_processing/) (`image_processing`) - [Image Processing](/components/image_processing/) (`image_processing`)
- [Light](/components/light/) (`light`) - [Light](/components/light/) (`light`)
- [Lock](/components/lock/) (`lock`) - [Lock](/components/lock/) (`lock`)

View File

@ -80,5 +80,8 @@ See the [device tracker component page](/components/device_tracker/) for instruc
| coolant_temperature | Temperature of the coolant [1] | | coolant_temperature | Temperature of the coolant [1] |
| power_voltage | Power voltage measured by the hardware [1] | | power_voltage | Power voltage measured by the hardware [1] |
| distance_from_home | How far is your vehicle located from your Home Assistant Home location | | distance_from_home | How far is your vehicle located from your Home Assistant Home location |
| current_max_speed | The maximum speed on the road the device is currently on (if available) |
| current_address | Object with address information the device is currently on. This resolves to the closest address to the coordinates of the device. |
[1] Only available on certain cars and hardware revisions. [1] Only available on certain cars and hardware revisions.

View File

@ -0,0 +1,16 @@
---
layout: page
title: "Geo Location"
description: "Instructions on how to integrate geo location aware platforms into Home Assistant."
date: 2018-08-27 08:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Other
ha_release: "0.78"
---
Geo Location aware entities are typically related to events in the real world in the vicinity of Home Assistant's location, like for example weather events, bush fires or earthquakes.
Entities can have associated geo location coordinates (latitude and longitude) so that they are displayed on the map. The distance from the entity's coordinates to Home Assistant's location can be used for filtering.

View File

@ -0,0 +1,132 @@
---
layout: page
title: "Habitica"
description: "Instructions on enabling Habitica support for your Home Assistant"
date: 2018-08-09 00:00
sidebar: true
comments: false
sharing: true
footer: true
logo: habitica.png
ha_category: Hub
ha_version: 0.78
ha_iot_class: "Cloud Polling"
---
This component allows you to monitor and manage your Habitica profile. This component exposes the [Habitica's API](https://habitica.com/apidoc/) as a Home Assistant service. It supports multiple users and allows you to automate checking out your habits and daily tasks or casting magics using Home Assistant.
This component enables usage of [`sensor.habitica` platform.](/components/sensor.habitica/)
To use the component you should use this example configuration:
```yaml
# Minimum viable configuration.yaml entry
habitica:
- api_user: 'REPLACE_ME_WITH_YOUR_USER_ID'
api_key: 'REPLACE_ME_WITH_YOUR_API_KEY'
```
You can specify several users, providing `api_user` and `api_key` for each.
At runtime you will be able to use API for each respective user by their Habitica's username.
You can override this by passing `name` key, this value will be used instead of the username.
If you are hosting your own instance of Habitica, you can specify a URL to it in `url` key.
{% configuration %}
api_user:
description: "Habitica's API user ID. This value can be grabbed from [account setting](https://habitica.com/user/settings/api)"
required: true
type: string
api_key:
description: "Habitica's API password (token). This value can be grabbed from [account setting](https://habitica.com/user/settings/api) by pressing 'Show API token'"
required: true
type: string
name:
description: "Override for Habitica's username. Will be used for service calls"
required: false
type: string
default: Deduced at startup
url:
description: "URL to your Habitica instance, if you are hosting your own"
required: false
type: string
default: http://habitica.com
sensors:
description: List of sensors to generate for this user. If you don't specify this entry then the default (all sensors) will be generated. If you specify this entry empty then no sensors will be generated.
required: false
type: list
default: all (`name`, `hp`, `maxHealth`, `mp`, `maxMP`, `exp`, `toNextLevel`, `lvl`, `gp`, `class`)
{% endconfiguration %}
### {% linkable_title API Service Parameters %}
The API is exposed to Home Assistant as a service called `habitica.api_call`. To call it you should specify this keys in service data:
| Service data attribute | Required | Type | Description |
|----------------------|--------|--------|----------------|
| `name` | yes | string | Habitica's username as per `configuration.yaml` entry. |
| `path` | yes | [string] | Items from API URL in form of an array with method attached at the end. See the example below. |
| `args` | no | map | Any additional json or url parameter arguments. See the example below and [apidoc](https://habitica.com/apidoc/). |
A successful call to this service will fire an event `habitica_api_call_success`.
| Event data attribute | Type | Description |
|----------------------|--------|----------------|
| `name` | string | Copied from service data attribute. |
| `path` | [string] | Copied from service data attribute. |
| `data` | map | Deserialized `data` field of JSON object Habitica's server returned in response to api call. For more info see [docs](https://habitica.com/apidoc/). |
#### Let's consider some examples on how to call the service.
For example, let's say that there is a configured `habitica` platform for user `xxxNotAValidNickxxx` with their respective `api_user` and `api_key`.
Let's create a new task (a todo) for this user via Home Assistant. There is an [API call](https://habitica.com/apidoc/#api-Task-CreateUserTasks) for this purpose.
To create a new task one should hit `https://habitica.com/api/v3/tasks/user` endpoint with `POST` request with a json object with task properties.
So let's call the API on `habitica.api_call`.
* The `name` key becomes `xxxNotAValidNickxxx`.
* The `path` key is trickier.
* Remove 'https://habitica.com/api/v3/' at the beginning of the endpoint URL.
* Split the remaining on slashes (/) and **append the lowercase method** at the end.
* You should get `["tasks", "user", "post"]`. To get a better idea of the API you are recommended to try all of the API calls in IPython console [using this package](https://github.com/ASMfreaK/habitipy/blob/master/README.md).
* The `args` key is more or less described in the [docs](https://habitica.com/apidoc/).
Combining all together:
call `habitica.api_call` with data
```
{
"name": "xxxNotAValidNickxxx",
"path": ["tasks", "user", "post"],
"args": {"text": "Use API from Home Assistant", "type": "todo"}
}
```
This call will create a new todo on `xxxNotAValidNickxxx`'s account with text `Use API from Home Assistant` like this:
![example task created](/images/screenshots/habitica_new_task.png)
Also an event `habitica_api_call_success` will be fired with the following data:
```
{
"name": "xxxNotAValidNickxxx",
"path": ["tasks", "user", "post"],
"data": {
"challenge": {},
"group": {"approval": {"required": false,
"approved": false,
"requested": false},
"assignedUsers": [],
"sharedCompletion": "recurringCompletion"},
"completed": false,
"collapseChecklist": false,
"type": "todo",
"notes": "",
"tags": [],
"value": 0,
"priority": 1,
"attribute": "str",
"text": "Use API from Home Assistant",
"checklist": [],
"reminders": [],
"_id": "NEW_TASK_UUID",
"createdAt": "2018-08-09T18:03:27.759Z",
"updatedAt": "2018-08-09T18:03:27.759Z",
"userId": "xxxNotAValidNickxxx's ID",
"id": "NEW_TASK_UUID"}
}
```

View File

@ -18,19 +18,20 @@ linked INSTEON devices to be used within Home Assistant as binary sensors,
lights, fans, sensors and switches. Device support is provided by the lights, fans, sensors and switches. Device support is provided by the
underlying [insteonplm] package. It is known to work with the [2413U] USB and underlying [insteonplm] package. It is known to work with the [2413U] USB and
[2412S] RS242 flavors of PLM and the [2448A7] USB stick. It has also been [2412S] RS242 flavors of PLM and the [2448A7] USB stick. It has also been
tested to work with the [2245] Hub. tested to work with the [2242] and [2245] Hubs.
[insteonplm]: https://github.com/nugget/python-insteonplm [insteonplm]: https://github.com/nugget/python-insteonplm
[2413U]: https://www.insteon.com/powerlinc-modem-usb [2413U]: https://www.insteon.com/powerlinc-modem-usb
[2412S]: https://www.insteon.com/powerlinc-modem-serial [2412S]: https://www.insteon.com/powerlinc-modem-serial
[2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html [2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html
[2245]: https://www.insteon.com/insteon-hub/ [2245]: https://www.insteon.com/insteon-hub/
[2242]: https://www.insteon.com/support-knowledgebase/2014/9/26/insteon-hub-owners-manual
### {% linkable_title INSTEON Modem configuration %} ### {% linkable_title INSTEON Modem configuration %}
To setup a Powerline Modem (PLM) device such as the [2413U], use the following To set up an INSTEON Powerline Modem (PLM) device such as the [2413U], use the
configuration: following configuration:
```yaml ```yaml
# PLM configuration variables # PLM configuration variables
@ -38,15 +39,26 @@ insteon:
port: SERIAL_PORT port: SERIAL_PORT
``` ```
To setup an INSTEON Hub such as the [2245], use the following configuration: To set up an INSTEON Hub model [2245], use the following configuration:
```yaml ```yaml
# Hub configuration variables # Hub 2245 configuration variables
insteon: insteon:
host: HOST host: HOST
ip_port: IP_PORT ip_port: IP_PORT
username: USERNAME username: USERNAME
password: PASSWORD password: PASSWORD
hub_version: 2
```
To set up an INSTEON Hub model [2242], use the following configuration:
```yaml
# Hub 2242 configuration variables
insteon:
host: HOST
ip_port: IP_PORT
hub_version: 1
``` ```
Addtional configuration items are available: Addtional configuration items are available:
@ -71,14 +83,23 @@ insteon:
``` ```
Configuration variables: Configuration variables:
- **port** (*Required for PLM setup*): The serial or USB port for your device, - **port** (*Required for PLM setup*): The serial or USB port for your device,
e.g., `/dev/ttyUSB0` e.g., `/dev/ttyUSB0` or `COM3`
- **host** (*Required for Hub setup*): The host name or IP address of the Hub - **host** (*Required for Hub setup*): The host name or IP address of the Hub.
- **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. - **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. For
(default value is 25105) Hub model [2245] (i.e. Hub version 2) the default port is 25105. For the Hub
- **username** (*Required for Hub setup*): The username to login to the local model [2242] (i.e. Hub version 1) the default port is 9761. Use the Insteon
Hub app to find the port number for your specific Hub.
- **password** (*Required for Hub setup*): The password to login to the local - **username** (*Required for Hub version 2 setup*): The username to login in
Hub to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup.
You can find your Hub username on the bottom of the Hub or you can use the
Insteon app.
- **password** (*Required for Hub version 2 setup*): The password to login in
to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup.
You can find your Hub password on the bottom of the Hub or you can use the
Insteon app.
- **hub_version** (*Required for Hub version 1 setup*): The Hub version number
where model [2242] is Hub version 1 and model [2245] is Hub version 2.
(Default is 2)
- **device_override** (*Optional*): Override the default device definition - **device_override** (*Optional*): Override the default device definition
- *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c - *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c
- *CATEGORY* is found in the back of the device's User Guide in the form of - *CATEGORY* is found in the back of the device's User Guide in the form of
@ -92,16 +113,16 @@ Configuration variables:
- *UNITCODE* is the X10 unit code values 1 - 16 - *UNITCODE* is the X10 unit code values 1 - 16
- *PLATFORM* is the Home Assistant Platform to associate the device with. - *PLATFORM* is the Home Assistant Platform to associate the device with.
The following platforms are supported The following platforms are supported
- binary_sensor: Used for on/off devices or keypad buttons that are read only. - binary_sensor: Used for on/off devices or keypad buttons that are read-only.
- light: Used for dimmable X10 devices - light: Used for dimmable X10 devices
- switch: Used for On/Off X10 devices - switch: Used for On/Off X10 devices
- *STEPS* is the number of dim/bright steps the device supports. Used for - *STEPS* is the number of dim/bright steps the device supports. Used for
dimmable X10 devices only. Default value is 22. dimmable X10 devices only. Default value is 22.
- **x10_all_units_off** (*Optional*): Creates an binary_sensor that responds - **x10_all_units_off** (*Optional*): Creates a binary_sensor that responds
to the X10 standard command for All Units Off. to the X10 standard command for All Units Off.
- **x10_all_lights_on** (*Optional*): Creates an binary_sensor that responds - **x10_all_lights_on** (*Optional*): Creates a binary_sensor that responds
to the X10 standard command for All Lights On to the X10 standard command for All Lights On
- **x10_all_lights_off** (*Optional*): Creates an binary_sensor that responds - **x10_all_lights_off** (*Optional*): Creates a binary_sensor that responds
to the X10 standard command for All Lights Off to the X10 standard command for All Lights Off
### {% linkable_title Autodiscovery %} ### {% linkable_title Autodiscovery %}
@ -111,20 +132,20 @@ per device. Subsequent startups will occur much quicker using cached device
information. If a device is not recognized during autodiscovery, you can add information. If a device is not recognized during autodiscovery, you can add
the device to the **device_override** configuration. the device to the **device_override** configuration.
In order for a device to be discovered it must be linked to the INSTEON Modem In order for a device to be discovered, it must be linked to the INSTEON Modem
as either a responder or a controller. as either a responder or a controller.
### {% linkable_title Linking Devices to the INSTEON Modem %} ### {% linkable_title Linking Devices to the INSTEON Modem %}
In order for any two Insteon devices to talk with one another, they must be In order for any two Insteon devices to talk with one another, they must be
linked. For an overview of device linking please read the Insteon page on linked. For an overview of device linking, please read the Insteon page on
[understanding linking]. The Insteon Modem module supports All-Linking through [understanding linking]. The Insteon Modem module supports All-Linking through
[Development Tools] service calls. The following services are available: [Development Tools] service calls. The following services are available:
- **insteon.add_all_link**: Puts the Insteon Modem (IM) into All-Linking - **insteon.add_all_link**: Puts the Insteon Modem (IM) into All-Linking
mode. The IM can be set as as controller or a responder. If the IM is a mode. The IM can be set as a controller or a responder. If the IM is a
controler, put the IM into linking mode then press the SET button on the controller, put the IM into linking mode then press the SET button on the
device. If the IM is a responer, press the SET button on the device then device. If the IM is a responder, press the SET button on the device then
put the IM into linking mode. put the IM into linking mode.
- **insteon.delete_all_link**: Tells the Insteon Modem (IM) to remove an - **insteon.delete_all_link**: Tells the Insteon Modem (IM) to remove an
All-Link record from the All-Link Database of the IM and a device. Once the IM All-Link record from the All-Link Database of the IM and a device. Once the IM
@ -174,7 +195,7 @@ devices.
INSTEON devices are added to Home Assistant using the platform(s) that make the INSTEON devices are added to Home Assistant using the platform(s) that make the
most sense given the model and features of the hardware. The features of the most sense given the model and features of the hardware. The features of the
INSTEON device are built into the Home Assistant platform. Changing the INSTEON devices are built into the Home Assistant platform. Changing the
platform is not recommended. There are two primary uses for the platform is not recommended. There are two primary uses for the
**device_override** feature. **device_override** feature.
- Devices that do not respond during autodiscovery. This is common for battery - Devices that do not respond during autodiscovery. This is common for battery
@ -185,7 +206,7 @@ platform is not recommended. There are two primary uses for the
### {% linkable_title Example Configuration with Options%} ### {% linkable_title Example Configuration with Options%}
```yaml ```yaml
# Full example of insteon configuration with customizations and overrides # Full example of Insteon configuration with customizations and overrides
homeassistant: homeassistant:
customize: customize:
@ -205,7 +226,7 @@ insteon:
### {% linkable_title What NOT to do %} ### {% linkable_title What NOT to do %}
Insteon Modem is a top level component and device discovery will identify Insteon Modem is a top-level component and device discovery will identify
the Home Assistant platform the device belongs in. As such, do not the Home Assistant platform the device belongs in. As such, do not
declare Insteon devices in other platforms. For example, this configuration declare Insteon devices in other platforms. For example, this configuration
will NOT work: will NOT work:
@ -224,19 +245,18 @@ events. The following events are available:
- **insteon.button_on** - **insteon.button_on**
- **address**: (required) The Insteon device address in lower case without - **address**: (required) The Insteon device address in lower case without
dots (e.g. 1a2b3c) dots (e.g. 1a2b3c)
- **button**: (Optional) The button id in lower case. For an 4 button remote - **button**: (Optional) The button id in lower case. For a 4-button remote
the values are a to d. For an 8 button remote the values are a to g. For the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For
a one button remote this field is not used. a one-button remote this field is not used.
- **insteon.button_of** - **insteon.button_of**
- **address**: (required) The Insteon device address in lower case without - **address**: (required) The Insteon device address in lower case without
dots (e.g. 1a2b3c) dots (e.g. 1a2b3c)
- **button**: (Optional) The button id in lower case. For an 4 button remote - **button**: (Optional) The button id in lower case. For a 4-button remote
the values are a to d. For an 8 button remote the values are a to g. For the values are a to d. For an 8 button remote the values are `a` to `g`. For
a one button remote this field is not used. a one-button remote this field is not used.
This allows the mini-remotes to be configured as This allows the mini-remotes to be configured as triggers for automations. Here
is an example of how to use these events for automations:
Here is an example of how to use these events for automations:
``` ```
automation: automation:
@ -276,8 +296,8 @@ The INSTEON Hub has three known issues that are inherent to the design of the
Hub: Hub:
1. If you see multiple error messages in the log file stating the Hub 1. If you see multiple error messages in the log file stating the Hub
connection is closed and reconnection has failed, this generally requires connection is closed, and reconnection has failed, this generally requires
the Hub to be restarted in order to reconnect. the Hub to be restarted to reconnect.
2. You cannot use both Home Assistant and the INSTEON app. If you do, the 2. You cannot use both Home Assistant and the INSTEON app. If you do, the
changes made in the app will not appear in Home Assistant. Changes made in changes made in the app will not appear in Home Assistant. Changes made in

View File

@ -13,6 +13,6 @@ ha_iot_class: "Local Polling"
ha_version: 0.36 ha_version: 0.36
--- ---
The `insteon_local` component is depreciated and has been replaced by the [Insteon] component. The `insteon_local` component is depreciated and has been replaced by the [insteon] component.
[Insteon] /component/insteon [insteon]: /component/insteon

View File

@ -13,7 +13,6 @@ ha_iot_class: "Local Push"
ha_version: 0.39 ha_version: 0.39
--- ---
The `insteon_plm` component is depreciated and has been replaced by the [Insteon] component. The `insteon_plm` component is depreciated and has been replaced by the [insteon] component.
[Insteon] /component/insteon
[insteon]: /component/insteon

View File

@ -23,7 +23,7 @@ The component currently supports the following device types in Home Assistant:
This component requires the [`discovery`](https://www.home-assistant.io/components/discovery) component to be enabled. This component requires the [`discovery`](https://www.home-assistant.io/components/discovery) component to be enabled.
## {% linkable_title Configuration %} ### {% linkable_title Configuration %}
A `konnected` section must be present in the `configuration.yaml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them: A `konnected` section must be present in the `configuration.yaml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them:
@ -62,7 +62,7 @@ devices:
type: list type: list
keys: keys:
id: id:
description: The MAC address of the WiFi module with colons/punctuation removed. You must use the full 12-character MAC address with lower case letters. This is visible in the device's WiFi SSID and hostname. description: The MAC address of the NodeMCU WiFi module with colons/punctuation removed, for example `68c63a8bcd53`. You can usually find the mac address in your router's client list. Or, check the home-assistant.log for log messages from automatically discovered devices.
required: true required: true
type: string type: string
binary_sensors: binary_sensors:
@ -118,14 +118,14 @@ devices:
- Either **pin** or **zone** is required for each actuator or sensor. Do not use both in the same definition. - Either **pin** or **zone** is required for each actuator or sensor. Do not use both in the same definition.
- Pin `D8` or the `out` zone will only work when activation is set to high (the default). - Pin `D8` or the `out` zone will only work when activation is set to high (the default).
## {% linkable_title Full Configuration %} ### {% linkable_title Extended Configuration %}
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
konnected: konnected:
access_token: REPLACE_ME_WITH_A_RANDOM_STRING access_token: REPLACE_ME_WITH_A_RANDOM_STRING
devices: devices:
- id: 8bcd53 - id: 6001948bcd53
binary_sensors: binary_sensors:
- zone: 1 - zone: 1
type: door type: door
@ -149,7 +149,7 @@ konnected:
momentary: 65 momentary: 65
pause: 55 pause: 55
repeat: -1 repeat: -1
- id: 438a38 - id: 5ccf7f438a38
binary_sensors: binary_sensors:
- pin: 1 - pin: 1
type: motion type: motion
@ -179,3 +179,16 @@ Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly use
| 5 | D7 | 7 | GPIO13 | | 5 | D7 | 7 | GPIO13 |
| 6 | RX | 9 | GPIO3 | | 6 | RX | 9 | GPIO3 |
| ALARM or OUT | D8 | 8 | GPIO15 | | ALARM or OUT | D8 | 8 | GPIO15 |
### {% linkable_title Revision History %}
#### 0.77
* Added support for momentary and beep/blink switches. [[#15973](https://github.com/home-assistant/home-assistant/pull/15973)]
* Decouple entity initialization from discovery, enabling devices to recover faster after a Home Assistant reboot. [[#16146](https://github.com/home-assistant/home-assistant/pull/16146)]
* **Breaking change:** Device `id` in `configuration.yaml` must now be the full 12-character device MAC address. Previously, omitting the first 6 characters was allowed.
#### 0.72
* Adds `api_host` configuration option [[#14896](https://github.com/home-assistant/home-assistant/pull/14896)]
#### 0.70
* Initial release

View File

@ -35,6 +35,10 @@ name:
required: false required: false
type: string type: string
default: MQTT Light default: MQTT Light
unique_id:
description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception.
required: false
type: string
command_topic: command_topic:
description: The MQTT topic to publish commands to change the switch state. description: The MQTT topic to publish commands to change the switch state.
required: true required: true

View File

@ -79,3 +79,26 @@ List of source names:
- multi-ch - multi-ch
- xm - xm
- sirius - sirius
### {% linkable_title Example `play_media` script %}
The `play_media` function can be used in script to play radio station by preset number.
Not working for NET radio.
```yaml
# Example play_media script
#
script:
radio1:
alias: "Radio 1"
sequence:
- service: media_player.turn_on
data:
entity_id: media_player.onkyo
- service: media_player.play_media
data:
entity_id: media_player.onkyo
media_content_type: "radio"
media_content_id: "1"
```

View File

@ -35,7 +35,7 @@ Configuration variables:
### {% linkable_title Setting up the bot %} ### {% linkable_title Setting up the bot %}
Bots can only send messages to servers. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me). Bots can only send messages to servers or attach local available images. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me).
<p class='img'> <p class='img'>
<img src='{{site_root}}/images/screenshots/discord-bot.png' /> <img src='{{site_root}}/images/screenshots/discord-bot.png' />
@ -69,8 +69,13 @@ This channel ID has to be used as the target when calling the notification servi
"target": [ "target": [
"1234567890", "1234567890",
"0987654321" "0987654321"
],
"data": {
"images": [
"/tmp/garage_cam.jpg"
] ]
} }
}
``` ```
### {% linkable_title Notes %} ### {% linkable_title Notes %}

View File

@ -12,7 +12,6 @@ ha_category: Notifications
ha_release: 0.39 ha_release: 0.39
--- ---
The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify component. This allows you to send messages to the user using Pushsafer. The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify component. This allows you to send messages to the user using Pushsafer.
In order to get a private or alias key you need to go to the [Pushsafer website](https://www.pushsafer.com) and register. In order to get a private or alias key you need to go to the [Pushsafer website](https://www.pushsafer.com) and register.
@ -90,6 +89,10 @@ Message to two devices and one device group with formatted text and local image.
"url": "https://www.home-assistant.io/", "url": "https://www.home-assistant.io/",
"urltitle": "Open Home Assistant", "urltitle": "Open Home Assistant",
"time2live": "10", "time2live": "10",
"priority": "2",
"retry": "60",
"expire": "600",
"answer": "1",
"picture1": { "picture1": {
"path":"C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg" "path":"C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg"
} }

View File

@ -15,6 +15,8 @@ ha_iot_class: "Local Polling"
The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command. The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command.
## {% linkable_title Configuration %}
To use this sensor platform, you first have to set up [apcupsd](/components/apcupsd/), and add the following to your `configuration.yaml` file: To use this sensor platform, you first have to set up [apcupsd](/components/apcupsd/), and add the following to your `configuration.yaml` file:
```yaml ```yaml
@ -24,14 +26,6 @@ sensor:
resources: resources:
- bcharge - bcharge
- linev - linev
- loadpct
- nominv
- nompower
- numxfers
- outputv
- status
- timeleft
- tonbatt
``` ```
Configuration variables: Configuration variables:
@ -64,37 +58,7 @@ MAXTIME : 0 Seconds
MAXLINEV : 249.6 Volts MAXLINEV : 249.6 Volts
MINLINEV : 244.4 Volts MINLINEV : 244.4 Volts
OUTPUTV : 218.4 Volts OUTPUTV : 218.4 Volts
SENSE : High [...]
DWAKE : 0 Seconds
DSHUTD : 180 Seconds
DLOWBATT : 2 Minutes
LOTRANS : 196.0 Volts
HITRANS : 253.0 Volts
RETPCT : 15.0 Percent
ITEMP : 30.6 C
ALARMDEL : Low Battery
BATTV : 27.6 Volts
LINEFREQ : 50.0 Hz
LASTXFER : High line voltage
NUMXFERS : 0
TONBATT : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 336
STATFLAG : 0x0500000A
DIPSW : 0x00
REG1 : 0x00
REG2 : 0x00
REG3 : 0x00
MANDATE : 07/13/99
SERIALNO : GS9888761008
BATTDATE : 13/11/15
NOMOUTV : 230 Volts
NOMBATTV : 24.0 Volts
EXTBATTS : 0
FIRMWARE : 70.11.I
END APC : 2016-02-09 17:13:46 +0000
``` ```
Use the (case insensitive) values from the left hand column: Use the (case insensitive) values from the left hand column:
@ -105,5 +69,5 @@ sensor:
resources: resources:
- linev - linev
- loadpct - loadpct
- itemp - timeleft
``` ```

View File

@ -108,6 +108,7 @@ Configuration variables:
- **apparent_temperature_low**: Today's overnight expected apparent low temperature. - **apparent_temperature_low**: Today's overnight expected apparent low temperature.
- **precip_intensity_max**: Today's expected maximum intensity of precipitation. - **precip_intensity_max**: Today's expected maximum intensity of precipitation.
- **uv_index**: The current UV index. - **uv_index**: The current UV index.
- **moon_phase**: The fractional part of the lunation number during the given day.
- **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, `uk` and `uk2`. - **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, `uk` and `uk2`.
`auto` will let Dark Sky decide the unit system based on location. `auto` will let Dark Sky decide the unit system based on location.
- **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: - **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats:

View File

@ -23,33 +23,44 @@ To enable this sensor, add the following lines to your `configuration.yaml` file
# Example configuration.yaml entry # Example configuration.yaml entry
sensor: sensor:
- platform: enphase_envoy - platform: enphase_envoy
ip_address: ENVOY_LOCAL_IP_ADDRESS ```
```yaml
# Example configuration.yaml entry
sensor:
- platform: enphase_envoy
ip_address: LOCAL_IP_FOR_ENVOY
monitored_conditions:
- production
- consumption
- lifetime_production
- lifetime_consumption
``` ```
{% configuration %} {% configuration %}
ip_address: ip_address:
description: The local IP Address of your Envoy description: The local IP Address of your Envoy. Leave blank to search for it, but this may not always be reliable.
required: true required: false
type: string type: string
monitored_conditions: monitored_conditions:
description: The list of conditions to monitor description: The list of conditions to monitor.
required: false required: false
type: list type: list
keys: keys:
production: production:
description: The power in W being produced by the solar panels description: The power in W being produced by the solar panels.
daily_production: daily_production:
description: The energy in Wh produced that day description: The energy in Wh produced that day.
7_days_production: seven_days_production:
description: The energy in Wh produced the last 7 days description: The energy in Wh produced the last 7 days.
lifetime_production: lifetime_production:
description: The energy in Wh produced in the lifetime of the Envoy description: The energy in Wh produced in the lifetime of the Envoy.
consumption: consumption:
description: The power in W being consumed in the whole house description: The power in W being consumed in the whole house.
daily_consumption: daily_consumption:
description: The energy in Wh consumed that day description: The energy in Wh consumed that day.
7_days_consumption: seven_days_consumption:
description: The energy in Wh consumed the last 7 days description: The energy in Wh consumed the last 7 days.
lifetime_consumption: lifetime_consumption:
description: The energy in Wh consumed in the lifetime of the Envoy description: The energy in Wh consumed in the lifetime of the Envoy.
{% endconfiguration %} {% endconfiguration %}

View File

@ -13,7 +13,6 @@ ha_iot_class: "Cloud Polling"
ha_release: "0.51" ha_release: "0.51"
--- ---
The `geizhals` sensor will give you the best price of a product from [Geizhals](https://geizhals.de) or related site. With this information can be used in e.g., automations to notify you when a price drops. The `geizhals` sensor will give you the best price of a product from [Geizhals](https://geizhals.de) or related site. With this information can be used in e.g., automations to notify you when a price drops.
To enable this sensor, add the following lines to your `configuration.yaml` file: To enable this sensor, add the following lines to your `configuration.yaml` file:
@ -23,16 +22,16 @@ To enable this sensor, add the following lines to your `configuration.yaml` file
sensor: sensor:
- platform: geizhals - platform: geizhals
name: qc35 name: qc35
product_id: 1453021 product_id: 1696985
``` ```
Configuration variables: Configuration variables:
- **name** (*Required*): The internal name of the product in Home Assistant. - **name** (*Required*): The internal name of the product in Home Assistant.
- **product_id** (*Required*): ID of the product. Get the ID from the geizhals website of your chosen product by clicking on the *Price History* tab, e.g., [here](https://geizhals.de/?phist=1453021). The URL of this site reveals the ID, e.g., <https://geizhals.de/?phist=1453021> with `product_id: 1453021`. - **product_id** (*Required*): ID of the product. Get the ID from the Geizhals website of your chosen product by opening the *Price History* in a new browser tab (right-click on the price history > open in new tab).
The URL of this site reveals the ID, e.g. `https://geizhals.de/?phist=1696985` with a `product_id` of `1696985`.
- **description** (*Optional*): The name of the product in the front end. - **description** (*Optional*): The name of the product in the front end.
- **domain** (*Optional*): Domain which should be used for the request. Set this to `geizhals.at`, `geizhals.eu`, `geizhals.de`, `skinflint.co.uk` or `cenowarka.pl`. Defaults to `geizhals.de`. - **locale** (*Optional*): Localisation which should be used for the request. Set this to `AT`, `EU`, `DE`, `UK` or `PL`. Defaults to `DE`.
- **regex** (*Optional*): Regular expression to parse the price. Default: `\D\s(\d*)[\,|\.](\d*)`.
#### {% linkable_title Extended example %} #### {% linkable_title Extended example %}
@ -41,8 +40,7 @@ Configuration variables:
sensor: sensor:
- platform: geizhals - platform: geizhals
name: qc35 name: qc35
product_id: 1453021 product_id: 1696985
description: "Bose QC35" description: "Bose QC35"
domain: 'geizhals.de' locale: "DE"
regex: '\D\s(\d*)[\,|\.](\d*)'
``` ```

View File

@ -0,0 +1,21 @@
---
layout: page
title: "Habitica Sensor"
description: "Instructions on enabling Habitica support for your Home Assistant"
date: 2018-08-09 00:00
sidebar: true
comments: false
sharing: true
footer: true
logo: habitica.png
ha_category: Sensor
ha_iot_class: "Cloud Polling"
ha_version: 0.78
---
The `habitica` sensor platform allows you to view and monitor your player data from [Habitica](https://habitica.com/) in Home Assistant.
<p class='note'>
You must have the [`habitica` component](/components/habitica/)
configured to use this platform. After configuring that component, sensors specified there will automatically appear.
</p>

View File

@ -70,13 +70,10 @@ sensor:
- **name** (*Optional*): The name displayed in the frontend. - **name** (*Optional*): The name displayed in the frontend.
- **force_update** (*Optional*): Sends update events even if the value hasn't changed. - **force_update** (*Optional*): Sends update events even if the value hasn't changed.
- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. - **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine.
- **timeout** (*Optional*): Define the timeout value in seconds when polling (defaults to 10 if not defined)
- **retries** (*Optional*): Define the number of retries when polling (defaults to 2 if not defined)
- **cache_value** (*Optional*): Define cache expiration value in seconds (defaults to 1200 if not defined)
- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. - **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters.
<p class='note warning'> <p class='note warning'>
By default the sensor is only polled once every 20 minutes. So, if you set `median: 3` it will take _at least_ 40 minutes before the sensor will report a value after a Home Assistant restart. Since the values usually change very slowly, this usually isn't a big problem. Keep in mind though that reducing polling intervals will have a negative effect on the battery life. By default the sensor is only polled once every 20 minutes (`scan_interval` is 1200 seconds by default). On a Home Assistant restart sensor will report initial value. If you set `median: 3`, it will take _at least_ 40 minutes before the sensor will report an average value. Keep in mind though that reducing polling intervals will have a negative effect on the battery life.
</p> </p>
A full configuration example could look like the one below: A full configuration example could look like the one below:

View File

@ -13,7 +13,6 @@ ha_iot_class: "Local Polling"
ha_release: "0.22" ha_release: "0.22"
--- ---
The `snmp` sensor platform displays information available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object, and is mainly supported by network-oriented devices such as routers, modems, and printers. The `snmp` sensor platform displays information available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object, and is mainly supported by network-oriented devices such as routers, modems, and printers.
To enable this sensor in your installation, add the following to your `configuration.yaml` file: To enable this sensor in your installation, add the following to your `configuration.yaml` file:
@ -26,28 +25,107 @@ sensor:
baseoid: 1.3.6.1.4.1.2021.10.1.3.1 baseoid: 1.3.6.1.4.1.2021.10.1.3.1
``` ```
Configuration variables: {% configuration %}
host:
description: The IP address of your host, eg. `192.168.1.32`.
required: true
type: string
default: 'localhost'
baseoid:
description: The OID where the information is located. It's advised to use the numerical notation.
required: true
type: string
port:
description: The SNMP port of your host.
required: Option
type: string
default: '161'
community:
description: "The SNMP community which is set for the device for SNMP v1 and v2c. Most devices have a default community set to `public` with read-only permission (which is sufficient)."
required: false
type: string
default: 'public'
username:
description: Username to use for authentication.
required: false
type: string
default: ''
auth_key:
description: Authentication key to use for SNMP v3.
required: false
type: string
default: no key
auth_protocol:
description: Authentication protocol to use for SNMP v3.
required: false
type: string
default: 'none'
priv_key:
description: Privacy key to use for SNMP v3.
required: false
type: string
default: no key
priv_protocol:
description: Privacy protocol to use for SNMP v3.
required: false
type: string
default: 'none'
version:
description: "Version of SNMP protocol, `1`, `2c` or `3`. Version `2c` or higher is needed to read data from 64-bit counters."
required: false
type: string
default: '1'
name:
description: Name of the SNMP sensor.
required: false
type: string
unit_of_measurement:
description: Defines the unit of measurement of the sensor, if any.
required: false
type: string
value_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to parse the value."
required: false
type: template
accept_errors:
description: "Determines whether the sensor should start and keep working even if the SNMP host is unreachable or not responding. This allows the sensor to be initialized properly even if, for example, your printer is not on when you start Home Assistant."
required: false
type: string
default: false
default_value:
description: "Determines what value the sensor should take if `accept_errors` is set and the host is unreachable or not responding. If not set, the sensor will have value `unknown` in case of errors."
required: false
type: string
{% endconfiguration %}
- **host** (*Required*): The IP address of your host, eg. `192.168.1.32`. Valid values for auth_protocol:
- **baseoid** (*Required*): The OID where the information is located. It's advised to use the numerical notation.
- **port** (*Option*): The SNMP port of your host. Defaults to `161`. - **none**
- **community** (*Optional*): The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). - **hmac-md5**
- **version** (*Optional*) version of SNMP protocol, `1` or `2c`. Defaults to `1`. Version `2c` is needed to read data from 64-bit counters. - **hmac-sha**
- **name** (*Optional*): Name of the SNMP sensor. - **hmac128-sha224**
- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. - **hmac192-sha256**
- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to parse the value. - **hmac256-sha384**
- **accept_errors** (*Optional*): Determines whether the sensor should start and keep working even if the SNMP host is unreachable or not responding. This allows the sensor to be initialized properly even if, for example, your printer is not on when you start Home Assistant. Defaults to `false`. - **hmac384-sha512**
- **default_value** (*Optional*): Determines what value the sensor should take if `accept_errors` is set and the host is unreachable or not responding. If not set, the sensor will have value `unknown` in case of errors.
Valid values for priv_protocol:
- **none**
- **des**
- **3des-ede**
- **aes-cfb-128**
- **aes-cfb-192**
- **aes-cfb-256**
## {% linkable_title Finding OIDs %} ## {% linkable_title Finding OIDs %}
OIDs may vary on different systems because they are vendor-specific. Beside the device's manual, the [OID Repository](http://www.oid-info.com/) is a good place to start if you are looking for OIDs. As an example, the following OIDs are for the load of a Linux systems. OIDs may vary on different systems because they are vendor-specific. Besides the device's manual, the [OID Repository](http://www.oid-info.com/) is a good place to start if you are looking for OIDs. As an example, the following OIDs are for the load of a Linux system.
- 1 minute Load: `1.3.6.1.4.1.2021.10.1.3.1` - 1 minute Load: `1.3.6.1.4.1.2021.10.1.3.1`
- 5 minute Load: `1.3.6.1.4.1.2021.10.1.3.2` - 5 minute Load: `1.3.6.1.4.1.2021.10.1.3.2`
- 15 minute Load: `1.3.6.1.4.1.2021.10.1.3.3` - 15 minute Load: `1.3.6.1.4.1.2021.10.1.3.3`
There is a large amount of tools available to work with SNMP. `snmpwalk` let you easily retrieve the value of a OID. There is a large amount of tools available to work with SNMP. `snmpwalk` let you easily retrieve the value of an OID.
```bash ```bash
$ snmpwalk -Os -c public -v 2c 192.168.1.32 1.3.6.1.4.1.2021.10.1.3.1 $ snmpwalk -Os -c public -v 2c 192.168.1.32 1.3.6.1.4.1.2021.10.1.3.1
@ -58,10 +136,11 @@ laLoad.1 = STRING: 0.19
### {% linkable_title Printer uptime minutes %} ### {% linkable_title Printer uptime minutes %}
According to the most common SNMP standard, the uptime of a device is accessible under OID `1.3.6.1.2.1.1.3.0`. The value represented using a format called `TimeTicks`, in units of hundredth of a second. According to the most common SNMP standard, the uptime of a device is accessible under OID `1.3.6.1.2.1.1.3.0`. The value represented using a format called `TimeTicks`, in units of hundredths of a second.
To create a sensor that displays the uptime for your printer in minutes, you can use this configuration: To create a sensor that displays the uptime for your printer in minutes, you can use this configuration:
{% raw %}
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
sensor: sensor:
@ -71,8 +150,9 @@ sensor:
baseoid: 1.3.6.1.2.1.1.3.0 baseoid: 1.3.6.1.2.1.1.3.0
accept_errors: true accept_errors: true
unit_of_measurement: 'minutes' unit_of_measurement: 'minutes'
value_template: {% raw %}'{{((value | int) / 6000) | int}}'{% endraw %} value_template: '{{((value | int) / 6000) | int}}'
``` ```
{% endraw %}
The `accept_errors` option will allow the sensor to work even if the printer is not on when Home Assistant is first started: the sensor will just display a `-` instead of a minute count. The `accept_errors` option will allow the sensor to work even if the printer is not on when Home Assistant is first started: the sensor will just display a `-` instead of a minute count.

View File

@ -14,7 +14,7 @@ ha_release: "0.30"
--- ---
The `statistics` sensor platform consumes the state from other sensors. Besides the maximum and the minimum values, the total, mean, median, variance and the standard deviation are also available as attributes. If it's a binary sensor then only state changes are counted. The `statistics` sensor platform consumes the state from other sensors. It exports the `mean` value as state and the following values as attributes: `count`, `mean`, `median`, `stdev`, `variance`, `total`, `min`, `max`, `min_age`, `max_age`, `change`, `average_change` and `change_rate`. If it's a binary sensor then only state changes are counted.
If you are running the [recorder](/components/recorder/) component, on startup the data is read from the database. So after a restart of the platform, you will immediately have data available. If you're using the [history](/components/history/) component, this will automatically also start the `recorder` component on startup. If you are running the [recorder](/components/recorder/) component, on startup the data is read from the database. So after a restart of the platform, you will immediately have data available. If you're using the [history](/components/history/) component, this will automatically also start the `recorder` component on startup.
If you are *not* running the `recorder` component, it can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation. If you are *not* running the `recorder` component, it can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation.
@ -43,6 +43,7 @@ Configuration variables:
- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`. - **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`.
- **sampling_size** (*Optional*): Size of the sampling. If the limit is reached then the values are rotated. Defaults to `20`. - **sampling_size** (*Optional*): Size of the sampling. If the limit is reached then the values are rotated. Defaults to `20`.
- **max_age** (*Optional*): Maximum age of measurements. Setting this to a time interval will cause older values to be discarded. - **max_age** (*Optional*): Maximum age of measurements. Setting this to a time interval will cause older values to be discarded.
- **precision** (*Optional*): Defines the precision of the calculated values, through the argument of round(). Defaults to `2`.
<p class='img'> <p class='img'>
<img src='{{site_root}}/images/screenshots/stats-sensor.png' /> <img src='{{site_root}}/images/screenshots/stats-sensor.png' />

View File

@ -10,13 +10,15 @@ footer: true
logo: trafikverket.png logo: trafikverket.png
ha_category: Weather ha_category: Weather
ha_release: 0.66.0 ha_release: 0.66.0
ha_iot_class: "Cloud Polling"
--- ---
Showing weather information for air and road temperature provided by [Trafikverket](https://www.trafikverket.se/) in Sweden. Showing weather information provided by [Trafikverket](https://www.trafikverket.se/) weather stations in Sweden.
Potential use cases: Potential use cases:
- Get weather data in general - Get weather data in general.
- You live near a weather station and want to know the current temperature at home - You live near a weather station and want to know the current weather conditions at home.
- Setup automations for your car heating system. If the road is frozen along the way to work, you might want the car heating system to start earlier. - Setup automations for your car heating system. If the road is frozen along the way to work, you might want the car heating system to start earlier.
##### {% linkable_title Configuration %} ##### {% linkable_title Configuration %}
@ -29,31 +31,48 @@ sensor:
name: Trafikverket Road WeatherStation Kungälv name: Trafikverket Road WeatherStation Kungälv
api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX
station: Kungälv station: Kungälv
type: road monitored_conditions:
- air_temp
- road_temp
- humidity
- precipitation
- wind_direction
- wind_direction_text
- wind_speed
``` ```
{% configuration %} {% configuration %}
name: name:
description: Unique name of the device in the frontend. description: Your unique name of the device in the frontend.
required: true required: true
type: string type: string
api_key: api_key:
description: API key from Trafikverket. description: Your personal API key from Trafikverket.
required: true required: true
type: string type: string
station: station:
description: Name of the weather station. description: Name of the weather station from Trafikverket.
required: true required: true
type: string type: string
type: monitored_conditions:
description: Defines which temperature you want (`air` or `road`). description: Specify what measurement data to retreive from the weather station.
required: true required: true
type: string type: map
scan_interval: keys:
description: How frequently to query for new data (in seconds). air_temp:
required: false description: Air temperature.
type: int road_temp:
default: 300 description: The temperature in the road.
humidity:
description: Relative humidity.
precipitation:
description: Type of precipitation (Swedish text).
wind_direction:
description: Wind direction in degrees.
wind_direction_text:
description: Rough wind direction in twelve variants (Swedish text).
wind_speed:
description: Average wind speed during the last 10 minutes.
{% endconfiguration %} {% endconfiguration %}
##### {% linkable_title Obtaining API key %} ##### {% linkable_title Obtaining API key %}
@ -76,11 +95,31 @@ sensor:
name: Trafikverket Road WeatherStation Kungälv name: Trafikverket Road WeatherStation Kungälv
api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX
station: Kungälv station: Kungälv
type: road monitored_conditions:
- air_temp
- road_temp
- humidity
- precipitation
- wind_direction
- wind_direction_text
- wind_speed
- platform: trafikverket_weatherstation - platform: trafikverket_weatherstation
name: Trafikverket Air WeatherStation Lanna name: Trafikverket Air WeatherStation Lanna
api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX
station: Lanna station: Lanna
type: air monitored_conditions:
- air_temp
- road_temp
- humidity
scan_interval: 600
- platform: trafikverket_weatherstation
name: Trafikverket Precipitation WeatherStation Nöbbele
api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX
station: Nöbbele
monitored_conditions:
- air_temp
- road_temp
- humidity
- precipitation
scan_interval: 600 scan_interval: 600
``` ```

View File

@ -16,6 +16,10 @@ ha_iot_class: "Cloud Polling"
The `twitch` platform will allow you to monitor [Twitch](http://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. The `twitch` platform will allow you to monitor [Twitch](http://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information.
## {% linkable_title Setup %}
Create a new app at "Register Your Application" in the [Twitch developer portal](https://glass.twitch.tv/console/apps). Then get the **Client ID** for the new app.
## {% linkable_title Configuration %} ## {% linkable_title Configuration %}
To use Twitch with your installation, add the following to your `configuration.yaml` file: To use Twitch with your installation, add the following to your `configuration.yaml` file:
@ -24,12 +28,17 @@ To use Twitch with your installation, add the following to your `configuration.y
# Example configuration.yaml entry # Example configuration.yaml entry
sensor: sensor:
platform: twitch platform: twitch
client_id: YOUR_TWITCH_CLIENT_ID
channels: channels:
- channel1 - channel1
- channel2 - channel2
``` ```
{% configuration %} {% configuration %}
clientid:
description: Your Twitch client ID.
required: true
type: string
channels: channels:
description: List of channels. description: List of channels.
required: true required: true

View File

@ -0,0 +1,18 @@
---
layout: page
title: "Velbus Sensor"
description: "Instructions how to integrate Velbus sensors into Home Assistant."
date: 2018-08-22 06:00
sidebar: true
comments: false
sharing: true
footer: true
logo: velbus.png
ha_category: Sensor
ha_iot_class: "Local Push"
ha_release: 0.78
---
The `velbus` sensor allows you to control [Velbus](http://www.velbus.eu) connected temperature sensors.
For hub configuration, see [the Velbus component](/components/velbus/).

View File

@ -0,0 +1,79 @@
---
layout: page
title: "Volkszaehler"
description: "Instructions on how to integrate Volkszaehler sensors into Home Assistant."
date: 2018-08-25 08:00
sidebar: true
comments: false
sharing: true
footer: true
logo: volkszaehler.png
ha_category: System Monitor
ha_iot_class: "Local Polling"
ha_release: 0.78
---
The `volkszaehler` sensor platform is consuming the system information provided by the [Volkszaehler](https://wiki.volkszaehler.org/) API.
## {% linkable_title Configuration %}
To enable the Volkszaehler sensor, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
sensor:
- platform: volkszaehler
uuid: DEVICE_UUID
```
{% configuration %}
uuid:
description: The UUID of the device to track.
required: true
type: string
host:
description: The IP address of the host where Volkszaehler is running.
required: false
type: string
default: localhost
port:
description: The port where Volkszaehler is listening.
required: false
type: int
default: 80
name:
description: The prefix for the sensors.
required: false
type: string
default: Volkszaehler
monitored_conditions:
description: Entries to monitor.
required: false
type: map
default: average
keys:
average:
description: The average power.
consumption:
description: The power consumption.
max:
description: The maximum power.
min:
description: The minimum power.
{% endconfiguration %}
## {% linkable_title Full examples %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: volkszaehler
host: demo.volkszaehler.org
uuid: '57acbef0-88a9-11e4-934f-6b0f9ecd95a8'
monitored_conditions:
- average
- consumption
- min
- max
```

View File

@ -38,17 +38,17 @@ $ sudo apt-get update
$ sudo apt-get install -y snips-platform-voice $ sudo apt-get install -y snips-platform-voice
``` ```
Note: if the keyserver pgp.mit.edu is down try to use another one in the 4th line , like pgp.surfnet.nl: Note that if the keyserver pgp.mit.edu is down then try to use another one in the 4th line, like pgp.surfnet.nl:
```bash ```bash
sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849 $ sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849
``` ```
### {% linkable_title Creating an assistant %} ### {% linkable_title Creating an assistant %}
Head over to the [Snips Console](https://console.snips.ai) to create your assistant. Launch the training and download by clicking on the "Download Assistant" button. Head over to the [Snips Console](https://console.snips.ai) to create your assistant. Launch the training and download by clicking on the "Download Assistant" button.
The next step is to get the assistant to work on your device. Unzip and copy the assistant folder that you downloaded from the web console to the path. Assuming your downloaded assistant folder is on your desktop, just run: The next step is to get the assistant to work on your device. Unzip and copy the `assistant` folder that you downloaded from the web console to the path. Assuming your downloaded `assistant` folder is on your desktop, just run:
```bash ```bash
$ scp -r ~/Desktop/assistant pi@<raspi_hostname.local_or_IP>:/home/pi/. $ scp -r ~/Desktop/assistant pi@<raspi_hostname.local_or_IP>:/home/pi/.
@ -68,7 +68,7 @@ Then, move the assistant to the right folder:
(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant (pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant
``` ```
Note: if you already have an assistant installed and wish to replace it, start by removing the previous one, and then move the new one in its place: Note that if you already have an assistant installed and wish to replace it then start by removing the previous one and then move the new one in its place:
```bash ```bash
(pi) $ sudo rm -r /usr/share/snips/assistant (pi) $ sudo rm -r /usr/share/snips/assistant
@ -161,22 +161,28 @@ In the `data_template` block, we have access to special variables, corresponding
### {% linkable_title Special slots %} ### {% linkable_title Special slots %}
Two special values for slots are populated with the siteId the intent originated from and the probability value for the intent. Several special values for slots are populated with the `siteId `the intent originated from and the probability value for the intent, the `sessionId` generate by the dialogue manager, and `slote_name` raw which will contain the raw, uninterpreted text of the slot value.
In the above example, the slots are plain strings. However, snips has a duration builtin value used for setting timers and this will be parsed to a seconds value. In the above example, the slots are plain strings. However, Snips has a duration builtin value used for setting timers and this will be parsed to a seconds value.
In this example if we had an intent triggered with 'Set a timer for five minutes', `duration:` would equal 300 and `duration_raw:` would be set to 'five minutes'. The duration can be easily used to trigger Home Assistant events and the `duration_raw:` could be used to send a human readable response or alert.
In this example if we had an intent triggered with 'Set a timer for five minutes', duration would equal 300 and duration_raw would be set to 'five minutes'. The duration can be easily used to trigger HA events, and the duration_raw could be used to send a human readable response or alert.
{% raw %} {% raw %}
```yaml ```yaml
SetTimer: SetTimer:
speech: speech:
type: plain type: plain
text: weather text: 'Set a timer'
action: action:
service: script.set_timer service: script.set_timer
data_template: data_template:
name: "{{ timer_name }}" name: "{{ timer_name }}"
duration: "{{ timer_duration }}" duration: "{{ timer_duration }}"
siteId: "{{ site_id }}" siteId: "{{ site_id }}"
sessionId: "{{ session_id }}"
duration_raw: "{{ raw_value }}"
probability: "{{ probability }}" probability: "{{ probability }}"
``` ```
{% endraw %} {% endraw %}
@ -185,7 +191,7 @@ SetTimer:
### {% linkable_title Sending TTS Notifications %} ### {% linkable_title Sending TTS Notifications %}
You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door". You can send TTS notifications to Snips using the `snips.say` and `snips.say_action` services. `say_action` starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door".
#### {% linkable_title Service `snips.say` %} #### {% linkable_title Service `snips.say` %}
@ -240,9 +246,7 @@ intent_script:
##### {% linkable_title Intiating a query %} ##### {% linkable_title Intiating a query %}
Here is a more complex example. The automation is triggered if the garage door is open for more than 10 minutes. Here is a more complex example. The automation is triggered if the garage door is open for more than 10 minutes. Snips will then ask you if you want to close it and if you respond with something like "Close the garage door" it will do so. Unfortunately there is no builtin support for yes and no responses.
Snips will then ask you if you want to close it and if you respond with something like "Close the garage door" it
will do so. Unfortunately there is no builtin support for yes and no responses.
```yaml ```yaml
automation: automation:

View File

@ -15,7 +15,7 @@ ha_release: 0.57
The `snmp` switch platform allows you to control SNMP-enabled equipment. The `snmp` switch platform allows you to control SNMP-enabled equipment.
Currently, only SNMP OIDs that accept integer values are supported. SNMP v1 and v2c are supported. SNMP v3 is **not** supported. Currently, only SNMP OIDs that accept integer values are supported. SNMP v1, v2c and v3 are supported.
To use an SNMP switch in your installation: To use an SNMP switch in your installation:
@ -27,30 +27,123 @@ switch:
baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0 baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
``` ```
Configuration variables: {% configuration %}
baseoid:
- **baseoid** (*Required*): The SNMP BaseOID which to poll for the state of the switch. description: The SNMP BaseOID which to poll for the state of the switch.
- **command_oid** (*Optional*): The SNMP OID which to set in order to turn the switch on and off, if different from `baseoid`. required: true
- **host** (*Optional*): The IP/host which to control. Defaults to `localhost`. type: string
- **port** (*Optional*): The port on which to communicate. Defaults to `161`. command_oid:
- **community** (*Optional*): community string to use for authentication. Defaults to `private`. description: The SNMP OID which to set in order to turn the switch on and off, if different from `baseoid`.
- **version** (*Optional*): SNMP version to use - either `1` or `2c`. Defaults to `1`. required: false
- **payload_on** (*Optional*): What return value represents an `On` state for the switch. The same value is used in writes to turn on the switch if `command_payload_on` is not set. Defaults to `1`. type: string
- **payload_off** (*Optional*): What return value represents an `Off` state for the switch. The same value is used in writes to turn off the switch if `command_payload_off` is not set. Defaults to `0`. host:
- **command_payload_on** (*Optional*): The value to write to turn on the switch, if different from `payload_on`. description: The IP/host which to control.
- **command_payload_off** (*Optional*): The value to write to turn off the switch, if different from `payload_off`. required: false
type: string
default: 'localhost'
port:
description: The port on which to communicate.
required: false
type: string
default: '161'
community:
description: community string to use for authentication (SNMP v1 and v2c).
required: false
type: string
default: 'private'
username:
description: Username to use for authentication.
required: false
type: string
default: ''
auth_key:
description: Authentication key to use for SNMP v3.
required: false
type: string
default: no key
auth_protocol:
description: Authentication protocol to use for SNMP v3.
required: false
type: string
default: 'none'
priv_key:
description: Privacy key to use for SNMP v3.
required: false
type: string
default: no key
priv_protocol:
description: Privacy protocol to use for SNMP v3.
required: false
type: string
default: 'none'
version:
description: SNMP version to use - either `1`, `2c` or `3`.
required: false
type: string
default: '1'
payload_on:
description: What return value represents an `On` state for the switch. The same value is used in writes to turn on the switch if `command_payload_on` is not set.
required: false
type: string
default: '1'
payload_off:
description: What return value represents an `Off` state for the switch. The same value is used in writes to turn off the switch if `command_payload_off` is not set.
required: false
type: string
default: '0'
command_payload_on:
description: The value to write to turn on the switch, if different from `payload_on`.
required: false
type: string
command_payload_off:
description: The value to write to turn off the switch, if different from `payload_off`.
required: false
type: string
{% endconfiguration %}
You should check with your device's vendor to find out the correct BaseOID and what values turn the switch on and off. You should check with your device's vendor to find out the correct BaseOID and what values turn the switch on and off.
A complete example: Valid values for auth_protocol:
- **none**
- **hmac-md5**
- **hmac-sha**
- **hmac128-sha224**
- **hmac192-sha256**
- **hmac256-sha384**
- **hmac384-sha512**
Valid values for priv_protocol:
- **none**
- **des**
- **3des-ede**
- **aes-cfb-128**
- **aes-cfb-192**
- **aes-cfb-256**
Complete examples:
```yaml ```yaml
switch: switch:
- platform: snmp - platform: snmp
name: SNMP switch name: SNMP v1 switch
host: 192.168.0.2 host: 192.168.0.2
community: private community: private
baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0 baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
payload_on: 1 payload_on: 1
payload_off: 0 payload_off: 0
- platform: snmp
name: SNMP v3 switch
host: 192.168.0.3
version: '3'
username: 'myusername'
auth_key: 'myauthkey'
auth_protocol: 'hmac-sha'
priv_key: 'myprivkey'
priv_protocol: 'aes-cfb-128'
baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0
payload_on: 1
payload_off: 0
``` ```

View File

@ -0,0 +1,35 @@
---
layout: page
title: "Switchbot"
description: "Instructions on how to set up Switchbot switches."
date: 2018-09-03 22:41
sidebar: true
comments: false
sharing: true
footer: true
logo: switchbot.png
ha_category: Switch
ha_release: 0.78
ha_iot_class: "Local Polling"
---
This `Switchbot` switch platform allow you to control Switchbot [devices]( https://www.switch-bot.com/).
To enable it, add the following lines to your `configuration.yaml`:
```yaml
switch:
- platform: switchbot
mac: 'cb:25:0b......'
```
{% configuration %}
mac:
description: Device MAC address.
required: true
type: string
name:
description: The name used to display the switch in the frontend.
required: false
type: string
{% endconfiguration %}

View File

@ -0,0 +1,36 @@
---
layout: page
title: "Switchmate"
description: "Instructions on how to set up Switchmate switches."
date: 2018-08-17 22:41
sidebar: true
comments: false
sharing: true
footer: true
logo: switchmate-logo-rgb.png
ha_category: Switch
ha_release: 0.78
ha_iot_class: "Local Polling"
---
This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/).
To enable it, add the following lines to your `configuration.yaml`:
```yaml
switch:
- platform: switchmate
mac: 'cb:25:0b......'
```
{% configuration %}
mac:
description: Device MAC address.
required: true
type: string
name:
description: The name used to display the switch in the frontend.
required: false
type: string
{% endconfiguration %}

View File

@ -10,11 +10,11 @@ footer: true
ha_release: 0.35 ha_release: 0.35
--- ---
Text-to-speech (TTS) enables Home Assistant to speak to you. Text-to-Speech (TTS) enables Home Assistant to speak to you.
## {% linkable_title Configuring a `tts` platform %} ## {% linkable_title Configuring a `tts` platform %}
To get started, add the following lines to your `configuration.yaml` (example for google): To get started, add the following lines to your `configuration.yaml` (example for Google):
```yaml ```yaml
# Example configuration.yaml entry for google tts service # Example configuration.yaml entry for google tts service
@ -23,28 +23,66 @@ tts:
``` ```
<p class='note'> <p class='note'>
Depending on your setup, you might need to set a base URL (`base_url`) inside the [http component](/components/http/). Depending on your setup, you might need to set a base URL (`base_url`) inside the [http component](/components/http/) or in the parameters of this component.
</p> </p>
The following optional parameters can be used with any platform. However, the TTS component will only look for global settings under the configuration of the first configured platform: The following optional parameters can be used with any platform. However, the TTS component will only look for global settings under the configuration of the first configured platform:
| Parameter | Default | Description | {% configuration %}
|---------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| cache:
| `cache` | True | Allow TTS to cache voice file to local storage. | description: Allow TTS to cache voice file to local storage.
| `cache_dir` | tts | Folder name or path to a folder for caching files. | required: false
| `time_memory` | 300 | Time to hold the voice data inside memory for fast play on a media player. Minimum is 60 s and the maximum 57600 s (16 hours). | type: boolean
default: True
cache_dir:
description: Folder name or path to a folder for caching files.
required: false
type: string
default: tts
time_memory:
description: Time to hold the voice data inside memory for fast play on a media player. Minimum is 60 s and the maximum 57600 s (16 hours).
required: false
type: int
default: 300
base_url:
description: A base URL to use *instead* of the one set in the [http component](/components/http/). It is used as-is by the `tts` component. In particular, you need to include the protocol scheme `http://` or `https://` and the correct port number. They will not be automatically added for you.
required: false
type: string
default: value of ``http.base_url``
{% endconfiguration %}
The extended example from above would look like the following sample: The extended example from above would look like the following sample:
```yaml ```yaml
# Example configuration.yaml entry for google tts service # Example configuration.yaml entry for Google TTS service
tts: tts:
- platform: google - platform: google
cache: true cache: true
cache_dir: /tmp/tts cache_dir: /tmp/tts
time_memory: 300 time_memory: 300
base_url: http://192.168.0.10:8123
``` ```
## {% linkable_title When do you need to set `base_url` here? %}
The general answer is "whenever the global `base_url` set in [http component](/components/http/) is not adequate to allow the `say` service to run". The `say` service operates by generating a media file that contains the speech corresponding to the text passed to the service. Then the `say` service sends a message to the media device with a URL pointing to the file. The device fetches the media file at the URL and plays the media. Some combinations of a media device, network configuration and Home Assistant configuration can make it so that the device cannot fetch the media file.
The following sections describe some of the problems encountered with media devices.
### {% linkable_title Self-signed certificates %}
This problem occurs when your Home Assistant instance is configured to be accessed through SSL, and you are using a self-signed certificate.
The `tts` service will send an `https://` URL to the media device, which will check the certificate, and reject it. So it won't play your file. If you could make the device accept your certificate, it would play the file. However, many media devices do not allow changing settings to accept self-signed certificates. Ultimately, your option may be to serve files to the device as `http://` rather than `https://`. To do this, you *could* change the `base_url` setting in [http component](/components/http/), but that would turn off SSL for all services that use `base_url`. Instead, setting a `base_url` for the `tts` service allows turning off SSL only for this component.
### {% linkable_title Google cast devices %}
The Google cast devices (Google Home, Chromecast, etc.) present the following problems:
* They [reject self-signed certificates](#self-signed-certificates).
* They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). Setting a `base_url` that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname.
## {% linkable_title Service say %} ## {% linkable_title Service say %}
The `say` service support `language` and on some platforms also `options` for set, i.e., *voice, motion, speed, etc*. The text for speech is set with `message`. The `say` service support `language` and on some platforms also `options` for set, i.e., *voice, motion, speed, etc*. The text for speech is set with `message`.

View File

@ -36,3 +36,13 @@ Send a _magic packet_ to wake up a device with 'Wake-On-LAN' capabilities.
|---------------------------|----------|-------------------------------------------------------| |---------------------------|----------|-------------------------------------------------------|
| `mac` | no | MAC address of the device to wake up. | | `mac` | no | MAC address of the device to wake up. |
| `broadcast_address` | yes | Optional broadcast IP where to send the magic packet. | | `broadcast_address` | yes | Optional broadcast IP where to send the magic packet. |
Sample service data:
```json
{
"mac":"00:40:13:ed:f1:32"
}
```

View File

@ -67,10 +67,19 @@ Delays are useful for temporarily suspending your script and start it at a later
```yaml ```yaml
# Waits 1 minute # Waits 1 minute
- delay: - delay:
# supports milliseconds, seconds, minutes, hours, days # Supports milliseconds, seconds, minutes, hours, days
minutes: 1 minutes: 1
``` ```
{% raw %}
```yaml
# Waits however many seconds input_number.second_delay is set to
- delay:
# Supports milliseconds, seconds, minutes, hours, days
seconds: "{{ states('input_number.second_delay') }}"
```
{% endraw %}
{% raw %} {% raw %}
```yaml ```yaml
# Waits however many minutes input_number.minute_delay is set to # Waits however many minutes input_number.minute_delay is set to
@ -85,14 +94,14 @@ Wait until some things are complete. We support at the moment `wait_template` fo
{% raw %} {% raw %}
```yaml ```yaml
# wait until media player have stop the playing # Wait until media player have stop the playing
- wait_template: "{{ is_state('media_player.floor', 'stop') }}" - wait_template: "{{ is_state('media_player.floor', 'stop') }}"
``` ```
{% endraw %} {% endraw %}
{% raw %} {% raw %}
```yaml ```yaml
# wait for sensor to trigger or 1 minute before continuing to execute. # Wait for sensor to trigger or 1 minute before continuing to execute.
- wait_template: "{{ is_state('binary_sensor.entrance', 'on') }}" - wait_template: "{{ is_state('binary_sensor.entrance', 'on') }}"
timeout: '00:01:00' timeout: '00:01:00'
continue_on_timeout: 'true' continue_on_timeout: 'true'
@ -125,7 +134,7 @@ You can also get the script to abort after the timeout by using `continue_on_tim
{% raw %} {% raw %}
```yaml ```yaml
# wait until a valve is < 10 or continue after 1 minute. # Wait until a valve is < 10 or continue after 1 minute.
- wait_template: "{{ states.climate.kitchen.attributes.valve|int < 10 }}" - wait_template: "{{ states.climate.kitchen.attributes.valve|int < 10 }}"
timeout: '00:01:00' timeout: '00:01:00'
continue_on_timeout: 'false' continue_on_timeout: 'false'

View File

@ -0,0 +1,461 @@
---
layout: post
title: "0.78: More auth, Switchmate, Yale Smart Alarm, OpenTherm"
description: "We're 5! We got some great new auth stuff in this release and support for Switchmate, Yale Smart Alarm and OpenTherm."
date: 2018-09-17 00:01:00
date_formatted: "September 17, 2018"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
og_image: /images/blog/2018-09-0.78/social.png
---
<a href='/components/#version/0.78'><img src='/images/blog/2018-09-0.78/components.png' style='border: 0;box-shadow: none;'></a>
It's time for a new release and oh boy, what a time to be alive! Today marks our 5th (!!!) anniversary. That's 5 years we've been bringing privacy focused and locally controlled home automation to your home. Happy birthday to us.
This release includes two new features for the auth system. The first one is long-lived access tokens. These are tokens that don't expire and can be used in your scripts instead of API password. Instructions on how to create and use them can be found on your profile.
Also on your profile page is a new list of existing refresh tokens. These are all the tokens that are currently active for your account. If you ran into issues that the remember login dialog didn't show, you might have a lot. Don't worry, you can delete them all.
## {% linkable_title New Platforms %}
- Add temperature sensors to the velbus component ([@Cereal2nd] - [#16203]) ([velbus docs]) ([sensor.velbus docs]) (new-platform)
- Add Volkszaehler sensor ([@fabaff] - [#16188]) ([sensor.volkszaehler docs]) (new-platform)
- Switchmate ([@Danielhiversen] - [#15535]) ([switch.switchmate docs]) (new-platform)
- Add support for Habitica ([@ASMfreaK] - [#15744]) ([habitica docs]) ([sensor.habitica docs]) (new-platform)
- Geo Location component ([@exxamalte] - [#15953]) ([feedreader docs]) ([geo_location docs]) (new-platform)
- Add Cover to the Insteon component ([@teharris1] - [#16215]) ([insteon docs]) ([cover.insteon docs]) (new-platform)
- switchbot ([@Danielhiversen] - [#16396]) ([switch.switchbot docs]) (new-platform)
- Add Yale Smart Alarm component ([@domwillcode] - [#16377]) ([alarm_control_panel.yale_smart_alarm docs]) (new-platform)
- Add OpenTherm Gateway climate platform ([@mvn23] - [#16299]) ([climate.opentherm_gw docs]) (new-platform)
## {% linkable_title If you need help... %}
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
## {% linkable_title Reporting Issues %}
Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
<!--more-->
## {% linkable_title Breaking Changes %}
- Trafikverket weather: Instead of having multiple sensor configurations per station, add only one configuration per station and select the type of measurement data to subscribe to using monitored_conditions.
The configuration value type should no longer be used. ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change)
- Geizhals: config has changed. Remove domain and regex, specify locale instead: `AT`, `EU`, `DE`, `UK` or `PL`. ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change)
- Update to EnvoyReader 0.2, support for more hardware. Change keys in monitored_conditions from `7_days_production` and `7_days_consumption` to `seven_days_production` and `seven_days_consumption` ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change)
- Fix Mi Flora median calculation. Removed `retries` and `timeout` config parameters, they were not used for several months. Replaced `cache_value` config with `scan_interval` to fix a bug in the PR. ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change)
- Twitch now requires a `client_id` and so the platform got updated. ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change)
- The radiotherm `fan` and `mode` state attributes were updated to reflect the real-time fan and mode states of the thermostat, rather than the overall selected state (automatic, mostly). The mode attributes still contain the selected modes (fan on/auto, heat/cool/auto). ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change)
## {% linkable_title Beta Fixes %}
- Replace api_password in Camera.Push ([@dgomes] - [#16339]) ([camera.push docs]) (beta fix)
- Fail fetch auth providers if onboarding required ([@balloob] - [#16454]) ([auth docs]) (beta fix)
- Fix insteon Hub v1 support ([@teharris1] - [#16472]) ([insteon docs]) (beta fix)
- bugfix - incorrect camera type and missing sensors when multiple netatmo cameras ([@vikramgorla] - [#16490]) ([netatmo docs]) (beta fix)
- Fix arlo intilization when no base station available ([@zellux] - [#16529]) ([arlo docs]) (beta fix)
- Long-lived access token ([@awarecan] - [#16453]) ([auth docs]) (beta fix)
- Fix typo ([@balloob] - [#16556]) (beta fix)
- Fix invalid state ([@balloob] - [#16558]) (beta fix)
- Add websocket commands for refresh tokens ([@balloob] - [#16559]) ([auth docs]) (beta fix)
- Return if refresh token is current used one in WS API ([@awarecan] - [#16575]) ([auth docs]) ([websocket_api docs]) (beta fix)
- Track refresh token last usage information ([@awarecan] - [#16408]) ([auth docs]) (beta fix)
- Increasing python-websockets' version number ([@zoe1337] - [#16578]) ([media_player.webostv docs]) (beta fix)
- Add retry limit for chromecast connection ([@awarecan] - [#16471]) ([media_player.cast docs]) (beta fix)
- Fix broken bluetooth tracker ([@awarecan] - [#16589]) ([device_tracker docs]) (beta fix)
- Rewrite bluetooth le ([@pvizeli] - [#16592]) ([device_tracker docs]) (beta fix)
## {% linkable_title All changes %}
- Add 'moon_phase' to Dark Sky sensor ([@fabaff] - [#16179]) ([sensor.darksky docs])
- Zoneminder SSL fix ([@djm300] - [#16157]) ([zoneminder docs])
- update python-velbus library version ([@thomasdelaet] - [#16194]) ([velbus docs])
- MQTT: Log transmitted as well as received messages ([@smurfix] - [#16195]) ([mqtt docs])
- Upgrade sqlalchemy to 1.2.11 ([@fabaff] - [#16192]) ([sensor.sql docs])
- Add battery warning, rssi level and check for availability ([@fucm] - [#16193]) ([sensor.tahoma docs])
- Inconsistent entity_id when multiple sensors ([@grea09] - [#16205]) ([sensor.dnsip docs])
- Add temperature sensors to the velbus component ([@Cereal2nd] - [#16203]) ([velbus docs]) ([sensor.velbus docs]) (new-platform)
- Rewrite of Trafikverket weather - Multiple sensor types supported ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change)
- Add device_tracker.bluetooth_update service ([@kariudo] - [#15252]) ([device_tracker docs])
- Fix geizhals price parsing ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change)
- Add Volkszaehler sensor ([@fabaff] - [#16188]) ([sensor.volkszaehler docs]) (new-platform)
- openalpr flag `WITH_TEST` should be `WITH_TESTS` ([@vrih] - [#16218])
- Upgrade alpha_vantage to 2.1.0 ([@fabaff] - [#16217]) ([sensor.alpha_vantage docs])
- Store devices as dict instead of list ([@Kane610] - [#16229])
- Improve package loadable ([@balloob] - [#16237])
- Switchmate ([@Danielhiversen] - [#15535]) ([switch.switchmate docs]) (new-platform)
- Add support for discrete states to MyQ cover ([@schmittx] - [#16251]) ([cover.myq docs])
- bump version ([@dgomes] - [#16262]) ([upnp docs])
- Replace Authorization by Authentication ([@cgtobi] - [#16259]) ([hangouts docs])
- Add device info to Chromecast ([@balloob] - [#16261]) ([media_player.cast docs])
- Add device info for sonos ([@balloob] - [#16263]) ([media_player.sonos docs])
- Add device info Nest ([@balloob] - [#16265]) ([climate.nest docs])
- Add Hue device info ([@balloob] - [#16267]) ([hue docs]) ([light.hue docs])
- Nest Thermostat has software version ([@awarecan] - [#16275]) ([climate.nest docs])
- Add support for Habitica ([@ASMfreaK] - [#15744]) ([habitica docs]) ([sensor.habitica docs]) (new-platform)
- Fix so that entities are properly unloaded with config entry ([@Kane610] - [#16281]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) ([switch.deconz docs])
- Geo Location component ([@exxamalte] - [#15953]) ([feedreader docs]) ([geo_location docs]) (new-platform)
- Bump songpal dependency ([@rytilahti] - [#16297]) ([media_player.songpal docs])
- Use asterisk_mbox 0.5.0 client ([@PhracturedBlue] - [#16296]) ([asterisk_mbox docs])
- Upgrade Adafruit-DHT to 1.3.4 ([@thomaslian] - [#16327]) ([sensor.dht docs])
- Add unique ID ([@schmittx] - [#16323]) ([cover.myq docs])
- Add Cover to the Insteon component ([@teharris1] - [#16215]) ([insteon docs]) ([cover.insteon docs]) (new-platform)
- Fix missing humidity sensor ([@danielperna84] - [#16337]) ([homematic docs])
- Support Sonos Beam HDMI input ([@phil65] - [#16340]) ([media_player.sonos docs])
- Make last_seen attribute a timezone aware datetime in UTC ([@pnbruckner] - [#16348]) ([device_tracker docs])
- Handle netatmo exception ([@Danielhiversen] - [#16344]) ([sensor.netatmo docs])
- Add support for sound_mode for Yamaha rxv media_player ([@Joshi425] - [#16352]) ([media_player.yamaha docs])
- Add unique_id to MQTT Light ([@bieniu] - [#16303]) ([light.mqtt docs])
- Update to EnvoyReader 0.2, support for more hardware ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change)
- Snips: Added special slot values, session_id and slotname_raw ([@tschmidty69] - [#16185]) ([snips docs])
- Upgrade hbmqtt to 0.9.4 ([@awarecan] - [#16356]) ([mqtt docs])
- Upgrade Sphinx to 1.7.7 ([@fabaff] - [#16359])
- Upgrade qnapstats to 0.2.7 ([@fabaff] - [#16360]) ([sensor.qnap docs])
- Upgrade mutagen to 1.41.1 ([@fabaff] - [#16361]) ([tts docs])
- Upgrade shodan to 1.10.0 ([@fabaff] - [#16363]) ([sensor.shodan docs])
- Upgrade to youtube_dl to 2018.09.01 ([@fabaff] - [#16365]) ([media_extractor docs])
- Added 'nomapnt', 'outcurnt', 'loadapnt' fields ([@MarcSN311] - [#16176]) ([sensor.apcupsd docs])
- Generic Thermostat: add support for climate.turn_on/climate.turn_off ([@aronsky] - [#16080]) ([climate.generic_thermostat docs])
- Add support for Tahoma Lighting Receiver on/off io ([@fucm] - [#15925]) ([tahoma docs]) ([switch.tahoma docs])
- Update discord.py ([@htotoo] - [#16248]) ([notify docs])
- Upgrade python-telegram-bot to 11.0.0 ([@fabaff] - [#16373]) ([telegram_bot docs])
- Upgrade attrs to 18.2.0 ([@fabaff] - [#16372])
- Update server.py ([@awarecan] - [#16375]) ([mqtt docs])
- add_entities for switchmate ([@Danielhiversen] - [#16368]) ([switch.switchmate docs])
- Support for playing radio preset by Onkyo media_player ([@pszafer] - [#16258]) ([cover.mqtt docs]) ([media_player.onkyo docs])
- Bug fix for Tibber ([@Danielhiversen] - [#16397]) ([sensor.tibber docs])
- zha: Bump to zigpy 0.2.0/bellows 0.7.0 ([@rcloran] - [#16404]) ([zha docs])
- Fix SystemMonitor IP address sensor ([@ReneNulschDE] - [#16394]) ([sensor.systemmonitor docs])
- add ExpressBus icon key to sensor.mvg ([@9R] - [#16387]) ([sensor.mvglive docs])
- Device and entity registry remove config entry on unload ([@Kane610] - [#16247])
- Add config flow for OpenUV ([@bachya] - [#16159]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs])
- Service to load new deCONZ devices without restart ([@Kane610] - [#16308]) ([deconz docs])
- Delegate mqtt topic match validation to the paho mqtt client ([@rohankapoorcom] - [#16403]) ([mqtt docs])
- Clean up dlink and some bug fix ([@Danielhiversen] - [#16346]) ([switch.dlink docs])
- Implement correct state for RFlink cover ([@nudded] - [#16304]) ([cover.rflink docs])
- Fix Mi Flora median calculation ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change)
- Add context to scripts and automations ([@balloob] - [#16415]) ([automation docs]) ([script docs]) ([automation.event docs]) ([automation.homeassistant docs]) ([automation.numeric_state docs]) ([automation.state docs]) ([automation.template docs]) ([automation.zone docs])
- Fix openuv.config_flow unit test ([@awarecan] - [#16419])
- Upgrade sense library to 0.4.2 ([@kbickar] - [#16429]) ([sensor.sense docs])
- switchbot ([@Danielhiversen] - [#16396]) ([switch.switchbot docs]) (new-platform)
- Fix camera proxy to not require api_password to function ([@PhracturedBlue] - [#16450]) ([camera docs]) ([camera.proxy docs])
- Upgrade shodan to 1.10.1 ([@fabaff] - [#16460]) ([sensor.shodan docs])
- Upgrade Sphinx to 1.7.8 ([@fabaff] - [#16459])
- update rfxtrx lib ([@Danielhiversen] - [#16463]) ([rfxtrx docs])
- Added Twitch v5 support to the twitch platform ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change)
- Fix waze_travel_time component startup ([@tsvi] - [#16465]) ([sensor.waze_travel_time docs])
- Update license to official GitHub template ([@OverloadUT] - [#16470])
- Add Yale Smart Alarm component ([@domwillcode] - [#16377]) ([alarm_control_panel.yale_smart_alarm docs]) (new-platform)
- Update radiotherm ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change)
- Support SNMPv3 and asyncio in snmp switch ([@mtdcr] - [#14754]) ([switch.snmp docs])
- Fix GitHub change to resolve conflicts ([@fabaff] - [#16477]) ([switch.snmp docs])
- Add OpenTherm Gateway climate platform ([@mvn23] - [#16299]) ([climate.opentherm_gw docs]) (new-platform)
- Support SNMPv3 and asyncio in snmp sensor ([@mtdcr] - [#14753]) ([sensor.snmp docs])
- Add rate of change to statistics sensor ([@flo-wer] - [#15632]) ([sensor.statistics docs])
- Restore status attribute for xiaomi_vacuum ([@tamasv] - [#16366]) ([vacuum docs]) ([vacuum.xiaomi_miio docs])
- Check if API key is valid and users available ([@fabaff] - [#16494]) ([sensor.lastfm docs])
- Update name legacy api password ([@balloob] - [#16455])
- Fix Netgear LTESensor docstring ([@scop] - [#16501]) ([sensor.netgear_lte docs])
- Update pyHS100 to 0.3.3 ([@amelchio] - [#16502]) ([light.tplink docs]) ([switch.tplink docs])
- Move voluptuous-serialize to core requirement ([@awarecan] - [#16507]) ([config docs])
- adds listener for OnAVStart and OnAVChange ([@tadly] - [#16495]) ([media_player.kodi docs])
- Order imports ([@fabaff] - [#16515])
- Upgrade aiohttp to 3.4.4 ([@awarecan] - [#16486])
- Add a base_url configuration setting to tts. ([@lddubeau] - [#16478]) ([tts docs])
- Upgrade youtube_dl to 2018.09.10 ([@fabaff] - [#16534]) ([media_extractor docs])
- Upgrade keyring to 15.0.0 ([@fabaff] - [#16536])
- Updates documentation repo URL in PR template ([@frenck] - [#16537])
- Replace api_password in Camera.Push ([@dgomes] - [#16339]) ([camera.push docs]) (beta fix)
- Fail fetch auth providers if onboarding required ([@balloob] - [#16454]) ([auth docs]) (beta fix)
- Fix insteon Hub v1 support ([@teharris1] - [#16472]) ([insteon docs]) (beta fix)
- bugfix - incorrect camera type and missing sensors when multiple netatmo cameras ([@vikramgorla] - [#16490]) ([netatmo docs]) (beta fix)
- Fix arlo intilization when no base station available ([@zellux] - [#16529]) ([arlo docs]) (beta fix)
- Long-lived access token ([@awarecan] - [#16453]) ([auth docs]) (beta fix)
- Fix typo ([@balloob] - [#16556]) (beta fix)
- Fix invalid state ([@balloob] - [#16558]) (beta fix)
- Add websocket commands for refresh tokens ([@balloob] - [#16559]) ([auth docs]) (beta fix)
- Return if refresh token is current used one in WS API ([@awarecan] - [#16575]) ([auth docs]) ([websocket_api docs]) (beta fix)
- Track refresh token last usage information ([@awarecan] - [#16408]) ([auth docs]) (beta fix)
- Increasing python-websockets' version number ([@zoe1337] - [#16578]) ([media_player.webostv docs]) (beta fix)
- Add retry limit for chromecast connection ([@awarecan] - [#16471]) ([media_player.cast docs]) (beta fix)
- Fix broken bluetooth tracker ([@awarecan] - [#16589]) ([device_tracker docs]) (beta fix)
- Rewrite bluetooth le ([@pvizeli] - [#16592]) ([device_tracker docs]) (beta fix)
[#14753]: https://github.com/home-assistant/home-assistant/pull/14753
[#14754]: https://github.com/home-assistant/home-assistant/pull/14754
[#15031]: https://github.com/home-assistant/home-assistant/pull/15031
[#15252]: https://github.com/home-assistant/home-assistant/pull/15252
[#15535]: https://github.com/home-assistant/home-assistant/pull/15535
[#15632]: https://github.com/home-assistant/home-assistant/pull/15632
[#15744]: https://github.com/home-assistant/home-assistant/pull/15744
[#15925]: https://github.com/home-assistant/home-assistant/pull/15925
[#15935]: https://github.com/home-assistant/home-assistant/pull/15935
[#15953]: https://github.com/home-assistant/home-assistant/pull/15953
[#15990]: https://github.com/home-assistant/home-assistant/pull/15990
[#16080]: https://github.com/home-assistant/home-assistant/pull/16080
[#16085]: https://github.com/home-assistant/home-assistant/pull/16085
[#16157]: https://github.com/home-assistant/home-assistant/pull/16157
[#16159]: https://github.com/home-assistant/home-assistant/pull/16159
[#16176]: https://github.com/home-assistant/home-assistant/pull/16176
[#16179]: https://github.com/home-assistant/home-assistant/pull/16179
[#16185]: https://github.com/home-assistant/home-assistant/pull/16185
[#16188]: https://github.com/home-assistant/home-assistant/pull/16188
[#16192]: https://github.com/home-assistant/home-assistant/pull/16192
[#16193]: https://github.com/home-assistant/home-assistant/pull/16193
[#16194]: https://github.com/home-assistant/home-assistant/pull/16194
[#16195]: https://github.com/home-assistant/home-assistant/pull/16195
[#16203]: https://github.com/home-assistant/home-assistant/pull/16203
[#16205]: https://github.com/home-assistant/home-assistant/pull/16205
[#16212]: https://github.com/home-assistant/home-assistant/pull/16212
[#16215]: https://github.com/home-assistant/home-assistant/pull/16215
[#16217]: https://github.com/home-assistant/home-assistant/pull/16217
[#16218]: https://github.com/home-assistant/home-assistant/pull/16218
[#16229]: https://github.com/home-assistant/home-assistant/pull/16229
[#16237]: https://github.com/home-assistant/home-assistant/pull/16237
[#16247]: https://github.com/home-assistant/home-assistant/pull/16247
[#16248]: https://github.com/home-assistant/home-assistant/pull/16248
[#16251]: https://github.com/home-assistant/home-assistant/pull/16251
[#16258]: https://github.com/home-assistant/home-assistant/pull/16258
[#16259]: https://github.com/home-assistant/home-assistant/pull/16259
[#16261]: https://github.com/home-assistant/home-assistant/pull/16261
[#16262]: https://github.com/home-assistant/home-assistant/pull/16262
[#16263]: https://github.com/home-assistant/home-assistant/pull/16263
[#16265]: https://github.com/home-assistant/home-assistant/pull/16265
[#16267]: https://github.com/home-assistant/home-assistant/pull/16267
[#16275]: https://github.com/home-assistant/home-assistant/pull/16275
[#16281]: https://github.com/home-assistant/home-assistant/pull/16281
[#16296]: https://github.com/home-assistant/home-assistant/pull/16296
[#16297]: https://github.com/home-assistant/home-assistant/pull/16297
[#16299]: https://github.com/home-assistant/home-assistant/pull/16299
[#16303]: https://github.com/home-assistant/home-assistant/pull/16303
[#16304]: https://github.com/home-assistant/home-assistant/pull/16304
[#16308]: https://github.com/home-assistant/home-assistant/pull/16308
[#16323]: https://github.com/home-assistant/home-assistant/pull/16323
[#16327]: https://github.com/home-assistant/home-assistant/pull/16327
[#16337]: https://github.com/home-assistant/home-assistant/pull/16337
[#16339]: https://github.com/home-assistant/home-assistant/pull/16339
[#16340]: https://github.com/home-assistant/home-assistant/pull/16340
[#16344]: https://github.com/home-assistant/home-assistant/pull/16344
[#16346]: https://github.com/home-assistant/home-assistant/pull/16346
[#16348]: https://github.com/home-assistant/home-assistant/pull/16348
[#16352]: https://github.com/home-assistant/home-assistant/pull/16352
[#16356]: https://github.com/home-assistant/home-assistant/pull/16356
[#16359]: https://github.com/home-assistant/home-assistant/pull/16359
[#16360]: https://github.com/home-assistant/home-assistant/pull/16360
[#16361]: https://github.com/home-assistant/home-assistant/pull/16361
[#16363]: https://github.com/home-assistant/home-assistant/pull/16363
[#16365]: https://github.com/home-assistant/home-assistant/pull/16365
[#16366]: https://github.com/home-assistant/home-assistant/pull/16366
[#16368]: https://github.com/home-assistant/home-assistant/pull/16368
[#16372]: https://github.com/home-assistant/home-assistant/pull/16372
[#16373]: https://github.com/home-assistant/home-assistant/pull/16373
[#16375]: https://github.com/home-assistant/home-assistant/pull/16375
[#16377]: https://github.com/home-assistant/home-assistant/pull/16377
[#16387]: https://github.com/home-assistant/home-assistant/pull/16387
[#16394]: https://github.com/home-assistant/home-assistant/pull/16394
[#16396]: https://github.com/home-assistant/home-assistant/pull/16396
[#16397]: https://github.com/home-assistant/home-assistant/pull/16397
[#16403]: https://github.com/home-assistant/home-assistant/pull/16403
[#16404]: https://github.com/home-assistant/home-assistant/pull/16404
[#16408]: https://github.com/home-assistant/home-assistant/pull/16408
[#16415]: https://github.com/home-assistant/home-assistant/pull/16415
[#16419]: https://github.com/home-assistant/home-assistant/pull/16419
[#16428]: https://github.com/home-assistant/home-assistant/pull/16428
[#16429]: https://github.com/home-assistant/home-assistant/pull/16429
[#16450]: https://github.com/home-assistant/home-assistant/pull/16450
[#16453]: https://github.com/home-assistant/home-assistant/pull/16453
[#16454]: https://github.com/home-assistant/home-assistant/pull/16454
[#16455]: https://github.com/home-assistant/home-assistant/pull/16455
[#16459]: https://github.com/home-assistant/home-assistant/pull/16459
[#16460]: https://github.com/home-assistant/home-assistant/pull/16460
[#16463]: https://github.com/home-assistant/home-assistant/pull/16463
[#16465]: https://github.com/home-assistant/home-assistant/pull/16465
[#16470]: https://github.com/home-assistant/home-assistant/pull/16470
[#16471]: https://github.com/home-assistant/home-assistant/pull/16471
[#16472]: https://github.com/home-assistant/home-assistant/pull/16472
[#16477]: https://github.com/home-assistant/home-assistant/pull/16477
[#16478]: https://github.com/home-assistant/home-assistant/pull/16478
[#16486]: https://github.com/home-assistant/home-assistant/pull/16486
[#16490]: https://github.com/home-assistant/home-assistant/pull/16490
[#16494]: https://github.com/home-assistant/home-assistant/pull/16494
[#16495]: https://github.com/home-assistant/home-assistant/pull/16495
[#16501]: https://github.com/home-assistant/home-assistant/pull/16501
[#16502]: https://github.com/home-assistant/home-assistant/pull/16502
[#16507]: https://github.com/home-assistant/home-assistant/pull/16507
[#16515]: https://github.com/home-assistant/home-assistant/pull/16515
[#16529]: https://github.com/home-assistant/home-assistant/pull/16529
[#16534]: https://github.com/home-assistant/home-assistant/pull/16534
[#16536]: https://github.com/home-assistant/home-assistant/pull/16536
[#16537]: https://github.com/home-assistant/home-assistant/pull/16537
[#16556]: https://github.com/home-assistant/home-assistant/pull/16556
[#16558]: https://github.com/home-assistant/home-assistant/pull/16558
[#16559]: https://github.com/home-assistant/home-assistant/pull/16559
[#16575]: https://github.com/home-assistant/home-assistant/pull/16575
[#16578]: https://github.com/home-assistant/home-assistant/pull/16578
[#16589]: https://github.com/home-assistant/home-assistant/pull/16589
[#16592]: https://github.com/home-assistant/home-assistant/pull/16592
[@9R]: https://github.com/9R
[@ASMfreaK]: https://github.com/ASMfreaK
[@Cereal2nd]: https://github.com/Cereal2nd
[@Danielhiversen]: https://github.com/Danielhiversen
[@Joshi425]: https://github.com/Joshi425
[@JulianKahnert]: https://github.com/JulianKahnert
[@Kane610]: https://github.com/Kane610
[@MarcSN311]: https://github.com/MarcSN311
[@OverloadUT]: https://github.com/OverloadUT
[@PaulAnnekov]: https://github.com/PaulAnnekov
[@PhracturedBlue]: https://github.com/PhracturedBlue
[@ReneNulschDE]: https://github.com/ReneNulschDE
[@amelchio]: https://github.com/amelchio
[@aronsky]: https://github.com/aronsky
[@awarecan]: https://github.com/awarecan
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bieniu]: https://github.com/bieniu
[@cgtobi]: https://github.com/cgtobi
[@cpw]: https://github.com/cpw
[@danielperna84]: https://github.com/danielperna84
[@dgomes]: https://github.com/dgomes
[@djm300]: https://github.com/djm300
[@domwillcode]: https://github.com/domwillcode
[@endor-force]: https://github.com/endor-force
[@exxamalte]: https://github.com/exxamalte
[@fabaff]: https://github.com/fabaff
[@flo-wer]: https://github.com/flo-wer
[@frenck]: https://github.com/frenck
[@fucm]: https://github.com/fucm
[@grea09]: https://github.com/grea09
[@htotoo]: https://github.com/htotoo
[@ioangogo]: https://github.com/ioangogo
[@jesserizzo]: https://github.com/jesserizzo
[@kariudo]: https://github.com/kariudo
[@kbickar]: https://github.com/kbickar
[@lddubeau]: https://github.com/lddubeau
[@mtdcr]: https://github.com/mtdcr
[@mvn23]: https://github.com/mvn23
[@nudded]: https://github.com/nudded
[@phil65]: https://github.com/phil65
[@pnbruckner]: https://github.com/pnbruckner
[@pszafer]: https://github.com/pszafer
[@pvizeli]: https://github.com/pvizeli
[@rcloran]: https://github.com/rcloran
[@rohankapoorcom]: https://github.com/rohankapoorcom
[@rytilahti]: https://github.com/rytilahti
[@schmittx]: https://github.com/schmittx
[@scop]: https://github.com/scop
[@smurfix]: https://github.com/smurfix
[@tadly]: https://github.com/tadly
[@tamasv]: https://github.com/tamasv
[@teharris1]: https://github.com/teharris1
[@thomasdelaet]: https://github.com/thomasdelaet
[@thomaslian]: https://github.com/thomaslian
[@tschmidty69]: https://github.com/tschmidty69
[@tsvi]: https://github.com/tsvi
[@vikramgorla]: https://github.com/vikramgorla
[@vrih]: https://github.com/vrih
[@zellux]: https://github.com/zellux
[@zoe1337]: https://github.com/zoe1337
[alarm_control_panel.yale_smart_alarm docs]: /components/alarm_control_panel.yale_smart_alarm/
[arlo docs]: /components/arlo/
[asterisk_mbox docs]: /components/asterisk_mbox/
[auth docs]: /components/auth/
[automation docs]: /components/automation/
[automation.event docs]: /docs/automation/trigger/#event-trigger
[automation.homeassistant docs]: /docs/automation/trigger/#home-assistant-trigger
[automation.numeric_state docs]: /docs/automation/trigger/#numeric-state-trigger
[automation.state docs]: /docs/automation/trigger/#state-trigger
[automation.template docs]: /docs/automation/trigger/#template-trigger
[automation.zone docs]: /docs/automation/trigger/#zone-trigger
[binary_sensor.deconz docs]: /components/binary_sensor.deconz/
[binary_sensor.openuv docs]: /components/binary_sensor.openuv/
[camera docs]: /components/camera/
[camera.proxy docs]: /components/camera.proxy/
[camera.push docs]: /components/camera.push/
[climate.generic_thermostat docs]: /components/climate.generic_thermostat/
[climate.nest docs]: /components/climate.nest/
[climate.opentherm_gw docs]: /components/climate.opentherm_gw/
[climate.radiotherm docs]: /components/climate.radiotherm/
[config docs]: /components/config/
[cover.insteon docs]: /components/cover.insteon/
[cover.mqtt docs]: /components/cover.mqtt/
[cover.myq docs]: /components/cover.myq/
[cover.rflink docs]: /components/cover.rflink/
[deconz docs]: /components/deconz/
[device_tracker docs]: /components/device_tracker/
[feedreader docs]: /components/feedreader/
[geo_location docs]: /components/geo_location/
[habitica docs]: /components/habitica/
[hangouts docs]: /components/hangouts/
[homematic docs]: /components/homematic/
[hue docs]: /components/hue/
[insteon docs]: /components/insteon/
[light.deconz docs]: /components/light.deconz/
[light.hue docs]: /components/light.hue/
[light.mqtt docs]: /components/light.mqtt/
[light.tplink docs]: /components/light.tplink/
[media_extractor docs]: /components/media_extractor/
[media_player.cast docs]: /components/media_player.cast/
[media_player.kodi docs]: /components/media_player.kodi/
[media_player.onkyo docs]: /components/media_player.onkyo/
[media_player.songpal docs]: /components/media_player.songpal/
[media_player.sonos docs]: /components/media_player.sonos/
[media_player.webostv docs]: /components/media_player.webostv/
[media_player.yamaha docs]: /components/media_player.yamaha/
[mqtt docs]: /components/mqtt/
[netatmo docs]: /components/netatmo/
[notify docs]: /components/notify/
[openuv docs]: /components/openuv/
[rfxtrx docs]: /components/rfxtrx/
[scene.deconz docs]: /components/scene.deconz/
[script docs]: /components/script/
[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/
[sensor.apcupsd docs]: /components/sensor.apcupsd/
[sensor.darksky docs]: /components/sensor.darksky/
[sensor.deconz docs]: /components/sensor.deconz/
[sensor.dht docs]: /components/sensor.dht/
[sensor.dnsip docs]: /components/sensor.dnsip/
[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/
[sensor.geizhals docs]: /components/sensor.geizhals/
[sensor.habitica docs]: /components/sensor.habitica/
[sensor.lastfm docs]: /components/sensor.lastfm/
[sensor.miflora docs]: /components/sensor.miflora/
[sensor.mvglive docs]: /components/sensor.mvglive/
[sensor.netatmo docs]: /components/sensor.netatmo/
[sensor.netgear_lte docs]: /components/sensor.netgear_lte/
[sensor.openuv docs]: /components/sensor.openuv/
[sensor.qnap docs]: /components/sensor.qnap/
[sensor.sense docs]: /components/sensor.sense/
[sensor.shodan docs]: /components/sensor.shodan/
[sensor.snmp docs]: /components/sensor.snmp/
[sensor.sql docs]: /components/sensor.sql/
[sensor.statistics docs]: /components/sensor.statistics/
[sensor.systemmonitor docs]: /components/sensor.systemmonitor/
[sensor.tahoma docs]: /components/sensor.tahoma/
[sensor.tibber docs]: /components/sensor.tibber/
[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/
[sensor.twitch docs]: /components/sensor.twitch/
[sensor.velbus docs]: /components/sensor.velbus/
[sensor.volkszaehler docs]: /components/sensor.volkszaehler/
[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/
[snips docs]: /components/snips/
[switch.deconz docs]: /components/switch.deconz/
[switch.dlink docs]: /components/switch.dlink/
[switch.snmp docs]: /components/switch.snmp/
[switch.switchbot docs]: /components/switch.switchbot/
[switch.switchmate docs]: /components/switch.switchmate/
[switch.tahoma docs]: /components/switch.tahoma/
[switch.tplink docs]: /components/switch.tplink/
[tahoma docs]: /components/tahoma/
[telegram_bot docs]: /components/telegram_bot/
[tts docs]: /components/tts/
[upnp docs]: /components/upnp/
[vacuum docs]: /components/vacuum/
[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/
[velbus docs]: /components/velbus/
[websocket_api docs]: /components/websocket_api/
[zha docs]: /components/zha/
[zoneminder docs]: /components/zoneminder/

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB