2
.gitignore
vendored
@ -11,3 +11,5 @@ source/stylesheets/screen.css
|
|||||||
vendor
|
vendor
|
||||||
node_modules
|
node_modules
|
||||||
source/.jekyll-metadata
|
source/.jekyll-metadata
|
||||||
|
*.iml
|
||||||
|
.idea/
|
@ -138,10 +138,10 @@ social:
|
|||||||
|
|
||||||
# Home Assistant release details
|
# Home Assistant release details
|
||||||
current_major_version: 0
|
current_major_version: 0
|
||||||
current_minor_version: 41
|
current_minor_version: 42
|
||||||
current_patch_version: 0
|
current_patch_version: 0
|
||||||
date_released: 2017-03-25
|
date_released: 2017-04-08
|
||||||
|
|
||||||
# Either # or the anchor link to latest release notes in the blog post.
|
# Either # or the anchor link to latest release notes in the blog post.
|
||||||
# Must be prefixed with a # and have double quotes around it.
|
# Must be prefixed with a # and have double quotes around it.
|
||||||
#patch_version_notes: "#release-0411---march-xx"
|
patch_version_notes: "#"
|
||||||
|
31
source/_components/alarm_control_panel.totalconnect.markdown
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Honeywell TotalConnect Alarm Control Panel"
|
||||||
|
description: "Instructions how to integrate TotalConnect alarms into Home Assistant."
|
||||||
|
date: 2017-04-02 22:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: honeywell-tc.png
|
||||||
|
ha_category: Alarm
|
||||||
|
ha_release: 0.42
|
||||||
|
---
|
||||||
|
|
||||||
|
The `totalconnect` platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies
|
||||||
|
|
||||||
|
To enable this, add the following lines to your `configuration.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
alarm_control_panel:
|
||||||
|
platform: totalconnect
|
||||||
|
username: YOUR_USERNAME
|
||||||
|
password: YOUR_PASSWORD
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
- **name** (*Optional*): Name of device in HomeAssistant
|
||||||
|
- **username** (*Required*): Username used to sign into the TotalConnect app/web client.
|
||||||
|
- **password** (*Required*): Password used to sign into the TotalConnect app/web client.
|
||||||
|
|
@ -13,9 +13,9 @@ ha_release: 0.35
|
|||||||
ha_iot_class: "Local Push"
|
ha_iot_class: "Local Push"
|
||||||
---
|
---
|
||||||
|
|
||||||
The Hikvision Binary Sensor is a platform that parses the event stream of a [Hikvision IP Camera](http://www.hikvision.com/) and presents the camera events to Home Assistant as binary sensors with either an "off" or "on" state.
|
The Hikvision Binary Sensor is a platform that parses the event stream of a [Hikvision IP Camera or NVR](http://www.hikvision.com/) and presents the camera/nvr events to Home Assistant as binary sensors with either an "off" or "on" state.
|
||||||
|
|
||||||
The platform will automatically add all sensors to Home Assistant that are configured within the camera interface to "Notify the surveillance center" as a trigger. If you would like to hide a sensor type you can do so by either unchecking "Notify the surveillance center" in the camera configuration or by using the "ignored" customize option detailed below.
|
The platform will automatically add all sensors to Home Assistant that are configured within the camera/nvr interface to "Notify the surveillance center" as a trigger. If you would like to hide a sensor type you can do so by either unchecking "Notify the surveillance center" in the camera configuration or by using the "ignored" customize option detailed below.
|
||||||
|
|
||||||
For example, if you configure a camera with the name "Front Porch" that has motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant:
|
For example, if you configure a camera with the name "Front Porch" that has motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant:
|
||||||
|
|
||||||
@ -24,7 +24,16 @@ binary_sensor.front_porch_motion
|
|||||||
binary_sensor.front_port_line_crossing
|
binary_sensor.front_port_line_crossing
|
||||||
```
|
```
|
||||||
|
|
||||||
This platform should work with all Hikvision cameras, and has been confirmed to work with the following models:
|
When used with a NVR device the sensors will be appeneded with the channel number they represent. For example, if you configure an NVR with the name "Home" that supports 2 cameras with motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant:
|
||||||
|
|
||||||
|
```
|
||||||
|
binary_sensor.home_motion_1
|
||||||
|
binary_sensor.home_motion_2
|
||||||
|
binary_sensor.home_line_crossing_1
|
||||||
|
binary_sensor.home_line_crossing_2
|
||||||
|
```
|
||||||
|
|
||||||
|
This platform should work with all Hikvision cameras and nvrs, and has been confirmed to work with the following models:
|
||||||
- DS-2CD3132-I
|
- DS-2CD3132-I
|
||||||
- DS-2CD2232-I5
|
- DS-2CD2232-I5
|
||||||
- DS-2CD2032-I
|
- DS-2CD2032-I
|
||||||
@ -55,7 +64,6 @@ Configuration options for a Hikvision Sensor:
|
|||||||
|
|
||||||
Supported sensor/event types are:
|
Supported sensor/event types are:
|
||||||
- Motion
|
- Motion
|
||||||
- IO Trigger
|
|
||||||
- Line Crossing
|
- Line Crossing
|
||||||
- Field Detection
|
- Field Detection
|
||||||
- Video Loss
|
- Video Loss
|
||||||
@ -70,9 +78,10 @@ Supported sensor/event types are:
|
|||||||
- Bad Video
|
- Bad Video
|
||||||
- PIR Alarm
|
- PIR Alarm
|
||||||
- Face Detection
|
- Face Detection
|
||||||
|
- Scene Change Detection
|
||||||
|
|
||||||
|
|
||||||
Example of a configuration in your `configuration.yaml` that utilizes the customize options:
|
Example of a configuration in your `configuration.yaml` that utilizes the customize options for a camera:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
@ -83,8 +92,25 @@ binary_sensor:
|
|||||||
username: user
|
username: user
|
||||||
password: pass
|
password: pass
|
||||||
customize:
|
customize:
|
||||||
sensor_name_1:
|
motion:
|
||||||
delay: 30
|
delay: 30
|
||||||
sensor_name_2:
|
line_crossing:
|
||||||
|
ignored: True
|
||||||
|
```
|
||||||
|
|
||||||
|
Example of a configuration in your `configuration.yaml` that utilizes the customize options for a nvr:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
binary_sensor:
|
||||||
|
platform: hikvision
|
||||||
|
host: 192.168.X.X
|
||||||
|
port: 80
|
||||||
|
ssl: False
|
||||||
|
username: user
|
||||||
|
password: pass
|
||||||
|
customize:
|
||||||
|
motion_1:
|
||||||
|
delay: 30
|
||||||
|
field_detection_2:
|
||||||
ignored: True
|
ignored: True
|
||||||
```
|
```
|
||||||
|
34
source/_components/binary_sensor.ring.markdown
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Ring Binary Sensor"
|
||||||
|
description: "Instructions on how to integrate your Ring.com devices within Home Assistant."
|
||||||
|
date: 2017-04-01 10:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: ring.png
|
||||||
|
ha_category: Binary Sensor
|
||||||
|
ha_release: 0.42
|
||||||
|
---
|
||||||
|
|
||||||
|
To get your [Ring.com](https://ring.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring).
|
||||||
|
|
||||||
|
Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
binary_sensor:
|
||||||
|
- platform: ring
|
||||||
|
monitored_conditions:
|
||||||
|
- ding
|
||||||
|
- motion
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored.
|
||||||
|
- **ding**: Return a boolean value when the doorbell button was pressed.
|
||||||
|
- **motion**: Return a boolean value when a moviment was detected by the Ring doorbell.
|
||||||
|
|
||||||
|
Currently only doorbells are supported by this sensor.
|
@ -15,6 +15,8 @@ ha_release: 0.41
|
|||||||
|
|
||||||
The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also uses the python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays.
|
The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also uses the python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays.
|
||||||
|
|
||||||
|
To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Example configuation.yaml entry
|
# Example configuation.yaml entry
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
@ -32,8 +34,8 @@ Configuration variables:
|
|||||||
|
|
||||||
Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. The keyword `holiday` is used for public holidays identified by the holidays module.
|
Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. The keyword `holiday` is used for public holidays identified by the holidays module.
|
||||||
|
|
||||||
|
|
||||||
Example usage for automation:
|
Example usage for automation:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
automation:
|
automation:
|
||||||
alias: Turn on heater on workdays
|
alias: Turn on heater on workdays
|
||||||
|
@ -95,7 +95,7 @@ From this we will end up with the binary sensors `calendar.test_unimportant` and
|
|||||||
|
|
||||||
But what if you only wanted it to toggle based on all events? Just leave out the *search* parameter.
|
But what if you only wanted it to toggle based on all events? Just leave out the *search* parameter.
|
||||||
|
|
||||||
**Note**: If you use a `#` sign for search then wrap it up. It's better to be safe!
|
**Note**: If you use a `#` sign for `search` then wrap the whole search term in quotes. Otherwise everything following the hash sign would be considered a YAML comment.
|
||||||
|
|
||||||
|
|
||||||
### {% linkable_title Sensor attributes %}
|
### {% linkable_title Sensor attributes %}
|
||||||
|
@ -31,6 +31,8 @@ Configuration variables:
|
|||||||
|
|
||||||
- **username** (*Required*): The username of an user with access.
|
- **username** (*Required*): The username of an user with access.
|
||||||
- **password** (*Required*): The password for your given admin account.
|
- **password** (*Required*): The password for your given admin account.
|
||||||
- **away_temperature** (*Optional*): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C.
|
|
||||||
- **region** (*Optional*): Region identifier (either 'eu' or 'us'). Defaults to 'eu' if not provided.
|
- **region** (*Optional*): Region identifier (either 'eu' or 'us'). Defaults to 'eu' if not provided.
|
||||||
- **scan_interval**(*Optional*): Scan interval is expressed in seconds. Recommended value of 600 seconds. Default value is 120 seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell.
|
- **scan_interval**(*Optional*): Scan interval is expressed in seconds. Recommended value of 600 seconds. Default value is 120 seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell.
|
||||||
|
- **away_temperature** (*Optional*) (*only for eu region*): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C.
|
||||||
|
- **cool_away_temperature** (*Optional*) (*only for us region*): Cooling setpoint when away mode is on. If omitted it defaults to 30.0 deg C.
|
||||||
|
- **heat_away_temperature** (*Optional*) (*only for us region*): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: "Home Assistant 0.41"
|
title: "Home Assistant 0.42"
|
||||||
description: ""
|
description: ""
|
||||||
date: 2016-12-16 17:00
|
date: 2016-12-16 17:00
|
||||||
sidebar: true
|
sidebar: true
|
||||||
@ -9,7 +9,7 @@ sharing: true
|
|||||||
footer: true
|
footer: true
|
||||||
logo: home-assistant.png
|
logo: home-assistant.png
|
||||||
ha_category: Other
|
ha_category: Other
|
||||||
ha_release: 0.41
|
ha_release: 0.42
|
||||||
---
|
---
|
||||||
|
|
||||||
Details about the latest release can always be found at:
|
Details about the latest release can always be found at:
|
||||||
|
@ -35,10 +35,12 @@ light:
|
|||||||
type: rgbw
|
type: rgbw
|
||||||
name: Bathroom
|
name: Bathroom
|
||||||
- host: 192.168.1.11
|
- host: 192.168.1.11
|
||||||
bridge_led: True
|
|
||||||
groups:
|
groups:
|
||||||
- number: 1
|
- number: 1
|
||||||
name: Living Room & Hall
|
name: Living Room & Hall
|
||||||
|
- number: 1
|
||||||
|
type: bridge-led
|
||||||
|
name: Bridge Light
|
||||||
```
|
```
|
||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
@ -47,11 +49,10 @@ Configuration variables:
|
|||||||
- **host** (*Required*): IP address of the device, eg. `192.168.1.32`
|
- **host** (*Required*): IP address of the device, eg. `192.168.1.32`
|
||||||
- **version** (*Optional*): Bridge version (default is `6`). Don't use if you aren't sure.
|
- **version** (*Optional*): Bridge version (default is `6`). Don't use if you aren't sure.
|
||||||
- **port** (*Optional*): Bridge port. Defaults to 5987.
|
- **port** (*Optional*): Bridge port. Defaults to 5987.
|
||||||
- **bridge_led** (*Optional*): If True, the bridge led can be controlled. (Only supported for newer bridges with integrated led)
|
|
||||||
- **groups** array (*Required*): The list of available groups.
|
- **groups** array (*Required*): The list of available groups.
|
||||||
- **number** (*Required*): Group number (`1`-`4`). Corresponds to the group number on the remote.
|
- **number** (*Required*): Group number (`1`-`4`). Corresponds to the group number on the remote. These numbers may overlap only if the type is different.
|
||||||
- **name** (*Required*): Any name you'd like. Must be unique among all configured groups.
|
- **name** (*Required*): Any name you'd like. Must be unique among all configured groups.
|
||||||
- **type** (*Optional*): Type of group. Choose either `rgbww`, `rgbw` or `white`. `rgbw` is the default if you don't specify this entry.
|
- **type** (*Optional*): Type of group. Choose either `rgbww`, `rgbw`, `white`, or `bridge-led`. `rgbw` is the default if you don't specify this entry. Use `bridge-led` to control the built-in LED of newer WiFi bridges.
|
||||||
|
|
||||||
### {% linkable_title Properties %}
|
### {% linkable_title Properties %}
|
||||||
|
|
||||||
|
@ -18,17 +18,6 @@ First you have to set up your [rflink hub](/components/rflink/).
|
|||||||
|
|
||||||
After configuring the RFLink hub lights will be automatically discovered and added.
|
After configuring the RFLink hub lights will be automatically discovered and added.
|
||||||
|
|
||||||
New/unknown lights can be assigned to a default group automatically by specifying the `new_devices_group` option with a group name. If the group doesn't exist it will be created.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Example configuration.yaml entry
|
|
||||||
sensor:
|
|
||||||
platform: rflink
|
|
||||||
new_devices_group: "New Rflink Lights"
|
|
||||||
```
|
|
||||||
|
|
||||||
RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`.
|
RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`.
|
||||||
|
|
||||||
Once the ID of a light is known it can be used to configure the light in HA, for example to add it to a different group, hide it or configure a nice name.
|
Once the ID of a light is known it can be used to configure the light in HA, for example to add it to a different group, hide it or configure a nice name.
|
||||||
@ -49,8 +38,8 @@ light:
|
|||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
|
|
||||||
|
- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to HA if detected (default: True).
|
||||||
- **devices** (*Optional*): A list of devices with their name to use in the frontend.
|
- **devices** (*Optional*): A list of devices with their name to use in the frontend.
|
||||||
- **new_devices_group** (*Optional*): Create group to add new/unknown devices to.
|
|
||||||
- **device_defaults**: (*Optional*)
|
- **device_defaults**: (*Optional*)
|
||||||
- **fire_event** (*Optional*): Set default `fire_event` for Rflink switch devices (see below).
|
- **fire_event** (*Optional*): Set default `fire_event` for Rflink switch devices (see below).
|
||||||
- **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below).
|
- **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below).
|
||||||
@ -105,7 +94,7 @@ By default new lights are assigned the `switchable` type. Protocol supporting di
|
|||||||
|
|
||||||
Lights are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:
|
Lights are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:
|
||||||
|
|
||||||
- Configure a `new_devices_group` for lights and optionally add it to a different `view`.
|
- Disable automatically adding of unconfigured new sensors (set `automatic_add` to `false`).
|
||||||
- Hide unwanted devices using [customizations](/getting-started/customizing-devices/)
|
- Hide unwanted devices using [customizations](/getting-started/customizing-devices/)
|
||||||
- [Ignore devices on a platform level](/components/rflink/#ignoring-devices)
|
- [Ignore devices on a platform level](/components/rflink/#ignoring-devices)
|
||||||
|
|
||||||
|
31
source/_components/lock.lockitron.markdown
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Lockitron Lock"
|
||||||
|
description: "Instructions how to integrate Lockitron locks into Home Assistant."
|
||||||
|
date: 2017-03-24 00:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: lockitron.png
|
||||||
|
ha_category: Lock
|
||||||
|
ha_iot_class: "Cloud Polling"
|
||||||
|
ha_release: "0.42"
|
||||||
|
---
|
||||||
|
|
||||||
|
The `lockitron` platform allows you to control your [Lockitron](https://lockitron.com/) lock from within Home Assistant.
|
||||||
|
In order to get the correct `access_token` and `id`, log on to their [developer page](https://api.lockitron.com/), create a new app, and get the access_token they give you.
|
||||||
|
Then, call the retrieve all locks function on the page and get the id of your lock (make sure you get your lock's id and not the virtual lock they create for you).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
lock:
|
||||||
|
- platform: lockitron
|
||||||
|
access_token: asdf
|
||||||
|
id: fdsa
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **access_token** (*Required*): The usernThe security token provided by Lockitron to lock and unlock your lock.
|
||||||
|
- **id** (*Required*): The lock id given by Lockitron (should be a GUID).
|
||||||
|
|
@ -10,7 +10,7 @@ footer: true
|
|||||||
logo: emby.png
|
logo: emby.png
|
||||||
ha_category: Media Player
|
ha_category: Media Player
|
||||||
ha_release: "0.32"
|
ha_release: "0.32"
|
||||||
ha_iot_class: "Local Polling"
|
ha_iot_class: "Local Push"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
@ -28,7 +28,8 @@ media_player:
|
|||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
|
|
||||||
- **host** (*Required*): The host name or address of the device that is running Emby.
|
- **host** (*Optional*): The host name or address of the device that is running Emby. Defaults to ```localhost```.
|
||||||
- **api_key** (*Required*): The api-key you would like home-assistant to use to authenticate.
|
- **api_key** (*Required*): The api-key you would like home-assistant to use to authenticate.
|
||||||
- **ssl** (*Optional*): True if you want to connect with https. Be sure to set the port also.
|
- **ssl** (*Optional*): True if you want to connect with https/wss. Your SSL certificate must be valid. Default is False.
|
||||||
- **port** (*Optional*): The port number. Defaults to 8096.
|
- **port** (*Optional*): The port number. Defaults to 8096 with SSL set to False and 8920 with SSL set to True.
|
||||||
|
- **auto_hide** (*Optional*): True if you want to automatically hide devices that are unavailable from the Home Assistant Interface. Defaults to False.
|
||||||
|
@ -34,6 +34,15 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`,
|
|||||||
| `entity_id` | yes | Target a specific media player. Defaults to all. |
|
| `entity_id` | yes | Target a specific media player. Defaults to all. |
|
||||||
| `volume_level` | no | Float for volume level |
|
| `volume_level` | no | Float for volume level |
|
||||||
|
|
||||||
|
#### {% linkable_title Service `media_player/volume_transition` %}
|
||||||
|
|
||||||
|
| Service data attribute | Optional | Description |
|
||||||
|
|------------------------|----------|--------------------------------------------------|
|
||||||
|
| `entity_id` | yes | Target a specific media player. Defaults to all. |
|
||||||
|
| `volume_level` | no | Float for volume level |
|
||||||
|
| `transition` | no | Integer for transition time in seconds |
|
||||||
|
|
||||||
|
|
||||||
#### {% linkable_title Service `media_player/media_seek` %}
|
#### {% linkable_title Service `media_player/media_seek` %}
|
||||||
|
|
||||||
| Service data attribute | Optional | Description |
|
| Service data attribute | Optional | Description |
|
||||||
|
@ -121,3 +121,27 @@ If you find a device is recognized differently, with different protocols or the
|
|||||||
- The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's.
|
- The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's.
|
||||||
- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component.
|
- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component.
|
||||||
|
|
||||||
|
### {% linkable_title Debug logging %}
|
||||||
|
|
||||||
|
For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
logger:
|
||||||
|
default: error
|
||||||
|
logs:
|
||||||
|
rflink: debug
|
||||||
|
homeassistant.components.rflink: debug
|
||||||
|
```
|
||||||
|
|
||||||
|
This will give you output looking like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: 20;00;Nod
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: o RadioFrequencyLink - R
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: FLink Gateway V1.1 - R45
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: ;
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got packet: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R45;
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] decoded packet: {'firmware': 'RFLink Gateway', 'revision': '45', 'node': 'gateway', 'protocol': 'unknown', 'hardware': 'Nodo RadioFrequencyLink', 'version': '1.1'}
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got event: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'}
|
||||||
|
17-03-07 20:12:05 DEBUG (MainThread) [homeassistant.components.rflink] event of type unknown: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'}
|
||||||
|
```
|
||||||
|
33
source/_components/ring.markdown
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Ring"
|
||||||
|
description: "Instructions on how to integrate your Ring.com devices within Home Assistant."
|
||||||
|
date: 2017-04-01 10:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: ring.png
|
||||||
|
ha_category: Hub
|
||||||
|
ha_release: 0.42
|
||||||
|
---
|
||||||
|
|
||||||
|
The `ring` implementation allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant.
|
||||||
|
|
||||||
|
Currently only doorbells are supported by this sensor.
|
||||||
|
|
||||||
|
To enable device linked in your [Ring.com](https://ring.com/) account, add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
ring:
|
||||||
|
username: you@example.com
|
||||||
|
password: secret
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **username** (*Required*): The username for accessing your Ring account.
|
||||||
|
- **password** (*Required*): The password for accessing your Ring account.
|
||||||
|
|
||||||
|
Finish its configuration by visiting the [Ring binary_sensor page](/components/binary_sensor.ring/) or [Ring sensor page](/components/sensor.ring/).
|
101
source/_components/sensor.crimereports.markdown
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Crime Reports"
|
||||||
|
description: "Instructions on how to integrate CrimeReports.com into Home Assistant."
|
||||||
|
date: 2017-02-16 11:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
ha_category: Sensor
|
||||||
|
featured: false
|
||||||
|
ha_release: 0.42
|
||||||
|
ha_iot_class: "Cloud Polling"
|
||||||
|
---
|
||||||
|
|
||||||
|
The `crimereports` sensor allows one to track reported incidents occurring in a Home Assistant zone. Incidents include anything reported to [Crime Reports](http://crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
To enable this sensor, add the following lines to your `configuration.yaml`. Your `zone` should be of sufficient size to capture incidents in your area. Your `home` zone is probably too small.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
zone:
|
||||||
|
- name: neighborhood
|
||||||
|
latitude: <your latitude>
|
||||||
|
longitude: <your longitude>
|
||||||
|
radius: <your neighborhood radius>
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: crimereports
|
||||||
|
zone: neighborhood
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration options for the Crime Reports Sensor:
|
||||||
|
|
||||||
|
- **zone** (*Required*): The zone to monitor.
|
||||||
|
- **include** (*Optional*): List of incident types to include.
|
||||||
|
- **exclude** (*Optional*): List of incident types to exclude.
|
||||||
|
- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 30 minutes. Supported formats:
|
||||||
|
- `update_interval: 'HH:MM:SS'`
|
||||||
|
- `update_interval: 'HH:MM'`
|
||||||
|
- Time period dictionary, e.g.:
|
||||||
|
<pre>update_interval:
|
||||||
|
# At least one of these must be specified:
|
||||||
|
days: 0
|
||||||
|
hours: 0
|
||||||
|
minutes: 3
|
||||||
|
seconds: 30
|
||||||
|
milliseconds: 0
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
### Area
|
||||||
|
|
||||||
|
Crime Reports captures all incidents in a region defined by a square shape. Home Assistant zones are circular. Therefore, the region defined by a Home Assistant zone in a Crime Reports context is a square that is big enough to fit the zone circle. Practically, this means some incidents may be captured that are outside your zone.
|
||||||
|
|
||||||
|
### Incident Types
|
||||||
|
|
||||||
|
You can explicitly include or exclude incident types. Specifying `include`s restricts the incidents to those types. Specifying `exclude`s will return all incident types except those specified.
|
||||||
|
|
||||||
|
These incident types are available:
|
||||||
|
|
||||||
|
- Alarm
|
||||||
|
- Arson
|
||||||
|
- Assault
|
||||||
|
- Assault with Deadly Weapon
|
||||||
|
- Breaking & Entering
|
||||||
|
- Community Policing
|
||||||
|
- Death
|
||||||
|
- Disorder
|
||||||
|
- Drugs
|
||||||
|
- Emergency
|
||||||
|
- Family Offense
|
||||||
|
- Fire
|
||||||
|
- Homicide
|
||||||
|
- Kidnapping
|
||||||
|
- Liquor
|
||||||
|
- Missing Person
|
||||||
|
- Other
|
||||||
|
- Other Sexual Offense
|
||||||
|
- Pedestrian Stop
|
||||||
|
- Proactive Policing
|
||||||
|
- Property Crime
|
||||||
|
- Property Crime Commercial
|
||||||
|
- Property Crime Residential
|
||||||
|
- Quality of Life
|
||||||
|
- Robbery
|
||||||
|
- Sexual Assault
|
||||||
|
- Sexual Offense
|
||||||
|
- Theft
|
||||||
|
- Theft from Vehicle
|
||||||
|
- Theft of Vehicle
|
||||||
|
- Traffic
|
||||||
|
- Vehicle Recovery
|
||||||
|
- Vehicle Stop
|
||||||
|
- Weapons Offense
|
||||||
|
|
||||||
|
### Events
|
||||||
|
|
||||||
|
The `crimealerts` sensor fires a `crimealerts_incident` event when a new incident is detected, including the type, description, time, location, and coordinates of the incident.
|
57
source/_components/sensor.eddystone_temperature.markdown
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Eddystone Beacon"
|
||||||
|
description: "Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data."
|
||||||
|
date: 2017-03-26 01:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: eddystone.png
|
||||||
|
ha_category: DIY
|
||||||
|
ha_release: 0.42
|
||||||
|
ha_iot_class: "Local Polling"
|
||||||
|
---
|
||||||
|
|
||||||
|
The `eddystone_temperature` sensor platform reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature).
|
||||||
|
All beacons that support the Eddystone protocol, have a temperature sensor and can transmit TLM frames are compatible with this platform. For example [Gimbal](https://store.gimbal.com/collections/beacons/), [Estimote](http://estimote.com/) or [kontakt.io](https://kontakt.io/). For more manufacturers see [this overview](https://developers.google.com/beacons/eddystone#beacon_manufacturers) by Google.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
As this platform uses `bluez` to scan for Bluetooth LE devices **a Linux OS with bluez installed** is required. In addition to that, the `libbluetooth` headers need to be installed:
|
||||||
|
```shell
|
||||||
|
$ sudo apt-get install libbluetooth-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Scanning for Bluetooth LE devices also requires special permissions. To grant these to the python executable execute the following:
|
||||||
|
```shell
|
||||||
|
$ sudo apt-get install libcap2-bin
|
||||||
|
$ sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python3))
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
To use your Eddystone beacon in your installation, add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
sensor:
|
||||||
|
- platform: eddystone_temperature
|
||||||
|
bt_device_id: 0 # optional
|
||||||
|
beacons:
|
||||||
|
living_room:
|
||||||
|
namespace: "112233445566778899AA"
|
||||||
|
instance: "000000000001"
|
||||||
|
name: "Living Room" # optional
|
||||||
|
kitchen:
|
||||||
|
namespace: "112233445566778899AA"
|
||||||
|
instance: "000000000002"
|
||||||
|
name: "Kitchen" # optional
|
||||||
|
```
|
||||||
|
Configuration variables:
|
||||||
|
- **bt_device_id** (*Optional*): The id of the bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev` (default: 0).
|
||||||
|
- **beacons** array (*Required*): The beacons that should be monitored.
|
||||||
|
- **[entry]** (*Required*): Name of the beacon.
|
||||||
|
- **namespace** (*Required*): Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long.
|
||||||
|
- **namespace** (*Required*): Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long.
|
||||||
|
- **name** (*Optional*): Friendly name of the beacon.
|
@ -32,8 +32,9 @@ sensor:
|
|||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
|
|
||||||
- **username** (*Required*): You Fido username (your Fido phone number).
|
- **username** (*Required*): You Fido username (your Fido phone number or your email).
|
||||||
- **password** (*Required*): Your Fido password.
|
- **password** (*Required*): Your Fido password.
|
||||||
|
- **number** (*Optional*): Your Fido phone number (it will use your username if empty).
|
||||||
- **monitored_variables** array (*Required*): Variables to monitor.
|
- **monitored_variables** array (*Required*): Variables to monitor.
|
||||||
- **fido_dollar**: Your Fido dollar balance
|
- **fido_dollar**: Your Fido dollar balance
|
||||||
- **balance**: Your account balance
|
- **balance**: Your account balance
|
||||||
|
@ -48,9 +48,11 @@ Configuration variables:
|
|||||||
- **period_total_consumption**: Total Consumption
|
- **period_total_consumption**: Total Consumption
|
||||||
- **period_lower_price_consumption**: Period Lower price consumption
|
- **period_lower_price_consumption**: Period Lower price consumption
|
||||||
- **period_higher_price_consumption**: Period Higher price consumption
|
- **period_higher_price_consumption**: Period Higher price consumption
|
||||||
|
- **period_average_temperature**: Period Average temperature
|
||||||
- **yesterday_total_consumption**: Yesterday total consumption
|
- **yesterday_total_consumption**: Yesterday total consumption
|
||||||
- **yesterday_lower_price_consumption**: Yesterday lower price consumption
|
- **yesterday_lower_price_consumption**: Yesterday lower price consumption
|
||||||
- **yesterday_higher_price_consumption**: Yesterday higher price consumption
|
- **yesterday_higher_price_consumption**: Yesterday higher price consumption
|
||||||
|
- **yesterday_average_temperature**: Yesterday Average temperature
|
||||||
|
|
||||||
To find your contract id, go to the [Hydro-Québec website](https://www.hydroquebec.com/portail/)
|
To find your contract id, go to the [Hydro-Québec website](https://www.hydroquebec.com/portail/)
|
||||||
and connect to your account.
|
and connect to your account.
|
||||||
|
58
source/_components/sensor.lyft.markdown
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Lyft Sensor"
|
||||||
|
description: "How to integrate Lyft in Home Assistant"
|
||||||
|
date: 2017-03-19 21:05
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: lyft.png
|
||||||
|
ha_category: Transport
|
||||||
|
ha_iot_class: "Cloud Polling"
|
||||||
|
ha_release: 0.41
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/).
|
||||||
|
|
||||||
|
|
||||||
|
You must create an application [here](https://www.lyft.com/developers/manage) to obtain a `client_id` and `client_secret`.
|
||||||
|
|
||||||
|
To enable this sensor, add the following lines to your `configuration.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
sensor:
|
||||||
|
- platform: lyft
|
||||||
|
client_id: CLIENT_ID
|
||||||
|
client_secret: CLIENT_SECRET
|
||||||
|
start_latitude: 37.8116380
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **client_id** (*Required*): A client id obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage).
|
||||||
|
- **client_secret** (*Required*) A client secret obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage).
|
||||||
|
- **start_latitude** (*Required*): The starting latitude for a trip.
|
||||||
|
- **start_longitude** (*Required*): The starting longitude for a trip.
|
||||||
|
- **end_latitude** (*Optional*): The ending latitude for a trip. While `end_latitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time.
|
||||||
|
- **end_longitude** (*Optional*): The ending longitude for a trip. While `end_longitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time.
|
||||||
|
- **product_ids** (*Optional*): A list of Lyft product IDs.
|
||||||
|
|
||||||
|
A full configuration entry could look like the sample below:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
sensor:
|
||||||
|
- platform: lyft
|
||||||
|
client_id: CLIENT_ID
|
||||||
|
client_secret: CLIENT_SECRET
|
||||||
|
start_latitude: 37.8116380
|
||||||
|
start_longitude: -122.2648050
|
||||||
|
end_latitude: 37.615223
|
||||||
|
end_longitude: -122.389977
|
||||||
|
product_ids:
|
||||||
|
- 'lyft'
|
||||||
|
- 'lyft_plus'
|
||||||
|
```
|
@ -31,6 +31,7 @@ Configuration variables:
|
|||||||
- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'.
|
- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'.
|
||||||
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0.
|
- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0.
|
||||||
- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any.
|
- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any.
|
||||||
|
- **expire_after** (*Optional*): Defines the number of seconds after the value expires if it's not updated. Default is 0 (=never expire).
|
||||||
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
|
- **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload.
|
||||||
|
|
||||||
## {% linkable_title Examples %}
|
## {% linkable_title Examples %}
|
||||||
|
66
source/_components/sensor.mvglive.markdown
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "MVG"
|
||||||
|
description: "Instructions how to integrate Munich public transport departure times into Home Assistant."
|
||||||
|
date: 2017-03-21 20:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
logo: mvg.png
|
||||||
|
ha_category: Transport
|
||||||
|
ha_release: 0.42
|
||||||
|
ha_iot_class: "Cloud Polling"
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
The `mvglive` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes.
|
||||||
|
|
||||||
|
To enable this sensor, add the following lines to your `configuration.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yaml entry
|
||||||
|
sensor:
|
||||||
|
- platform: mvglive
|
||||||
|
station: STATION_OR_STOP
|
||||||
|
```
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **station** (*Required*): Name of the stop or station. Visit [the MVG live web site](http://www.mvg-live.de) to find valid names.
|
||||||
|
- **destination** (*Optional*): Name of the line's final destination to display only connections ending there.
|
||||||
|
- **line** (*Optional*): Online display connections from this line, e.g. `'U6'`, `'S2'`.
|
||||||
|
- **offset** (*Optional*): Do not display connections departing sooner than this number of minutes (defaults to 0). Useful if you are a couple of minutes away from the stop.
|
||||||
|
- **bus** (*Optional*): If 'False', do not display bus connections
|
||||||
|
- **tram** (*Optional*): If 'False', do not display tram connections
|
||||||
|
- **ubahn** (*Optional*): If 'False', do not display U-Bahn (subway) connections
|
||||||
|
- **sbahn** (*Optional*): If 'False', do not display S-Bahn (suburban train) connections
|
||||||
|
|
||||||
|
## {% linkable_title Examples %}
|
||||||
|
|
||||||
|
### {% linkable_title Full configuration %}
|
||||||
|
|
||||||
|
The example below shows a full configuration using the 'line' argument.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yml entry
|
||||||
|
sensor:
|
||||||
|
- platform: mvglive
|
||||||
|
station: Marienplatz
|
||||||
|
line: U6
|
||||||
|
offset: 5
|
||||||
|
destination: Garching-Forschungszentrum
|
||||||
|
```
|
||||||
|
|
||||||
|
Another example showing all bus connections at the main station.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example configuration.yml entry
|
||||||
|
sensor:
|
||||||
|
- platform: mvglive
|
||||||
|
station: Hauptbahnhof
|
||||||
|
offset: 2
|
||||||
|
sbahn: False
|
||||||
|
ubahn: False
|
||||||
|
tram: False
|
||||||
|
```
|
@ -29,4 +29,5 @@ Configuration variables:
|
|||||||
- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Random Sensor`.
|
- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Random Sensor`.
|
||||||
- **minimum** (*Optional*): Lower limit for the values. Defaults to `0`.
|
- **minimum** (*Optional*): Lower limit for the values. Defaults to `0`.
|
||||||
- **maximum** (*Optional*): Upper limit for the values. Defaults to `20`.
|
- **maximum** (*Optional*): Upper limit for the values. Defaults to `20`.
|
||||||
|
- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any.
|
||||||
|
|
||||||
|
@ -18,17 +18,6 @@ First you have to set up your [rflink hub](/components/rflink/).
|
|||||||
|
|
||||||
After configuring the RFLink hub sensors will be automatically discovered and added.
|
After configuring the RFLink hub sensors will be automatically discovered and added.
|
||||||
|
|
||||||
New/unknown sensors can be assigned to a default group automatically by specifying the `new_devices_group` option with a group name. If the group doesn't exist it will be created.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Example configuration.yaml entry
|
|
||||||
sensor:
|
|
||||||
platform: rflink
|
|
||||||
new_devices_group: "New RFLink Sensors"
|
|
||||||
```
|
|
||||||
|
|
||||||
RFLink sensor ID's are composed of: protocol, id and type (optional). For example: `alectov1_0334_temp`. Some sensors emit multiple types of data. Each will be created as its own
|
RFLink sensor ID's are composed of: protocol, id and type (optional). For example: `alectov1_0334_temp`. Some sensors emit multiple types of data. Each will be created as its own
|
||||||
|
|
||||||
Once the ID of a sensor is known it can be used to configure the sensor in HA, for example to add it to a different group, hide it or configure a nice name.
|
Once the ID of a sensor is known it can be used to configure the sensor in HA, for example to add it to a different group, hide it or configure a nice name.
|
||||||
@ -47,8 +36,8 @@ sensor:
|
|||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
|
|
||||||
|
- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to HA if detected (default: True).
|
||||||
- **devices** (*Optional*): A list of devices with their name to use in the frontend.
|
- **devices** (*Optional*): A list of devices with their name to use in the frontend.
|
||||||
- **new_devices_group** (*Optional*): Create group to add new/unknown devices to.
|
|
||||||
|
|
||||||
Device configuration variables:
|
Device configuration variables:
|
||||||
|
|
||||||
@ -61,7 +50,7 @@ Device configuration variables:
|
|||||||
|
|
||||||
Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:
|
Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:
|
||||||
|
|
||||||
- Configure a `new_devices_group` for sensors and optionally add it to a different `view`.
|
- Disable automatically adding of unconfigured new sensors (set `automatic_add` to `false`).
|
||||||
- Hide unwanted devices using [customizations](/getting-started/customizing-devices/)
|
- Hide unwanted devices using [customizations](/getting-started/customizing-devices/)
|
||||||
- [Ignore devices on a platform level](/components/rflink/#ignoring-devices)
|
- [Ignore devices on a platform level](/components/rflink/#ignoring-devices)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: "Ring"
|
title: "Ring Sensor"
|
||||||
description: "Instructions on how to integrate your Ring.com devices within Home Assistant."
|
description: "Instructions on how to integrate your Ring.com devices within Home Assistant."
|
||||||
date: 2017-03-05 10:00
|
date: 2017-04-01 10:00
|
||||||
sidebar: true
|
sidebar: true
|
||||||
comments: false
|
comments: false
|
||||||
sharing: true
|
sharing: true
|
||||||
@ -12,20 +12,19 @@ ha_category: Sensor
|
|||||||
ha_release: "0.40"
|
ha_release: "0.40"
|
||||||
---
|
---
|
||||||
|
|
||||||
The `ring` sensor allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant.
|
To get your [Ring.com](https://ring.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring).
|
||||||
Currently it supports doorbells and external chimes only.
|
|
||||||
|
|
||||||
To enable device linked in your [Ring.com](https://ring.com/) account, add the following to your `configuration.yaml` file:
|
Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Example configuration.yaml entry
|
# Example configuration.yaml entry
|
||||||
sensor:
|
sensor:
|
||||||
- platform: ring
|
- platform: ring
|
||||||
username: USERNAME
|
|
||||||
password: PASSWORD
|
|
||||||
monitored_conditions:
|
monitored_conditions:
|
||||||
- battery
|
- battery
|
||||||
- last_activity
|
- last_activity
|
||||||
|
- last_ding
|
||||||
|
- last_motion
|
||||||
- volume
|
- volume
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -36,5 +35,9 @@ Configuration variables:
|
|||||||
- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 30 seconds.
|
- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 30 seconds.
|
||||||
- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored.
|
- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored.
|
||||||
- **battery**: Return the battery level from device
|
- **battery**: Return the battery level from device
|
||||||
- **last_activity**: Return the timestamp from the last event captured by the Ring doorbell camera
|
- **last_activity**: Return the timestamp from the last event captured (ding/motion/on_demand) by the Ring doorbell camera
|
||||||
|
- **last_ding**: Return the timestamp from the last time the Ring doorbell button was pressed
|
||||||
|
- **last_motion**: Return the timestamp from the last motion event captured by the Ring doorbell camera
|
||||||
- **volume**: Return the volume level from the device. Currently supported by external chimes and doorbells.
|
- **volume**: Return the volume level from the device. Currently supported by external chimes and doorbells.
|
||||||
|
|
||||||
|
Currently it supports doorbells and external chimes only.
|
||||||
|
@ -19,6 +19,7 @@ The `tplink` switch platform allows you to control the state of your [TPLink sma
|
|||||||
Supported units:
|
Supported units:
|
||||||
|
|
||||||
- HS100
|
- HS100
|
||||||
|
- HS105
|
||||||
- HS110
|
- HS110
|
||||||
- HS200
|
- HS200
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ Triggers are what starts the processing of an automation rule. It is possible to
|
|||||||
### {% linkable_title Event trigger %}
|
### {% linkable_title Event trigger %}
|
||||||
Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.
|
Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.
|
||||||
|
|
||||||
|
Events can be fired by components or via the API. There is no limitation to the types. A list of built-in events can be found [here](/docs/configuration/events/).
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
automation:
|
automation:
|
||||||
trigger:
|
trigger:
|
||||||
@ -24,7 +26,22 @@ automation:
|
|||||||
event_data:
|
event_data:
|
||||||
mood: happy
|
mood: happy
|
||||||
```
|
```
|
||||||
For example, to carry out actions when Home Assistant starts, you can use `event_type: homeassistant_start`. See other 'events' supported by Home Assistant [here](https://home-assistant.io/topics/events/).
|
|
||||||
|
<p class='note warning'>
|
||||||
|
Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' platform below instead.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
### {% linkable_title Home Assistant trigger %}
|
||||||
|
|
||||||
|
Use this platform to trigger when Home Assistant starts up and shuts down.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
automation:
|
||||||
|
trigger:
|
||||||
|
platform: homeassistant
|
||||||
|
# Event can also be 'shutdown'
|
||||||
|
event: start
|
||||||
|
```
|
||||||
|
|
||||||
### {% linkable_title MQTT trigger %}
|
### {% linkable_title MQTT trigger %}
|
||||||
Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.
|
Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.
|
||||||
@ -105,6 +122,8 @@ automation:
|
|||||||
value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}"
|
value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[template]: /docs/configuration/templating/
|
||||||
|
|
||||||
### {% linkable_title Time trigger %}
|
### {% linkable_title Time trigger %}
|
||||||
|
|
||||||
Time can be triggered in many ways. The most common is to specify `after` and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You cannot use `after` together with hour, minute or second.
|
Time can be triggered in many ways. The most common is to specify `after` and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You cannot use `after` together with hour, minute or second.
|
||||||
|
566
source/_docs/ecosystem/certificates/lets_encrypt.markdown
Normal file
@ -0,0 +1,566 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "Remote Access with TLS/SSL via Let's Encrypt"
|
||||||
|
description: "A guide to remotely accessing Home Assistant and securing the connection with an SSL certificate from Let's Encrypt"
|
||||||
|
date: 2017-03-16 17:00
|
||||||
|
sidebar: true
|
||||||
|
comments: false
|
||||||
|
sharing: true
|
||||||
|
footer: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<p class='warning'>
|
||||||
|
Before exposing your Home Aassistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
This guide was added by mf_social on 16/03/2017 and was valid at the time of writing. This guide makes the following assumptions:
|
||||||
|
|
||||||
|
* You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network.
|
||||||
|
* You know the internal IP address of your router and can access your router's configuration pages.
|
||||||
|
* You have already set up a password for your Home Assistant instance, following the advice on this page: [http](https://home-assistant.io/docs/configuration/basic/)
|
||||||
|
* You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with an TLS/SSL certificate.
|
||||||
|
* You have a basic understanding of the phrases I have used so far.
|
||||||
|
* You are not currently running anything on port 80 on your network (you'd know if you were).
|
||||||
|
* If you are not using Home Assistant on a Debian/Raspian/Hassbian system you will be able to convert any of the terminology I use in to the correct syntax for your system.
|
||||||
|
* You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is innacurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols.
|
||||||
|
* Each step presumes you have fully completed the previous step succesfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides.
|
||||||
|
|
||||||
|
Steps we will take:
|
||||||
|
|
||||||
|
- 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding
|
||||||
|
- 1 - Set your device to have a static IP address
|
||||||
|
- 2 - Set up port forwarding without TLS/SSL and test connection
|
||||||
|
- 3 - Set up a DuckDNS account
|
||||||
|
- 4 - Obtain a TLS/SSL certificate from Let's Encrypt
|
||||||
|
- 5 - Check the incoming conection
|
||||||
|
- 6 - Clean up port forwards
|
||||||
|
- 7 - Set up a sensor to monitor the expiry date of the certificate
|
||||||
|
- 8 - Set up an automatic renewal of the TLS/SSL certificate
|
||||||
|
- 9 - Set up an alert to warn us if something went wrong
|
||||||
|
|
||||||
|
### {% linkable_title 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding %}
|
||||||
|
|
||||||
|
An IP address is a bit like a phone number. When you access your Home Assistant instance you type something similar to 192.168.0.200:8123 in to your address bar of your browser. The bit before the colon is the IP address (in this case 192.168.0.200) and the bit after is the port number (in this case 8123). When you SSH in to the device running Home Assistant you will use the same IP address, and you will use port 22. You may not be aware that you are using port 22, but if you are using Putty look in the box next to where you type the IP address, you will see that it has already selected port 22 for you.
|
||||||
|
|
||||||
|
So, if an IP address is like a phone number, a port number is like an extension number. An analogy would be if you phone your local doctors on 192-1680-200 and the receptionist answers, you ask to speak to Dr. Smith and she will put you through to extension 8123, which is the phone Dr. Smith is sitting at. The doctors surgery is the device your Home Assistant is running on, Dr. Smith is your Home Assistant. Thusly, your Home Assistant instance is 'waiting for your call' on port 8123, at the device IP 192.168.0.200 .
|
||||||
|
|
||||||
|
Now, to speak to the outside world your connection goes through a router. Your router will have two IP addresses. One is the internal network number, most likely 192.168.0.1 in my example, and an external IP address that incoming traffic is sent to. In the example of calling the doctors, the external IP is your telephone number's area code.
|
||||||
|
|
||||||
|
So, when we want to connect to our Home Assistant instance from outside our network we will need to call the correct extension number, at the correct phone number, in the correct area code.
|
||||||
|
|
||||||
|
We will be looking for a system to run like this (in this example I will pretend our exernal IP is 12.12.12.12):
|
||||||
|
|
||||||
|
```text
|
||||||
|
Outside world -> 12.12.12.12:8123 -> your router -> 192.168.0.200:8123
|
||||||
|
```
|
||||||
|
Sounds simple? It really is except for two small, but easy to overcome, complications:
|
||||||
|
|
||||||
|
* IP addresses are often dynamically allocated, so they can change.
|
||||||
|
* Because of the way the internet works you cannot chain IP addresses together to get from where you are, to where you want to go.
|
||||||
|
|
||||||
|
To get around the issue of changing IP addresses we must remember that there are two IP addresses affected. Your external one (which we will 'call' to get on to your network from the internet) and your internal one (192.168.0.200 in the example I am currently using).
|
||||||
|
|
||||||
|
So, we can use a static IP to ensure that whenever our device running Home Assistant connects to our router it always uses the same address. This way our internal IP never changes. This is covered in step 1 below.
|
||||||
|
|
||||||
|
We then have no control over our external IP, as our Service Provider will give us a new one at random intervals. To fix this we will use a service called DuckDNS which will give us a name for our connection (something like examplehome.duckdns.org) and behind the scenes will continue to update your external IP. So no matter how many times the IP address changes, typing examplehome.duckdns.org in to our browser will convert to the correct, up-to-date, IP address. This is covered in step 3 below.
|
||||||
|
|
||||||
|
To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 12:12:12:12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our SSL certificate our incoming call will be requesting port 443 (because that is the SSL port, like the SSH port is always 22), but our port forwarding rule will forward this to our HA instance on port 8123. When this guide is completed we will run something like this:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Outside world -> https://examplehome.duckdns.org -> 12.12.12.12:443 -> your router -> 192.168.0.200:8123
|
||||||
|
```
|
||||||
|
So, let's make it happen...
|
||||||
|
|
||||||
|
### {% linkable_title 1 - Set your device to have a static IP address %}
|
||||||
|
|
||||||
|
Whenever a device is connected to a network it has an IP address. This IP address is often dynamically assigned to the device on connection. This means there are occasions where the IP address you use to access Home Assistant, or SSH in to the device running Home Assistant, may change. Setting a static IP address means that the device will always be on the same address.
|
||||||
|
|
||||||
|
SSH in to your system running Home Assistant and login.
|
||||||
|
|
||||||
|
Type the following command to list your network interfaces:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ifconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
You will receive an ouput similar to the image below:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Make a note of the interface name and the IP address you are currently on. In the picture it is the wireless connection that is highlighted, but with your setup it may be the wired one (eth0 or similar), make sure you get the correct information.
|
||||||
|
|
||||||
|
Then type the following command to open the text file that controls your network connection:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo nano /etc/dhcpcd.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
At the bottom of the file add the following lines:
|
||||||
|
|
||||||
|
```text
|
||||||
|
interface wlan0 <----- or the interface you just wrote down.
|
||||||
|
|
||||||
|
static ip_address=192.168.0.200/24 <---- the IP address you just wrote down with a '/24' at the end
|
||||||
|
static routers=192.168.0.1 <---- Your router's IP address
|
||||||
|
static domain_name_servers=192.168.0.1 <---- Your router's IP address
|
||||||
|
```
|
||||||
|
|
||||||
|
It is important to note that the first three bits of your static IP address and your router's IP address should be the same, eg:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Router: 192.168.0.1
|
||||||
|
|
||||||
|
Yes
|
||||||
|
HA IP: 192.168.0.200
|
||||||
|
|
||||||
|
No
|
||||||
|
HA IP: 192.175.96.200
|
||||||
|
```
|
||||||
|
|
||||||
|
Press Ctrl + x to close the editor, pressing Y to save the changes when prompted.
|
||||||
|
|
||||||
|
Reboot your device running HA:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
When it comes back up check that you can SSH in to it again on the IP address you wrote down.
|
||||||
|
|
||||||
|
Make sure Home Assisstant is running and access it via the local network by typing the IP address and port number in to the browser:
|
||||||
|
|
||||||
|
```text
|
||||||
|
http://192.168.0.200:8123.
|
||||||
|
```
|
||||||
|
|
||||||
|
All working? Hooray! You now have a static IP. This will now always be your internal IP address for your Home Assistant device. This will be known as YOUR-HA-IP for the rest of this guide.
|
||||||
|
|
||||||
|
### {% linkable_title 2 - Set up port forwarding without SSL and test connection %}
|
||||||
|
|
||||||
|
Log in to your router's configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching google for "port forwarding" and the name of your router may help. When you find it you will likely have options similar to:
|
||||||
|
|
||||||
|
Service name - Port Range - Local IP - Local Port - Protocol
|
||||||
|
|
||||||
|
You may also have other options (like 'source IP'), these can usually be left blank or in their default state.
|
||||||
|
|
||||||
|
Set the port forwarding to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Service name - ha_test
|
||||||
|
Port Range - 8123
|
||||||
|
Local IP - YOUR-HA-IP
|
||||||
|
Local Port - 8123
|
||||||
|
Protocol - Both
|
||||||
|
```
|
||||||
|
|
||||||
|
Then save the change. On my router you have to fill these values in, then press an 'add' button to add the new rule to the list, then save the changes. All routers have a different interface, but you must ensure that these rules are saved at this point. If you are unsure, you can reboot the router and log back in, if the rule is present it was saved, if not, it wasn't!
|
||||||
|
|
||||||
|
Once you have saved this rule, go to your browser, and go to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://whatismyipaddress.com/
|
||||||
|
```
|
||||||
|
|
||||||
|
This will tell you your current external IP address
|
||||||
|
|
||||||
|
Type the external IP address in to the url bar with http:// in front and :8123 after like so (12.12.12.12 is my example!):
|
||||||
|
|
||||||
|
```text
|
||||||
|
http://12.12.12.12:8123
|
||||||
|
```
|
||||||
|
|
||||||
|
Can you see your Home Assisstant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you.
|
||||||
|
|
||||||
|
Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your wifi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone.
|
||||||
|
|
||||||
|
Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accesible Home Assistant instance.
|
||||||
|
|
||||||
|
But what if your external IP changes? Plus, remembering all those numbers is pretty hard, isn't it? Read on to get yourself set up with a word-based URL at DuckDNS that will track any changes to your IP address so you don't have to stress anymore.
|
||||||
|
|
||||||
|
### {% linkable_title 3 - Set up a DuckDNS account %}
|
||||||
|
|
||||||
|
Open your browser and go to https://duckdns.org.
|
||||||
|
|
||||||
|
Sign in and create an account using one of the id validation options in the top right corner.
|
||||||
|
|
||||||
|
In the domains section pick a name for your subdomain, this can be anything you like, and click add domain.
|
||||||
|
|
||||||
|
The URL you will be using later to access your Home Assistant instance from outside will be the subdomain you picked, followed by duckdns.org . For our example we will say our URL is examplehome.duckdns.org
|
||||||
|
|
||||||
|
On the top left of duckdns.org select the install option. Then pick your operating system from the list. In our example we will use a Raspberry Pi. In the dropdown box select the url you just created.
|
||||||
|
|
||||||
|
Duckdns.org will now generate personalised instructions for you to follow so that your device can update their website every time your IP address changes. Carefully follow the instructions given on duckdns.org to set up your device.
|
||||||
|
|
||||||
|
At the end of the instructions DuckDNS will suggest you set up port forwarding. No need, we have already done this in step 2.
|
||||||
|
|
||||||
|
What you have now done is set up DuckDNS so that whenever you type examplehome.duckdns.org in to your browser it will convert that to your router's external IP address. Your external IP address will always be up to date because your device running Home Assistant will update DuckDNS every time it changes.
|
||||||
|
|
||||||
|
Now type your new URL in to your address bar on your browser with port 8123 on the end:
|
||||||
|
|
||||||
|
```text
|
||||||
|
http://examplehome.duckdns.org:8123
|
||||||
|
```
|
||||||
|
|
||||||
|
What now happens behind the scenes is this:
|
||||||
|
|
||||||
|
- DuckDNS receives the request and forwards the request to your router's external IP address (which has been kept up to date by your device running Home Assisstant)
|
||||||
|
- Your router receives the request on port 8123 and checks the port forwarding rules
|
||||||
|
- It finds the rule you created in step 2 and forwards the request to your HA instance
|
||||||
|
- Your browser displays your Home Assisstant instance frontend.
|
||||||
|
|
||||||
|
Did it work? Super!
|
||||||
|
|
||||||
|
You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with SSL, read on to find out how.
|
||||||
|
|
||||||
|
### {% linkable_title 4 - Obtain an TLS/SSL certificate from Let's Encrypt %}
|
||||||
|
|
||||||
|
First we need to set up another port forward like we did in step 2. Set your new rule to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Service name - ha_letsencrypt
|
||||||
|
Port Range - 80
|
||||||
|
Local IP - YOUR-HA-IP
|
||||||
|
Local Port - 80
|
||||||
|
Protocol - Both
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember to save the new rule.
|
||||||
|
|
||||||
|
<p class='note'>
|
||||||
|
In cases where your ISP blocks port 80 you will need to change the port forward options to forward port 443 from outside to port 443 on your Home Assistant device. Please note that this will limit your options for automatically renewing the certificate, but this is a limitation because of your ISP setup and there is not a lot we can do about it!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Now SSH in to the device your Home Assistant is running on.
|
||||||
|
|
||||||
|
<p class='note'>
|
||||||
|
If you're running the 'standard' setup on a Raspberry Pi the chances are you just logged in as the 'pi' user. If not, you may have logged in as the Home Assistant user. There are commands below that require the Home Assistant user to be on the `sudoers` list. If you are not using the 'standard' pi setup it is presumed you will know how to get your Home Assistant user on the `sudoers` list before continuing. If you are running the 'standard' pi setup, from your 'pi' user issue the following command (where `hass` is the Home Assistant user):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo adduser hass sudo
|
||||||
|
```
|
||||||
|
</p>
|
||||||
|
|
||||||
|
If you did not already log in as the user that currently runs Home Assistant, change to that user (usually `hass` or `homeassistant` - you may have used a command similar to this in the past):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ su -s /bin/bash hass
|
||||||
|
```
|
||||||
|
|
||||||
|
Make sure you are in the home directory for the HA user:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd
|
||||||
|
```
|
||||||
|
|
||||||
|
We will now make a directory for the certbot software, download it and give it the correct permissions:
|
||||||
|
|
||||||
|
```text
|
||||||
|
$ mkdir certbot
|
||||||
|
$ cd certbot/
|
||||||
|
$ wget https://dl.eff.org/certbot-auto
|
||||||
|
$ chmod a+x certbot-auto
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we will run the certbot program to get our ssl certificate. You will need to include your email address and your DuckDNS url in the appropriate places:
|
||||||
|
|
||||||
|
```text
|
||||||
|
$ ./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org
|
||||||
|
```
|
||||||
|
|
||||||
|
Once the program has run it will generate a certificate and other files and place them in a folder `/etc/letsencrypt/` .
|
||||||
|
|
||||||
|
Confirm this file has been populated:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ls /etc/letsencrypt/live/
|
||||||
|
```
|
||||||
|
|
||||||
|
This should show a folder named exactly after your DuckDNS url.
|
||||||
|
|
||||||
|
Our Home Assistant user needs access to files within the letsencrypt folder, so issue the following commands to change the permissions.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo chmod 755 /etc/letsencrypt/live/
|
||||||
|
$ sudo chmod 755 /etc/letsencrypt/archive/
|
||||||
|
```
|
||||||
|
|
||||||
|
Did all of that go without a hitch? Wahoo! Your Let's Encrypt certificate is now ready to be used with Home Assistant. Move to step 5 to put it all together
|
||||||
|
|
||||||
|
### {% linkable_title 5 - Check the incoming conection %}
|
||||||
|
|
||||||
|
<p class='note'>
|
||||||
|
Following on from Step 4 your SSH will still be in the certbot folder. If you edit your configuration files over SSH you will need to change to your `homeassistant` folder:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd ~/.homeassistant
|
||||||
|
```
|
||||||
|
|
||||||
|
If you use samba shares to edit your files you can exit your SSH now.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
If during step 4 you had to use port 443 instead of port 80 to generate your certificate, you should delete that rule now.
|
||||||
|
|
||||||
|
Go to your router's configuration pages and set up a new port forwarding rule, thus:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Service name - ha_ssl
|
||||||
|
Port Range - 443
|
||||||
|
Local IP - YOUR-HA-IP
|
||||||
|
Local Port - 8123
|
||||||
|
Protocol - Both
|
||||||
|
```
|
||||||
|
|
||||||
|
Remember to save the rule changes.
|
||||||
|
|
||||||
|
Now edit your configuration.yaml file to reflect the SSL entries and your base URL (changing the `examplehome` subdomain to yours in all three places):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
http:
|
||||||
|
api_password: YOUR_PASSWORD
|
||||||
|
ssl_certificate: /etc/letsencrypt/live/examplehome.duckdns.org/fullchain.pem
|
||||||
|
ssl_key: /etc/letsencrypt/live/examplehome.duckdns.org/privkey.pem
|
||||||
|
base_url: examplehome.duckdns.org
|
||||||
|
```
|
||||||
|
|
||||||
|
You may wish to set up other options for the [http](https://home-assistant.io/components/http/) component at this point, these extra options are beyond the scope of this guide.
|
||||||
|
|
||||||
|
Save the changes to configuration.yaml. Restart Home Assistant.
|
||||||
|
|
||||||
|
In step 3 we accessed our Home Assistant from the outside world with our DuckDNS URL and our port number. We are going to use a slightly different URL this time.
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://examplehome.duckdns.org
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the S after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123.
|
||||||
|
|
||||||
|
You should now be able to see your Home Assistant instance via your DuckDNS URL, and importantly note that your browser shows the connection as secure.
|
||||||
|
|
||||||
|
You will now NO LONGER be able to access your Home Assistant via your old internal IP address in the way you previously have. Your default way to access your Home Assistant instance, even from inside your house, is to use your DuckDNS URL.
|
||||||
|
|
||||||
|
In cases where you need to access via the local network only (which should be few and far between) you can access it with the following URL (note the added **S** after http):
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://YOUR-HA-IP:8123
|
||||||
|
```
|
||||||
|
|
||||||
|
...and accepting the browsers warning that you are connecting to an insecure site. This warning occurs because your certificate expects your incoming connection to come via your DuckDNS URL. It does not mean that your device has suddenly become insecure.
|
||||||
|
|
||||||
|
Some cases such as this are where your router does not allow 'loopback' or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and ignore the warnings.
|
||||||
|
|
||||||
|
If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. Instructions for creating your new webapp can be found here:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://home-assistant.io/docs/frontend/mobile/
|
||||||
|
```
|
||||||
|
|
||||||
|
All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely neccesary to the outside world.
|
||||||
|
|
||||||
|
### {% linkable_title 6 - Clean up port forwards %}
|
||||||
|
|
||||||
|
In step 2 we created a port forwarding rule called `ha_test`. This opens port 8123 to the world, and is no longer neccessary.
|
||||||
|
|
||||||
|
Go to your router's configuration pages and delete the `ha_test` rule.
|
||||||
|
|
||||||
|
You should now have two rules in relation to Home Assistant for your port forwards, named:
|
||||||
|
|
||||||
|
`ha_ssl` and `ha_letsencrypt`
|
||||||
|
|
||||||
|
If you have any more for Home Assistant you should delete them now. If you only have `ha_ssl` this is probably because during step 4 you had to use port 443 instead of port 80, so we deleted the rule during step 5.
|
||||||
|
|
||||||
|
You are now part of one of two groups:
|
||||||
|
|
||||||
|
* If you have BOTH rules you are able to set up auto renewals of you certificates.
|
||||||
|
* If you only have one, you will have to manually change the rule when you want to update your certificate, and then change it back afterwards.
|
||||||
|
|
||||||
|
Please remember whether you are a ONE-RULE person or a BOTH-RULE person for step 8!
|
||||||
|
|
||||||
|
Let's Encrypt certificates only last for 90 days. When they have less than 30 days left they can be renewed. Renewal is a simple process.
|
||||||
|
|
||||||
|
Move on to step 7 to see how to monitor your certificates expiry date, and be ready to renew your certificate when the time comes.
|
||||||
|
|
||||||
|
### {% linkable_title 7 - Set up a sensor to monitor the expiry date of the certificate %}
|
||||||
|
|
||||||
|
Setting a sensor to read the number of days left on your TLS/SSL certificate before it expires is not required, but it has the following advantages:
|
||||||
|
|
||||||
|
* You can physically see how long you have left, pleasing your inner control freak
|
||||||
|
* You can set automations based on the number of days left
|
||||||
|
* You can set alerts to notify you if your certificate has not been renewed and is coming close to expiry.
|
||||||
|
* If you cannot set up automatic renewals due to your ISP blocking port 80, you will have timely reminders to complete the process manually.
|
||||||
|
|
||||||
|
If you do not wish to set up a sensor you can skip straight to step 8 to learn how to update your certificates.
|
||||||
|
|
||||||
|
The sensor will rely on a command line program that needs to be installed on your device running Home Assistant. SSH in to the device and run the following commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo apt-get update
|
||||||
|
$ sudo apt-get install ssl-cert-check
|
||||||
|
```
|
||||||
|
|
||||||
|
<p class='note'>
|
||||||
|
In cases where, for whatever reason, apt-get installing is not appropriate for your installation you can fetch the ssl-cert-check script from `http://prefetch.net/code/ssl-cert-check` bearing in mind that you will have to modify the command in the sensor code below to run the script from wherever you put it, modify permission if neccessary and so on.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
To set up a senor add the following to your `configuration.yaml` (remembering to correct the URL for your DuckDNS):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
sensor:
|
||||||
|
- platform: command_line
|
||||||
|
name: SSL cert expiry
|
||||||
|
unit_of_measurement: days
|
||||||
|
scan_interval: 10800
|
||||||
|
command: "ssl-cert-check -b -c /etc/letsencrypt/live/examplehome.duckdns.org/cert.pem | awk '{ print $NF }'"
|
||||||
|
```
|
||||||
|
|
||||||
|
Save the configuration.yaml. Restart Home Assistant.
|
||||||
|
|
||||||
|
On your default_view you should now see a sensor badge containing your number of days until expiry. If you've been following this guide from the start and have not taken any breaks in between, this should be 89 or 90. The sensor will update every 3 hours. You can place this reading on a card using groups, or hide it using customize. These topics are outside of the scope of this guide, but information can be found on their respective components pages: [Group](/components/group/) and [Customize](/docs/configuration/customizing-devices/)
|
||||||
|
|
||||||
|
Got your sensor up and running and where you want it? Top drawer! Nearly there, now move on to the final steps to ensure that you're never without a secure connection in the future.
|
||||||
|
|
||||||
|
### {% linkable_title 8 - Set up an automatic renewal of the TLS/SSL certificate. %}
|
||||||
|
|
||||||
|
The certbot program we downloaded in step 4 contains a script that will renew your certificate. The script will only obtain a new certificate if the current one has less than 30 days left on it, so running the script more often than is actually needed will not cause any harm.
|
||||||
|
|
||||||
|
If you are a ONE-RULE person (from step 6) you cannot 'automatically' renew your certificates because you will need to change your port forwarding rules before the renewal takes place, and change it back again afterwards.
|
||||||
|
|
||||||
|
When you are within 30 days of your certificate's expiry date (you can use the sensor reading from step 7 to tell you this) you will need to complete the following steps:
|
||||||
|
|
||||||
|
* Go to your router's configuration pages and edit your port forwarding rule to
|
||||||
|
|
||||||
|
```text
|
||||||
|
Service name - ha_ssl
|
||||||
|
Port Range - 443
|
||||||
|
Local IP - YOUR-HA-IP
|
||||||
|
Local Port - 443
|
||||||
|
Protocol - Both
|
||||||
|
```
|
||||||
|
|
||||||
|
* Save the rule
|
||||||
|
* SSH in to your device running HA.
|
||||||
|
* Change to your HA user (command similar to):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ su - s /bin/bash hass
|
||||||
|
```
|
||||||
|
|
||||||
|
* Change to your certbot folder
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd ~/certbot/
|
||||||
|
```
|
||||||
|
|
||||||
|
* Run the renewal command
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01
|
||||||
|
```
|
||||||
|
|
||||||
|
* Once succesfully completed, change your port forwarding rule back to
|
||||||
|
|
||||||
|
```text
|
||||||
|
Service name - ha_ssl
|
||||||
|
Port Range - 443
|
||||||
|
Local IP - YOUR-HA-IP
|
||||||
|
Local Port - 8123
|
||||||
|
Protocol - Both
|
||||||
|
```
|
||||||
|
|
||||||
|
* Save the rule
|
||||||
|
|
||||||
|
If you are a BOTH-RULE person, you have a number of options at this point.
|
||||||
|
|
||||||
|
#### Option 1:
|
||||||
|
Your certificate can be renewed as a 'cron job' - cron jobs are background tasks run by the computer at specified intervals (and are totally independant of Home Assistant). Defining cron is outside of the scope of this guide but you will have had dealings with `crontab` when setting up DuckDNS in step 3
|
||||||
|
|
||||||
|
To set a cron job to run the script at regular intervals:
|
||||||
|
|
||||||
|
* SSH in to your device running Home Assistant.
|
||||||
|
* Change to your Home Assistant user (command similar to):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ su - s /bin/bash hass
|
||||||
|
```
|
||||||
|
|
||||||
|
* Open the crontab:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ crontab -e
|
||||||
|
```
|
||||||
|
|
||||||
|
* Scroll to the bottom of the file and paste in the following line
|
||||||
|
|
||||||
|
```text
|
||||||
|
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
|
||||||
|
```
|
||||||
|
* Save the file and exit
|
||||||
|
|
||||||
|
|
||||||
|
#### Option 2:
|
||||||
|
You can set an automation in Home Assistant to run the certbot renewal script.
|
||||||
|
|
||||||
|
Add the following sections to your configuration.yaml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
shell_command:
|
||||||
|
renew_ssl: ./certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01
|
||||||
|
|
||||||
|
automation:
|
||||||
|
- alias: 'Auto Renew SSL Cert'
|
||||||
|
trigger:
|
||||||
|
platform: numeric_state
|
||||||
|
entity_id: sensor.ssl_cert_expiry
|
||||||
|
below: 29
|
||||||
|
action:
|
||||||
|
service: shell_command.renew_ssl
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Option 3:
|
||||||
|
You can manually update the certificate when your certificate is less than 30 days to expiry.
|
||||||
|
|
||||||
|
To manually update:
|
||||||
|
|
||||||
|
* SSH in to your device running Home Assistant.
|
||||||
|
* Change to your Home Assistant user (command similar to):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ su - s /bin/bash hass
|
||||||
|
```
|
||||||
|
|
||||||
|
* Change to your certbot folder
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd ~/certbot/
|
||||||
|
```
|
||||||
|
|
||||||
|
* Run the renewal command
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01
|
||||||
|
```
|
||||||
|
|
||||||
|
So, now were all set up. We have our secured, remotely accesible HA instance and we're on track for keeping our certificates up to date. But what if something goes wrong? What if the automation didn't fire? What if the cron job forgot to run? What if the dog ate my homework? Read on to set up an alert so you can be notified in plenty of time if you need to step in and sort out any failures.
|
||||||
|
|
||||||
|
### {% linkable_title 9 - Set up an alert to warn us if something went wrong. %}
|
||||||
|
|
||||||
|
We set up our automatic renewal of our certificates and whatever method we used the certificate should be renewed on or around 30 days before it expires. But what if a week later it still hasn't been? This alert will go off if the expiry time on the certificate gets down to 21 days. This will give you 3 weeks to fix the problem, get your new certificate installed and get another 90 days of secure Home Assistant connections in play.
|
||||||
|
|
||||||
|
In your `configuration.yaml` add the following automation, adding your preferred notification platform where appropriate:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
automation:
|
||||||
|
- alias: 'SSL expiry notification'
|
||||||
|
trigger:
|
||||||
|
platform: numeric_state
|
||||||
|
entity_id: sensor.ssl_cert_expiry
|
||||||
|
below: 21
|
||||||
|
action:
|
||||||
|
service: notify.[your_notification_preference]
|
||||||
|
data:
|
||||||
|
message: 'Warning - SSL certificate expires in 21 days and has not been automatically renewed'
|
||||||
|
```
|
||||||
|
|
||||||
|
If you receive this warning notification, follow the steps for a manual update from step 8. Any error messages received at that point can be googled and resolved. If the manual update goes without a hitch there may be something wrong with your chosen method for automatic updates, and you can start troubleshooting from there.
|
||||||
|
|
||||||
|
So, that's it. We've taken a Home Assistant instance that was only reachable on the local network, made it accessible from the internet, secured it, and set up a system to ensure that it always stays secure. Well done, go and treat yourself to a cookie!
|
@ -11,7 +11,15 @@ logo: mqtt.png
|
|||||||
redirect_from: /components/mqtt/#discovery
|
redirect_from: /components/mqtt/#discovery
|
||||||
---
|
---
|
||||||
|
|
||||||
The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/). Currently, binary sensors, lights and sensors are supported. A discovery binary sensor or sensor will load the `mqtt` platform. For discovered light components the JSON payload can contain a `platform` attribute with one of `mqtt`, `mqtt_json` or `mqtt_template` defined. If no `platform` attribute is defined then `mqtt` is used.
|
The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/).
|
||||||
|
|
||||||
|
Supported by MQTT discovery:
|
||||||
|
|
||||||
|
- [Binary sensors](/components/binary_sensor.mqtt/)
|
||||||
|
- [Lights](/components/light.mqtt/)
|
||||||
|
- [Sensors](/components/sensor.mqtt/)
|
||||||
|
- [Switches](/components/switch.mqtt/)
|
||||||
|
|
||||||
|
|
||||||
To enable MQTT discovery, add the following to your `configuration.yaml` file:
|
To enable MQTT discovery, add the following to your `configuration.yaml` file:
|
||||||
|
|
||||||
@ -34,13 +42,13 @@ The discovery topic need to follow a specific format:
|
|||||||
|
|
||||||
- `<component>`: One of the supported components, eg. `binary_sensor`.
|
- `<component>`: One of the supported components, eg. `binary_sensor`.
|
||||||
- `<object_id>`: The ID of the device. This will become the `entity_id` in Home Assistant.
|
- `<object_id>`: The ID of the device. This will become the `entity_id` in Home Assistant.
|
||||||
- `<config>`: The topic `config` or `state` which defines the current action.
|
- `<>`: The topic `config` or `state` which defines the current action.
|
||||||
|
|
||||||
The payload will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values.
|
The payload will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`.
|
||||||
|
|
||||||
### {% linkable_title Example %}
|
### {% linkable_title Examples %}
|
||||||
|
|
||||||
A motion detection device which can be represented by a [binary sensor](/components/binary_sensor.mqtt/) for your garden would sent its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the State topic will update the state in Home Assistant.
|
A motion detection device which can be represented by a [binary sensor](/components/binary_sensor.mqtt/) for your garden would sent its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant.
|
||||||
|
|
||||||
- Configuration topic: `homeassistant/binary_sensor/garden/config`
|
- Configuration topic: `homeassistant/binary_sensor/garden/config`
|
||||||
- State topic: `homeassistant/binary_sensor/garden/state`
|
- State topic: `homeassistant/binary_sensor/garden/state`
|
||||||
@ -57,3 +65,18 @@ Update the state.
|
|||||||
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON
|
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Setting up a switch is similar but requires a `command_topic` as mentionend in the [MQTT switch documentation](/components/switch.mqtt/).
|
||||||
|
|
||||||
|
- Configuration topic: `homeassistant/switch/irrigation/config`
|
||||||
|
- State topic: `homeassistant/switch/irrigation/state`
|
||||||
|
- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \
|
||||||
|
-m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}'
|
||||||
|
```
|
||||||
|
Set the state.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON
|
||||||
|
```
|
||||||
|
@ -85,6 +85,7 @@ Configuration variables:
|
|||||||
- **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
|
- **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.
|
- **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.
|
- **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.
|
- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to False.
|
||||||
|
|
||||||
To find the path of your Z-Wave USB stick or module, run:
|
To find the path of your Z-Wave USB stick or module, run:
|
||||||
@ -240,7 +241,7 @@ The `zwave` component exposes multiple services to help maintain the network.
|
|||||||
| refresh_entity| Refresh Z-Wave entity by refreshing dependent values.|
|
| refresh_entity| Refresh Z-Wave entity by refreshing dependent values.|
|
||||||
| refresh_node| Refresh Z-Wave node. |
|
| 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.|
|
| 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 an `entity_id` and `name` field. |
|
| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
|
||||||
| remove_failed_node | Remove a failed node from the network. The Node should be on the Controllers Failed Node List, otherwise this command will fail.|
|
| remove_failed_node | Remove a failed node from the network. The Node should be on the Controllers 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 nodes list, or the node responds, this command will fail.|
|
| replace_failed_node | Replace a failed device with another. If the node is not in the controller's failed nodes list, or the node responds, this command will fail.|
|
||||||
| set_config_parameter | Let's the user set a config parameter to a node. |
|
| set_config_parameter | Let's the user set a config parameter to a node. |
|
||||||
|
@ -41,9 +41,14 @@
|
|||||||
<li>{% active_link /docs/configuration/secrets/ Storing Secrets %}</li>
|
<li>{% active_link /docs/configuration/secrets/ Storing Secrets %}</li>
|
||||||
<li>{% active_link /docs/configuration/templating/ Templating %}</li>
|
<li>{% active_link /docs/configuration/templating/ Templating %}</li>
|
||||||
<li>{% active_link /docs/configuration/group_visibility/ Group Visibility %}</li>
|
<li>{% active_link /docs/configuration/group_visibility/ Group Visibility %}</li>
|
||||||
|
<li>{% active_link /docs/configuration/platform_options/ Entity component platform options %}</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Core objects
|
||||||
|
<ul>
|
||||||
<li>{% active_link /docs/configuration/events/ Events %}</li>
|
<li>{% active_link /docs/configuration/events/ Events %}</li>
|
||||||
<li>{% active_link /docs/configuration/state_object/ State Objects %}</li>
|
<li>{% active_link /docs/configuration/state_object/ State Objects %}</li>
|
||||||
<li>{% active_link /docs/configuration/platform_options/ Entity component platform options %}</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@ -190,6 +195,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>{% active_link /docs/ecosystem/certificates/tls_self_signed_certificate/ Self-signed certificate %}</li>
|
<li>{% active_link /docs/ecosystem/certificates/tls_self_signed_certificate/ Self-signed certificate %}</li>
|
||||||
<li>{% active_link /docs/ecosystem/certificates/tls_domain_certificate/ Certificate domain owners %}</li>
|
<li>{% active_link /docs/ecosystem/certificates/tls_domain_certificate/ Certificate domain owners %}</li>
|
||||||
|
<li>{% active_link /docs/ecosystem/certificates/lets_encrypt/ Let's Encrypt (detailed) %}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>{% active_link /docs/ecosystem/scenegen/ scenegen %}</li>
|
<li>{% active_link /docs/ecosystem/scenegen/ scenegen %}</li>
|
||||||
|
@ -0,0 +1,361 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Home Assistant 0.42: Eddystone Beacons, Lockitron locks and Total Connect alarm systems"
|
||||||
|
description: "Tons of bug fixes, performance increasements and "
|
||||||
|
date: 2017-04-08 08:04:05 +0000
|
||||||
|
date_formatted: "April 8, 2017"
|
||||||
|
author: Paulus Schoutsen
|
||||||
|
author_twitter: balloob
|
||||||
|
comments: true
|
||||||
|
categories: Release-Notes
|
||||||
|
og_image: /images/blog/2017-04-0.42/social.png
|
||||||
|
---
|
||||||
|
|
||||||
|
<a href='/components/#added_in_current_version'><img src='/images/blog/2017-04-0.42/social.png' style='border: 0;box-shadow: none;'></a>
|
||||||
|
|
||||||
|
It's time for Home Assistant 0.43. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API.
|
||||||
|
|
||||||
|
On our social media front, we have crossed the 1000 likes on [our Facebook page][hass-fb]! Also on the social media front, the YouTube channel diyAutomate has been putting out a lot of great getting started videos about Home Assistant, [go check them out!][diyAutomate]
|
||||||
|
|
||||||
|
Also want to take a moment to thank Austin Andrews aka [Templarian] for his [Material Design Icons][mli]. He is part of what makes Home Assistant so beautiful 🤗.
|
||||||
|
|
||||||
|
[hass-fb]: https://www.facebook.com/homeassistantio
|
||||||
|
[diyAutomate]: https://www.youtube.com/c/diyautomate
|
||||||
|
[mli]: https://materialdesignicons.com/
|
||||||
|
[Templarian]: https://github.com/templarian
|
||||||
|
|
||||||
|
## New integrations
|
||||||
|
|
||||||
|
- Lockitron locks ([@aarya123] - [#6805])
|
||||||
|
- Met Office weather and sensor components ([@jacobtomlinson] - [#6742])
|
||||||
|
- Total Connect alarm systems ([@wardcraigj] - [#6887])
|
||||||
|
- Eddystone Beacon Temperature Sensor ([@citruz] - [#6789])
|
||||||
|
- CrimeReports.com integration shows crimes around a location in the US ([@happyleavesaoc] - [#6966])
|
||||||
|
- The Ring doorbell has been integrated further with the inclusion of binary sensors ([@tchellomello] - [#6520])
|
||||||
|
|
||||||
|
<!--more-->
|
||||||
|
## Breaking changes
|
||||||
|
|
||||||
|
- We were incorrectly treating groups named `default_view` as default views. Make sure you set `view: true` in the config for these groups. [#251 (frontend)](https://github.com/home-assistant/home-assistant-polymer/pull/251)
|
||||||
|
- The last release introduced a revamped LIFX platform. We only realised after deploy that this version does not work on Windows. We have added the old LIFX implementation back as `lifx_legacy`.
|
||||||
|
- We added indexes to the database to speed up the history view. Initial boot can take a couple of minutes. Do not shut down while migration is occurring. [#6688]
|
||||||
|
- Z-Wave cover workaround has been removed. Use device config instead. [#6832]
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
zwave:
|
||||||
|
device_config:
|
||||||
|
cover.my_cover:
|
||||||
|
invert_openclose_buttons: true
|
||||||
|
```
|
||||||
|
|
||||||
|
- If you set an initial state for an automation, input_boolean, input_slider or input_select it will overrule over the previous state. [#6911] [#6924]
|
||||||
|
- Z-Wave rename node service parameter `entity_id` has been replaced with `node_id` to align parameters [#6938]
|
||||||
|
- Automations are now initialized when Home Assistant finishes starting up. This means that it is deprecated to listen for event `homeassistant_start`. Instead, use the new `homeassistant` automation platform. [#6936]
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
automation:
|
||||||
|
trigger:
|
||||||
|
platform: homeassistant
|
||||||
|
event: start
|
||||||
|
action:
|
||||||
|
service: light.turn_on
|
||||||
|
```
|
||||||
|
|
||||||
|
- The Ring component has moved the authentication to a dedicated ring component. [#6520]
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
ring:
|
||||||
|
username: !secret ring_username
|
||||||
|
password: !secret ring_password
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: ring
|
||||||
|
monitored_conditions:
|
||||||
|
- ding
|
||||||
|
- motion
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: ring
|
||||||
|
monitored_conditions:
|
||||||
|
- battery
|
||||||
|
- last_activity
|
||||||
|
- last_ding
|
||||||
|
- last_motion
|
||||||
|
- volume
|
||||||
|
```
|
||||||
|
|
||||||
|
## All changes
|
||||||
|
|
||||||
|
- Flux led update lib ([@danielhiversen] - [#6763])
|
||||||
|
- Adding expire_after to mqtt sensor to expire outdated values ([@micw] - [#6708])
|
||||||
|
- New indexes for states and recording_runs tables ([@m00dawg] - [#6688]) (breaking change)
|
||||||
|
- Fix flaky template test ([@armills] - [#6768])
|
||||||
|
- Repair zwave sensor coverage ([@armills] - [#6764])
|
||||||
|
- Version bump to 0.42.0.dev0 ([@balloob])
|
||||||
|
- current temp could be none ([@turbokongen] - [#6759])
|
||||||
|
- Typing error and update test ([@turbokongen] - [#6757])
|
||||||
|
- Wink Aros Fixes ([@geekofweek] - [#6726])
|
||||||
|
- Upgrade pydroid-ipcam to 0.7 ([@fabaff] - [#6772])
|
||||||
|
- Upgrade psutil to 5.2.1 ([@fabaff] - [#6771])
|
||||||
|
- Upgrade sleekxmpp to 1.3.2 ([@fabaff] - [#6773])
|
||||||
|
- Tests for zwave workaround detection ([@armills] - [#6761])
|
||||||
|
- Bugfix automation fire on bootstrap ([@pvizeli] - [#6770])
|
||||||
|
- Homematic Fixes ([@danielperna84] - [#6769])
|
||||||
|
- Fix wink siren ([@w1ll1am23] - [#6775])
|
||||||
|
- Fix bridge-led support in limitlessled.py ([@quadportnick] - [#6776])
|
||||||
|
- Wrong info in discovery schema ([@turbokongen] - [#6779])
|
||||||
|
- switch.tplink: upgrade to the newest upstream release which adds support for plugs using the newer communication protocol ([@rytilahti] - [#6790])
|
||||||
|
- Add switch to MQTT discovery ([@fabaff] - [#6733])
|
||||||
|
- Update docstrings ([@fabaff] - [#6795])
|
||||||
|
- Add optional unit of measurement ([@fabaff] - [#6796])
|
||||||
|
- Upgrade zeroconf to 0.19.0 ([@fabaff] - [#6792])
|
||||||
|
- Upgrade pysnmp to 4.3.5 ([@fabaff] - [#6793])
|
||||||
|
- Platform for Munich public transport departure times ([@DavidMStraub] - [#6704])
|
||||||
|
- Use string formatting and remove already global disabled pylint issue ([@fabaff] - [#6801])
|
||||||
|
- Fix typo and update name ([@fabaff] - [#6809])
|
||||||
|
- Upgrade matrix-client to 0.0.6 ([@fabaff] - [#6808])
|
||||||
|
- Make get_snmp_data more robust ([@tantecky] - [#6798])
|
||||||
|
- Add NVR support to Hikvision Binary Sensors ([@mezz64] - [#6807])
|
||||||
|
- Update Insight parameters using the subscription data. ([@pavoni] - [#6782])
|
||||||
|
- fix WOL in docker/jail ([@goto100] - [#6810])
|
||||||
|
- Allow to monitor Windows hosts ([@fabaff] - [#6803])
|
||||||
|
- lights/hue: use device class for on/off devices like the osram lightify plug ([@jannau] - [#6817])
|
||||||
|
- [switch.wemo] Fix mW to kW conversion. ([@lwis] - [#6826])
|
||||||
|
- yeelight: adjust supported features on update() ([@rytilahti] - [#6799])
|
||||||
|
- Updated pubnubsub-handler version ([@w1ll1am23] - [#6829])
|
||||||
|
- Remove zwave cover invert workaround. Use config instead. ([@andrey-git] - [#6832]) (breaking change)
|
||||||
|
- history_stats: Fix schema, as `state` can be arbitrary string ([@leppa] - [#6753])
|
||||||
|
- Rflink group commands ([@aequitas] - [#5969])
|
||||||
|
- Updating Alarm.com Component for async and no Selenium ([@Xorso] - [#6752])
|
||||||
|
- Add voluptuous config validation to scenes ([@MartinHjelmare] - [#6830])
|
||||||
|
- Integration with lockitron ([@aarya123] - [#6805]) (new-platform)
|
||||||
|
- [switch.wemo] Fix today_energy_kwh calculation. ([@lwis] - [#6846])
|
||||||
|
- Locative tests to use aiohttp test utils ([@balloob] - [#6838])
|
||||||
|
- Convert Alexa tests to use aiohttp test utils ([@balloob] - [#6839])
|
||||||
|
- Handle initial event after entity is instantiated. ([@aequitas] - [#6760])
|
||||||
|
- Lifx legacy ([@amelchio] - [#6847]) (new-platform)
|
||||||
|
- aiohttp 2 ([@balloob] - [#6835])
|
||||||
|
- Fix configuration setup ([@bdurrer] - [#6853])
|
||||||
|
- Add option to disable automatic add for lights and sensors. ([@aequitas] - [#6852])
|
||||||
|
- Update aioHTTP to 2.0.5 ([@pvizeli] - [#6856])
|
||||||
|
- use change light level to avoid variable ramp speeds ([@wardcraigj] - [#6860])
|
||||||
|
- Handle aiohttp task cancellation better ([@balloob] - [#6862])
|
||||||
|
- Introduced Ring binary sensors and refactored Ring component ([@tchellomello] - [#6520]) (breaking change) (new-platform)
|
||||||
|
- Upgrade sendgrid to 3.6.5 ([@fabaff] - [#6866])
|
||||||
|
- Upgrade sphinx-autodoc-typehints to 1.2.0 ([@fabaff] - [#6865])
|
||||||
|
- Added Met Office weather and sensor components ([@jacobtomlinson] - [#6742]) (new-platform)
|
||||||
|
- Upgrade speedtest-cli to 1.0.3 ([@fabaff] - [#6867])
|
||||||
|
- Bumped amcrest module to 1.1.5 ([@tchellomello] - [#6872])
|
||||||
|
- Upgrade pytz to 2017.02 ([@fabaff] - [#6875])
|
||||||
|
- Upgrade aiohttp_cors to 0.5.2 ([@fabaff] - [#6874])
|
||||||
|
- Upgrade sqlalchemy to 1.1.8 ([@fabaff] - [#6873])
|
||||||
|
- added support for Fibaro FGR-222 (similar to FGRM-222) ([@ChristianKuehnel] - [#6890])
|
||||||
|
- Fluxled ([@danielhiversen] - [#6892])
|
||||||
|
- Fix Tado climate set off mode ([@wmalgadey] - [#6848])
|
||||||
|
- Fox UMP volume set ([@danieljkemp] - [#6904])
|
||||||
|
- Move examples out ([@balloob] - [#6908])
|
||||||
|
- Update README.rst ([@balloob])
|
||||||
|
- Makes amcrest.sensor to handle properly the scan_interval option. ([@tchellomello] - [#6885])
|
||||||
|
- Make sensor.ring to handle scan_interval option as expected. ([@tchellomello] - [#6886])
|
||||||
|
- Eliminate needless async_add_job invocation of async_add_devices ([@nugget] - [#6864])
|
||||||
|
- Onkyo update ([@danieljkemp] - [#6906])
|
||||||
|
- Fix for #6691 Neato Connection error handling ([@turbokongen] - [#6731])
|
||||||
|
- Adds support for the PlugInDimmer hardware ([@gurumitts] - [#6915])
|
||||||
|
- Support for zwave light transitions ([@armills] - [#6868])
|
||||||
|
- Bump pyHik library version to support more cameras ([@mezz64] - [#6921])
|
||||||
|
- Update vera cover refresh logic ([@pavoni] - [#6897])
|
||||||
|
- Update frontend ([@balloob])
|
||||||
|
- Automation: initial state > restore state ([@balloob] - [#6911]) (breaking change)
|
||||||
|
- Upgrade flux_led to 0.17 ([@danielhiversen] - [#6929])
|
||||||
|
- Upgrade paho-mqtt to 1.2.1 ([@fabaff] - [#6928])
|
||||||
|
- Upgrade distro to 1.0.4 ([@fabaff] - [#6926])
|
||||||
|
- Upgrade Sphinx to 1.5.4 ([@fabaff] - [#6927])
|
||||||
|
- Allow token authentication for 'hook' switch component ([@KlaasH] - [#6922])
|
||||||
|
- WIP - Fix bug in state handling in Vera Switch and Light ([@pavoni] - [#6931])
|
||||||
|
- total connect alarm support ([@wardcraigj] - [#6887]) (new-platform)
|
||||||
|
- Initial state over restore state ([@balloob] - [#6924]) (breaking change)
|
||||||
|
- Eddystone Beacon Temperature Sensor ([@citruz] - [#6789]) (new-platform)
|
||||||
|
- Add android ip webcam support for aiohttp2 ([@pvizeli] - [#6940])
|
||||||
|
- Bump pywemo version. Fixes Osram/Sylvania Lightify tunable white bulbs. ([@pavoni] - [#6946])
|
||||||
|
- Clean artifacts after running Ring tests. ([@tchellomello] - [#6944])
|
||||||
|
- Rename zwave nodes by node ID instead of entity ID ([@armills] - [#6938]) (breaking change)
|
||||||
|
- Report proper features in mqtt_json light ([@jawilson] - [#6941])
|
||||||
|
- Add multi phone numbers support ([@titilambert] - [#6605])
|
||||||
|
- Upgrade Sphinx to 1.5.5 ([@fabaff] - [#6947])
|
||||||
|
- Upgrade py-cpuinfo to 3.0.0 ([@fabaff] - [#6948])
|
||||||
|
- Fix automations listening to HOMEASSISTANT_START ([@balloob] - [#6936]) (breaking change)
|
||||||
|
- Fix startup of sonos / snapshot handling / error handling ([@pvizeli] - [#6945])
|
||||||
|
- Upgrade mysensors dep and callbacks ([@MartinHjelmare] - [#6950])
|
||||||
|
- Added average temperature for the day before and the current period ([@diogos88] - [#6883])
|
||||||
|
- Upgrade sqlalchemy to 1.1.9 ([@fabaff] - [#6955])
|
||||||
|
- Update for 0.42 ([@fabaff])
|
||||||
|
- Initial import for HassIO ([@pvizeli] - [#6935]) (new-platform)
|
||||||
|
- light.yeelight: catch i/o related exceptions from the backend lib ([@rytilahti] - [#6952])
|
||||||
|
- Fix current_temperature is rounded ([@aufano] - [#6960])
|
||||||
|
- Preserve customize glob order. ([@andrey-git] - [#6963])
|
||||||
|
- Foscam Camera: Adding exception handling when fetching the camera image to avoid python exception errors when host is not reachable or rather any url error to camera ([@viswa-swami] - [#6964])
|
||||||
|
- Crime Reports sensor ([@happyleavesaoc] - [#6966]) (new-platform)
|
||||||
|
- Update kodi for aiohttp2 ([@armills] - [#6967])
|
||||||
|
- Bugfix time and task coro ([@pvizeli] - [#6968])
|
||||||
|
- Fix control+c quitting HASS ([@balloob] - [#6974])
|
||||||
|
- Update Emby for aiohttp v2 ([@mezz64] - [#6981])
|
||||||
|
- switch.tplink: bump pyhs100 version requirement ([@rytilahti] - [#6986])
|
||||||
|
- Warn if start takes a long time. ([@balloob] - [#6975])
|
||||||
|
- Bump Amcrest module to 1.1.8 ([@tchellomello] - [#6990])
|
||||||
|
|
||||||
|
[#5969]: https://github.com/home-assistant/home-assistant/pull/5969
|
||||||
|
[#6520]: https://github.com/home-assistant/home-assistant/pull/6520
|
||||||
|
[#6605]: https://github.com/home-assistant/home-assistant/pull/6605
|
||||||
|
[#6688]: https://github.com/home-assistant/home-assistant/pull/6688
|
||||||
|
[#6704]: https://github.com/home-assistant/home-assistant/pull/6704
|
||||||
|
[#6708]: https://github.com/home-assistant/home-assistant/pull/6708
|
||||||
|
[#6726]: https://github.com/home-assistant/home-assistant/pull/6726
|
||||||
|
[#6731]: https://github.com/home-assistant/home-assistant/pull/6731
|
||||||
|
[#6733]: https://github.com/home-assistant/home-assistant/pull/6733
|
||||||
|
[#6742]: https://github.com/home-assistant/home-assistant/pull/6742
|
||||||
|
[#6752]: https://github.com/home-assistant/home-assistant/pull/6752
|
||||||
|
[#6753]: https://github.com/home-assistant/home-assistant/pull/6753
|
||||||
|
[#6757]: https://github.com/home-assistant/home-assistant/pull/6757
|
||||||
|
[#6759]: https://github.com/home-assistant/home-assistant/pull/6759
|
||||||
|
[#6760]: https://github.com/home-assistant/home-assistant/pull/6760
|
||||||
|
[#6761]: https://github.com/home-assistant/home-assistant/pull/6761
|
||||||
|
[#6763]: https://github.com/home-assistant/home-assistant/pull/6763
|
||||||
|
[#6764]: https://github.com/home-assistant/home-assistant/pull/6764
|
||||||
|
[#6768]: https://github.com/home-assistant/home-assistant/pull/6768
|
||||||
|
[#6769]: https://github.com/home-assistant/home-assistant/pull/6769
|
||||||
|
[#6770]: https://github.com/home-assistant/home-assistant/pull/6770
|
||||||
|
[#6771]: https://github.com/home-assistant/home-assistant/pull/6771
|
||||||
|
[#6772]: https://github.com/home-assistant/home-assistant/pull/6772
|
||||||
|
[#6773]: https://github.com/home-assistant/home-assistant/pull/6773
|
||||||
|
[#6775]: https://github.com/home-assistant/home-assistant/pull/6775
|
||||||
|
[#6776]: https://github.com/home-assistant/home-assistant/pull/6776
|
||||||
|
[#6779]: https://github.com/home-assistant/home-assistant/pull/6779
|
||||||
|
[#6782]: https://github.com/home-assistant/home-assistant/pull/6782
|
||||||
|
[#6789]: https://github.com/home-assistant/home-assistant/pull/6789
|
||||||
|
[#6790]: https://github.com/home-assistant/home-assistant/pull/6790
|
||||||
|
[#6792]: https://github.com/home-assistant/home-assistant/pull/6792
|
||||||
|
[#6793]: https://github.com/home-assistant/home-assistant/pull/6793
|
||||||
|
[#6795]: https://github.com/home-assistant/home-assistant/pull/6795
|
||||||
|
[#6796]: https://github.com/home-assistant/home-assistant/pull/6796
|
||||||
|
[#6798]: https://github.com/home-assistant/home-assistant/pull/6798
|
||||||
|
[#6799]: https://github.com/home-assistant/home-assistant/pull/6799
|
||||||
|
[#6801]: https://github.com/home-assistant/home-assistant/pull/6801
|
||||||
|
[#6803]: https://github.com/home-assistant/home-assistant/pull/6803
|
||||||
|
[#6805]: https://github.com/home-assistant/home-assistant/pull/6805
|
||||||
|
[#6807]: https://github.com/home-assistant/home-assistant/pull/6807
|
||||||
|
[#6808]: https://github.com/home-assistant/home-assistant/pull/6808
|
||||||
|
[#6809]: https://github.com/home-assistant/home-assistant/pull/6809
|
||||||
|
[#6810]: https://github.com/home-assistant/home-assistant/pull/6810
|
||||||
|
[#6817]: https://github.com/home-assistant/home-assistant/pull/6817
|
||||||
|
[#6826]: https://github.com/home-assistant/home-assistant/pull/6826
|
||||||
|
[#6829]: https://github.com/home-assistant/home-assistant/pull/6829
|
||||||
|
[#6830]: https://github.com/home-assistant/home-assistant/pull/6830
|
||||||
|
[#6832]: https://github.com/home-assistant/home-assistant/pull/6832
|
||||||
|
[#6835]: https://github.com/home-assistant/home-assistant/pull/6835
|
||||||
|
[#6838]: https://github.com/home-assistant/home-assistant/pull/6838
|
||||||
|
[#6839]: https://github.com/home-assistant/home-assistant/pull/6839
|
||||||
|
[#6846]: https://github.com/home-assistant/home-assistant/pull/6846
|
||||||
|
[#6847]: https://github.com/home-assistant/home-assistant/pull/6847
|
||||||
|
[#6848]: https://github.com/home-assistant/home-assistant/pull/6848
|
||||||
|
[#6852]: https://github.com/home-assistant/home-assistant/pull/6852
|
||||||
|
[#6853]: https://github.com/home-assistant/home-assistant/pull/6853
|
||||||
|
[#6856]: https://github.com/home-assistant/home-assistant/pull/6856
|
||||||
|
[#6860]: https://github.com/home-assistant/home-assistant/pull/6860
|
||||||
|
[#6862]: https://github.com/home-assistant/home-assistant/pull/6862
|
||||||
|
[#6864]: https://github.com/home-assistant/home-assistant/pull/6864
|
||||||
|
[#6865]: https://github.com/home-assistant/home-assistant/pull/6865
|
||||||
|
[#6866]: https://github.com/home-assistant/home-assistant/pull/6866
|
||||||
|
[#6867]: https://github.com/home-assistant/home-assistant/pull/6867
|
||||||
|
[#6868]: https://github.com/home-assistant/home-assistant/pull/6868
|
||||||
|
[#6872]: https://github.com/home-assistant/home-assistant/pull/6872
|
||||||
|
[#6873]: https://github.com/home-assistant/home-assistant/pull/6873
|
||||||
|
[#6874]: https://github.com/home-assistant/home-assistant/pull/6874
|
||||||
|
[#6875]: https://github.com/home-assistant/home-assistant/pull/6875
|
||||||
|
[#6883]: https://github.com/home-assistant/home-assistant/pull/6883
|
||||||
|
[#6885]: https://github.com/home-assistant/home-assistant/pull/6885
|
||||||
|
[#6886]: https://github.com/home-assistant/home-assistant/pull/6886
|
||||||
|
[#6887]: https://github.com/home-assistant/home-assistant/pull/6887
|
||||||
|
[#6890]: https://github.com/home-assistant/home-assistant/pull/6890
|
||||||
|
[#6892]: https://github.com/home-assistant/home-assistant/pull/6892
|
||||||
|
[#6897]: https://github.com/home-assistant/home-assistant/pull/6897
|
||||||
|
[#6904]: https://github.com/home-assistant/home-assistant/pull/6904
|
||||||
|
[#6906]: https://github.com/home-assistant/home-assistant/pull/6906
|
||||||
|
[#6908]: https://github.com/home-assistant/home-assistant/pull/6908
|
||||||
|
[#6911]: https://github.com/home-assistant/home-assistant/pull/6911
|
||||||
|
[#6915]: https://github.com/home-assistant/home-assistant/pull/6915
|
||||||
|
[#6921]: https://github.com/home-assistant/home-assistant/pull/6921
|
||||||
|
[#6922]: https://github.com/home-assistant/home-assistant/pull/6922
|
||||||
|
[#6924]: https://github.com/home-assistant/home-assistant/pull/6924
|
||||||
|
[#6926]: https://github.com/home-assistant/home-assistant/pull/6926
|
||||||
|
[#6927]: https://github.com/home-assistant/home-assistant/pull/6927
|
||||||
|
[#6928]: https://github.com/home-assistant/home-assistant/pull/6928
|
||||||
|
[#6929]: https://github.com/home-assistant/home-assistant/pull/6929
|
||||||
|
[#6931]: https://github.com/home-assistant/home-assistant/pull/6931
|
||||||
|
[#6935]: https://github.com/home-assistant/home-assistant/pull/6935
|
||||||
|
[#6936]: https://github.com/home-assistant/home-assistant/pull/6936
|
||||||
|
[#6938]: https://github.com/home-assistant/home-assistant/pull/6938
|
||||||
|
[#6940]: https://github.com/home-assistant/home-assistant/pull/6940
|
||||||
|
[#6941]: https://github.com/home-assistant/home-assistant/pull/6941
|
||||||
|
[#6944]: https://github.com/home-assistant/home-assistant/pull/6944
|
||||||
|
[#6945]: https://github.com/home-assistant/home-assistant/pull/6945
|
||||||
|
[#6946]: https://github.com/home-assistant/home-assistant/pull/6946
|
||||||
|
[#6947]: https://github.com/home-assistant/home-assistant/pull/6947
|
||||||
|
[#6948]: https://github.com/home-assistant/home-assistant/pull/6948
|
||||||
|
[#6950]: https://github.com/home-assistant/home-assistant/pull/6950
|
||||||
|
[#6952]: https://github.com/home-assistant/home-assistant/pull/6952
|
||||||
|
[#6955]: https://github.com/home-assistant/home-assistant/pull/6955
|
||||||
|
[#6960]: https://github.com/home-assistant/home-assistant/pull/6960
|
||||||
|
[#6963]: https://github.com/home-assistant/home-assistant/pull/6963
|
||||||
|
[#6964]: https://github.com/home-assistant/home-assistant/pull/6964
|
||||||
|
[#6966]: https://github.com/home-assistant/home-assistant/pull/6966
|
||||||
|
[#6967]: https://github.com/home-assistant/home-assistant/pull/6967
|
||||||
|
[#6968]: https://github.com/home-assistant/home-assistant/pull/6968
|
||||||
|
[#6974]: https://github.com/home-assistant/home-assistant/pull/6974
|
||||||
|
[#6975]: https://github.com/home-assistant/home-assistant/pull/6975
|
||||||
|
[#6981]: https://github.com/home-assistant/home-assistant/pull/6981
|
||||||
|
[#6986]: https://github.com/home-assistant/home-assistant/pull/6986
|
||||||
|
[#6990]: https://github.com/home-assistant/home-assistant/pull/6990
|
||||||
|
[@ChristianKuehnel]: https://github.com/ChristianKuehnel
|
||||||
|
[@DavidMStraub]: https://github.com/DavidMStraub
|
||||||
|
[@KlaasH]: https://github.com/KlaasH
|
||||||
|
[@MartinHjelmare]: https://github.com/MartinHjelmare
|
||||||
|
[@Xorso]: https://github.com/Xorso
|
||||||
|
[@aarya123]: https://github.com/aarya123
|
||||||
|
[@aequitas]: https://github.com/aequitas
|
||||||
|
[@amelchio]: https://github.com/amelchio
|
||||||
|
[@andrey-git]: https://github.com/andrey-git
|
||||||
|
[@armills]: https://github.com/armills
|
||||||
|
[@aufano]: https://github.com/aufano
|
||||||
|
[@balloob]: https://github.com/balloob
|
||||||
|
[@bdurrer]: https://github.com/bdurrer
|
||||||
|
[@citruz]: https://github.com/citruz
|
||||||
|
[@danielhiversen]: https://github.com/danielhiversen
|
||||||
|
[@danieljkemp]: https://github.com/danieljkemp
|
||||||
|
[@danielperna84]: https://github.com/danielperna84
|
||||||
|
[@diogos88]: https://github.com/diogos88
|
||||||
|
[@fabaff]: https://github.com/fabaff
|
||||||
|
[@geekofweek]: https://github.com/geekofweek
|
||||||
|
[@goto100]: https://github.com/goto100
|
||||||
|
[@gurumitts]: https://github.com/gurumitts
|
||||||
|
[@happyleavesaoc]: https://github.com/happyleavesaoc
|
||||||
|
[@jacobtomlinson]: https://github.com/jacobtomlinson
|
||||||
|
[@jannau]: https://github.com/jannau
|
||||||
|
[@jawilson]: https://github.com/jawilson
|
||||||
|
[@leppa]: https://github.com/leppa
|
||||||
|
[@lwis]: https://github.com/lwis
|
||||||
|
[@m00dawg]: https://github.com/m00dawg
|
||||||
|
[@mezz64]: https://github.com/mezz64
|
||||||
|
[@micw]: https://github.com/micw
|
||||||
|
[@nugget]: https://github.com/nugget
|
||||||
|
[@pavoni]: https://github.com/pavoni
|
||||||
|
[@pvizeli]: https://github.com/pvizeli
|
||||||
|
[@quadportnick]: https://github.com/quadportnick
|
||||||
|
[@rytilahti]: https://github.com/rytilahti
|
||||||
|
[@tantecky]: https://github.com/tantecky
|
||||||
|
[@tchellomello]: https://github.com/tchellomello
|
||||||
|
[@titilambert]: https://github.com/titilambert
|
||||||
|
[@turbokongen]: https://github.com/turbokongen
|
||||||
|
[@viswa-swami]: https://github.com/viswa-swami
|
||||||
|
[@w1ll1am23]: https://github.com/w1ll1am23
|
||||||
|
[@wardcraigj]: https://github.com/wardcraigj
|
||||||
|
[@wmalgadey]: https://github.com/wmalgadey
|
BIN
source/images/blog/2017-04-0.42/social.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
source/images/screenshots/ip-set.jpg
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
source/images/supported_brands/eddystone.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
source/images/supported_brands/honeywell-tc.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
source/images/supported_brands/lockitron.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
source/images/supported_brands/lyft.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
source/images/supported_brands/mvg.png
Normal file
After Width: | Height: | Size: 24 KiB |