Merge branch 'next' into release-0-56

This commit is contained in:
Fabian Affolter 2017-10-21 13:32:06 +02:00
commit 23567dc9b6
No known key found for this signature in database
GPG Key ID: DDF3D6F44AAB1336
42 changed files with 1613 additions and 543 deletions

39
sass/custom/_print.scss Normal file
View File

@ -0,0 +1,39 @@
@media print {
/* General Overrides */
header div.grid__item nav {
display: none;
}
aside#sidebar {
display: none;
}
.grid__item {
display: block;
width: 100%;
}
/* Components List */
div.filter-button-group {
display: none;
}
.hass-option-cards.show-items {
display: block;
}
.hass-option-cards.show-items a.option-card {
display: block;
opacity: 1;
width: 100%;
height: auto;
min-height: 80px;
margin-bottom: 8px;
}
.hass-option-cards.show-items a.option-card .img-container {
float: left;
width: 33%;
text-align: center;
}
.hass-option-cards.show-items a.option-card div.title {
height: 1.5em;
margin-top: 8px;
}
}

View File

@ -2,3 +2,4 @@
@import 'custom/paulus';
@import 'custom/component_page';
@import 'custom/syntax';
@import 'custom/print';

View File

@ -21,12 +21,14 @@ The component will accept the following commands from your Alarm Panel via the `
- `DISARM`
- `ARM_HOME`
- `ARM_AWAY`
- `ARM_NIGHT`
When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`:
- 'disarmed'
- 'armed_home'
- 'armed_away'
- 'armed_night'
- 'pending'
- 'triggered'
@ -47,6 +49,8 @@ All configuration variables from the base manual alarm platform are available:
- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings
- **pending_time**: State specific pending time override.
Additionally, the following MQTT configuration variables are also available:
@ -56,6 +60,23 @@ Additionally, the following MQTT configuration variables are also available:
- **payload_disarm** (*Optional*): The payload to disarm this Alarm Panel. Default is "DISARM".
- **payload_arm_home** (*Optional*): The payload to set armed-home mode on this Alarm Panel. Default is "ARM_HOME".
- **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY".
- **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT".
In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds.
```yaml
# Example configuration.yaml entry
alarm_control_panel:
- platform: manual_mqtt
state_topic: home/alarm
command_topic: home/alarm/set
pending_time: 30
armed_home:
pending_time: 0
triggered:
pending_time: 20
trigger_time: 4
```
## {% linkable_title Examples %}
@ -70,11 +91,13 @@ To change the state of the alarm, publish one of the following messages to the `
- `DISARM`
- `ARM_HOME`
- `ARM_AWAY`
- `ARM_NIGHT`
To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes:
- `disarmed`
- `armed_home`
- `armed_away`
- `armed_night`
- `pending`
- `triggered`

View File

@ -27,8 +27,7 @@ If you want to select a specific sensor, set discovery to False for [netatmo](/c
binary_sensor:
platform: netatmo
home: home_name
timeout: 15
offset: 90
timeout: 90
cameras:
- camera_name1
welcome_sensors:
@ -45,8 +44,7 @@ binary_sensor:
Configuration variables:
- **home** (*Optional*): Will use the cameras of this home only.
- **timeout** (*Optional*): The Welcome binary sensors will reflect the events from the last X minutes. (default: 15)
- **offset** (*Optional*): The Presence binary sensors will stay on for X seconds after detection. (default: 90)
- **timeout** (*Optional*): The Welcome/Presence binary sensors will stay on for X seconds after detection. (default: 90)
- **cameras** array (*Optional*): Cameras to use. Multiple entities allowed.
- 'camera_name': Name of the camera to display.
- **welcome_sensors** array (*Optional*): List of monitored conditions.

View File

@ -183,7 +183,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl
#### {% linkable_title Xiaomi Cube %}
Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`.
Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. The component stores the last action as the attribute `last_action`.
```yaml
- alias: Cube event flip90

View File

@ -0,0 +1,96 @@
---
layout: page
title: "Yi Home Camera"
description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant."
date: 2017-10-10 13:00
sidebar: true
comments: false
sharing: true
footer: true
logo: yi.png
ha_category: Camera
ha_release: 0.56
ha_iot_class: "Local Polling"
---
The `yi` camera platform allows you to utilize Yi Home Cameras within Home
Assistant. Specifically, this platform supports the line of Yi Home Cameras
that are based on the Hi3518e Chipset; these include:
* Yi Home 17CN
* Yi 1080p Home
* Yi Dome
* Yi 1080p Dome
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 Assitant, it is necessary to install
a custom firmware on the device. Instructions for doing so can be found via the
[yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3).
Once installed, please ensure that you have enabled FTP and Telnet on your
device.
<p class='note warning'>
Some alternative Yi firmwares enable an experimental RTSP server, which will
allow you to connect to your camera via other Home Assistant camera platforms.
However, this RTSP server disables the ability to use the supremely-useful Yi
Home app. In order to maintain both Home Assistant compatibility _and_ the native
app, this platform retrieves videos via FTP.
</p>
### {% linkable_title Changing the FTP Password %}
Once the custom firmware is installed, a password must be added to the FTP
server. To do so:
1. Telnet into your camera: `telnet <IP ADDRESS>`.
2. Enter `root` as the username and `<blank>` as the password.
3. Type `passwd` and hit `<Enter>`.
4. Enter your new password twice.
5. Log out of Telnet.
## {% linkable_title Configuring the Platform %}
To enable the platform, add the following lines to your
`configuration.yaml` file:
```yaml
camera:
- platform: yi
host: '192.168.1.100'
password: my_password_123
```
Configuration variables:
- **host** (*Required*): the IP address or hostname of the camera
- **password** (*Required*): the password to the FTP server on the camera (from above)
- **username** (*Optional*): the user that can access the FTP server (default: `root`)
- **name** (*Optional*): a human-friendly name for the camera
- **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 the `ffmpeg` client 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: yi
name: My Camera
host: '192.168.1.100'
password: my_password_123
ffmpeg_arguments: '-vf scale=800:450'
```

View File

@ -33,5 +33,6 @@ Configuration variables:
- **password** (*Required*): The password for your given admin account.
- **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard).
- **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem".
- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -0,0 +1,102 @@
---
layout: page
title: "Google Assistant"
description: "Setup for Google Assistant integration"
date: 2017-10-17 12:30
sidebar: true
comments: false
sharing: true
footer: true
logo: google-assistant.png
ha_category: Voice
featured: true
ha_release: 0.56
---
# Google Assistant Docs
The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
### {% linkable_title Configuration %}
```yaml
# Example configuration.yaml entry
google_assistant:
project_id: someproject-2d0b8
client_id: [long URL safe random string]
access_token: [a different long URL safe random string]
exposed_domains:
- switch
- light
- group
```
*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance.
*Configuration Variables:*
* *expose_by_default* (Optional): Expose devices in all supported domains by default.
* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`)
* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth.
* *access_token* (Required): Another different long random URL safe string.
* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant.
You can also customize your devices similar to other components by adding keys to entities:
```yaml
homeassistant:
customize:
master_bedroom_light:
google_assistant: true
google_assistant_name: bedroom light
bedroom_blinds:
aliases:
- bedroom shades
- bedroom covers
```
*Entity Customization Keys:*
* *google_assistant*: True exposes entity, false will hide it
* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used.
* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken.
### {% linkable_title Setup %}
1. Install the [gactions CLI](https://developers.google.com/actions/tools/gactions-cli) (you'll use this later)
2. Create a new file named `project.json` and replace the `[YOUR HOME ASSISTANT URL]` below with the URL you use to access Home Assistant.
Note: This must be an HTTPS URL to work.
```json
{
"actions": [{
"name": "actions.devices",
"deviceControl": {
},
"fulfillment": {
"conversationName": "automation"
}
}],
"conversations": {
"automation" :
{
"name": "automation",
"url": "https://[YOUR HOME ASSISTANT URL]/api/google_assistant"
}
}
}
```
3. Create a new project in the [developer console](https://console.actions.google.com/).
1. Add/Import project
2. Go to Build under the Actions SDK box
3. Copy the command that looks like:
`gactions update --action_package PACKAGE_NAME --project doctest-2d0b8`
4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in. It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` Go there.
5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant.
6. The final item on that page `Account linking` is required for your app to interact with Home Assistant.
1. Grant type: `Implicit`
2. Client ID: Should be the same as `client_id` from your hass config above
3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth`
4. Configure your client. Add scopes for `email` and `name`
5. Testing instructions: doesn't matter since you won't submit this app
7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window.
8. Open the Google Assistant app and go into `Settings > Home Control`
9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices.

View File

@ -76,10 +76,10 @@ knx:
fire_event_filter: ["1/0/*", "6/2,3,4-6/*"]
```
* **fire_event** (Optional) if set to True, platform will write all received KNX messages to event bus
* **fire_event_filter** If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HASS event bus.
* **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus
* **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HASS event bus.
* **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour.
Service
-------
@ -93,7 +93,7 @@ Service Data: {"address": "1/0/15", "payload": 0}
```
* **address**: KNX group address
* **payload** : payload, either an integer or an array of integers
* **payload**: Payload, either an integer or an array of integers

View File

@ -9,7 +9,7 @@ sharing: true
footer: true
logo: tesla.png
ha_category: Lock
ha_iot_class: "Coud Push"
ha_iot_class: "Cloud Push"
ha_release: 0.53
---

View File

@ -0,0 +1,49 @@
---
layout: page
title: "Monoprice 6-Zone Amplifier"
description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant."
date: 2017-10-02 11:45
sidebar: true
comments: false
sharing: true
footer: true
logo: monoprice.svg
ha_category: Media Player
ha_release: 0.56
ha_iot_class: "Local Polling"
---
The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection.
To add a Monoprice device to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
media_player:
- platform: monoprice
port: /dev/ttyUSB0
zones:
11:
name: Main Bedroom
12:
name: Living Room
13:
name: Kitchen
14:
name: Bathroom
15:
name: Dining Room
16:
name: Guest Bedroom
sources:
1:
name: Sonos
5:
name: Chromecast
```
Configuration variables:
- **port** (*Required*): The serial port to which Monoprice amplifier is connected
- **zones** (*Required*): This is the list of zones available. Valid zones are 11,12,13,14,15,16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21,22,23,24,25,26 for the second device and 31,32,33,34,35,36 for the third device. Each zone must have a name assigned to it.
- **sources** (*Required*): The list of sources available. Valid source numbers are 1,2,3,4,5,6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it.

