diff --git a/_config.yml b/_config.yml index daebb5427a8..cbea8a327f2 100644 --- a/_config.yml +++ b/_config.yml @@ -139,9 +139,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 54 +current_minor_version: 55 current_patch_version: 0 -date_released: 2017-09-23 +date_released: 2017-10-07 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index d84c655c35b..07a262fad63 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Duck DNS" +title: "DuckDNS" description: "Automatically update your Duck DNS IP address." date: 2017-04-30 13:28 sidebar: true diff --git a/source/_components/abode.markdown b/source/_components/abode.markdown index fc5d5d9beea..2d3df195cff 100644 --- a/source/_components/abode.markdown +++ b/source/_components/abode.markdown @@ -51,7 +51,7 @@ Configuration variables: - **password** (*Required*): Password for your Abode account. - **name** (*Optional*): The name for your alarm controller. - **polling** (*Optional*): Enable polling if cloud push updating is less reliable. Will update the devices once every 30 seconds. Defaults to False. -- **exclude** (*Optional*): A list of devices to exclude from Home Assistant by their Abode `device_id`, found within the component attributes. +- **exclude** (*Optional*): A list of devices to exclude from Home Assistant by their Abode `device_id` or `automation_id`, found within the component attributes. - **lights** (*Optional*): A list of switch devices that Home Assistant should treat as lights by the switches Abode `device_id`, found within the component attributes. ## {% linkable_title Events %} @@ -106,4 +106,4 @@ Trigger a quick action automation on your Abode system. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | No | String or list of strings that point at `entity_id`s of binary_sensors that represent your Abode quick actions. \ No newline at end of file +| `entity_id` | No | String or list of strings that point at `entity_id`s of binary_sensors that represent your Abode quick actions. diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown index 76f33648ece..af2738bc9f0 100644 --- a/source/_components/alarm_control_panel.egardia.markdown +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -55,13 +55,14 @@ alarm_control_panel: report_server_enabled: True report_server_port: PORT_OF_EGARDIASERVER (85 as per the instructions above) report_server_codes: - arm: XXXXXXXXXXXXXXXX - disarm: XXXXXXXXXXXXXXXX + arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX armhome: XXXXXXXXXXXXXXXX triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - standby: XXXXXXXXXXXXXXXX + ignore: XXXXXXXXXXXXXXXX ``` - Note that you can have more than one code for triggered since every sensor generates its own code. arm, disarm, armhome and standby will all be one code. + Note that for triggered, arm and disarm multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as ignore (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, armhome, triggered) even when system checks occur. + 5. Start the `egardiaserver.py` script on boot of your Home Assistant machine, for example by using systemd. To use this method, create a shell script named `egardiaserver.sh` that contains the following: ```bash source /srv/homeassistant/homeassistant_venv/bin/activate diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown index 92cdaa2304a..453c76d7e01 100644 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ b/source/_components/binary_sensor.ffmpeg_motion.markdown @@ -52,9 +52,9 @@ $ ffmpeg -i YOUR_INPUT -an -filter:v select=gt(scene\,0.1) -f framemd5 - If you are running into trouble with this sensor, please refer to the [troubleshooting section](/components/ffmpeg/#troubleshooting). -#### {% linkable_title Tipps %} +#### {% linkable_title Tips %} -- Use motion only in a customer area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): +- Use motion only in a custom area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): ```yaml extra_arguments: -filter:v "crop=100:100:12:34" diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index c577be56c02..3b1ff864534 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -14,9 +14,13 @@ ha_iot_class: "depends" --- -The `mqtt` binary sensor platform uses the MQTT message payload as the sensor value. If messages in this `state_topic` are published with *RETAIN* flag, the sensor will receive an instant update with the last known value. Otherwise, the initial state will be off. +The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. -To use your MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: +The binary sensor state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. + +The `mqtt` binary sensor platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT cover device goes offline (i.e. publishes `payload_not_available` to `availability_topic`), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability_topic` is defined, Home Assistant will consider the MQTT device to be available. + +To use an MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -27,32 +31,37 @@ binary_sensor: Configuration variables: +- **name** (*Optional*): The name of the binary sensor. Default is `MQTT Binary Sensor`. - **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values. -- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. -- **payload_on** (*Optional*): The payload that represents on state. Default is "ON". -- **payload_off** (*Optional*): The payload that represents state. Default is "OFF". +- **payload_on** (*Optional*): The payload that represents the on state. Default is `ON`. +- **payload_off** (*Optional*): The payload that represents the off state. Default is `OFF`. +- **availability_topic** (*Optional*): The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor availability state will always be `available`. If `availability_topic` is defined, the binary sensor availability state will be `unavailable` by default. +- **payload_available** (*Optional*): The payload that represents the online state. Default is `online`. +- **payload_not_available** (*Optional*): The payload that represents the offline state. Default is `offline`. +- **qos** (*Optional*): The maximum QoS level to be used when receiving messages. Default is `0`. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -For a quick check you can use the command line tools shipped with `mosquitto` to send MQTT messages. Set the state of a sensor manually: +To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. To set the state of the binary sensor manually: ```bash $ mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m "OFF" ``` -An extended configuration for the same sensor could look like this if you want/need to be more specific. +The example below shows a full configuration for a binary sensor: ```yaml # Example configuration.yaml entry binary_sensor: - platform: mqtt + name: "Window Contact Sensor" state_topic: "home-assistant/window/contact" - name: "Windows contact" + payload_on: "ON" + payload_off: "OFF" + availability_topic: "home-assistant/window/availability" + payload_available: "online" + payload_not_available: "offline" qos: 0 - payload_on: "1" - payload_off: "0" device_class: opening value_template: '{% raw %}{{ value.x }}{% endraw %}' ``` - diff --git a/source/_components/binary_sensor.raincloud.markdown b/source/_components/binary_sensor.raincloud.markdown new file mode 100644 index 00000000000..b5e1678d53b --- /dev/null +++ b/source/_components/binary_sensor.raincloud.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Melnor Raincloud Binary Sensor" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Binary Sensor +ha_release: "0.55" +ha_iot_class: "Cloud Polling" +--- + +To get your [Melnor RainCloud](https://wifiaquatimer.com) binary sensors working within Home Assistant, please follow the instructions for the general [Raincloud component](/components/raincloud). + +Once you have enabled the [Raincloud component](/components/raincloud), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: raincloud +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **is_watering**: Return if is currently watering per zone. + - **status**: Return status from the Melnor RainCloud Controller and Melnor RainCloud Faucet. diff --git a/source/_components/binary_sensor.threshold.markdown b/source/_components/binary_sensor.threshold.markdown index 025b2f2c064..c2e9e875b39 100644 --- a/source/_components/binary_sensor.threshold.markdown +++ b/source/_components/binary_sensor.threshold.markdown @@ -14,7 +14,9 @@ ha_release: 0.34 --- -The `threshold` binary sensor platform is consuming the state from another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of this sensor change.. +The `threshold` binary sensor platform observes the state of another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of the threshold sensor is changed. + +If the sensor is configured with no hysteresis and the sensor value is equal to the threshold, the sensor is turned off since it is not `lower` or `upper` with respect to the threshold. It's an alternative to the template binary sensor's `value_template:` to get the abnormal/too high/too low states. @@ -36,7 +38,7 @@ binary_sensor: Configuration variables: - **entity_id** (*Required*): The entity to monitor. Only [sensors](/components/sensor/) are supported. -- **threshold** (*Required*): The value which is the threshold. +- **threshold** (*Required*): The threshold which the observed value is compared against. - **type** (*Required*): `lower` if the value needs to be below the threshold or `upper` if higher. +- **hysteresis** (*Optional*): The distance the observed value must be from the threshold before the state is changed. Defaults to `0.0` - **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`. - diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown new file mode 100644 index 00000000000..162acec8257 --- /dev/null +++ b/source/_components/climate.mqtt.markdown @@ -0,0 +1,90 @@ +--- +layout: page +title: "MQTT HVAC" +description: "Instructions how to integrate MQTT HVAC into Home Assistant." +date: 2017-07-31 19:59 +sidebar: true +comments: false +sharing: true +footer: true +logo: heat-control.png +ha_category: Climate +ha_release: 0.55 +ha_iot_class: "Local Polling" +--- + +The `mqtt` climate platform let you control your MQTT enabled HVAC devices. + +The platform currently works in optimistic mode, which means it does not obtain states from MQTT topics, but it sends and remembers control commands. + +It uses a sensor under the hood to obtain the current temperature. + +```yaml +# Example configuration.yaml entry +climate: + - platform: mqtt + name: Study + current_temperature_topic: /sensors/hvac_study/current_temp + temperature_command_topic: /sensors/hvac_study/target_temp +``` + +Configuration variables *except* for MQTT topics: + +- **name** (*Required*): Name of MQTT HVAC. +- **qos** (*Optional*): The maximum QoS level of the state topic. Default is `0` and will also be used to publishing messages. +- **retain** (*Optional*): If the published message should have the retain flag on or not. +- **send_if_off** (*Optional*): Set to `false` to suppress sending of all MQTT messages when the current mode is `Off`. Defaults to `true`. +- **initial** (*Optional*): Set the initial target temperature. Defaults to 21 degrees. +- **payload_on** (*Optional*): For MQTT topics that control an `on` / `off` value (e.g., `aux_command_topic`), set the value that should be sent for `on`. Defaults to 'ON'. +- **payload_off** (*Optional*): For MQTT topics that control an `on` / `off` value (e.g., `aux_command_topic`), set the value that should be sent for `off`. Defaults to 'OFF'. + +Configuration of the MQTT topics: + +- **current_temperature_topic** (*Optional*): The MQTT topic on which to listen for the current temperature +- **power_command_topic** (*Optional*): The MQTT topic to publish commands to change the power state. This is useful if your device has a separate power toggle in addition to mode. +- **mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the HVAC operation mode. +- **mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC operation mode. If this is not set, the operation mode works in optimistic mode (see below). +- **temperature_command_topic** (*Optional*): The MQTT topic to publish commands to change the target temperature. +- **temperature_state_topic** (*Optional*): The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below). +- **fan_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the fan mode. +- **fan_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC fan mode. If this is not set, the fan mode works in optimistic mode (see below). +- **swing_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the swing mode. +- **swing_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC swing mode. If this is not set, the swing mode works in optimistic mode (see below). +- **away_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the away mode. +- **away_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC away mode. If this is not set, the away mode works in optimistic mode (see below). +- **hold_command_topic** (*Optional*): The MQTT topic to publish commands to change the hold mode. +- **hold_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC hold mode. If this is not set, the hold mode works in optimistic mode (see below). +- **aux_command_topic** (*Optional*): The MQTT topic to publish commands to switch auxiliary heat. +- **aux_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the auxiliary heat mode. If this is not set, the auxiliary heat mode works in optimistic mode (see below). + +#### Optimistic mode + +If a property works in *optimistic mode* (when the corresponding state topic is not set), home assistant will assume that any state changes published to the command topics did work and change the internal state of the entity immediately after publishing to the command topic. If it does not work in optimistic mode, the internal state of the entity is only updated when the requested update is confirmed by the device through the state topic. + +### {% linkable_title Example %} + +A full configuration example looks like the one below. + +```yaml +# Full example configuration.yaml entry +climate: + - platform: mqtt + name: Study + target_sensor: sensor.study_temperature + modes: + - off + - cool + - fan_only + swing_modes: + - on + - off + fan_modes: + - high + - medium + - low + power_command_topic: "study/ac/power/set" + mode_command_topic: "study/ac/mode/set" + temperature_command_topic: "study/ac/temperature/set" + fan_mode_command_topic: "study/ac/fan/set" + swing_mode_command_topic: "study/ac/swing/set" +``` diff --git a/source/_components/climate.wink.markdown b/source/_components/climate.wink.markdown index d39c300169a..3a41d2c81d5 100644 --- a/source/_components/climate.wink.markdown +++ b/source/_components/climate.wink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Wink Thermostat" -description: "Instructions how to setup the Wink binary sensors within Home Assistant." +title: "Wink Climate" +description: "Instructions how to setup the Wink climate devices within Home Assistant." date: 2016-11-01 22:36 sidebar: true comments: false @@ -14,20 +14,21 @@ ha_iot_class: "Cloud Polling" --- -The Wink climate platform allows you to get data from your [Wink](http://www.wink.com/) thermostats. +The Wink climate platform allows you to get data from your [Wink](http://www.wink.com/) thermostats, Air Conditioners, and Water Heaters. The requirement is that you have setup [Wink](/components/wink/). ### {% linkable_title Supported climate devices %} -- Nest (No wink hub required) -- Ecobee (No wink hub required) -- Sensi (No wink hub required) +- Nest (No Wink hub required) +- Ecobee (No Wink hub required) +- Sensi (No Wink hub required) - Carrier (Unconfirmed) -- Honeywell (No wink hub required) +- Honeywell (No Wink hub required) - Generic Z-Wave - Quirky Aros window AC unit +- Rheem Econet water heaters (No Wink hub required)
The above devices are confirmed to work, but others may work as well.
diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown
index c062119727f..fb501ea9bae 100755
--- a/source/_components/cover.mqtt.markdown
+++ b/source/_components/cover.mqtt.markdown
@@ -13,39 +13,44 @@ ha_iot_class: "depends"
ha_release: 0.18
---
-The `mqtt` cover platform enables the possibility to control an MQTT cover. The device state will be updated only after receiving the a new
-state from `state_topic`. If these messages are published with `RETAIN` flag, the MQTT device will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state will be `unknown`.
+The `mqtt` cover platform allows you to control an MQTT cover (such as blinds, a rollershutter, or a garage door).
-There is a state attribute that stores the relative position of the device, where 0 means the device is `closed` and all other intermediate positions means the device is `open`.
+The device state (`open` or `closed`) will be updated only after a new message is published on `state_topic` matching `state_open` or `state_closed`. If these messages are published with the `retain` flag set, the cover will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`.
-When a state topic is not available, the cover will work in optimistic mode. In this mode, the cover will immediately change state after every command. Otherwise, the cover will wait for state confirmation from device (message from `state_topic`).
+There is an attribute that stores the relative position of the device, where 0 means the device is `closed` and all other intermediate positions means the device is `open`.
-Optimistic mode can be forced, even if `state_topic` is available. Try to enable it, if experiencing incorrect cover operation.
+If a state topic is not defined, the cover will work in optimistic mode. In this mode, the cover will immediately change state (`open` or `closed`) after every command sent by Home Assistant. If a state topic is defined, the cover will wait for a message on `state_topic` matching `state_open` or `state_closed` before changing state in Home Assistant.
+
+Optimistic mode can be forced, even if a `state_topic` is defined. Try to enable it if experiencing incorrect cover operation.
+
+The `mqtt` cover platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e. publishes `payload_not_available` to `availability_topic`), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up.
To use your MQTT cover in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
cover:
- platform: mqtt
name: "MQTT Cover"
- state_topic: "home-assistant/cover"
command_topic: "home-assistant/cover/set"
```
Configuration variables:
- **name** (*Optional*): The name of the sensor. Default is `MQTT Cover`.
-- **state_topic** (*Optional*): The MQTT topic subscribed to receive sensor values.
-- **command_topic** (*Optional*): The MQTT topic to publish commands to control the rollershutter.
+- **command_topic** (*Optional*): The MQTT topic to publish commands to control the cover.
- **payload_open** (*Optional*): The payload that opens the cover. Default is `OPEN`.
- **payload_close** (*Optional*): The payload that closes the cover. Default is `CLOSE`.
-- **payload_stop** (*Optional*): The payload that stops the rollershutter. default is `STOP`.
-- **state_open** (*Optional*): The payload that represents open state. Default is `open`.
-- **state_closed** (*Optional*): The payload that represents closed state. Default is `closed`.
+- **payload_stop** (*Optional*): The payload that stops the cover. default is `STOP`.
+- **state_topic** (*Optional*): The MQTT topic subscribed to receive cover state messages.
+- **state_open** (*Optional*): The payload that represents the open state. Default is `open`.
+- **state_closed** (*Optional*): The payload that represents the closed state. Default is `closed`.
+- **availability_topic** (*Optional*): The MQTT topic subscribed to to receive birth and LWT messages from the MQTT cover device. If `availability_topic` is not defined, the cover availability state will always be "available". If `availability_topic` is defined, the cover availability state will be "unavailable" by default.
+- **payload_available** (*Optional*): The payload that represents the online state. Default is `online`.
+- **payload_not_available** (*Optional*): The payload that represents the offline state. Default is `offline`.
- **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is `true` if no state topic defined, else `false`.
-- **qos** (*Optional*): The maximum QoS level of the state topic. Default is `0`. Will also be used when publishing messages.
-- **retain** (*Optional*): If the published message should have the retain flag on or not. Default is `false`.
+- **qos** (*Optional*): The maximum QoS level to be used when receiving and publishing messages. Default is `0`.
+- **retain** (*Optional*): Defines if published messages should have the retain flag set. Default is `false`.
- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
- **set_position_topic** (*Optional*): The MQTT topic to publish position commands to.
- **set_position_template** (*Optional*): Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{position}}`. If no template is defined, the numeric position (0-100) will be written directly to the topic.
@@ -60,7 +65,7 @@ Configuration variables:
## {% linkable_title Examples %}
-In this section you find some real life examples of how to use this sensor.
+In this section you find some real life examples of how to use this platform.
### {% linkable_title Full configuration without tilt %}
@@ -70,16 +75,19 @@ The example below shows a full configuration for a cover without tilt.
# Example configuration.yml entry
cover:
- platform: mqtt
- state_topic: "home-assistant/cover"
- command_topic: "home-assistant/cover/set"
name: "MQTT Cover"
+ command_topic: "home-assistant/cover/set"
+ state_topic: "home-assistant/cover/state"
+ availability_topic: "home-assistant/cover/availability"
qos: 0
retain: true
payload_open: "OPEN"
payload_close: "CLOSE"
payload_stop: "STOP"
- state_open: "OPEN"
- state_closed: "STATE"
+ state_open: "open"
+ state_closed: "closed"
+ payload_available: "online"
+ payload_not_available: "offline"
optimistic: false
value_template: '{% raw %}{{ value.x }}{% endraw %}'
```
@@ -92,27 +100,30 @@ The example below shows a full configuration for a cover.
# Example configuration.yml entry
cover:
- platform: mqtt
- state_topic: "home-assistant/cover"
- command_topic: "home-assistant/cover/set"
name: "MQTT Cover"
+ command_topic: "home-assistant/cover/set"
+ state_topic: "home-assistant/cover/state"
+ availability_topic: "home-assistant/cover/availability"
qos: 0
retain: true
payload_open: "OPEN"
payload_close: "CLOSE"
payload_stop: "STOP"
- state_open: "OPEN"
- state_closed: "STATE"
+ state_open: "open"
+ state_closed: "closed"
+ payload_available: "online"
+ payload_not_available: "offline"
optimistic: false
value_template: '{% raw %}{{ value.x }}{% endraw %}'
tilt_command_topic: 'home-assistant/cover/tilt'
- tilt_status_topic: 'home-assistant/cover/tilt-status'
+ tilt_status_topic: 'home-assistant/cover/tilt-state'
tilt_min: 0
tilt_max: 180
tilt_closed_value: 70
tilt_opened_value: 180
```
-For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your cover manually:
+To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. This allows you to operate your cover manually:
```bash
$ mosquitto_pub -h 127.0.0.1 -t home-assistant/cover/set -m "CLOSE"
diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown
index eda955e0342..70dbbce1025 100644
--- a/source/_components/device_tracker.netgear.markdown
+++ b/source/_components/device_tracker.netgear.markdown
@@ -29,10 +29,10 @@ device_tracker:
Configuration variables:
-- **host** (*Required*): The IP address of your router, e.g. `192.168.1.1`.
-- **username** (*Required*): The username of an user with administrative privileges, usually `admin`.
+- **host** (*Optional*): The IP address of your router, e.g. `192.168.1.1`. If not provided `routerlogin.net` will be used.
+- **username** (*Optional*): The username of an user with administrative privileges. If not provided `admin` will be used.
+- **port** (*Optional*): The port your router communicates with (defaults to `5000`, but `80` is also known to be used on some models).
- **password** (*Required*): The password for your given admin account.
-- **port** (*Optional*): The port your router communicates with (defaults to 5000, but 80 is also known to be used on some models)
List of models that are known to use port 80:
- Nighthawk X4S - AC2600 (R7800)
diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown
index 59e6cca8752..5d7ec9b0841 100644
--- a/source/_components/device_tracker.owntracks.markdown
+++ b/source/_components/device_tracker.owntracks.markdown
@@ -9,7 +9,7 @@ sharing: true
footer: true
logo: owntracks.png
ha_category: Presence Detection
-featured: true
+featured: false
ha_release: 0.7.4
---
diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown
new file mode 100644
index 00000000000..830883a8800
--- /dev/null
+++ b/source/_components/device_tracker.owntracks_http.markdown
@@ -0,0 +1,36 @@
+---
+layout: page
+title: "OwnTracks (via HTTP)"
+description: "Instructions how to use Owntracks via HTTP to track devices in Home Assistant."
+date: 2017-09-28 07:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: owntracks.png
+ha_category: Presence Detection
+featured: true
+ha_release: 0.55
+---
+
+OwnTracks is a free and open source application that allows you to track your location in Home Assistant. This is a platform that supports OwnTracks via their HTTP publishing method.
+
+To integrate Owntracks tracking via HTTP in Home Assistant, add the following section to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: owntracks_http
+```
+
+For configuration options and usage instructions, read the documentation for the [OwnTracks platform](/components/device_tracker.owntracks/).
+
+## {% linkable_title Configuring OwnTracks to submit data via HTTP %}
+
+Open OwnTracks and go to Connection preferences:
+
+ - Mode: Private HTTP
+ - Host:
+
+Calling service wink/pull_newly_added_wink_devices will add the new key code to Home Assistant. The device will also show up on the next restart of Home Assistant.
+
If supported by your lock, a binary sensor will be created for each user key code you have defined. These key codes will turn on when the code is entered and automatically turn off after a few seconds.
diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown
index bd09d453347..38cf5f1f8bd 100644
--- a/source/_components/media_player.panasonic_viera.markdown
+++ b/source/_components/media_player.panasonic_viera.markdown
@@ -24,6 +24,9 @@ Currently known supported models:
- TX-49DX650B
- TX-50DX700B
- TX-L42ET50
+- TX-P50GT60E
+- TX-65EXW784
+- TX-32AS520E
If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io).
diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown
index d5168793d0e..d04f58489ce 100644
--- a/source/_components/media_player.webostv.markdown
+++ b/source/_components/media_player.webostv.markdown
@@ -28,7 +28,7 @@ media_player:
Configuration variables:
- **host** (*Optional*): The IP of the LG webOS Smart TV, e.g. `192.168.0.10`.
-- **mac** (*Optional*): The MAC address of the TV, e.g. `C8:08:E9:99:99:1A`.
+- **turn_on_action** (*Optional*): Defines an [action](/docs/automation/action/) to turn the TV on.
- **name** (*Optional*): The name you would like to give to the LG webOS Smart TV.
- **timeout** (*Optional*): The timeout for connections to the TV in seconds.
- **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`.
@@ -36,7 +36,7 @@ Configuration variables:
- ***sources** array (*Optional*): List of hardware inputs.
If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered if they use the default name setting of `[LG] webOS TV`.
-Home Assistant is able to turn on a LG webOS Smart TV if you specify its MAC address with `mac:`. Some models require the **Mobile TV On** setting and/or a wired network connection to use Wake-on-LAN.
+Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan.
A full configuration example will look like the sample below:
@@ -45,10 +45,13 @@ A full configuration example will look like the sample below:
media_player:
- platform: webostv
host: 192.168.0.10
- mac: C8:08:E9:99:99:1A
name: Living Room TV
timeout: 5
filename: webostv.conf
+ turn_on_action:
+ service: persistent_notification.create
+ data:
+ message: "Turn on action"
customize:
sources:
- livetv
diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown
index 7945840415e..cbf831206a3 100644
--- a/source/_components/mqtt_statestream.markdown
+++ b/source/_components/mqtt_statestream.markdown
@@ -2,7 +2,7 @@
layout: page
title: "MQTT Statestream"
description: "Instructions how to setup MQTT Statestream within Home Assistant."
-date: 2017-09-11 08:00
+date: 2017-10-01 20:00
sidebar: true
comments: false
sharing: true
@@ -21,11 +21,17 @@ To enable MQTT Statestream in Home Assistant, add the following section to your
# Example configuration.yaml entry
mqtt_statestream:
base_topic: homeassistant
+ publish_attributes: true
+ publish_timestamps: true
```
Configuration variables:
- **base_topic** (*Required*): Base topic used to generate the actual topic used to publish.
+- **publish_attributes** (*Optional*): Publish attributes of the entity as well as the state.
+Default is false.
+- **publish_timestamps** (*Optional*): Publish the last_changed and last_updated timestamps for the entity.
+Default is false.
## Operation
@@ -34,4 +40,8 @@ When any Home Assistant entity changes, this component will publish that change
The topic for each entity is different, so you can easily subscribe other systems to just the entities you are interested in.
The topic will be in the form `base_topic/domain/entity/state`.
-For example, with the example configuration above, if an entity called 'light.master_bedroom_dimmer' is turned on, this component will publish `on` to `homeassistant/light/master_bedroom_dimmer/state`.
+For example, with the example configuration above, if an entity called 'light.master_bedroom_dimmer' is turned on, this component will publish `on` to `homeassistant/light/master_bedroom_dimmer/state`.
+
+If that entity also has an attribute called `brightness`, the component will also publish the value of that attribute to `homeassistant/light/master_bedroom_dimmer/brightness`.
+
+The last_updated and last_changed values for the entity will be published to `homeassistant/light/master_bedroom_dimmer/last_updated` and `homeassistant/light/master_bedroom_dimmer/last_changed`, respectively. The timestamps are in ISO 8601 format - for example, `2017-10-01T23:20:30.920969+00:00`.
diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown
index 3dd7ee2fd4a..1d76436a13e 100644
--- a/source/_components/notify.facebook.markdown
+++ b/source/_components/notify.facebook.markdown
@@ -50,6 +50,51 @@ automation:
- +919784516314
```
+You can also send messages to users that do not have stored their phone number with Facebook, but this requires a bit more work. The Messenger platform uses page specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specifc ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID:
+
+```php
+
+
+
+
+
+
+
+
+
diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown
index 318a1619512..130ab6b20b4 100644
--- a/source/_components/wink.markdown
+++ b/source/_components/wink.markdown
@@ -34,7 +34,7 @@ This method will require you to setup a developer account with Wink. This proces
This form of authentication doesn't require any settings in the configuration.yaml other than `wink:` this is because you will be guided through setup via the configurator on the frontend.
-When using the configurator make sure the initial setup is performed on the same local network as the Home Assistant server, if not from the same box Home Assistant is running on. This will allow for authentication redirects to happen correctly.
+When using the configurator make sure the initial setup is performed on the same local network as the Home Assistant server, if not from the same box Home Assistant is running on. This will allow for authentication redirects to happen correctly.
-The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).
+Calling service wink/pull_newly_added_wink_devices after a device is paired will add that new device to Home Assistant. The device will also show up on the next restart of Home Assistant.
+
+Home Assistant entity_ids for Wink devices are based on the Wink device's name. Calling this service will not change the entity_id of the deivce until Home Assistant is restarted.
+
+The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).
+You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant`
+
+You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant`
+
+
+
+Add a The Things Network integration
+
+Choose a The Things Network integration
+
+Add a The Things Network Data Storage integration
+
+Add a The Things Network integration
+
+Devices overview
+
+Application overview
+
+Access keys
+
+
+Beside the improved Wink support which was contributed by [@w1ll1am23], ships this release a wide variety of new components and platforms. The `input_slider` components has received a makeover by [@BioSehnsucht] and is now [`input_number`][input_number docs]. [@tinloaf] added a feature that allows you to enter dates: [`input_datetime`][input_datetime docs]. Both will help you to improve your automation rules.
+
+## {% linkable_title DuckDNS %}
+Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for no Hass.io users to get a similar feature.
+
+## {% linkable_title Recorder %}
+The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allow to handle this task when needed.
+
+## {% linkable_title Owntracks %}
+[Owntracks](http://owntracks.org/) is an easy way to track your devices. For some times we have the device tracker which depends on [MQTT][device_tracker.owntracks docs] but thanks to a new feature in Owntracks we can now offer support for HTTP. The [new platform][device_tracker.owntracks_http docs] doesn't require a MQTT broker but sends messages directly as HTTP requests to Home Assistant.
+
+## {% linkable_title Tibber %}
+This release introduces a new sensor: [Tibber][sensor.tibber docs]. The sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer. This will allow you to make automation for turning off the heater when the electricity price is high or only charge your electric car when the prices are low. We further plan to add support for showing future electricity prices and historic electricity consumption data. Tibber is currently only available in Norway and Sweden
+
+## {% linkable_title The Things Network %}
+[The Things Network](https://www.thethingsnetwork.org/) (TTN) is a [LoRaWAN](https://www.thethingsnetwork.org/wiki/LoRaWAN/Home) based network especially designed for IoT devices. With this [integration][thethingsnetwork docs] one can observe the state of devices which are out of range of the local WiFi network as long as they are connected to a TTN gateway.
+
+## {% linkable_title New Platforms %}
+
+- GeoRSS sensor ([@exxamalte] - [#9331]) ([sensor.geo_rss_events docs]) (new-platform)
+- Add DuckDNS component ([@balloob] - [#9556]) ([duckdns docs]) (new-platform)
+- Add OwnTracks over HTTP ([@balloob] - [#9582]) ([http docs]) ([device_tracker.owntracks docs]) ([device_tracker.owntracks_http docs]) (new-platform)
+- Add an input_datetime ([@tinloaf] - [#9313]) ([input_datetime docs]) (new-platform)
+- Cover component for RFlink ([@passie] - [#9432]) ([rflink docs]) ([cover.rflink docs]) (new-platform)
+- Introducing support to Melnor RainCloud sprinkler systems ([@tchellomello] - [#9287]) ([raincloud docs]) ([binary_sensor.raincloud docs]) ([sensor.raincloud docs]) ([switch.raincloud docs]) (new-platform)
+- MQTT climate platform [continuation of #8750] ([@tinloaf] - [#9589]) ([climate.mqtt docs]) (new-platform)
+- Add Tibber sensor ([@danielhiversen] - [#9661]) ([sensor.tibber docs]) (new-platform)
+- Updating clicksendaudio component based on feedback ([@jeroenterheerdt] - [#9692]) ([notify.clicksendaudio docs]) (new-platform)
+- Support for The Things Network ([@fabaff] - [#9627]) ([thethingsnetwork docs]) ([sensor.thethingsnetwork_data docs]) (new-platform)
+
+## {% linkable_title If you need help... %}
+...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template.
+
+
+
+## {% linkable_title Breaking Changes %}
+
+- history_graph component: If your component used `history.get_significant_states` function then you need to adjust the string `entitity_id` parameter has been changed to a list of strings `entity_ids` parameter. ([@andrey-git] - [#9472]) ([history_graph docs]) (breaking change)
+- UPNP component: The `external_port` configuration option was removed. ([@balloob] - [#9560]) ([upnp docs]) (breaking change)
+- New Wink services: pair new device, rename, delete and add new lock key code. All device attributes that are multi-words are now separated by "_" and no longer " ". ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change)
+- TP-Link Switch: Attribute names now uses underscores and unnecessary capitalization was removed. ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change)
+- Renamed `input_slider` to `input_number` which has now a numeric text box option. ([@BioSehnsucht] - [#9494]) ([demo docs]) ([input_number docs]) (breaking change)
+- Recorder: Add new purge service and interval. ([@milanvo] - [#9523]) (breaking change)
+- OpenCV image processing: Typo in classifier was fixed. ([@arsaboo] - [#9697]) ([image_processing.opencv docs]) (breaking change)
+- Tradfri Lights: Async support with resource observation. ([@lwis] - [#7815]) ([tradfri docs]) ([light.tradfri docs]) (breaking change)
+
+## {% linkable_title All changes %}
+
+- flux led lib 0.20 ([@danielhiversen] - [#9533]) ([light.flux_led docs])
+- Update AbodePy to 0.11.8 ([@MisterWil] - [#9537]) ([abode docs])
+- Bump python_openzwave to 0.4.0.35 ([@arsaboo] - [#9542]) ([zwave docs])
+- update usps ([@happyleavesaoc] - [#9540]) ([usps docs]) ([camera.usps docs]) ([sensor.usps docs])
+- Bugfix Homematic hub object ([@pvizeli] - [#9544]) ([homematic docs])
+- Fix a bunch of typos ([@mika] - [#9545])
+- Catch no longer existing process in systemmonitor ([@Tommatheussen] - [#9535]) ([sensor.systemmonitor docs])
+- Upgrade pyasn1 to 0.3.6 ([@fabaff] - [#9548])
+- Add history_graph component ([@andrey-git] - [#9472]) (breaking change)
+- GeoRSS sensor ([@exxamalte] - [#9331]) ([sensor.geo_rss_events docs]) (new-platform)
+- Fixed bug with all switch devices being excluded ([@MisterWil] - [#9555]) ([switch.abode docs])
+- fix usps? ([@happyleavesaoc] - [#9557]) ([usps docs]) ([sensor.usps docs])
+- Added support for ARM_NIGHT for manual_mqtt alarm ([@snjoetw] - [#9358]) ([alarm_control_panel.manual_mqtt docs])
+- Various AirVisual bugfixes ([@bachya] - [#9554]) ([sensor.airvisual docs])
+- Updated Arlo cameras with new attributes ([@bachya] - [#9565]) ([arlo docs]) ([camera.arlo docs])
+- Allow specifying multiple ports for UPNP component ([@balloob] - [#9560]) ([upnp docs]) (breaking change)
+- Update yeelight to 0.3.3. ([@pfalcon] - [#9561]) ([light.yeelight docs])
+- Add test cases and fix for device_defaults fire_event option. ([@aequitas] - [#9567]) ([light.rflink docs]) ([switch.rflink docs])
+- Use simplepush module, enable event, and allow encrypted communication ([@fabaff] - [#9568]) ([notify.simplepush docs])
+- Add DuckDNS component ([@balloob] - [#9556]) ([duckdns docs]) (new-platform)
+- Clean up OwnTracks ([@balloob] - [#9569]) ([device_tracker.owntracks docs])
+- MQTT Cover: Add availability topic and configurable payloads ([@marthoc] - [#9445]) ([cover.mqtt docs])
+- Upgrade dsmr_parser to 0.11 ([@fabaff] - [#9576]) ([sensor.dsmr docs])
+- Added new statistic attributes ([@sti0] - [#9433]) ([vacuum.xiaomi docs])
+- Upgrade youtube_dl to 2017.9.24 ([@fabaff] - [#9575]) ([media_extractor docs])
+- Upgrade lyft_rides to 0.2 ([@enriquegh] - [#9578]) ([sensor.lyft docs])
+- Increase Comed timeout since it sometimes takes a long time for the API to respond ([@joe248] - [#9536]) ([sensor.comed_hourly_pricing docs])
+- Allow customizable turn on action for LG WebOS tv ([@cmsimike] - [#9206]) ([media_player.webostv docs]) (breaking change)
+- IMAP Unread sensor updated for async and push ([@amelchio] - [#9562]) ([sensor.imap docs])
+- Replace emulated_hue: with emulated_hue_hidden: for consistency. ([@rbflurry] - [#9382]) ([emulated_hue docs])
+- Upgrade Sphinx to 1.6.4 ([@fabaff] - [#9584])
+- Bump pyatv to 0.3.5 ([@postlund] - [#9586]) ([apple_tv docs]) ([media_player.apple_tv docs])
+- New Wink services. pair new device, rename, and delete, add new lock key code. Add water heater support ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change)
+- Fixes UPS MyChoice exception ([@bachya] - [#9587]) ([sensor.ups docs])
+- FedEx: Adds "packages" as a unit ([@bachya] - [#9588]) ([sensor.fedex docs])
+- Cleanup entity & remove warning ([@pvizeli] - [#9606])
+- Add OwnTracks over HTTP ([@balloob] - [#9582]) ([http docs]) ([device_tracker.owntracks docs]) ([device_tracker.owntracks_http docs]) (new-platform)
+- upgrade python-ecobee-api ([@nkgilley] - [#9612]) ([ecobee docs])
+- Change TP-Link Switch power statistics attribute names ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change)
+- Migrate Alexa smart home to registry ([@balloob] - [#9616]) ([alexa.smart_home docs])
+- Add an input_datetime ([@tinloaf] - [#9313]) ([input_datetime docs]) (new-platform)
+- Cover component for RFlink ([@passie] - [#9432]) ([rflink docs]) ([cover.rflink docs]) (new-platform)
+- Introducing support to Melnor RainCloud sprinkler systems ([@tchellomello] - [#9287]) ([raincloud docs]) ([binary_sensor.raincloud docs]) ([sensor.raincloud docs]) ([switch.raincloud docs]) (new-platform)
+- Rewrite synology camera by using py-synology package ([@snjoetw] - [#9583]) ([camera.synology docs])
+- yeelight: allow turn_off transitions, fixes #9602 ([@rytilahti] - [#9605]) ([light.yeelight docs])
+- Move 'voltage' to const ([@fabaff] - [#9621]) ([sensor.pvoutput docs]) ([switch.tplink docs])
+- Yamaha MusicCast: check known_hosts ([@jalmeroth] - [#9580]) ([media_player.yamaha_musiccast docs])
+- Fixed away_mode for Ecobee thermostat. ([@etsinko] - [#9559]) ([climate.ecobee docs])
+- Switched VeraSensor to use category ids ([@alanfischer] - [#9624]) ([sensor.vera docs])
+- splunk: Handle datetime objects in event payload ([@philk] - [#9628]) ([splunk docs])
+- MQTT climate platform [continuation of #8750] ([@tinloaf] - [#9589]) ([climate.mqtt docs]) (new-platform)
+- wunderground: fix supported language codes #9631 ([@szogi] - [#9633]) ([sensor.wunderground docs])
+- add myself to codeowners ([@rytilahti] - [#9642])
+- raspihats: unmet dependency fix ([@szogi] - [#9638]) ([raspihats docs])
+- Fixes broken source links in API docs ([@David-Byrne] - [#9636])
+- Move group services into their own YAML ([@balloob] - [#9597]) ([group docs])
+- Facebook Messenger notify component: add support for sending messages to specific page user IDs ([@mweimerskirch] - [#9643]) ([notify.facebook docs])
+- arlo: Add battery level sensor ([@vickyg3] - [#9637]) ([sensor.arlo docs])
+- Add hysteresis attribute to threshold binary sensor ([@hotplot] - [#9596]) ([binary_sensor.threshold docs])
+- Upgrade numpy to 1.13.3 ([@fabaff] - [#9646]) ([image_processing.opencv docs])
+- Upgrade youtube_dl to 2017.10.01 ([@fabaff] - [#9647]) ([media_extractor docs])
+- Upgrade discord.py to 0.16.12 ([@fabaff] - [#9648]) ([notify.discord docs])
+- Upgrade netdisco to 1.2.2 ([@fabaff] - [#9649])
+- Upgrade influxdb to 4.1.1 ([@fabaff] - [#9652]) ([influxdb docs])
+- Upgrade googlemaps to 2.5.1 ([@fabaff] - [#9653]) ([sensor.google_travel_time docs])
+- mqtt_statestream: Add options to publish attributes/timestamps ([@mw-white] - [#9645]) ([mqtt_statestream docs])
+- Fixed bugs related to exception handling in pythonegardia. Updating package requirement accordingly ([@jeroenterheerdt] - [#9663]) ([alarm_control_panel.egardia docs])
+- Update google-api-python-client to 1.6.4 ([@arsaboo] - [#9658]) ([google docs])
+- Bump abode to 0.11.9 ([@MisterWil] - [#9660]) ([abode docs])
+- Unit tests to improve core coverage ([@armills] - [#9659])
+- Upgrade pyitachip2ir to 0.0.7 ([@alanfischer] - [#9669]) ([remote.itach docs])
+- Fix typo in cancel_command description ([@FletcherAU] - [#9671])
+- Rename input_slider to input_number and add numeric text box option ([@BioSehnsucht] - [#9494]) ([demo docs]) ([input_number docs]) (breaking change)
+- Properly handle an invalid end_time ([@alanfischer] - [#9675]) ([history docs])
+- Support new feature to push API data to hassio ([@pvizeli] - [#9679]) ([hassio docs])
+- Adding ignore capability to Egardia component ([@jeroenterheerdt] - [#9676]) ([alarm_control_panel.egardia docs])
+- Fix Google Calendar/oauth2client warning ([@mbrrg] - [#9677]) ([google docs])
+- Implement DSMR5 support. ([@aequitas] - [#9686]) ([sensor.dsmr docs])
+- Add Tibber sensor ([@danielhiversen] - [#9661]) ([sensor.tibber docs]) (new-platform)
+- Add recorder purge service, rework purge timer ([@milanvo] - [#9523]) (breaking change)
+- Fix restore state by filter out null value row from DB query ([@milanvo] - [#9690]) ([history docs])
+- Updating clicksendaudio component based on feedback ([@jeroenterheerdt] - [#9692]) ([notify.clicksendaudio docs]) (new-platform)
+- Refactoring of onewire sensor component ([@bestlibre] - [#9691]) ([sensor.onewire docs])
+- HassIO replace config changes ([@pvizeli] - [#9695]) ([hassio docs])
+- Fixed typo in opencv ([@arsaboo] - [#9697]) ([image_processing.opencv docs]) (breaking change)
+- [light.tradfri] async support with resource observation. ([@lwis] - [#7815]) ([tradfri docs]) ([light.tradfri docs]) (breaking change)
+- Create secrets file in default config ([@balloob] - [#9685])
+- Support for The Things Network ([@fabaff] - [#9627]) ([thethingsnetwork docs]) ([sensor.thethingsnetwork_data docs]) (new-platform)
+- Deprecate Python 3.4 support ([@balloob] - [#9684])
+- Fix coap commit ([@balloob] - [#9712])
+- [light.tradfri] Clone all of aiocoap to ensure pinned commit will be present ([@lwis] - [#9713])
+
+[#7815]: https://github.com/home-assistant/home-assistant/pull/7815
+[#9206]: https://github.com/home-assistant/home-assistant/pull/9206
+[#9287]: https://github.com/home-assistant/home-assistant/pull/9287
+[#9303]: https://github.com/home-assistant/home-assistant/pull/9303
+[#9313]: https://github.com/home-assistant/home-assistant/pull/9313
+[#9331]: https://github.com/home-assistant/home-assistant/pull/9331
+[#9358]: https://github.com/home-assistant/home-assistant/pull/9358
+[#9382]: https://github.com/home-assistant/home-assistant/pull/9382
+[#9432]: https://github.com/home-assistant/home-assistant/pull/9432
+[#9433]: https://github.com/home-assistant/home-assistant/pull/9433
+[#9445]: https://github.com/home-assistant/home-assistant/pull/9445
+[#9472]: https://github.com/home-assistant/home-assistant/pull/9472
+[#9494]: https://github.com/home-assistant/home-assistant/pull/9494
+[#9523]: https://github.com/home-assistant/home-assistant/pull/9523
+[#9533]: https://github.com/home-assistant/home-assistant/pull/9533
+[#9535]: https://github.com/home-assistant/home-assistant/pull/9535
+[#9536]: https://github.com/home-assistant/home-assistant/pull/9536
+[#9537]: https://github.com/home-assistant/home-assistant/pull/9537
+[#9540]: https://github.com/home-assistant/home-assistant/pull/9540
+[#9542]: https://github.com/home-assistant/home-assistant/pull/9542
+[#9544]: https://github.com/home-assistant/home-assistant/pull/9544
+[#9545]: https://github.com/home-assistant/home-assistant/pull/9545
+[#9548]: https://github.com/home-assistant/home-assistant/pull/9548
+[#9554]: https://github.com/home-assistant/home-assistant/pull/9554
+[#9555]: https://github.com/home-assistant/home-assistant/pull/9555
+[#9556]: https://github.com/home-assistant/home-assistant/pull/9556
+[#9557]: https://github.com/home-assistant/home-assistant/pull/9557
+[#9559]: https://github.com/home-assistant/home-assistant/pull/9559
+[#9560]: https://github.com/home-assistant/home-assistant/pull/9560
+[#9561]: https://github.com/home-assistant/home-assistant/pull/9561
+[#9562]: https://github.com/home-assistant/home-assistant/pull/9562
+[#9565]: https://github.com/home-assistant/home-assistant/pull/9565
+[#9567]: https://github.com/home-assistant/home-assistant/pull/9567
+[#9568]: https://github.com/home-assistant/home-assistant/pull/9568
+[#9569]: https://github.com/home-assistant/home-assistant/pull/9569
+[#9575]: https://github.com/home-assistant/home-assistant/pull/9575
+[#9576]: https://github.com/home-assistant/home-assistant/pull/9576
+[#9578]: https://github.com/home-assistant/home-assistant/pull/9578
+[#9580]: https://github.com/home-assistant/home-assistant/pull/9580
+[#9582]: https://github.com/home-assistant/home-assistant/pull/9582
+[#9583]: https://github.com/home-assistant/home-assistant/pull/9583
+[#9584]: https://github.com/home-assistant/home-assistant/pull/9584
+[#9586]: https://github.com/home-assistant/home-assistant/pull/9586
+[#9587]: https://github.com/home-assistant/home-assistant/pull/9587
+[#9588]: https://github.com/home-assistant/home-assistant/pull/9588
+[#9589]: https://github.com/home-assistant/home-assistant/pull/9589
+[#9596]: https://github.com/home-assistant/home-assistant/pull/9596
+[#9597]: https://github.com/home-assistant/home-assistant/pull/9597
+[#9605]: https://github.com/home-assistant/home-assistant/pull/9605
+[#9606]: https://github.com/home-assistant/home-assistant/pull/9606
+[#9607]: https://github.com/home-assistant/home-assistant/pull/9607
+[#9612]: https://github.com/home-assistant/home-assistant/pull/9612
+[#9616]: https://github.com/home-assistant/home-assistant/pull/9616
+[#9621]: https://github.com/home-assistant/home-assistant/pull/9621
+[#9624]: https://github.com/home-assistant/home-assistant/pull/9624
+[#9627]: https://github.com/home-assistant/home-assistant/pull/9627
+[#9628]: https://github.com/home-assistant/home-assistant/pull/9628
+[#9633]: https://github.com/home-assistant/home-assistant/pull/9633
+[#9636]: https://github.com/home-assistant/home-assistant/pull/9636
+[#9637]: https://github.com/home-assistant/home-assistant/pull/9637
+[#9638]: https://github.com/home-assistant/home-assistant/pull/9638
+[#9642]: https://github.com/home-assistant/home-assistant/pull/9642
+[#9643]: https://github.com/home-assistant/home-assistant/pull/9643
+[#9645]: https://github.com/home-assistant/home-assistant/pull/9645
+[#9646]: https://github.com/home-assistant/home-assistant/pull/9646
+[#9647]: https://github.com/home-assistant/home-assistant/pull/9647
+[#9648]: https://github.com/home-assistant/home-assistant/pull/9648
+[#9649]: https://github.com/home-assistant/home-assistant/pull/9649
+[#9652]: https://github.com/home-assistant/home-assistant/pull/9652
+[#9653]: https://github.com/home-assistant/home-assistant/pull/9653
+[#9658]: https://github.com/home-assistant/home-assistant/pull/9658
+[#9659]: https://github.com/home-assistant/home-assistant/pull/9659
+[#9660]: https://github.com/home-assistant/home-assistant/pull/9660
+[#9661]: https://github.com/home-assistant/home-assistant/pull/9661
+[#9663]: https://github.com/home-assistant/home-assistant/pull/9663
+[#9669]: https://github.com/home-assistant/home-assistant/pull/9669
+[#9671]: https://github.com/home-assistant/home-assistant/pull/9671
+[#9675]: https://github.com/home-assistant/home-assistant/pull/9675
+[#9676]: https://github.com/home-assistant/home-assistant/pull/9676
+[#9677]: https://github.com/home-assistant/home-assistant/pull/9677
+[#9679]: https://github.com/home-assistant/home-assistant/pull/9679
+[#9684]: https://github.com/home-assistant/home-assistant/pull/9684
+[#9685]: https://github.com/home-assistant/home-assistant/pull/9685
+[#9686]: https://github.com/home-assistant/home-assistant/pull/9686
+[#9690]: https://github.com/home-assistant/home-assistant/pull/9690
+[#9691]: https://github.com/home-assistant/home-assistant/pull/9691
+[#9692]: https://github.com/home-assistant/home-assistant/pull/9692
+[#9695]: https://github.com/home-assistant/home-assistant/pull/9695
+[#9697]: https://github.com/home-assistant/home-assistant/pull/9697
+[#9712]: https://github.com/home-assistant/home-assistant/pull/9712
+[#9713]: https://github.com/home-assistant/home-assistant/pull/9713
+[@BioSehnsucht]: https://github.com/BioSehnsucht
+[@David-Byrne]: https://github.com/David-Byrne
+[@FletcherAU]: https://github.com/FletcherAU
+[@MisterWil]: https://github.com/MisterWil
+[@Tommatheussen]: https://github.com/Tommatheussen
+[@aequitas]: https://github.com/aequitas
+[@alanfischer]: https://github.com/alanfischer
+[@amelchio]: https://github.com/amelchio
+[@andrey-git]: https://github.com/andrey-git
+[@armills]: https://github.com/armills
+[@arsaboo]: https://github.com/arsaboo
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@bestlibre]: https://github.com/bestlibre
+[@cmsimike]: https://github.com/cmsimike
+[@danielhiversen]: https://github.com/danielhiversen
+[@djchen]: https://github.com/djchen
+[@enriquegh]: https://github.com/enriquegh
+[@etsinko]: https://github.com/etsinko
+[@exxamalte]: https://github.com/exxamalte
+[@fabaff]: https://github.com/fabaff
+[@happyleavesaoc]: https://github.com/happyleavesaoc
+[@hotplot]: https://github.com/hotplot
+[@jalmeroth]: https://github.com/jalmeroth
+[@jeroenterheerdt]: https://github.com/jeroenterheerdt
+[@joe248]: https://github.com/joe248
+[@lwis]: https://github.com/lwis
+[@marthoc]: https://github.com/marthoc
+[@mbrrg]: https://github.com/mbrrg
+[@mika]: https://github.com/mika
+[@milanvo]: https://github.com/milanvo
+[@mw-white]: https://github.com/mw-white
+[@mweimerskirch]: https://github.com/mweimerskirch
+[@nkgilley]: https://github.com/nkgilley
+[@passie]: https://github.com/passie
+[@pfalcon]: https://github.com/pfalcon
+[@philk]: https://github.com/philk
+[@postlund]: https://github.com/postlund
+[@pvizeli]: https://github.com/pvizeli
+[@rbflurry]: https://github.com/rbflurry
+[@rytilahti]: https://github.com/rytilahti
+[@snjoetw]: https://github.com/snjoetw
+[@sti0]: https://github.com/sti0
+[@szogi]: https://github.com/szogi
+[@tchellomello]: https://github.com/tchellomello
+[@tinloaf]: https://github.com/tinloaf
+[@vickyg3]: https://github.com/vickyg3
+[@w1ll1am23]: https://github.com/w1ll1am23
+[abode docs]: https://home-assistant.io/components/abode/
+[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/
+[alarm_control_panel.manual_mqtt docs]: https://home-assistant.io/components/alarm_control_panel.manual_mqtt/
+[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/
+[apple_tv docs]: https://home-assistant.io/components/apple_tv/
+[arlo docs]: https://home-assistant.io/components/arlo/
+[binary_sensor.raincloud docs]: https://home-assistant.io/components/binary_sensor.raincloud/
+[binary_sensor.threshold docs]: https://home-assistant.io/components/binary_sensor.threshold/
+[binary_sensor.wink docs]: https://home-assistant.io/components/binary_sensor.wink/
+[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/
+[camera.synology docs]: https://home-assistant.io/components/camera.synology/
+[camera.usps docs]: https://home-assistant.io/components/camera.usps/
+[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/
+[climate.mqtt docs]: https://home-assistant.io/components/climate.mqtt/
+[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/
+[cover.rflink docs]: https://home-assistant.io/components/cover.rflink/
+[demo docs]: https://home-assistant.io/components/demo/
+[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/
+[device_tracker.owntracks_http docs]: https://home-assistant.io/components/device_tracker.owntracks_http/
+[duckdns docs]: https://home-assistant.io/components/duckdns/
+[ecobee docs]: https://home-assistant.io/components/ecobee/
+[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/
+[google docs]: https://home-assistant.io/components/google/
+[group docs]: https://home-assistant.io/components/group/
+[hassio docs]: https://home-assistant.io/components/hassio/
+[history docs]: https://home-assistant.io/components/history/
+[homematic docs]: https://home-assistant.io/components/homematic/
+[http docs]: https://home-assistant.io/components/http/
+[image_processing.opencv docs]: https://home-assistant.io/components/image_processing.opencv/
+[influxdb docs]: https://home-assistant.io/components/influxdb/
+[input_datetime docs]: https://home-assistant.io/components/input_datetime/
+[input_number docs]: https://home-assistant.io/components/input_number/
+[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/
+[light.rflink docs]: https://home-assistant.io/components/light.rflink/
+[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/
+[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/
+[lock.wink docs]: https://home-assistant.io/components/lock.wink/
+[media_extractor docs]: https://home-assistant.io/components/media_extractor/
+[media_player.apple_tv docs]: https://home-assistant.io/components/media_player.apple_tv/
+[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/
+[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/
+[mqtt_statestream docs]: https://home-assistant.io/components/mqtt_statestream/
+[notify.clicksendaudio docs]: https://home-assistant.io/components/notify.clicksendaudio/
+[notify.discord docs]: https://home-assistant.io/components/notify.discord/
+[notify.facebook docs]: https://home-assistant.io/components/notify.facebook/
+[notify.simplepush docs]: https://home-assistant.io/components/notify.simplepush/
+[raincloud docs]: https://home-assistant.io/components/raincloud/
+[raspihats docs]: https://home-assistant.io/components/raspihats/
+[remote.itach docs]: https://home-assistant.io/components/remote.itach/
+[rflink docs]: https://home-assistant.io/components/rflink/
+[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/
+[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/
+[sensor.comed_hourly_pricing docs]: https://home-assistant.io/components/sensor.comed_hourly_pricing/
+[sensor.dsmr docs]: https://home-assistant.io/components/sensor.dsmr/
+[sensor.fedex docs]: https://home-assistant.io/components/sensor.fedex/
+[sensor.geo_rss_events docs]: https://home-assistant.io/components/sensor.geo_rss_events/
+[sensor.google_travel_time docs]: https://home-assistant.io/components/sensor.google_travel_time/
+[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/
+[sensor.lyft docs]: https://home-assistant.io/components/sensor.lyft/
+[sensor.onewire docs]: https://home-assistant.io/components/sensor.onewire/
+[sensor.pvoutput docs]: https://home-assistant.io/components/sensor.pvoutput/
+[sensor.raincloud docs]: https://home-assistant.io/components/sensor.raincloud/
+[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/
+[sensor.thethingsnetwork_data docs]: https://home-assistant.io/components/sensor.thethingsnetwork_data/
+[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/
+[sensor.ups docs]: https://home-assistant.io/components/sensor.ups/
+[sensor.usps docs]: https://home-assistant.io/components/sensor.usps/
+[sensor.vera docs]: https://home-assistant.io/components/sensor.vera/
+[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/
+[splunk docs]: https://home-assistant.io/components/splunk/
+[switch.abode docs]: https://home-assistant.io/components/switch.abode/
+[switch.raincloud docs]: https://home-assistant.io/components/switch.raincloud/
+[switch.rflink docs]: https://home-assistant.io/components/switch.rflink/
+[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/
+[thethingsnetwork docs]: https://home-assistant.io/components/thethingsnetwork/
+[tradfri docs]: https://home-assistant.io/components/tradfri/
+[upnp docs]: https://home-assistant.io/components/upnp/
+[usps docs]: https://home-assistant.io/components/usps/
+[vacuum.xiaomi docs]: https://home-assistant.io/components/vacuum.xiaomi/
+[wink docs]: https://home-assistant.io/components/wink/
+[zwave docs]: https://home-assistant.io/components/zwave/
+[forum]: https://community.home-assistant.io/
+[issue]: https://github.com/home-assistant/home-assistant/issues
+[discord]: https://discord.gg/c5DvZ4e
+[history_graph docs]: https://home-assistant.io/components/history_graph/
diff --git a/source/developers/development_guidelines.markdown b/source/developers/development_guidelines.markdown
index 46eb7f3c852..d5fa2359e1c 100644
--- a/source/developers/development_guidelines.markdown
+++ b/source/developers/development_guidelines.markdown
@@ -67,7 +67,7 @@ REQUIREMENTS = ['xmltodict==0.11.0']
### {% linkable_title Log messages %}
-There is no need to add the platform or component name to the log messages. This will be added automatically. Like `syslog` messages there shouldn't be no period at the end. Try to avoid brackets and additional quotes around the output to make it easier for users to parse the log. A widely style is shown below but you are free to compose the messages as you like.
+There is no need to add the platform or component name to the log messages. This will be added automatically. Like `syslog` messages there shouldn't be any period at the end. Try to avoid brackets and additional quotes around the output to make it easier for users to parse the log. A widely style is shown below but you are free to compose the messages as you like.
```python
_LOGGER.error("No route to device: %s", self._resource)
diff --git a/source/hassio/run_local.markdown b/source/hassio/run_local.markdown
index 00751ba6979..549213b22c8 100644
--- a/source/hassio/run_local.markdown
+++ b/source/hassio/run_local.markdown
@@ -9,7 +9,7 @@ sharing: true
footer: true
---
-Hass.io is a managed environment, which means that you can install applications that can be embedded into Home Assistant using the `command_line` sensor/switch.
+Hass.io is a managed environment, which means that you can't install applications that can be embedded into Home Assistant using the `command_line` sensor/switch.
There are two options if you need to run a script to read data from a sensor or send commands to other devices on Hass.io.
diff --git a/source/images/blog/2017-10-0.55/components.png b/source/images/blog/2017-10-0.55/components.png
new file mode 100644
index 00000000000..e358afa6bd8
Binary files /dev/null and b/source/images/blog/2017-10-0.55/components.png differ
diff --git a/source/images/components/thethingsnetwork/access_key.png b/source/images/components/thethingsnetwork/access_key.png
new file mode 100644
index 00000000000..16017540bc3
Binary files /dev/null and b/source/images/components/thethingsnetwork/access_key.png differ
diff --git a/source/images/components/thethingsnetwork/add_integration.png b/source/images/components/thethingsnetwork/add_integration.png
new file mode 100644
index 00000000000..8b48b3338d0
Binary files /dev/null and b/source/images/components/thethingsnetwork/add_integration.png differ
diff --git a/source/images/components/thethingsnetwork/applications.png b/source/images/components/thethingsnetwork/applications.png
new file mode 100644
index 00000000000..00dd6a1be1a
Binary files /dev/null and b/source/images/components/thethingsnetwork/applications.png differ
diff --git a/source/images/components/thethingsnetwork/choose_integration.png b/source/images/components/thethingsnetwork/choose_integration.png
new file mode 100644
index 00000000000..0bdd41ea7ea
Binary files /dev/null and b/source/images/components/thethingsnetwork/choose_integration.png differ
diff --git a/source/images/components/thethingsnetwork/confirm_integration.png b/source/images/components/thethingsnetwork/confirm_integration.png
new file mode 100644
index 00000000000..436514c192e
Binary files /dev/null and b/source/images/components/thethingsnetwork/confirm_integration.png differ
diff --git a/source/images/components/thethingsnetwork/devices.png b/source/images/components/thethingsnetwork/devices.png
new file mode 100644
index 00000000000..36864146e11
Binary files /dev/null and b/source/images/components/thethingsnetwork/devices.png differ
diff --git a/source/images/components/thethingsnetwork/storage_integration.png b/source/images/components/thethingsnetwork/storage_integration.png
new file mode 100644
index 00000000000..8e5058911d2
Binary files /dev/null and b/source/images/components/thethingsnetwork/storage_integration.png differ
diff --git a/source/images/screenshots/geo-rss-incidents-group-screenshot.png b/source/images/screenshots/geo-rss-incidents-group-screenshot.png
new file mode 100644
index 00000000000..cca54f6d751
Binary files /dev/null and b/source/images/screenshots/geo-rss-incidents-group-screenshot.png differ
diff --git a/source/images/screenshots/history_graph.png b/source/images/screenshots/history_graph.png
new file mode 100644
index 00000000000..2478ff77e83
Binary files /dev/null and b/source/images/screenshots/history_graph.png differ
diff --git a/source/images/supported_brands/raincloud.jpg b/source/images/supported_brands/raincloud.jpg
new file mode 100644
index 00000000000..81957811fb7
Binary files /dev/null and b/source/images/supported_brands/raincloud.jpg differ
diff --git a/source/images/supported_brands/rss.png b/source/images/supported_brands/rss.png
new file mode 100644
index 00000000000..7a6881c3319
Binary files /dev/null and b/source/images/supported_brands/rss.png differ
diff --git a/source/images/supported_brands/thethingsnetwork.png b/source/images/supported_brands/thethingsnetwork.png
new file mode 100644
index 00000000000..5fff0d35a40
Binary files /dev/null and b/source/images/supported_brands/thethingsnetwork.png differ
diff --git a/source/images/supported_brands/tibber.png b/source/images/supported_brands/tibber.png
new file mode 100644
index 00000000000..68825065a04
Binary files /dev/null and b/source/images/supported_brands/tibber.png differ