View File

@ -35,6 +35,7 @@ Configuration variables:
- **recipient** (*Required*): The Jabber ID (JID) that will receive the messages.
- **tls** (*Optional*): Allow to disable TLS. Defaults to `true`.
- **verify** (*Optional*): Allow disabling SSL certificate validity check (e.g., self-signed certificate). Defaults to `true`.
- **room** (*Optional*): Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the sender.
All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender.

View File

@ -66,6 +66,7 @@ Configuration variables:
- **apparent_temperature_max**: Today's expected apparent high temperature.
- **apparent_temperature_min**: Today's expected apparent low temperature.
- **precip_intensity_max**: Today's expected maximum intensity of precipitation.
- **uv_index**: The current UV index.
- **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`, and `uk2`.
`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:

View File

@ -35,7 +35,7 @@ Configuration variables:
- **name** (*Optional*): The name of the sensor.
- **state_topic** (*Optional*): The topic that contains all subtopics for the rooms.
- **timeout** (*Optional*): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed.
- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `away` if there were no updates. `0` disables the check and is the default.
- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `not_home` if there were no updates. `0` disables the check and is the default.
Example JSON that should be published to the room topics:

View File

@ -17,6 +17,8 @@ The `plex` sensor platform will monitor activity on a given [Plex Media Server](
If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored.
If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436).
If you want to enable the plex sensor, add the following lines to your `configuration.yaml`:
```yaml
@ -33,4 +35,4 @@ Configuration variables:
- **username** (*Optional*): The username for the remote Plex server.
- **password** (*Optional*): The password for your given account on the remote Plex server.
- **server** (*Optional*): The name of your remote Plex server.
- **token** (*Optional*): X-Plex-Token of your remote Plex server.

View File

@ -0,0 +1,55 @@
---
layout: page
title: "Serial Sensor"
description: "Instructions how to integrate data from serial connected sensors into Home Assistant."
date: 2017-10-13 07:00
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: Sensor
ha_release: 0.56
ha_iot_class: "Local Polling"
---
The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system.
To check what kind of data is arriving at your serial port, use a command-line tool like `minicom` or `picocom` on Linux, on a macOS you can use `screen` or on Windows `putty`.
```bash
$ sudo minicom -D /dev/ttyACM0
```
To setup a serial sensor to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: serial
port: /dev/ttyACM0
```
{% configuration %}
port:
description: Local serial port where the sensor is connected and access is granted.
required: true
type: string
name:
description: Friendly name to use for the frontend. Default to "Serial sensor".
required: false
type: string
{% endconfiguration %}
## {% linkable_title `value_template` for Template sensor %}
### {% linkable_title TMP36 %}
{% raw %}
```yaml
"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}"
```
{% endraw %}

View File

@ -27,6 +27,7 @@ sensor:
- 'current_status'
- 'download_speed'
- 'upload_speed'
- 'active_torrents'
```
Configuration variables:
@ -40,6 +41,7 @@ Configuration variables:
- **current_status**: The status of your Transmission daemon.
- **download_speed**: The current download speed.
- **upload_speed**: The current upload speed.
- **active_torrents**: The current number of active torrents.
To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed.

View File

@ -0,0 +1,30 @@
---
layout: page
title: "Uptime Sensor"
description: "Instructions how to integrate an uptime sensor into Home Assistant."
date: 2017-10-13 10:30
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Sensor
ha_iot_class: "Local Pushing"
logo: home-assistant.png
ha_release: 0.56
---
The `uptime` sensor platform displays the time since the last Home Assistant restart.
To enable this sensor, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
sensor:
- platform: uptime
```
Configuration variables:
- **name** (*Optional*): Name of the sensor. Defaults to `Uptime`.
- **unit_of_measurement** (*Optional*): Units for uptime measurement in either `days` or `hours`. Defaults to `days`.

View File

@ -0,0 +1,20 @@
---
layout: page
title: "Tesla Switch"
description: "Instructions on how to integrate Tesla charging switch into Home Assistant."
date: 2017-09-19 12:20
sidebar: true
comments: false
sharing: true
footer: true
logo: tesla.png
ha_category: Switch
ha_iot_class: "Cloud Push"
ha_release: 0.54
---
The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) charger (enable/disable charging) from within Home Assistant.
The switch platform will be automatically configured if Tesla component is configured.
For more configuration information see the [Tesla component](/components/tesla/) documentation.

View File

@ -27,150 +27,4 @@ The requirement is that you have setup [Wink](/components/wink/).
- Rachio sprinkler controller (No Wink hub required)
- iHome smart plug (No Wink hub required)
- Wink switch groups (User created groups of switches)
- GoControl siren and strobe
- Dome siren and chime
### {% linkable_title Service `wink_set_siren_auto_shutoff` %}
You can use the service wink/wink_set_siren_auto_shutoff to set how long the siren will sound before shuting off.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome)
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren.
Example:
```yaml
script:
set_all_sirens_to_one_minute_auto_shutoff:
sequence:
- service: wink.wink_set_siren_auto_shutoff
data:
auto_shutoff: 60
```
<p class='note'>
The following services only work with the Dome siren/chime.
</p>
### {% linkable_title Service `wink_set_chime_volume` %}
You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `volume` | no | String. One of ["low", "medium", "high"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_chime_volume_to_low_for_all_chimes
sequence:
- service: wink.wink_set_chime_volume
data:
volume: "low"
```
### {% linkable_title Service `wink_set_siren_volume` %}
You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `volume` | no | String. One of ["low", "medium", "high"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_siren_volume_to_low_for_all_sirens
sequence:
- service: wink.wink_set_siren_volume
data:
volume: "low"
```
### {% linkable_title Service `wink_enable_chime` %}
You can use the service wink/wink_enable_chime to set the tone and enable the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
execute_doorbell
sequence:
- service: wink.wink_enable_chime
data:
tone: "doorbell"
```
### {% linkable_title Service `wink_set_siren_tone` %}
You can use the service wink/wink_set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_siren_to_alert:
sequence:
- service: wink.wink_set_siren_tone
data:
tone: "alert"
```
### {% linkable_title Service `wink_set_siren_strobe_enabled` %}
You can use the service wink/wink_set_siren_strobe_enabled to enable or disable the strobe when the siren is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `enabled` | no | Boolean. True or False.
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
disable_siren_strobe:
sequence:
- service: wink.wink_set_siren_strobe_enabled
data:
enabled: False
```
### {% linkable_title Service `wink_set_chime_strobe_enabled` %}
You can use the service wink/wink_set_chime_strobe_enabled to enable or disable the strobe when the chime is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `enabled` | no | Boolean. True or False.
| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime.
Example:
```yaml
script:
disable_chime_strobe:
sequence:
- service: wink.wink_set_chime_strobe_enabled
data:
enabled: False
```

View File

@ -22,6 +22,7 @@ This component provides the following platforms:
- Device tracker - to track location of your car
- Lock - Door lock. Enables you to control Tesla's door lock
- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system.
- Switch - Charger switch. Allow you to start/stop charging.
To use Tesla in your installation, add the following to your `configuration.yaml` file:

View File

@ -16,42 +16,6 @@ ha_release: 0.43
The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network.
For this to work, you need to install a modified lib-coap library.
<p class='note warning'>
This component does **not** work on Windows, as the modified lib-coap doesn't exists for Windows.
</p>
<p class='note'>
If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled.
</p>
Linux:
```bash
$ sudo apt-get install libtool
$ sudo apt-get install autoconf
$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
$ cd libcoap
$ ./autogen.sh
$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
$ make
$ sudo make install
```
macOS:
```bash
$ brew install libtool
$ brew install autoconf
$ brew install automake
$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
$ cd libcoap
$ ./autogen.sh
$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
$ make
$ make install
```
You will be prompted to configure the gateway through the Home Assistant interface, Enter the security key when prompted and click configure
<p class='note'>

View File

@ -1,7 +1,7 @@
---
layout: page
title: "Xiaomi Mi Robot Vacuum"
description: "Instructions how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant."
description: "Instructions on how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant."
date: 2017-05-05 18:11
sidebar: true
comments: false
@ -13,16 +13,29 @@ ha_release: 0.51
ha_iot_class: "Local Polling"
---
The `xiaomi miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/).
The `xiaomi miio` vacuum platform allows you to control the state of your
[Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/).
Current supported features are `turn_on`, `pause`, `stop`, `return_to_home`, `turn_off` (stops goes to dock), `locate`, `clean_spot`, `set_fanspeed` and even remote control your robot.
Currently supported features are:
Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file.
- `turn_on`
- `pause`
- `stop`
- `return_to_home`
- `turn_off` (stop all activity and return to dock)
- `locate`
- `clean_spot`
- `set_fanspeed`
- remote control of your robot.
To add a vacuum to your installation, add the following to your `configuration.yaml` file:
Please follow [Retrieving the Access Token](/components/vacuum.xiaomi/#retrieving-the-access-token) to retrieve the API token used in
`configuration.yaml`.
## {% linkable_title Configuring the Platform %}
To add a vacuum to your installation, add the following to `configuration.yaml`:
```yaml
# Example configuration.yaml entry
vacuum:
- platform: xiaomi_miio
host: 192.168.1.2
@ -35,77 +48,99 @@ Configuration variables:
- **token** (*Required*): The API token of your robot.
- **name** (*Optional*): The name of your robot.
### {% linkable_title Platform services %}
## {% linkable_title Platform Services %}
In addition to all [`vacuum` component services](/components/vacuum#component-services) (`turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, `set_fanspeed` and `send_command`), the `xiaomi` platform introduces specific services to access the remote control mode of the botvac.
In addition to [all of the services provided by the `vacuum` component]
]) (`turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`,
`set_fanspeed` and `send_command`), the `xiaomi` platform introduces specific
services to access the remote control mode of the robot. These are:
These are: `xiaomi_remote_control_start`, `xiaomi_remote_control_stop`, `xiaomi_remote_control_move` and `xiaomi_remote_control_move_step`.
- `xiaomi_remote_control_start`
- `xiaomi_remote_control_stop`
- `xiaomi_remote_control_move`
- `xiaomi_remote_control_move_step`
#### {% linkable_title Service `vacuum/xiaomi_remote_control_start` %}
### {% linkable_title Service `vacuum/xiaomi_remote_control_start` %}
Start the remote control mode of the vacuum cleaner. You can then move it with `remote_control_move`, when done call `remote_control_stop`.
Start the remote control mode of the robot. You can then move it with
`remote_control_move`; when done, call `remote_control_stop`.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific botvac. Else targets all. |
| `entity_id` | yes | Only act on specific robot; default targets all |
#### {% linkable_title Service `vacuum/xiaomi_remote_control_stop` %}
### {% linkable_title Service `vacuum/xiaomi_remote_control_stop` %}
Exit the remote control mode of the vacuum cleaner.
Exit the remote control mode of the robot.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific botvac. Else targets all. |
| `entity_id` | yes | Only act on specific robot; default targets all |
#### {% linkable_title Service `vacuum/xiaomi_remote_control_move` %}
### {% linkable_title Service `vacuum/xiaomi_remote_control_move` %}
Remote control the vacuum cleaner, make sure you first set it in remote control mode with `remote_control_start`.
Remote control the robot. Please ensure you first set it in remote control
mode with `remote_control_start`.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific botvac. Else targets all. |
| `velocity` | no | Speed, between -0.29 and 0.29. |
| `rotation` | no | Rotation, between -179 degrees and 179 degrees. |
| `duration` | no | Parameter affecting the duration of the movement. |
| `entity_id` | yes | Only act on specific robot; default targets all |
| `velocity` | no | Speed: between -0.29 and 0.29 |
| `rotation` | no | Rotation: between -179 degrees and 179 degrees |
| `duration` | no | The number of seconds that the robot should move for |
#### {% linkable_title Service `vacuum/xiaomi_remote_control_move_step` %}
### {% linkable_title Service `vacuum/xiaomi_remote_control_move_step` %}
Use this call to enter the remote control mode, make one move, and stop and exit the remote control mode.
Enter remote control mode, make one move, stop, and exit remote control mode.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific botvac. Else targets all. |
| `velocity` | no | Speed, between -0.29 and 0.29. |
| `rotation` | no | Rotation, between -179 degrees and 179 degrees. |
| `duration` | no | Parameter affecting the duration of the movement. |
| `entity_id` | yes | Only act on specific robot; default targets all |
| `velocity` | no | Speed: between -0.29 and 0.29. |
| `rotation` | no | Rotation: between -179 degrees and 179 degrees. |
| `duration` | no | The number of seconds that the robot should move for |
### {% linkable_title Attributes %}
## {% linkable_title Attributes %}
In addition to all [`vacuum` component attributes] (`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, `params`), the `xiaomi` platform introduces specific attributes to get information of the botvac.
In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes),
(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and
`params`), the `xiaomi` platform introduces specific attributes. These are:
These are: `cleaning_time`, `do_not_disturb`, `main_brush_left`, `side_brush_left`, `filter_left`, `cleaning_count`, `total_cleaned_area` and `total_cleaning_time`.
- `cleaning_time`
- `do_not_disturb`
- `main_brush_left`
- `side_brush_left`
- `filter_left`
- `cleaning_count`
- `total_cleaned_area`
- `total_cleaning_time`
The following table shows the units of measurement for the single attributes.
The following table shows the units of measurement for each attribute:
| Attribute | Unit of measurement | Description |
|---------------------------|---------------------|-------------------------------------------------------|
| `do_not_disturb` | | DND mode on / off |
| `cleaning_time` | minutes | Last / actual cleaning time in minutes |
| `cleaned_area` | square meter | Last / actual cleaned area in square meter |
| `cleaned_area` | square meter | Last / actual cleaned area in square meters |
| `main_brush_left` | hours | Hours left until a change of the main brush is needed |
| `side_brush_left` | hours | Hours left until a change of the side brush is needed |
| `filter_left` | hours | Hours left until a change of the filter is needed |
| `cleaning_count` | | Number of total cleaning passage |
| `total_cleaned_area` | square meter | Total cleaned area in square meter |
| `cleaning_count` | | Number of total cleaning cycles |
| `total_cleaned_area` | square meter | Total cleaned area in square meters |
| `total_cleaning_time` | minutes | Total cleaning time in minutes |
### {% linkable_title Retrieving the Access Token %}
## {% linkable_title Retrieving the Access Token %}
<p class='note'>
This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum and Xiaomi Philips Light. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars) which can be obtained easily via a hidden menu item at the Mi-Home app.
This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot
Vacuum and Xiaomi Philips Lights. The Xiaomi Gateway uses another security
method and requires a `key` (16 alphanumeric chars), which can be obtained
easily via a hidden menu item at the Mi-Home app.
</p>
#### {% linkable_title Windows and Android %}
Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone.
Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly.
@ -123,8 +158,6 @@ $ source /srv/homeassistant/bin/activate
To fetch the token follow these instructions depending on your mobile phone platform.
#### {% linkable_title Windows and Android %}
1. Configure the robot with the Mi-Home app.
2. Enable developer mode and USB debugging on the Android phone and plug it into the computer.
3. Get and install the [ADB tool for Windows](https://developer.android.com/studio/releases/platform-tools.html).
@ -152,10 +185,44 @@ $ java.exe -jar ../android-backup-extractor/abe.jar unpack backup.ab backup.tar
#### {% linkable_title Linux and Android (rooted!) %}
1. Configure the light with the Mi-Home app.
Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone.
Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly.
```bash
$ sudo apt-get install libffi-dev libssl-dev
```
If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below.
```bash
$ sudo su -s /bin/bash homeassistant
$ source /srv/homeassistant/bin/activate
```
To fetch the token follow these instructions depending on your mobile phone platform.
1. Configure the robot with the Mi-Home app.
2. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer.
3. Get ADB f.e. `apt-get install android-tools-adb`
4. `adb devices` should list your device
5. `adb root` (does work for development builds only: ones with `ro.debuggable=1`)
6. `adb shell`
7. `echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db` returns a list of all registered devices including IP address and token.
#### {% linkable_title iOS %}
1. Configure the robot with the Mi-Home app.
2. Using iTunes, create an unencrypted backup of your iPhone.
3. Install [iBackup Viewer](Get ADB f.e. `apt-get install android-tools-adb`), open it, and open your backup.
4. Open the "Raw Data" module.
5. Navigate to `com.xiaomi.mihome`.
6. Search for a file that looks like this: `123456789_mihome.sqlite` note that `_mihome.sqlite` is *not* the correct file.
7. Save this file to your filesystem.
8. Install [DB Browser for SQLite](http://sqlitebrowser.org/).
9. Open DB Browser and load the `.sqlite` file you saved from your backup.
10. Click on the `Execute SQL` tab.
11. Input and run this query: `SELECT ZTOKEN FROM ZDEVICE WHERE ZNAME = "Mi Robot Vacuum"`
12. Copy the returned 32-digit hexadecimal string to your clipboard.
13. Open `Terminal` and execute this command: `echo '0: <YOUR HEXADECIMAL STRING>' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000`
14. Use the resulting string as your token.

View File

@ -145,3 +145,153 @@ Home Assistant entity_ids for Wink devices are based on the Wink device's name.
The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).
</p>
### Custom Wink devices and their services
- GoControl siren and strobe
- Dome siren/chime/strobe
### {% linkable_title Service `set_siren_auto_shutoff` %}
You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shuting off.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome)
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren.
Example:
```yaml
script:
set_all_sirens_to_one_minute_auto_shutoff:
sequence:
- service: wink.set_siren_auto_shutoff
data:
auto_shutoff: 60
```
<p class='note'>
The following services only work with the Dome siren/chime.
</p>
### {% linkable_title Service `set_chime_volume` %}
You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `volume` | no | String. One of ["low", "medium", "high"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_chime_volume_to_low_for_all_chimes
sequence:
- service: wink.set_chime_volume
data:
volume: "low"
```
### {% linkable_title Service `set_siren_volume` %}
You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `volume` | no | String. One of ["low", "medium", "high"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_siren_volume_to_low_for_all_sirens
sequence:
- service: wink.set_siren_volume
data:
volume: "low"
```
### {% linkable_title Service `enable_chime` %}
You can use the service wink/enable_chime to set the tone and enable the chime on your Dome siren/chime.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
execute_doorbell
sequence:
- service: wink.enable_chime
data:
tone: "doorbell"
```
### {% linkable_title Service `set_siren_tone` %}
You can use the service wink/set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"]
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
set_siren_to_alert:
sequence:
- service: wink.set_siren_tone
data:
tone: "alert"
```
### {% linkable_title Service `set_siren_strobe_enabled` %}
You can use the service wink/set_siren_strobe_enabled to enable or disable the strobe when the siren is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `enabled` | no | Boolean. True or False.
| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime.
Example:
```yaml
script:
disable_siren_strobe:
sequence:
- service: wink.set_siren_strobe_enabled
data:
enabled: False
```
### {% linkable_title Service `set_chime_strobe_enabled` %}
You can use the service wink/set_chime_strobe_enabled to enable or disable the strobe when the chime is executed.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `enabled` | no | Boolean. True or False.
| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime.
Example:
```yaml
script:
disable_chime_strobe:
sequence:
- service: wink.set_chime_strobe_enabled
data:
enabled: False
```

View File

@ -1,8 +1,8 @@
---
layout: page
title: "Z-Wave"
description: "Instructions how to integrate your existing Z-Wave within Home Assistant."
date: 2016-02-27 19:59
description: "Using Z-Wave with Home Assistant."
date: 2017-09-21 10:59
sidebar: true
comments: false
sharing: true
@ -10,252 +10,25 @@ footer: true
redirect_from: /getting-started/z-wave/
---
[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host.
[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](/docs/z-wave/controllers/)) to be plugged into the host.
There is currently support for climate, covers, lights, locks, sensors, switches, and thermostats. All will be picked up automatically after configuring this platform.
Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks.
### {% linkable_title Installation %}
## {% linkable_title What is Z-Wave %}
There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems):
Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable.
```bash
$ sudo apt-get install libudev-dev
```
When installing on macOS you may have to also run the command below ahead of time, replace "x.x" with the version of Python you have installed.
There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components.
```bash
sudo /Applications/Python\ x.x/Install\ Certificates.command
```
The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits.
### {% linkable_title Configuration %}
## {% linkable_title What do you need to use Z-Wave %}
```yaml
# Example configuration.yaml entry
zwave:
usb_path: /dev/ttyUSB0
```
There are 2 basic things you'll need to use Z-Wave, a Z-Wave [controller](/docs/z-wave/controllers/) and one or more [devices](/docs/z-wave/devices/).
Configuration variables:
### {% linkable_title Regional differences %}
- **usb_path** (*Optional*): The port where your device is connected to your Home Assistant host.
- **network_key** (*Optional*): The 16-byte network key in the form `"0x01,0x02..."` used in order to connect securely to compatible devices.
- **config_path** (*Optional*): The path to the Python OpenZWave configuration files. Defaults to the 'config' that is installed by python-openzwave
- **autoheal** (*Optional*): Allows disabling auto Z-Wave heal at midnight. Defaults to True.
- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems.
- **device_config** (*Optional*): This attribute contains node-specific override values:
- **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled.
- **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
- **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False.
- **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds.
- **invert_openclose_buttons** (*Optional*): Inverts function of the open and close buttons for the cover domain. Defaults to `False`.
- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to `False`.
- **new_entity_ids** (*Optional*): Switch to new entity_id generation. Defaults to `True`.
There are 12 different regions for Z-Wave devices, which relates to the frequency the devices use. There is overlap between the regions, but you should ensure that you buy devices for your region. Wikipedia has a list of the [frequencies used](https://en.wikipedia.org/wiki/Z-Wave#Radio_frequencies).
To find the path of your Z-Wave USB stick or module, run:
```bash
$ ls /dev/ttyUSB*
```
Or, if there is no result, try to find detailed USB connection info with:
```bash
$ dmesg | grep USB
```
Or, on some other systems (such as Raspberry Pi), use:
```bash
$ ls /dev/ttyACM*
# If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with:
$ sudo usermod -a -G dialout homeassistant
```
Or, on some other systems (such as Pine 64), use:
```bash
$ ls /dev/ttyS*
```
Or, on macOS, use:
```bash
$ ls /dev/cu.usbmodem*
```
<p class='note'>
Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/).
</p>
<p class='note'>
After installing and configuring Z-Wave, Home Assistant will try to install required Python Z-Wave libraries during startup (if they are not already installed). This process might take anywhere between 5 to 25 minutes depending upon various factors. Please be patient, and let it run! This happens only once and the subsequent restarts will have no impact in performance.
</p>
### {% linkable_title Adding Devices %}
To add a Z-Wave device to your system, go to the Z-Wave panel in the Home Assistant frontend and click the Add Node button in the Z-Wave Network Management card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device.
<p class='note'>
Some Z-Wave controllers, like Aeotec ZW090 Z-Stick Gen5, have ability to add devices to the network using their own contol buttons. This method should be avoided as it is prone to errors. Devices added to the Z-Wave network using this method may not function well.
</p>
### {% linkable_title Adding Security Devices %}
Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices.
An easy script to generate a random key:
```bash
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g'
```
### {% linkable_title Battery Powered Devices %}
Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.
### {% linkable_title Events %}
#### {% linkable_title zwave.network_complete %}
Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.
```yaml
- alias: Z-Wave network is complete
trigger:
platform: event
event_type: zwave.network_complete
```
#### {% linkable_title zwave.network_ready %}
Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.
```yaml
- alias: Z-Wave network is ready
trigger:
platform: event
event_type: zwave.network_ready
```
#### {% linkable_title zwave.network_start %}
Home Assistant will trigger an event when the Z-Wave network is set up to be started.
```yaml
- alias: Z-Wave network is starting
trigger:
platform: event
event_type: zwave.network_start
```
#### {% linkable_title zwave.network_stop %}
Home Assistant will trigger an event when the Z-Wave network is stopping.
```yaml
- alias: Z-Wave network is stopping
trigger:
platform: event
event_type: zwave.network_stop
```
#### {% linkable_title zwave.node_event %}
Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.
Example:
```yaml
- alias: Minimote Button Pressed
trigger:
platform: event
event_type: zwave.node_event
event_data:
entity_id: zwave.aeon_labs_minimote_1
basic_level: 255
```
The *object_id* and *basic_level* of all triggered events can be seen in the console output.
#### {% linkable_title zwave.scene_activated %}
Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch):
```yaml
# Example configuration.yaml automation entry
automation:
- alias: Turn on Desk light
trigger:
platform: event
event_type: zwave.scene_activated
event_data:
entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller_8
scene_id: 11
```
Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button:
```yaml
# Example configuration.yaml automation entry
automation
- alias: 'Dining room dimmer - double tap up'
trigger:
- event_type: zwave.scene_activated
platform: event
event_data:
entity_id: zwave.dining_room_cans
scene_id: 1
scene_data: 3
```
The *object_id* and *scene_id* of all triggered events can be seen in the console output.
For more information on HomeSeer devices and similar devices, please see the [device specific page](https://home-assistant.io/docs/z-wave/device-specific/#homeseer-switches).
### {% linkable_title Services %}
The `zwave` component exposes multiple services to help maintain the network.
| Service | Description |
| ------- | ----------- |
| add_node | Put the Z-Wave controller in inclusion mode. Allows one to add a new device to the Z-Wave network.|
| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows one to add a new device with secure communications to the Z-Wave network. |
| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. |
| change_association | Add or remove an association in the Z-Wave network |
| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. |
| print_config_parameter | Prints Z-Wave node's config parameter value to the log. |
| print_node | Print all state of Z-Wave node. |
| refresh_entity| Refresh Z-Wave entity by refreshing dependent values.|
| refresh_node| Refresh Z-Wave node. |
| remove_node | Put the Z-Wave controller in exclusion mode. Allows one to remove a device from the Z-Wave network.|
| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. |
| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail.|
| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.|
| reset_node_meters | Reset a node's meter values. Only works if the node supports this. |
| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). |
| set_poll_intensity | Lets the user set the polling intensity of a value. Changes the polling intensity without the need of a restart. This does not persist over restarts. To keep the setting over restarts, use the Z-Wave entity-card to set the config also.
| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.|
| start_network | Starts the Z-Wave network.|
| stop_network | Stops the Z-Wave network.|
| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead."|
The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. If you're having issues with your Z-Wave network, try disabling this automation.
```yaml
# Example configuration.yaml automation entry
automation:
- alias: soft reset at 2:30am
trigger:
platform: time
at: '2:30:00'
action:
service: zwave.soft_reset
- alias: heal at 2:31am
trigger:
platform: time
at: '2:31:00'
action:
service: zwave.heal_network
```

View File

@ -0,0 +1,36 @@
---
layout: page
title: "Z-Wave Devices - Adding and Removing"
description: "How to add and remove Z-Wave devices."
date: 2016-02-27 19:59
sidebar: true
comments: false
sharing: true
footer: true
---
To add (include) a Z-Wave [device](/docs/z-wave/devices/) to your system, go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend and click the **Add Node** button in the *Z-Wave Network Management* card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device.
<p class='warning'>
Don't use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.
</p>
When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible.
## {% linkable_title Adding Security Devices %}
Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method.
An easy script to generate a random key:
```bash
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
```
<p class='warning'>
Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
</p>
## {% linkable_title Removing Devices %}
To remove (exclude) a Z-Wave device from your system, go to the Z-Wave control panel in the Home Assistant frontend and click the **Remove Node** button in the *Z-Wave Network Management* card. This will place the controller in exclusion mode, after which you should activate your device to be excluded by following the instructions provided with the device.

View File

@ -0,0 +1,106 @@
---
layout: page
title: "Z-Wave Control Panel"
description: "How to use the Z-Wave control panel."
date: 2017-09-21 12:49
sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/z-wave-panel/
---
## {% linkable_title Z-Wave Network Management %}
Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices from your network.
* **Add Node** puts the controller into inclusion mode, so you can include (add) a device to your Z-Wave network
* **Add Node Secure** puts the controller into secure inclusion mode (this requires that you've created a [security key](/docs/z-wave/adding#sdding-security-devices))
* **Remove Node** puts the controller into exclusion mdoe, so you can exclude (remove) a device. Note that you can exclude a non-secure device that's been added to another network
* **Cancel Command** cancels any of the above
* **Heal Network** tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.
* **Start Network** starts the Z-Wave network
* **Stop Network** stops the Z-Wave network
* **Soft Reset** tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command, and may cause the Z-Wave network to hang.
* **Test Network** tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead".
## {% linkable_title Z-Wave Node Management %}
* **Refresh Node** refreshes the information on the node and its entities. If used on a battery powered device, the device will first need to wake for this to work.
* **Remove Failed Node** will remove a failed node from the network. The node needs to be on the controller's Failed Node List (marked as `is_failed: true`), otherwise this command will fail.
* **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.
* **Print Node** prints all state of Z-Wave node to the console log
* **Rename Node** sets a node's name
<p class='note'>
Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.
</p>
#### {% linkable_title Entities of this node %}
This is a dropdown where you can select all the entities of this node. Once selected you can then use:
* **Refresh Entity** to refresh just that entity's values
* **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc)
Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network.
You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it.
### {% linkable_title Node Information %}
This will display the Z-Wave related information about the node:
* **averageRequestRTT** The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second.
* **averageResponseRTT** The average Round Trip Time of responses to requests
* **battery_level** *Battery powered devices only* - the battery level, which may be rounded to the nearest 10
* **capabilities** A comma separated list of the capabilities of the device
* **friendly_name** The name you specified to be displayed
* **is_awake** Whether the device is awake or not
* **is_failed** Whether the device has been marked as failed. The controller won't try to contact failed devices.
* **is_info_received** True once the controller has received the node information from the node.
* **is_ready** When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren't yet ready.
* **is_zwave_plus** True for any Z-Wave Plus devices (note that controllers always report *false*, regardless of whether they are Plus devices or not)
* **lastRequestRTT** The Round Trip Time of the last request
* **lastResponseRTT** The Round Trip Time of the response to the last request
* **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave
* **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher
* **new_entity_id** In 0.47, Home Assistant introduced a new naming convention for entities, this shows the new naming convention
* **node_id** The unique node ID of this node
* **node_name** The base name of this node, this is used to build the entity ID of all entities of this node
* **old_entity_id** If `new_entity_ids: false` has been configured, then this is the entity_id that will be used. Support for this will be removed in the future
* **product_name** The product name of the device, as supplied by OpenZWave
* **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details)
* **receivedCnt** The number of messages received from the device
* **receivedDups** The number of duplicate messages received from the device
* **receivedTS** The date and time the last message was received from the devices
* **receivedUnsolicited** How many unsolicited messages were received
* **retries** How many retries have been made to send messages to this node
* **sentCnt** How many messages have been sent to the node
* **sentFailed** How many messages that were sent weren't acknowledged
* **sentTS** The date and time the last message was sent to the ndoe
* **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds
### {% linkable_title Node Values %}
Allows you to rename the entities of the node. For example, maybe for the sensor `front_door`, you want to rename the value `seismic_intensity` to `shake`. The `entity_id` for that sensor will then change from `sensor.front_door_seismic_intensity` to `sensor.front_door_shake`.
### {% linkable_title Node group associations %}
Where the device supports the *Association* command class, this will allow you to associate the device with another. OpenZWave will automatically associate the device with the controller, to provide instant updates when the device doesn't support the *Hail* command class.
You can use this to enable one device to directly control another. This is primarily useful for remote controls that operate lights or switches, or where you want to have multiple devices operate as one.
There may be multiple groups, that are used for different purposes. The manual of your device will explain what each group is for.
### {% linkable_title Node config options %}
You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered.
Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake.
## {% linkable_title OZW Log %}
Select **Refresh** to display the log if you need it to check activities.

View File

@ -7,23 +7,23 @@ sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/z-wave-controllers/
---
Z-Wave is a popular home automation protocol that is not always straightforward to setup. This page will try to help you make sense of it all.
<p class='note'>
Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expedite this process.
</p>
## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %}
You need to have a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) installed.
| Device | Works on Linux | Works on Windows | Works on OSX |
|-------------------------|----------------|------------------|--------------|
| Aeotec Z-Stick | &#10003; | | |
| Aeotec Z-Stick Series 2 | &#10003; | | |
| Aeotec Z-Stick Series 5 | &#10003; | | &#10003; |
| Pine64 Z-Wave Module | &#10003; | | |
| Razberry GPIO Module | &#10003; | | |
| Seluxit ViaSens 100 | | | |
| Sigma Designs UZB Stick | | | |
| Tricklestar | | | |
| Vision USB Stick | | | |
| ZWave.me UZB1 | &#10003; | | |
## {% linkable_title Stick Alternatives %}
@ -32,3 +32,13 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support
- [Vera](/components/vera/)
- [Wink](/components/wink/)
## {% linkable_title Controller Notes %}
### {% linkable_title Aoetec Stick %}
By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick)
### {% linkable_title Razberry Board %}
You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board)

View File

@ -1,7 +1,7 @@
---
layout: page
title: "Z-Wave Device Specific Settings"
description: "Extended instructions how to setup Z-Wave."
description: "Notes for specific Z-Wave devices."
date: 2016-03-24 08:49 -0700
sidebar: true
comments: false
@ -10,43 +10,50 @@ footer: true
redirect_from: /getting-started/z-wave-device-specific/
---
## {% linkable_title Motion or alarm sensors %}
## {% linkable_title Device Categories %}
### {% linkable_title Motion or alarm sensors %}
In order for Home Assistant to recognize the sensor properly, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`.
These devices will either show as a binary sensor or a sensor called `Alarm xxxx` and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.
As of version 0.30 you can set the settings of a Z-Wave device through the dev_service page of Home Assistant with the service: `zwave/set_config_parameter`.
You can set the settings of the Z-Wave device through the Z-Wave control panel.
The following parameters can be entered:
- **node_id** (*Required*): The node_id of the device that you are going to set a parameter to.
- **parameter** (*Required*): The index number of the parameter to be set. Refer to device manual or zwcfg_[home_id].xml
- **value** (*Required*): The value to set the parameter to. Refer to device manual or zwcfg_[home_id].xml
- **size** (*Optional*): The size of the value. It is normally not needed to specify this parameter, but in some cases it's needed. Check OZW.log for details on this.
### {% linkable_title Locks and other secure devices %}
You should check OZW.log to see if your new setting has been set.
These devices require a network key to be set for the Z-Wave network before they are paired, using the **Add Node Secure** option.
Example entry in dev-service, setting binary reports for an Aeotec Multisensor 6:
Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection.
### {% linkable_title Specific Devices %}
```yaml
# Example entry in dev-service
{
"node_id": 42,
"parameter": 5,
"value": 2
}
### {% linkable_title Aeotec Z-Stick %}
It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off.
Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected.
Turn off "Disco lights":
```bash
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00
```
## {% linkable_title Locks and other secure devices %}
Turn on "Disco lights":
These devices require a network key to be set for the Z-Wave network before they are paired. This key is set in OpenZWave's `options.xml` which is located in OpenZWave's directory. This should also be the same directory as `config_path:` in your `configuration.yaml`. If it's not, make sure you have the same values in all the files you are using.
The option is commented out by default in `options.xml` and is a default key. Make your own unique key. The key is in Hexadecimals.
It is best to pair these devices in OpenZWave Control Panel or another Z-Wave tool that can show you logs while pairing. Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory.
You should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection. If you use OpenZWave Control Panel to pair, test the device before you save the configuration.
Make sure you copy the newly saved `zwcfg_[home_id].xml`into your Home Assistant configuration directory.
```bash
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00
```
### {% linkable_title Razberry Board %}
##### {% linkable_title Aeon Minimote %}
You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`, then rebooting:
```
dtoverlay=pi3-disable-bt
```
### {% linkable_title Aeon Minimote %}
Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`.
@ -124,8 +131,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
scene_id: 8
```
##### {% linkable_title HomeSeer Switches %}
### {% linkable_title HomeSeer Switches %}
For the HomeSeer devices specifically, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following:

View File

@ -0,0 +1,74 @@
---
layout: page
title: "Z-Wave Devices"
description: "What you need to know about Z-Wave devices."
date: 2017-09-21 11:49
sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/z-wave-devices/
---
## {% linkable_title Devices, Nodes, Entities, what? %}
The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices:
* [Controllers](/docs/z-wave/controllers) - all Z-Wave networks need to have one of these, though some may have two (a primary and a secondary)
* Sensors - devices that tell you about the environment, these could be flood sensors, motion sensors, temperature sensors and so on
* Actors or actuators - devices that change their environment, for example light switches, dimmers, thermostats (many of these will also have a sensor function)
Many sensors and actors can directly control other devices through a capability called *association*, without the use of an automation, these are known as *routing slaves*. This will be a very simple control, such as turning a light on when a motion sensor is activated, and off when it stops detecting motion.
The *node* is the presence of the device on the Z-Wave mesh. Once you've added a device to Home Assistant, the node is represented by an `entity_id` that starts with `zwave`.
The *entity* is an individual component of the node. It may be a sensor that you read from, or a control that you operate. For any node, there will be at least one entity (for the node itself) and if it exposes any controls or sensors there will be at least one entity per control or sensor. The [entities](/docs/z-wave/entities) that are created depend on the Command Class the device supports.
## {% linkable_title Z-Wave, Plus, Security 2 %}
There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible.
### {% linkable_title Z-Wave Plus %}
The key improvements are:
* Improved battery life (50% increase)
* Improved range (50% increase) if all your devices are Z-Wave Plus
* Higher bandwidth and improved noise immunity if all your devices are Z-Wave Plus
* Improved self-healing and fault tolerance
### {% linkable_title Z-Wave Security 2 %}
From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (September 2017) OpenZWave does not support the S2 framework.
## {% linkable_title Device power %}
Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time.
Battery powered devices spend most of their time asleep, unable to relay traffic, to be queried, or receive changes. Changes sent while a device is asleep will be queued and sent the next time the device wakes. Details of the default wake interval, and how to manually wake the device (if supported) will be detailed in the devices's manual. Some battery powered devices (primarily locks and thermostats) support beaming (the *Beam* command class) that allows them to be remotely woken. This does require that all devices in the network responsible for relaying the commands between the controller and the device also support beaming.
<p class='note'>
The Z-Wave capability *routing* doesn't mean the device routes traffic, it actually means that it's able to control other devices. You'll see this capability on most remotes and switches.
</p>
## {% linkable_title Instant Status %}
Older designs of Z-Wave devices may not support *Instant Status* (the *Hail* command class), because of a patent that was held by Lutron Electronics. Some manufacturers paid to use it, others didn't and so those devices may not report on changes. That patent expired in 2016, so new designs should support this.
As long as your device lists Hail or Association in its Controlled Command Classes, then you'll get instant status updates. Devices that list Central Scene in their Controlled Command Classes in theory will also work this way, once OpenZWave supports the Central Scene class. You can check your device on the [Z-Wave alliance](https://products.z-wavealliance.org/) site, looking at the **Command Classes** link, then at the **Controlled Command Classes** section.
## {% linkable_title Polling %}
Where a device doesn't send updates on status changes to the controller, you can work around this by using a thing called Polling. That causes the controller to ask the device to provide an update on all its sensors and states. This will cause a lot of traffic on the network, and if you poll too many devices too quickly, you can effectively break your Z-Wave network. Polling should only be used where there is no other choice, and you should use as large a polling interval as possible. Ideally you should replace the device.
For example, with `polling_interval=60000` (which is the default) if you have 10 devices that are being polled, if a device can receive and acknowledge the poll within one second, then it will take 10 seconds to complete the polling list, which leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that's available for normal traffic.
## {% linkable_title Central Scene support %}
The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches).
## {% linkable_title Is my device supported %}
You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave github](https://github.com/OpenZWave/open-zwave/tree/master/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months.
Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed.

View File

@ -0,0 +1,179 @@
---
layout: page
title: "Z-Wave Entity Naming"
description: "A summary of common entity names."
date: 2017-09-21 10:59
sidebar: true
comments: false
sharing: true
footer: true
---
<p class='note'>
This is a work in progress, based upon reports in the forum, the author's own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here, or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS).
</p>
## {% linkable_title Binary Sensor %}
Devices that support the Binary Sensor command class will create one (or more) entities starting with `binary_sensor`. For example, if the node is `door_sensor` then the binary sensor entity will be `binary_sensor.door_sensor`.
These will normally be `on` when the sensor is active, otherwise they will be `off`. Some devices use `on` for closed, and some use `on` for open, and some devices allow you to change how they report.
## {% linkable_title Alarm %}
This is for a single purpose sensor, multi sensors are explained under Multi Sensor.
Devices (usually sensors) that support the Alarm command class will create entities starting with `sensor`, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector `lounge` will have an entity `sensor.lounge_smoke`, and possibly also `sensor.lounge_alarm_type` and `sensor.lounge_alarm_level`. If the device creates a `binary_sensor` entity, it is recommended to use that rather then the `sensor` entity.
### {% linkable_title Alarm Type %}
- **alarm_type**: Reports the type of the sensor
- **0**: General purpose
- **1**: Smoke sensor
- **2**: Carbon Monoxide (CO) sensor
- **3**: Carbon Dioxide (CO2) sensor
- **4**: Heat sensor
- **5**: Water leak sensor
- **6**: Access control
### {% linkable_title Alarm Level %}
The meaning of the `alarm_level` entity depends on the nature of the alarm sensor
#### {% linkable_title Smoke, CO, and CO2 %}
- **1**: Detection - will include a Node Location Report
- **2**: Detection (unknown location)
- **254**: Unknown event
#### {% linkable_title Heat %}
- **1**: Overheat detected - will include a Node Location Report
- **2**: Overheat detected (unknown location)
- **3**: Rapid temperature rise - will include a Node Location Report
- **4**: Rapid temperature rise (unknown location)
- **5**: Underheat detection - will include a Node Location Report
- **6**: Underheat detection (unknown location)
- **254**: Unknown event
#### {% linkable_title Water leak %}
- **1**: Water leak detected - will include a Node Location Report
- **2**: Water leak detected (unknown location)
- **3**: Water level dropped - will include a Node Location Report
- **4**: Water level dropped (unknown location)
- **254**: Unknown event
#### {% linkable_title Access control %}
- **1**: Manual lock
- **2**: Manual unlock
- **3**: RF lock
- **4**: RF unlock
- **5**: Keypad lock - will include the User Identifier of the User Code Report
- **6**: Keypad unlock - will include the User Identifier of the User Code Report
- **254**: Unknown event
#### {% linkable_title Burglar %}
- **1**: Intrusion - will include a Node Location Report
- **2**: Intrusion (unknown location)
- **3**: Tampering (case opened)
- **4**: Tampering (invalid code)
- **5**: Glass break - will include a Node Location Report
- **6**: Glass break (invalid code)
- **254**: Unknown event
#### {% linkable_title Power Management %}
- **1**: Power applied
- **2**: AC disconnected
- **3**: AC re-connected
- **4**: Surge detection
- **5**: Voltage drop or drift
- **254**: Unknown event
#### {% linkable_title System Alarm %}
- **1**: System hardware failure
- **2**: System software failure
- **254**: Unknown event
#### {% linkable_title Emergency Alarm %}
- **1**: Contact Police
- **2**: Contact Fire Service
- **3**: Contact Medical Service
- **254**: Unknown event
#### {% linkable_title Alarm Clock %}
- **1**: Wake up
- **254**: Unknown event
### {% linkable_title Access Control %}
- **access_control**: These *may* vary between brands
- **22**: Open
- **23**: Closed
- **254**: Deep sleep
- **255**: Case open
If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
```
sensor:
- platform: template
sensors:
YOUR_SENSOR:
sensor_class: opening
friendly_name: "Friendly name here"
value_template: >-
{%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%}
open
{%- else -%}
closed
{%- endif -%}
```
### {% linkable_title Burglar %}
- **burglar**: These *may* vary between brands
- **0**: Not active
- **2**: Smoke (?)
- **3**: Tamper
- **8**: Motion
- **22**: Open
- **23**: Closed
- **254**: Deep sleep
- **255**: Case open
If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
```
sensor:
- platform: template
sensors:
YOUR_SENSOR:
sensor_class: motion
friendly_name: "Friendly name here"
value_template: >-
{%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%}
on
{%- else -%}
off
{%- endif -%}
```
### {% linkable_title Source Node ID %}
- **sourcenodeid**: Reports the sensor that generated the alarm - this is only valid for Zensor Net based devices
## {% linkable_title Multisensor %}
Multi sensor devices will create a number of entities, one for each sensor, potentially a `binary_sensor` entity, and probably also `alarm_type` and `alarm_level` entities.
These are all generally self explanatory, however it's worth noting:
- **ultraviolet** sensors will usually report zero indoors, as UVB is blocked by glass
- **luminance** sensors should report in [Lux](https://en.wikipedia.org/wiki/Lux)

View File

@ -0,0 +1,106 @@
---
layout: page
title: "Z-Wave Events"
description: "Events generated by the Z-Wave component."
date: 2017-09-21 10:59
sidebar: true
comments: false
sharing: true
footer: true
---
## {% linkable_title zwave.network_complete %}
Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.
```yaml
- alias: Z-Wave network is complete
trigger:
platform: event
event_type: zwave.network_complete
```
## {% linkable_title zwave.network_ready %}
Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.
```yaml
- alias: Z-Wave network is ready
trigger:
platform: event
event_type: zwave.network_ready
```
## {% linkable_title zwave.network_start %}
Home Assistant will trigger an event when the Z-Wave network is set up to be started.
```yaml
- alias: Z-Wave network is starting
trigger:
platform: event
event_type: zwave.network_start
```
## {% linkable_title zwave.network_stop %}
Home Assistant will trigger an event when the Z-Wave network is stopping.
```yaml
- alias: Z-Wave network is stopping
trigger:
platform: event
event_type: zwave.network_stop
```
## {% linkable_title zwave.node_event %}
Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.
Example:
```yaml
- alias: Minimote Button Pressed
trigger:
platform: event
event_type: zwave.node_event
event_data:
entity_id: zwave.aeon_labs_minimote
basic_level: 255
```
The *entity_id* and *basic_level* of all triggered events can be seen in the console output.
## {% linkable_title zwave.scene_activated %}
Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch):
```yaml
# Example configuration.yaml automation entry
automation:
- alias: Turn on Desk light
trigger:
platform: event
event_type: zwave.scene_activated
event_data:
entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller
scene_id: 11
```
Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button:
```yaml
# Example configuration.yaml automation entry
automation
- alias: 'Dining room dimmer - double tap up'
trigger:
- event_type: zwave.scene_activated
platform: event
event_data:
entity_id: zwave.dining_room_cans
scene_id: 1
scene_data: 3
```
The *entity_id* and *scene_id* of all triggered events can be seen in the console output.
For more information on HomeSeer devices and similar devices, please see the [device specific page](/docs/z-wave/device-specific/#homeseer-switches).

View File

@ -0,0 +1,159 @@
---
layout: page
title: "Z-Wave"
description: "Installation of the Z-Wave component."
date: 2017-09-21 10:00
sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/z-wave-installation/
---
As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. This also introduced the integrated Z-Wave control panel, removing the need for the OpenZWave control panel.
There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems):
```bash
$ sudo apt-get install libudev-dev
```
<p class='note'>
The installation of python-openzwave can take half an hour or more on a Raspbery Pi.
</p>
## {% linkable_title Configuration %}
```yaml
# Example configuration.yaml entry
zwave:
usb_path: /dev/ttyUSB0
```
{% configuration zwave %}
usb_path:
description: The port where your device is connected to your Home Assistant host.
required: false
type: string
default: /zwaveusbstick
network_key:
description: The 16-byte network key in the form `"0x01, 0x02..."` used in order to connect securely to compatible devices.
required: false
type: string
default: None
config_path:
description: The path to the Python OpenZWave configuration files.
required: false
type: string
default: the 'config' that is installed by python-openzwave
autoheal:
description: Allows disabling auto Z-Wave heal at midnight.
required: false
type: boolean
default: True
polling_interval:
description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems.
required: false
type: integer
default: 60000
debug:
description: Print verbose z-wave info to log.
required: false
type: boolean
default: False
new_entity_ids:
description: Switch to new entity_id generation.
required: false
type: boolean
default: True
device_config:
description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format.
required: false
type: string, list
keys:
ignored:
description: Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
required: false
type: boolean
default: False
polling_intensity:
description: Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled.
required: false
type: integer
default: 0
refresh_value:
description: Enable refreshing of the node value. Only the light component uses this.
required: false
type: boolean
default: False
delay:
description: Specify the delay for refreshing of node value. Only the light component uses this.
required: false
type: integer
default: 2
invert_openclose_buttons:
description: Inverts function of the open and close buttons for the cover domain.
required: false
type: boolean
default: False
{% endconfiguration %}
### {% linkable_title Finding the controller path on Linux %}
To find the path of your Z-Wave USB stick or module, connect it to your system and run:
```bash
$ ls -ltr /dev/tty*|tail -n 1
```
That will give you a line that looks something like this:
```bash
crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0
```
Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like `/dev/ttyAMA0` or `/dev/ttyACM0`). The number will be zero for the first device connected, and higher numbers for later devices.
Or, if there is no result, try to find detailed USB connection info with:
```bash
$ dmesg | grep USB
```
If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with:
```bash
$ sudo usermod -a -G dialout homeassistant
```
<p class='Note'>
The output from `ls -ltr` above contains the following information
The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`.
</p>
#### {% linkable_title Creating a Persistent Device Path %}
Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/).
### {% linkable_title Finding the controller path on macOS %}
On macOS you can find the USB stick with:
```bash
$ ls /dev/cu.usbmodem*
```
### {% linkable_title Network Key %}
Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices.
An easy script to generate a random key:
```bash
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
```
Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
## {% linkable_title First Run %}
Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may speed up this process.

View File

@ -0,0 +1,32 @@
---
layout: page
title: "Z-Wave Query Stage"
description: "What are the Query Stages."
date: 2017-09-21 11:49
sidebar: true
comments: false
sharing: true
footer: true
---
| Stage | Description |
|------------------------|--------------------------------------------------------------------|
| None | Query process hasn't started for this node |
| ProtocolInfo | Retrieve protocol information |
| Probe | Ping device to see if alive |
| WakeUp | Start wake up process if a sleeping node |
| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us |
| NodeInfo | Retrieve info about supported, controlled command classes |
| NodePlusInfo | Retrieve ZWave+ info and update device classes |
| SecurityReport | Retrieve a list of Command Classes that require Security |
| ManufacturerSpecific2 | Retrieve manufacturer name and product ids |
| Versions | Retrieve version information |
| Instances | Retrieve information about multiple command class instances |
| Static | Retrieve static information (doesn't change) |
| CacheLoad | Ping a device upon restarting with cached config for the device |
| Associations | Retrieve information about associations |
| Neighbors | Retrieve node neighbor list |
| Session | Retrieve session information (changes infrequently) |
| Dynamic | Retrieve dynamic information (changes frequently) |
| Configuration | Retrieve configurable parameter information (only done on request) |
| Complete | Query process is completed for this node |

View File

@ -0,0 +1,59 @@
---
layout: page
title: "Z-Wave Services"
description: "Services exposed by the Z-Wave component."
date: 2017-09-21 10:59
sidebar: true
comments: false
sharing: true
footer: true
---
The `zwave` component exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel.
| Service | Description |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. |
| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. |
| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. |
| change_association | Add or remove an association in the Z-Wave network |
| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. |
| print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. |
| print_node | Print all states of Z-Wave node. |
| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. |
| refresh_node | Refresh the Z-Wave node. |
| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. |
| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. |
| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. |
| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. |
| reset_node_meters | Reset a node's meter values. Only works if the node supports this. |
| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). |
| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. |
| start_network | Starts the Z-Wave network. |
| stop_network | Stops the Z-Wave network. |
| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." |
The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation.
<p class='note'>
Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang.
</p>
```yaml
# Example configuration.yaml automation entry
automation:
- alias: test at 2:30am
trigger:
platform: time
at: '2:30:00'
action:
service: zwave.test_network
- alias: heal at 2:32am
trigger:
platform: time
at: '2:32:00'
action:
service: zwave.heal_network
```

View File

@ -1,31 +0,0 @@
---
layout: page
title: "Z-Wave Settings"
description: "Extended instructions how to setup Z-Wave."
date: 2016-03-24 08:49 -0700
sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/z-wave-settings/
---
You may wish to modify the Z-Wave settings in your `ozw*.xml` file (stored in the `.homeassistant` configuration directory), or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image.
The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the `.homeassistant` configuration directory acts as a settings/values cache for the Z-Wave network, so modifying it directly won't change the network values. The [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel) writes values directly to the network and will provide you with an updated `.xml` file to overwrite in your `.homeassistant` configuration directory. This is the most foolproof way to make modifications to your Z-Wave devices.
It's totally normal for your Z-Wave stick (Aeon Aeotec Z-Stick Gen5 for example) to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off.
Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected.
Turn off "Disco lights":
```bash
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00
```
Turn on "Disco lights":
```bash
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00
```

View File

@ -32,7 +32,7 @@
<meta name="twitter:description" content="{{ fb_description | truncate:200 }}">
<meta name="twitter:image" content="{{ social_image }}">
<link href="{{ root_url }}/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
<link href="{{ root_url }}/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
<link href="{{ root_url }}{{ site.subscribe_rss }}" rel="alternate" title="{{ site.title }}" type="application/atom+xml">
<link rel='shortcut icon' href='{{ root_url }}/images/favicon.ico' />
<link rel='icon' type='image/png' href='{{ root_url }}/images/favicon-192x192.png' sizes='192x192' />

View File

@ -16,10 +16,10 @@ og_image: /images/blog/2017-10-0.55/components.png
Beside the improved Wink support which was contributed by [@w1ll1am23], ships this release a wide variety of new components and platforms. The `input_slider` components has received a makeover by [@BioSehnsucht] and is now [`input_number`][input_number docs]. [@tinloaf] added a feature that allows you to enter dates: [`input_datetime`][input_datetime docs]. Both will help you to improve your automation rules.
## {% linkable_title DuckDNS %}
Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for no Hass.io users to get a similar feature.
Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for non Hass.io users to get a similar feature.
## {% linkable_title Recorder %}
The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allow to handle this task when needed.
The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allows you to handle this task when needed.
## {% linkable_title Owntracks %}
[Owntracks](http://owntracks.org/) is an easy way to track your devices. For some times we have the device tracker which depends on [MQTT][device_tracker.owntracks docs] but thanks to a new feature in Owntracks we can now offer support for HTTP. The [new platform][device_tracker.owntracks_http docs] doesn't require a MQTT broker but sends messages directly as HTTP requests to Home Assistant.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 420 60"
style="enable-background:new 0 0 420 60;"
xml:space="preserve"
inkscape:version="0.91 r"
sodipodi:docname="monoprice.svg"><metadata
id="metadata3500"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs3498" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview3496"
showgrid="false"
inkscape:zoom="4.1404762"
inkscape:cx="210"
inkscape:cy="1.0178263"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g3457" /><style
type="text/css"
id="style3455">
.st0{fill:#FFFFFF;}
</style><g
id="g3457"><path
class="st0"
d="M51.3,4.4C57.2,4.4,62,9.2,62,15.1v29.9c0,5.9-4.8,10.7-10.7,10.7H21.4c-5.9,0-10.7-4.8-10.7-10.7V15.1 c0-5.9,4.8-10.7,10.7-10.7H51.3 M53.3,25.2c0-2-0.7-3.7-2.1-5.1c-1.4-1.4-3.1-2.1-5.1-2.1c-2,0-3.7,0.7-5.1,2.1 c-1.4,1.4-2.1,3.1-2.1,5.1v7.3c0,1.6-0.8,2.4-2.4,2.4c-1.6,0-2.4-0.8-2.4-2.4v-6.8v-0.4c0-2-0.7-3.7-2.1-5.1 c-1.4-1.4-3.1-2.1-5.1-2.1c-2,0-3.7,0.7-5.1,2.1c-1.4,1.4-2.1,3.1-2.1,5.1v14.5c0,1.6,0.8,2.4,2.4,2.4s2.4-0.8,2.4-2.4V25.2h0 c0-1.6,0.8-2.4,2.4-2.4c1.6,0,2.4,0.8,2.4,2.4v7.3c0,2,0.7,3.7,2.1,5.1c1.4,1.4,3.1,2.1,5.1,2.1c2,0,3.7-0.7,5.1-2.1 c1.4-1.4,2.1-3.1,2.1-5.1V32v-6.8c0-1.6,0.8-2.4,2.4-2.4c1.6,0,2.4,0.8,2.4,2.4h0l0,14.5c0,1.6,0.8,2.4,2.4,2.4 c1.6,0,2.4-0.8,2.4-2.4V25.2z"
id="path3459"
style="fill:#000000" /><path
class="st0"
d="M146,12c5.4,0,9.9,1.7,13.5,5.1c3.6,3.4,5.4,7.7,5.4,12.9c0,5.2-1.8,9.5-5.5,12.8c-3.6,3.4-8.2,5.1-13.8,5.1 c-5.3,0-9.7-1.7-13.2-5.1c-3.5-3.4-5.3-7.6-5.3-12.7c0-5.2,1.8-9.6,5.3-13C136.1,13.7,140.6,12,146,12z M146.2,16.8 c-4,0-7.3,1.3-9.9,3.8c-2.6,2.5-3.9,5.7-3.9,9.6c0,3.8,1.3,6.9,3.9,9.4c2.6,2.5,5.8,3.8,9.7,3.8c3.9,0,7.2-1.3,9.8-3.8 c2.6-2.6,3.9-5.8,3.9-9.6c0-3.7-1.3-6.8-3.9-9.4C153.2,18,150,16.8,146.2,16.8z"
id="path3461"
style="fill:#000000" /><path
class="st0"
d="M202.8,12.3h4.8v35.4h-4.4l-23.7-27.3v27.3h-4.8V12.3h4.1l23.9,27.5V12.3z"
id="path3463"
style="fill:#000000" /><path
class="st0"
d="M236.2,12c5.4,0,9.9,1.7,13.5,5.1c3.6,3.4,5.4,7.7,5.4,12.9c0,5.2-1.8,9.4-5.4,12.8c-3.6,3.4-8.2,5.1-13.7,5.1 c-5.3,0-9.7-1.7-13.2-5.1c-3.5-3.4-5.3-7.6-5.3-12.7c0-5.2,1.8-9.6,5.3-13C226.3,13.8,230.7,12,236.2,12z M236.4,16.8 c-4,0-7.3,1.3-9.9,3.8c-2.6,2.5-3.9,5.7-3.9,9.6c0,3.8,1.3,6.9,3.9,9.4c2.6,2.5,5.8,3.8,9.7,3.8c3.9,0,7.2-1.3,9.8-3.8 c2.6-2.6,3.9-5.7,3.9-9.5c0-3.7-1.3-6.8-3.9-9.4C243.4,18.1,240.2,16.8,236.4,16.8z"
id="path3465"
style="fill:#000000" /><path
class="st0"
d="M265.1,47.7V12.3h11.2c3.4,0,6.1,0.9,8.1,2.7s3,4.3,3,7.3c0,2.1-0.5,3.9-1.5,5.5c-1,1.6-2.4,2.7-4.2,3.5 c-1.8,0.7-4.4,1.1-7.7,1.1h-3.7v15.3H265.1z M275.4,16.8h-5.2v11.1h5.5c2.1,0,3.6-0.5,4.8-1.5c1.1-1,1.7-2.4,1.7-4.2 C282.2,18.6,279.9,16.8,275.4,16.8z"
id="path3467"
style="fill:#000000" /><path
class="st0"
d="M322.6,45.2c-0.7-1-1.7-2.5-3-4.5c-2-3.2-3.5-5.4-4.6-6.7c-0.8-0.9-1.5-1.6-2.3-2.3c0.4-0.1,0.8-0.2,1.1-0.4 c1.8-0.7,3.2-1.9,4.2-3.5c1-1.6,1.5-3.4,1.5-5.5c0-3.1-1-5.5-3-7.3c-2-1.8-4.7-2.7-8.1-2.7h-11.2v35.4h5.1V32.4h2.4 c1,0.1,1.7,0.2,2.2,0.5c0.7,0.4,1.5,1,2.4,1.9c0.9,0.9,1.8,2,2.9,3.5l1.7,2.8l1.6,2.6l1,1.4c0.2,0.2,0.3,0.3,0.3,0.4l1.5,2.3h6 L322.6,45.2z M302.5,16.8h5.2c4.5,0,6.7,1.8,6.7,5.4c0,1.8-0.6,3.2-1.7,4.2c-1.1,1-2.7,1.5-4.8,1.5h-5.5V16.8z"
id="path3469"
style="fill:#000000" /><path
class="st0"
d="M332.6,12.3h5.1v35.4h-5.1V12.3z"
id="path3471"
style="fill:#000000" /><path
class="st0"
d="M379,39.4V45c-3.7,2-7.9,3-12.8,3c-3.9,0-7.3-0.8-10-2.4s-4.9-3.7-6.5-6.5c-1.6-2.8-2.4-5.8-2.4-9 c0-5.1,1.8-9.4,5.5-12.9c3.6-3.5,8.1-5.2,13.5-5.2c3.7,0,7.8,1,12.3,2.9v5.4c-4.1-2.3-8.1-3.5-12-3.5c-4,0-7.4,1.3-10,3.8 c-2.7,2.5-4,5.7-4,9.5c0,3.9,1.3,7,3.9,9.5c2.6,2.5,6,3.7,10,3.7C370.8,43.4,374.9,42.1,379,39.4z"
id="path3473"
style="fill:#000000" /><path
class="st0"
d="M388.6,12.3h20.1v4.5h-15v10.8h14.5v4.5h-14.5v11h15.5v4.5h-20.6V12.3z"
id="path3475"
style="fill:#000000" /><g
id="g3477"
style="fill:#000000"><path
class="st0"
d="M98.9,39.5L98.9,39.5l10.6-27.2h7.7v35.4h-5V18.1h-0.1l-11.8,29.6h-3.2L85.5,18.1h-0.1v29.6h-4.8V12.3h7.7 L98.9,39.5z"
id="path3479"
style="fill:#000000" /></g></g><g
id="XMLID_235_" /><g
id="XMLID_236_" /><g
id="XMLID_237_" /><g
id="XMLID_238_" /><g
id="XMLID_239_" /><g
id="XMLID_240_" /><g
id="XMLID_241_" /><g
id="XMLID_242_" /><g
id="XMLID_243_" /><g
id="XMLID_244_" /><g
id="XMLID_245_" /><g
id="XMLID_246_" /><g
id="XMLID_247_" /><g
id="XMLID_248_" /><g
id="XMLID_249_" /></svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB