From 0b2a94385de4b4cae7c7ac4ed80506327d0366ba Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Wed, 25 Apr 2018 07:05:12 +0200 Subject: [PATCH 01/33] Air Conditioning Companion V3 (acpartner.v3) support added (#5083) --- source/_components/xiaomi_aqara.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index 2bf6fdb5e3..28f40d3f8c 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -18,6 +18,8 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/ #### {% linkable_title Supported Devices %} +- Xiaomi Aqara Gateway (lumi.gateway.v2, lumi.gateway.v3) +- Aqara Air Conditioning Companion (lumi.acpartner.v3) - Temperature and Humidity Sensor (1st and 2nd generation) - Motion Sensor (1st and 2nd generation) - Door and Window Sensor (1st and 2nd generation) @@ -42,8 +44,8 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/ - Gateway Radio - Gateway Button -- Aqara Air Conditioning Companion -- Aqara Intelligent Air Conditioner Controller Hub +- Xiaomi Mi Air Conditioning Companion (lumi.acpartner.v2) +- Aqara Intelligent Air Conditioner Controller Hub (lumi.acpartner.v1) - Decoupled mode of the Aqara Wall Switches (Single & Double) - Additional alarm events of the Gas and Smoke Detector: Analog alarm, battery fault alarm (smoke detector only), sensitivity fault alarm, I2C communication failure From d771d839f3eec247993ad40ebb4c6296d56e981b Mon Sep 17 00:00:00 2001 From: Mitko Masarliev Date: Wed, 25 Apr 2018 21:03:51 +0300 Subject: [PATCH 02/33] domain expiry (#5242) * domain expiry * config * config --- .../_components/sensor.domain_expiry.markdown | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 source/_components/sensor.domain_expiry.markdown diff --git a/source/_components/sensor.domain_expiry.markdown b/source/_components/sensor.domain_expiry.markdown new file mode 100644 index 0000000000..a70306909a --- /dev/null +++ b/source/_components/sensor.domain_expiry.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Domain Expiry" +description: "Instructions on how to set up Domain expiry sensors within Home Assistant." +date: 2018-04-24 14:14 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: System Monitor +ha_release: 0.69 +ha_iot_class: "depends" +--- + +The `domain_expiry` sensor gets whois information about domain and displays the expiry in days. + +To add the Domain Expiry sensor to your installation, add these options to `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: domain_expiry + domain: home-assistant.io +``` + +{% configuration %} +domain: + description: Domain name to track + required: true + type: string +name: + description: The friendly name for the certificate. + required: false + type: string + default: Domain Expiry +{% endconfiguration %} \ No newline at end of file From ca71ad7249db982a3d7a0d9e3831908d10466bed Mon Sep 17 00:00:00 2001 From: Kerwin Bryant Date: Sat, 28 Apr 2018 17:39:40 +0800 Subject: [PATCH 03/33] update doc for support aqara door lock (#5258) --- source/_components/xiaomi_aqara.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index 28f40d3f8c..1fd18f55c2 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -20,6 +20,7 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/ - Xiaomi Aqara Gateway (lumi.gateway.v2, lumi.gateway.v3) - Aqara Air Conditioning Companion (lumi.acpartner.v3) +- Aqara Intelligent Door Lock (lock.aq1) - Temperature and Humidity Sensor (1st and 2nd generation) - Motion Sensor (1st and 2nd generation) - Door and Window Sensor (1st and 2nd generation) From c6729a2fdd8a684faeb6c7f38fb66b6c5512f2c9 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Sat, 28 Apr 2018 04:03:14 -0700 Subject: [PATCH 04/33] Update HomeKit docs (#5255) * Update HomeKit docs * Fix links --- source/_components/homekit_controller.markdown | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown index 319f505ef1..b0f64fb228 100644 --- a/source/_components/homekit_controller.markdown +++ b/source/_components/homekit_controller.markdown @@ -13,14 +13,19 @@ ha_release: 0.68 ha_iot_class: "Local Polling" --- -[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](homekit) component, which allows you to control Home Assistant devices via HomeKit. +[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](/components/homekit/) component, which allows you to control Home Assistant devices via HomeKit. + +

+ You may need additional packages to support the HomeKit Python module: + `$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev` +

There is currently support for the following device types within Home Assistant: - [Light](../light.homekit_controller) - [Switch](../switch.homekit_controller) -The component will be automatically configured if the [`discovery:`](components/discovery/) component is enabled and an enable entry added for HomeKit: +The component will be automatically configured if the [`discovery:`](/components/discovery/) component is enabled and an enable entry added for HomeKit: ```yaml discovery: @@ -28,4 +33,4 @@ discovery: - homekit ``` -For each detected HomeKit accessory, a configuration prompt will appear in the web front end. Use this to provide the HomeKit PIN. +For each detected HomeKit accessory, a configuration prompt will appear in the web front end. Use this to provide the HomeKit PIN. Note that HomeKit accessories can only be paired to one device at once. If your device is currently paired with Siri, you will need to reset it in order to pair it with Home Assistant. Once Home Assistant is configured to work with the device, you can export it back to Siri with the [`HomeKit`](/components/homekit/) component. From 254b6bbf664265168abd11e1226b2486353e90c5 Mon Sep 17 00:00:00 2001 From: ratcash Date: Sat, 28 Apr 2018 16:34:24 +0200 Subject: [PATCH 05/33] Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor documentation (#5229) --- source/_components/sensor.mitemp_bt.markdown | 93 ++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 source/_components/sensor.mitemp_bt.markdown diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/sensor.mitemp_bt.markdown new file mode 100644 index 0000000000..0cfaa72542 --- /dev/null +++ b/source/_components/sensor.mitemp_bt.markdown @@ -0,0 +1,93 @@ +--- +layout: page +title: "Xiaomi BLE Temperature and Humidity sensor" +description: "Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant." +date: 2018-04-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: DIY +ha_release: 0.69 +ha_iot_class: "Local Polling" +--- + +The `mitemp_bt` sensor platform allows one to monitor room temperature and humidity. The [Xiaomi Mijia BLE Temperature and Humidity sensor with LCD](https://www.amazon.com/Temperature-Humidity-Xiaomi-Bluetooth-Screen-Remote/dp/B079L6N6PC) is a small Bluetooth Low Energy device that monitors the room temperature and humidity. As only a single BLE device can be polled at the same time, the library employs locking to make sure this is the case. + +# Installation +Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: + +- On [Hass.io](/hassio/installation/): Not yet supported. +- On other Linux systems: + - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. +    - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` +- Windows and MacOS are currently not supported by the btlewrap library. + +# Configuration +Start a scan to determine the MAC addresses of the sensor: + +```bash +$ sudo hcitool lescan +LE Scan ... +4C:65:A8:D2:31:7F MJ_HT_V1 +[...] +``` + +Or if your distribution is using bluetoothctl: + +```bash +$ bluetoothctl +[bluetooth]# scan on +Discovery started +[CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes +[NEW] Device 4C:65:A8:D2:31:7F MJ_HT_V1 + +``` + + +Check for `MJ_HT_V1` or similar entries, those are your sensor. + +To use your Mi Temperature and Humidity sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: mitemp_bt + mac: 'xx:xx:xx:xx:xx:xx' + monitored_conditions: + - temperature +``` + +- **mac** (*Required*): The MAC address of your sensor. +- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters). + - **temperature**: Temperature in C at the sensor's location. + - **humidity**: Humidity level in % at the sensor's location. + - **battery**: Battery details (in %). +- **name** (*Optional*): The name displayed in the frontend. +- **force_update** (*Optional*): Sends update events even if the value hasn't changed. +- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. +- **timeout** (*Optional*): Define the timeout value in seconds when polling (defaults to 10 if not defined) +- **retries** (*Optional*): Define the number of retries when polling (defaults to 2 if not defined) +- **cache_value** (*Optional*): Define cache expiration value in seconds (defaults to 1200 if not defined) +- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. + +Note that by default the sensor is only polled once every 5 minutes. This means with the `median: 3` setting will take as least 15 minutes before the sensor will report a value after a Home Assistant restart. Even though the hardware is able to provide new values every second, room temperaturs don't change that quickly. +Reducing polling intervals will have a negative effect on the battery life. + +A full configuration example could look like the one below: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: mitemp_bt + mac: 'xx:xx:xx:xx:xx:xx' + name: Kids Room Temp + force_update: false + median: 3 + monitored_conditions: + - temperature + - humidity + - battery +``` + From 292ef8e8157004f4ba1dd9ee461c293502b2a8fe Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 29 Apr 2018 00:33:55 +0200 Subject: [PATCH 06/33] Light mqtt_json HS color support (#5214) * Light mqtt_json HS color support * Update other MQTT light docs * Updates --- source/_components/light.mqtt.markdown | 1 + source/_components/light.mqtt_json.markdown | 43 ++++++++++++++++--- .../_components/light.mqtt_template.markdown | 1 + 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 13e1cd9f86..7678e5c9b0 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -194,6 +194,7 @@ payload_not_available: | RGB Color | ✔ | ✔ | ✔ | | Transitions | ✘ | ✔ | ✔ | | XY Color | ✔ | ✔ | ✘ | +| HS Color | ✘ | ✔ | ✘ | | White Value | ✔ | ✔ | ✔ | ## {% linkable_title Examples %} diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown index 9455777285..6e70c8be89 100644 --- a/source/_components/light.mqtt_json.markdown +++ b/source/_components/light.mqtt_json.markdown @@ -23,10 +23,12 @@ This platform supports on/off, brightness, RGB colors, XY colors, color temperat "color_temp": 155, "color": { "r": 255, - "g": 255, - "b": 255, - "x": 0.123, - "y": 0.123 + "g": 180, + "b": 200, + "x": 0.406, + "y": 0.301, + "h": 344.0, + "s": 29.412 }, "effect": "colorloop", "state": "ON", @@ -126,6 +128,11 @@ xy: required: false type: boolean default: false +hs: + description: Flag that defines if the light supports HS colors. + required: false + type: boolean + default: false availability_topic: description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false @@ -147,7 +154,7 @@ payload_not_available:

- XY and RGB can not be used at the same time. If both are provided, XY overrides RGB. + RGB, XY and HSV can not be used at the same time in `state_topic` messages. Make sure that only one of the color models is in the "color" section of the state MQTT payload.

## {% linkable_title Comparison of light MQTT platforms %} @@ -161,6 +168,7 @@ payload_not_available: | RGB Color | ✔ | ✔ | ✔ | | Transitions | ✘ | ✔ | ✔ | | XY Color | ✔ | ✔ | ✘ | +| HS Color | ✘ | ✔ | ✘ | | White Value | ✔ | ✔ | ✔ | ## {% linkable_title Examples %} @@ -215,7 +223,32 @@ Home Assistant will then convert its 8bit value in the message to and from the d ```json { "brightness": 4095, + "state": "ON" +} +``` + +### {% linkable_title HS Color %} + +To use a light with hue+saturation as the color model, set `hs` to `true` in the platform configuration: + +```yaml +light: + - platform: mqtt_json + name: mqtt_json_hs_light + state_topic: "home/light" + command_topic: "home/light/set" + hs: True +``` + +Home Assistant expects the hue values to be in the range 0 to 360 and the saturation values to be scaled from 0 to 100. For example, the following is a blue color shade: + +```json +{ "state": "ON", + "color": { + "h": 24.0, + "s": 100.0 + } } ``` diff --git a/source/_components/light.mqtt_template.markdown b/source/_components/light.mqtt_template.markdown index d623971099..11b4372672 100644 --- a/source/_components/light.mqtt_template.markdown +++ b/source/_components/light.mqtt_template.markdown @@ -132,6 +132,7 @@ payload_not_available: | RGB Color | ✔ | ✔ | ✔ | | Transitions | ✘ | ✔ | ✔ | | XY Color | ✔ | ✔ | ✘ | +| HS Color | ✘ | ✔ | ✘ | | White Value | ✔ | ✔ | ✔ | ## {% linkable_title Examples %} From 77a14ad9d9087e4ae0024fcccbf1ca1bb4963dea Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 30 Apr 2018 16:52:16 -0400 Subject: [PATCH 07/33] Add room to google assistant config (#5274) --- source/cloud/google_assistant.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/cloud/google_assistant.markdown b/source/cloud/google_assistant.markdown index 1cdced7984..85b8950829 100644 --- a/source/cloud/google_assistant.markdown +++ b/source/cloud/google_assistant.markdown @@ -37,6 +37,7 @@ cloud: aliases: - bright lights - entry lights + room: living room ``` {% configuration cloud %} @@ -84,5 +85,8 @@ google_actions: description: Aliases that can also be used to refer to this entity required: false type: list + room: + description: Hint for Google Assistant in which room this entity is. + required: false + type: string {% endconfiguration %} - From dcda30e25bdee92b1eb0dda2f582a0e41982c7cf Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Tue, 1 May 2018 20:33:26 +0200 Subject: [PATCH 08/33] Add Template Sensor device_class support (#5220) * Add Template Sensor device_class support * Update battery templates * Update track battery level example --- .../device_tracker.owntracks_http.markdown | 15 ++------------- source/_components/sensor.template.markdown | 5 +++++ source/_cookbook/track_battery_level.markdown | 18 +++--------------- 3 files changed, 10 insertions(+), 28 deletions(-) diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown index cadf1f4589..64df68dd04 100644 --- a/source/_components/device_tracker.owntracks_http.markdown +++ b/source/_components/device_tracker.owntracks_http.markdown @@ -32,7 +32,7 @@ Open OwnTracks and go to Connection preferences: - Mode: Select **Private HTTP** - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] - Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant. - + Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. Since the battery data is available as an attribute of the device tracker entity, it can be tracked with a [`template` sensor](/components/sensor.template/). @@ -47,17 +47,6 @@ sensor: friendly_name: Pixel of Paulus unit_of_measurement: "%" value_template: '{{ states.device_tracker.paulus_pixel.attributes.battery|int }}' - icon_template: >- - {% set battery_level = states.device_tracker.paulus_pixel.attributes.battery|default(0)|int %} - {% set battery_round = (battery_level / 10) |int * 10 %} - {% if battery_round >= 100 %} - mdi:battery - {% elif battery_round > 0 %} - mdi:battery-{{ battery_round }} - {% else %} - mdi:battery-alert - {% endif %} - entity_id: - - device_tracker.paulus_pixel + device_class: battery ``` {% endraw %} diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 9d1ec23a0c..8ef5a5dc44 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -69,6 +69,11 @@ sensor: description: Defines a template for the entity picture of the sensor. required: false type: template + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None {% endconfiguration %} ## {% linkable_title Considerations %} diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown index b623f46b04..13eca37354 100644 --- a/source/_cookbook/track_battery_level.markdown +++ b/source/_cookbook/track_battery_level.markdown @@ -12,7 +12,7 @@ ha_category: Automation Examples ### {% linkable_title iOS Devices %} -If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). You can also use the icon template option to create a dynamic icon that changes with the battery level. +If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). You can also the `battery` [sensor device class](/components/sensor/#device-class) to dynamically change the icon with the battery level. {% raw %} ```yaml @@ -21,8 +21,6 @@ sensor: sensors: battery_iphone: friendly_name: iPhone Battery - # "entity_id:" ensures that this sensor will only update when your device tracker does. - entity_id: device_tracker.iphone unit_of_measurement: '%' value_template: >- {%- if states.device_tracker.iphone.attributes.battery %} @@ -30,21 +28,10 @@ sensor: {% else %} {{ states.sensor.battery_iphone.state }} {%- endif %} - icon_template: > - {% set battery_level = states.sensor.battery_iphone.state|default(0)|int %} - {% set battery_round = (battery_level / 10) |int * 10 %} - {% if battery_round >= 100 %} - mdi:battery - {% elif battery_round > 0 %} - mdi:battery-{{ battery_round }} - {% else %} - mdi:battery-alert - {% endif %} + device_class: battery ``` {% endraw %} -The `else` part is used to have the sensor keep its last state if the newest [iCloud](/components/device_tracker.icloud/) update doesn't have any battery state in it (which happens sometimes). Otherwise the sensor will be blank. - ### {% linkable_title Android and iOS Devices %} While running the [Owntracks](/components/device_tracker.owntracks/) device tracker you can retrieve the battery level with a MQTT sensor. Replace username with your MQTT username (for the embedded MQTT it's simply homeassistant), and deviceid with the set Device ID in Owntracks. @@ -57,5 +44,6 @@ sensor: name: "Battery Tablet" unit_of_measurement: "%" value_template: '{{ value_json.batt }}' + device_class: battery ``` {% endraw %} From 76b908b033359661a5db2b39b61391c4833e369a Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Tue, 1 May 2018 22:25:45 +0200 Subject: [PATCH 09/33] Sensor device class docs (#5219) * Sensor device class docs * Fix binary_sensor copy * Fix headings * Add icons screenshot * Add Empty device_class * Grammar * Update customizing-devices.markdown * Add periods --- plugins/configuration.rb | 2 +- source/_components/binary_sensor.markdown | 2 ++ source/_components/sensor.markdown | 14 +++++++++++++- .../configuration/customizing-devices.markdown | 3 ++- .../screenshots/sensor_device_classes_icons.png | Bin 0 -> 15305 bytes 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 source/images/screenshots/sensor_device_classes_icons.png diff --git a/plugins/configuration.rb b/plugins/configuration.rb index 52bcf87fb9..30a5196d72 100644 --- a/plugins/configuration.rb +++ b/plugins/configuration.rb @@ -2,7 +2,7 @@ module Jekyll class ConfigurationBlock < Liquid::Block TYPE_LINKS = { 'action' => '/docs/scripts/', - 'device_class' => '/components/%{component}/#device_class', + 'device_class' => '/components/%{component}/#device-class', 'template' => '/docs/configuration/templating/', } diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 5826f9c147..fe8f4a5107 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -11,6 +11,8 @@ footer: true Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. +### {% linkable_title Device Class %} + The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - **None**: Generic on/off. This is the default and doesn't need to be set. diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown index 57ee8300bb..d973c2442e 100644 --- a/source/_components/sensor.markdown +++ b/source/_components/sensor.markdown @@ -9,8 +9,20 @@ sharing: true footer: true --- -Sensors are gathering information about states and conditions. +Sensors are gathering information about states and conditions. Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home Assistant directly, are gathered from web services, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms. +### {% linkable_title Device Class %} +The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for sensors: + +- **None**: Generic sensor. This is the default and doesn't need to be set. +- **battery**: Percentage of battery that is left. +- **humidity**: Percentage of humidity in the air. +- **temperature**: Temperature in °C or °F. + +

+ +Example of various device class icons for sensors. +

diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index c3cc8cc441..a76c1ed2aa 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -71,9 +71,10 @@ homeassistant: ### {% linkable_title Device Class %} -Device class is currently supported by the following platforms: +Device class is currently supported by the following components: * [Binary Sensor](/components/binary_sensor/) +* [Sensor](/components/sensor/) * [Cover](/components/cover/) ### {% linkable_title Reloading customize %} diff --git a/source/images/screenshots/sensor_device_classes_icons.png b/source/images/screenshots/sensor_device_classes_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..58e115250ca2630b6c0738f3301c65152b60787e GIT binary patch literal 15305 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 U36jH=e^y9dR^?-jv{}f10Xu Date: Tue, 1 May 2018 22:26:02 +0200 Subject: [PATCH 10/33] MQTT Sensor Device Class Docs (#5252) * MQTT Sensor Device Class * Remove formatting * Other small fix --- source/_components/sensor.mqtt.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index 5f36c9de1d..b6e5c4b0d2 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -81,9 +81,14 @@ json_attributes: reqired: false type: list, string unique_id: - description: "An id that uniquely identifies this sensor. If 2 sensors have the same unique id, Home Assistant will raise an exception.**" + description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception." required: false type: string +device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None {% endconfiguration %} ## {% linkable_title Examples %} From fd5f1fc725042a4226526821b2531ae9f5cf45a9 Mon Sep 17 00:00:00 2001 From: giangvo Date: Thu, 3 May 2018 12:39:04 +1000 Subject: [PATCH 11/33] add document for fan template (#5296) --- source/_components/fan.template.markdown | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 source/_components/fan.template.markdown diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown new file mode 100644 index 0000000000..2b7a984508 --- /dev/null +++ b/source/_components/fan.template.markdown @@ -0,0 +1,96 @@ +--- +layout: page +title: "Template Fan" +description: "Instructions how to setup the Template fans within Home Assistant." +date: 2018-05-03 09:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Fan +ha_release: 0.69 +ha_iot_class: "Local Push" +logo: home-assistant.png +--- + +The `template` platform creates fans that combine components and provides the +ability to run scripts or invoke services for each of the turn_on, turn_off, set_speed, and +set_oscillating commands of a fan. + +To enable Template Fans in your installation, add the following to your +`configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +fan: + - platform: template + fans: + bedroom_fan: + friendly_name: "Bedroom fan" + value_template: "{{ states('input_boolean.state') }}" + speed_template: "{{ states('input_select.speed') }}" + oscillating_template: "{{ states('input_select.osc') }}" + turn_on: + service: script.fan_on + turn_off: + service: script.fan_off + set_speed: + service: script.fan_speed + data_template: + speed: "{{ speed }}" + set_oscillating: + service: script.fan_oscillating + data_template: + oscillating: "{{ oscillating }}" + speeds: + - '1' + - '2' + - '3' +``` +{% endraw %} + +{% configuration %} + fans: + description: List of your fans. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + value_template: + description: "Defines a template to get the state of the fan. Valid value: 'on'/'off' + required: true + type: template + speed_template: + description: Defines a template to get the speed of the fan. + required: false + type: template + oscillating_template: + description: Defines a template to get the osc state of the fan. Valid value: True/False + required: false + type: template + turn_on: + description: Defines an action to run when the fan is turned on. + required: true + type: action + turn_off: + description: Defines an action to run when the fan is turned off. + required: true + type: action + set_speed: + description: Defines an action to run when the fan is given a speed command. + required: false + type: action + set_oscillating: + description: Defines an action to run when the fan is given a osc state command. + required: false + type: action + speeds: + description: List of speeds the fan is capable of running at. + required: false + type: string list + default: ['low', 'medium', 'high'] +{% endconfiguration %} From fe352e7dd60558a9292bfd2453da86793b6743ac Mon Sep 17 00:00:00 2001 From: escoand Date: Thu, 3 May 2018 21:00:17 +0200 Subject: [PATCH 12/33] Add description of discovery (#5286) * Add description of discovery * Fix copy&paste * Update link --- source/_components/media_player.volumio.markdown | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/_components/media_player.volumio.markdown b/source/_components/media_player.volumio.markdown index f8945adc88..26053822e8 100644 --- a/source/_components/media_player.volumio.markdown +++ b/source/_components/media_player.volumio.markdown @@ -12,12 +12,11 @@ ha_category: Media Player ha_release: 0.41 --- -The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player -from Home Assistant. +The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player from Home Assistant. +The preferred way to set up the Volumio platform is by enabling the [discovery component](/components/discovery/). -To add a Volumio player to your installation, add the following to -your `configuration.yaml` file. +In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From d7fcb153de9f791bfbfa83db9ee459498120a94b Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Thu, 3 May 2018 14:56:01 -0600 Subject: [PATCH 13/33] Adds docs for RainMachine component/hub (#5251) * Adds docs for RainMachine component/hub * Removing references to remote API * Collaborator-requested changes * Adding new info (per home-assistant/home-assistant#14225) * Collaborator-requested changes * Collaborator-requested changes * Revert "Collaborator-requested changes" This reverts commit 34f75ffab911dcd9a9ae3163645c7c6e9dbf54ee. * I think I got it this time... * Collaborator-requested changes * Collaborator-requested changes * Small tweak --- source/_components/rainmachine.markdown | 71 +++++++++++++++ .../_components/switch.rainmachine.markdown | 88 +++---------------- 2 files changed, 85 insertions(+), 74 deletions(-) create mode 100644 source/_components/rainmachine.markdown diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown new file mode 100644 index 0000000000..e416c7f626 --- /dev/null +++ b/source/_components/rainmachine.markdown @@ -0,0 +1,71 @@ +--- +layout: page +title: "RainMachine" +description: "Instructions on how to integrate RainMachine units within Home Assistant." +date: 2018-04-25 20:32 +sidebar: true +comments: false +sharing: true +footer: true +logo: rainmachine.png +ha_category: Hub +ha_release: 0.69 +ha_iot_class: "Cloud Polling" +--- + +The `rainmachine` component is the main component to integrate all platforms +related to [RainMachine smart Wi-Fi sprinkler controllers](http://www.rainmachine.com/). + +## {% linkable_title Base Configuration %} + +To connect to your RainMachine device, add the following to your +`configuration.yaml` file: + +```yaml +rainmachine: + ip_address: 192.168.1.100 + password: YOUR_PASSWORD +``` + +To configure switch-related functionality, add configuration options beneath +a `switches` key within the `rainmachine` sections of `configuration.yaml` +as below: + +```yaml +rainmachine: + ip_address: 192.168.1.100 + password: YOUR_PASSWORD + switches: + # switch configuration options... +``` + +{% configuration %} +ip_address: + description: the IP address or hostname of your RainMachine unit + required: optional + type: string +password: + description: your RainMachine password. + required: true + type: string +port: + description: the TCP port used by your unit for the REST API + required: false + type: int + default: 8080 +ssl: + description: whether communication with the local device should occur over HTTPS + required: false + type: boolean + default: true +switches: + description: switch-related configuration options + required: false + type: map + keys: + zone_run_time: + description: the default number of seconds that a zone should run when turned on + required: false + type: int + default: 600 +{% endconfiguration %} diff --git a/source/_components/switch.rainmachine.markdown b/source/_components/switch.rainmachine.markdown index 26b73e0aa8..f37ce0fbd5 100644 --- a/source/_components/switch.rainmachine.markdown +++ b/source/_components/switch.rainmachine.markdown @@ -13,84 +13,24 @@ ha_iot_class: "Cloud Polling" ha_release: 0.51 --- -The `rainmachine` switch platform allows you to control programs and zones within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/). - -## {% linkable_title Configuring the Platform %} - -The platform allows for either local (i.e., directly across the LAN) or remote (i.e., through RainMachine's cloud API) access; the route you choose will dictate what your configuration should look like. - -For local access, specify the IP address/hostname of your RainMachine unit, your RainMachine password, and optionally, the device's HTTP port: - -```yaml -switch: - platform: rainmachine - ip_address: 192.168.1.100 - password: YOUR_PASSWORD -``` - -For remote access, specify your RainMachine username/email and password: - -```yaml -switch: - platform: rainmachine - email: user@host.com - password: YOUR_PASSWORD -``` - -{% configuration %} -password: - description: Your RainMachine password. - required: true - type: string -email: - description: "Your RainMachine username/email. Cannot be used with the `ip_address` parameter." - required: false - type: string -ip_address: - description: "The IP address of your RainMachine unit; cannot be used with the `email` parameter." - required: optional - type: string -port: - description: The TCP port used by your unit for the REST API. - required: false - type: int - default: 8080 -ssl: - description: Whether communication with the local device should occur over HTTPS. - required: false - type: boolean - default: true -zone_run_time: - description: The number of seconds that a zone should run when turned on. - required: false - type: int - default: 600 -{% endconfiguration %} +The `rainmachine` switch platform allows you to control programs and zones +within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/). +

+You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/) +configured to use this switch. After configuring that component, switches will +automatically appear. +

## {% linkable_title Controlling Your Device %} -After Home Assistant loads, you will see new switches for every enabled program and zone. These work as expected: +After Home Assistant loads, new switches will be added for every enabled +program and zone. These work as expected: - Program On/Off: starts/stops a program -- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for) +- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to +determine how long to run for) -Programs and zones are linked. If a program is running its final zone, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app). - -## {% linkable_title Weblink %} - -If you would like to see and control more detailed information, create an [iFrame](/components/panel_iframe/) that renders the RainMachine web app: - -```yaml -panel_iframe: - rainmachine: - title: RainMachine - url: "https://my.rainmachine.com/s//ui/" - icon: mdi:water-pump -``` - -You can find `` by logging into [https://my.rainmachine.com](https://my.rainmachine.com ) and taking note of the URL. - -## {% linkable_title For Awareness %} - -The remote RainMachine API currently has two broken operations (i.e., they return error codes): starting a program and stopping a program. Please note that starting/stopping programs with the remote API is disabled until RainMachine can fix the issue. +Programs and zones are linked. While a program is running, you will see both +the program and zone switches turned on; turning either one off will turn the +other one off (just like in the web app). From 99b142470d51393ed2b6dd8e7ba09ab3ec53ba1c Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Sat, 5 May 2018 15:38:37 +0200 Subject: [PATCH 14/33] Updated sensor device_classes (#5306) * Updated sensor device_classes * Removed lux * Changed device_class name * Updated homekit doc --- source/_components/homekit.markdown | 2 +- source/_components/sensor.markdown | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 631ddf592c..c50ce9b6be 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -206,7 +206,7 @@ The following components are currently supported: | sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` or `humidity` as their `device_class`. | | sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | | sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | -| sensor | LightSensor | All sensors that have `lm`/`lux` as their `unit_of_measurement` or `light` as their `device_class` | +| sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | | switch / remote / input_boolean / script | Switch | All represented as switches. | diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown index d973c2442e..647f0e7ab0 100644 --- a/source/_components/sensor.markdown +++ b/source/_components/sensor.markdown @@ -20,6 +20,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust - **None**: Generic sensor. This is the default and doesn't need to be set. - **battery**: Percentage of battery that is left. - **humidity**: Percentage of humidity in the air. +- **illuminance**: The current light level in lx or lm. - **temperature**: Temperature in °C or °F.

From 69405f1edc24dfea0342bc10b0c90678acedb6e8 Mon Sep 17 00:00:00 2001 From: Lukas Barth Date: Sat, 5 May 2018 19:05:15 +0200 Subject: [PATCH 15/33] Add matrix documentation (#5019) * Add matrix documentation * Try to use new config tags * Use new config tag * :arrow_up: Added ha_version tag * :arrow_up: ha_release -> 0.68 * update version number --- source/_components/matrix.markdown | 136 ++++++++++++++++++++++ source/_components/notify.matrix.markdown | 10 +- 2 files changed, 138 insertions(+), 8 deletions(-) create mode 100644 source/_components/matrix.markdown diff --git a/source/_components/matrix.markdown b/source/_components/matrix.markdown new file mode 100644 index 0000000000..1047d54053 --- /dev/null +++ b/source/_components/matrix.markdown @@ -0,0 +1,136 @@ +--- +layout: page +title: "Matrix" +description: "Matrix chatbot support" +date: 2018-03-25 18:50 +sidebar: true +comments: false +sharing: true +footer: true +logo: matrix.png +ha_category: Hub +ha_version: 0.69 +--- + +This component allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. + +```yaml +# Example configuration.yaml entry +matrix: + homeserver: https://matrix.org + username: "@my_matrix_user:matrix.org" + password: supersecurepassword + rooms: + - "#hasstest:matrix.org" + commands: + - word: my_command + name: my_command +``` + +Configuration variables: + +{% configuration %} +username: + description: "The matrix username that home assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g. '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes." + required: true + type: string +password: + description: The password for your Matrix account. + required: true + type: string +homeserver: + description: "The full URL for your homeserver. If you use the defauls matrix.org homeserver, this is 'https://matrix.org'." + required: true + type: string +verify_ssl: + description: Verify the homeservers certificate. + required: false + type: string + default: true +rooms: + description: "The list of rooms that the bot should join and listen for commands (see below) in. While you can limit the list of rooms that a certain command applies to on a per-command basis (see below), you must still list all rooms here that commands should be received in. Rooms can be given either by their internal ID (e.g., '!cURbafjkfsMDVwdRDQ:matrix.org') or any of their aliases (e.g., '#matrix:matrix.org')." + required: false + type: [string] + default: empty +commands: + description: "A list of commands that the bot should listen for. If a command is triggered (via its *word* or *expression*, see below), an event is fired that you can handle using automations. Every command consists of these possible configuration options:" + required: false + type: map + default: empty + keys: + word: + description: "Specifies a word that the bot should listen for. If you specify 'my_command' here, the bot will react to any message starting with '!my_command'." + required: false + type: string + expression: + description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression." + required: false + type: string + name: + description: "The name of the command. This will be an attribute of the event that is fired when this command triggers." + required: true + type: string + rooms: + description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main config is used. Please note that every room in this list must also be in the main *room* config." + required: false + type: [string] + default: empty +{% endconfiguration %} + +### {% linkable_title Event Data %} + +If a command is triggered, a `matrix_command` event is fired. The event contains the name of the command in the `name` field. If the command is a word command that has no name set, the `name` field contains the word instead. + +If the command is a word command, the `data` field contains a list of the command's arguments, i.e., everything that stood behind the word, split at spaces. If the command is an expression command, the `data` field contains the [group dictionary](https://docs.python.org/3.6/library/re.html?highlight=re#re.match.groupdict) of the regular expression that matched the message. + +### {% linkable_title Comprehensive Configuration Example %} + +This example also uses the [matrix `notify` platform](/components/notify.matrix/). + +```yaml +# The Matrix component +matrix: + homeserver: https://matrix.org + username: "@my_matrix_user:matrix.org" + password: supersecurepassword + rooms: + - "#hasstest:matrix.org" + - "#someothertest:matrix.org" + commands: + - word: testword + rooms: + - "#someothertest:matrix.org" + - expression: "My name is (?P.*)" + name: introduction + +notify: + - name: matrix_notify + platform: matrix + default_room: "#hasstest:matrix.org" + +automation: + - alias: 'React to !testword' + trigger: + platform: event + event_type: matrix_command + event_data: + command: testword + action: + service: notify.matrix_notify + data: + message: 'It looks like you wrote !testword' + - alias: 'React to an introduction' + trigger: + platform: event + event_type: matrix_command + event_data: + command: introduction + action: + service: notify.matrix_notify + data_template: + message: "Hello {{trigger.event.data.name}}" +``` + +This configuration will: +- Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel. +- Listen in both rooms for any message matching "My name is " and answer with "Hello " into "#hasstest:matrix.org". diff --git a/source/_components/notify.matrix.markdown b/source/_components/notify.matrix.markdown index 2d9aff6a04..29890d46c8 100644 --- a/source/_components/notify.matrix.markdown +++ b/source/_components/notify.matrix.markdown @@ -17,27 +17,21 @@ The `matrix` platform allows you to deliver notifications from Home Assistant to ## {% linkable_title Configuration %} -To enable Matrix notifications in your installation, add the following to your `configuration.yaml` file: +To enable Matrix notifications in your installation, you first need to configure +the [Matrix component](/components/matrix/). Then, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry notify: - name: NOTIFIER_NAME platform: matrix - homeserver: HOMESERVER - username: YOUR_USERNAME - password: YOUR_PASSWORD default_room: ROOM_ID_OR_ALIAS ``` Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **homeserver** (*Required*): The base URL of the homeserver, where the notifier account is registered (e.g., `https://matrix.org`). -- **username** (*Required*): The username of the notifying Matrix account. -- **password** (*Required*): The password for the given Matrix account. - **default_room** (*Required*): The room all messages will be sent to, when no other target is given. -- **verify_ssl** (*Optional*): Verify the homeservers certificate. Defaults to `true`. The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies. From ba630fb068bec34736d3a9e8cf4135d1dfa48223 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Sat, 5 May 2018 19:05:49 +0200 Subject: [PATCH 16/33] Updated Sensor device_class requirement - HomeKit (#5304) * HomeKit - sensor device_class requirement * Limit breaking change to Humidity Sensor --- source/_components/homekit.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index c50ce9b6be..bb2b4649f8 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -202,8 +202,8 @@ The following components are currently supported: | cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) | | light | Light | Support for `on / off`, `brightness` and `rgb_color`. | | lock | DoorLock | Support for `lock / unlock`. | -| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | -| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` or `humidity` as their `device_class`. | +| sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | +| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. | | sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | | sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | | sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | From 8187c4aebe4fc0edc551ed2f508ec15748e89bbc Mon Sep 17 00:00:00 2001 From: Mick Vleeshouwer Date: Sat, 5 May 2018 19:06:14 +0200 Subject: [PATCH 17/33] Add sensor.postnl documentation (#5231) * Add sensor.postnl documentation * Update ha_release --- source/_components/sensor.postnl.markdown | 47 ++++++++++++++++++++++ source/images/supported_brands/postnl.png | Bin 0 -> 190385 bytes 2 files changed, 47 insertions(+) create mode 100644 source/_components/sensor.postnl.markdown create mode 100644 source/images/supported_brands/postnl.png diff --git a/source/_components/sensor.postnl.markdown b/source/_components/sensor.postnl.markdown new file mode 100644 index 0000000000..3087ce4b01 --- /dev/null +++ b/source/_components/sensor.postnl.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: PostNL Sensor +description: "Instructions on how to set up PostNL sensors within Home Assistant." +date: 2017-04-22 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: postnl.png +ha_category: Sensor +ha_release: 0.69 +ha_iot_class: "Cloud Polling" +--- + +The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +sensors: + - platform: postnl + username: POSTNL_USERNAME + password: POSTNL_PASSWORD +``` + +{% configuration %} +name: + description: Sensor name + required: false + default: "postnl" + type: string +username: + description: Account username of jouw.postnl.nl + required: true + type: string +password: + description: Account password of jouw.postnl.nl + required: true + type: string +{% endconfiguration %} + +

+This component is not affiliated with PostNL and retrieves date from the endpoints of the mobile application. Use at your own risk. +

diff --git a/source/images/supported_brands/postnl.png b/source/images/supported_brands/postnl.png new file mode 100644 index 0000000000000000000000000000000000000000..93d54db18c92d5d4513e65a159d7a9074266aeb6 GIT binary patch literal 190385 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%0A-a$wDl-R6sc!u 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 Date: Sat, 5 May 2018 19:06:35 +0200 Subject: [PATCH 18/33] Netgear: doc for tracking devices on APs, URL support and autodetection (#4958) --- .../_components/device_tracker.netgear.markdown | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index f8dace0e12..8bdcacc8cd 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Local Polling" ha_release: pre 0.7 --- - This platform allows you to detect presence by looking at connected devices to a [Netgear](http://www.netgear.com/) device. To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -29,10 +28,18 @@ device_tracker: Configuration variables: -- **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). +- **url** (*Optional*): The base URL, e.g., `http://routerlogin.com:5000` for example. If not provided `host` and `port` are used. If none provided autodetection of the URL will be used. +- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`. +- **port** (*Optional*): The port your router communicates with. +- **username** (*Optional*): The username of a user with administrative privileges. If not provided `admin` will be used. - **password** (*Required*): The password for your given admin account. +- **devices** (*Optional*): If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI. +- **exclude** (*Optional*): Devices to exclude from the scan. +- **accesspoints** (*Optional*): Also track devices on the specified APs. Only supports MAC address. + +When `accesspoints` is specified an extra device will be reported for each device connected to the APs specified here, as `MY-LAPTOP on RBS40`. `Router` will be reported as AP name for the main AP. Only tested with Orbi. + +The use of `devices` or `exclude` is recommended when using `accesspoints` to avoid having a lot of entries. List of models that are known to use port 80: - Nighthawk X4S - AC2600 (R7800) From 65ab88cd5d5b8af9bb3b478da9793ea426d4abc9 Mon Sep 17 00:00:00 2001 From: Mohamad Tarbin Date: Sat, 5 May 2018 13:07:24 -0400 Subject: [PATCH 19/33] Add Socialblade Markdown (#5237) * Adding markdown and imagie for USCIS sensor * Update the markdown * Update sensor.uscis.markdown * Update sensor.uscis.markdown * Update sensor.uscis.markdown * Minor changes * Add :markdown for social blade * Update links * Update links * Update sensor.uscis.markdown * Remove USCIS docmenetation from this branch * Update sensor.socialblade.markdown * Update sensor.socialblade.markdown --- .../_components/sensor.socialblade.markdown | 37 ++++++++++++++++++ .../images/supported_brands/socialblade.png | Bin 0 -> 4952 bytes 2 files changed, 37 insertions(+) create mode 100644 source/_components/sensor.socialblade.markdown create mode 100644 source/images/supported_brands/socialblade.png diff --git a/source/_components/sensor.socialblade.markdown b/source/_components/sensor.socialblade.markdown new file mode 100644 index 0000000000..cf106c9133 --- /dev/null +++ b/source/_components/sensor.socialblade.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: Social Blade Sensor +description: "Instructions on how to set up Social Blade Sensor within Home Assistant." +date: 2018-04-23 08:00 +sidebar: false +comments: false +sharing: true +footer: true +logo: socialblade.png +ha_category: Sensor +ha_release: 0.69 +ha_iot_class: "Cloud Polling" +--- + +The `socialblade` sensor component allows you get updates on a youtube channel using your social blade channel id. The sensor gets the subscribers and total views count from [Social Blade Website]( https://socialblade.com/) + +to get the channel id you can go to [Social Blade Website]( https://socialblade.com/) and search for youtube channel by username, then select the channel and grab the id from the url. +The channel id will be the last part of the url : +https://socialblade.com/youtube/channel/{channel_id} + +## Example for `configuration.yaml` : + +```yaml +sensor: + - platform: socialblade + channel_id: YOUR_CHANNEL_NUMBER +``` + +{% configuration %} +channel_id: + description: channel id number optained from the URL when you access Social Blade web client. + required: true + type: string +{% endconfiguration %} + +All the data will be fetch from [Social Blade]( https://socialblade.com/). diff --git a/source/images/supported_brands/socialblade.png b/source/images/supported_brands/socialblade.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2de38de204215a25dc517c58b69b4706d21250 GIT binary patch literal 4952 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 literal 0 HcmV?d00001 From 5a9d5c54275cdd5bf8d39ab0b948e03eeead3d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20=C3=98stergaard=20Nielsen?= Date: Sat, 5 May 2018 19:11:47 +0200 Subject: [PATCH 20/33] Added update_interval to maxcube (#5265) * Added update_interval to maxcube * Renamed update_interval to scan_interval * Update maxcube.markdown --- source/_components/maxcube.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown index 69713a6469..7439d2d19f 100644 --- a/source/_components/maxcube.markdown +++ b/source/_components/maxcube.markdown @@ -58,4 +58,9 @@ maxcube: required: false type: int default: 62910 + scan_interval: + description: The update interval in seconds + required: false + type: int + default: 300 {% endconfiguration %} From 78f19d989a247e2bcb3b368a85ac94ff067ef25b Mon Sep 17 00:00:00 2001 From: Jason Kingsbury Date: Sat, 5 May 2018 18:12:10 +0100 Subject: [PATCH 21/33] Add max_volume option to Onkyo media player (#5153) * Update media_player.onkyo.markdown * onkyo: removed optional value from sample config, update max_volume documentation to include required volume range --- source/_components/media_player.onkyo.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index 13a50152dc..19854cfe60 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -39,6 +39,10 @@ name: description: Name of the device. (*Required if host is specified*) required: false type: string +max_volume: + description: Maximum volume. Defaults to 80. + required: false + type: number sources: description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. required: false From 50775dc3b172d1ac7fa32735cc8b3af9cdb41e55 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 5 May 2018 13:34:58 -0400 Subject: [PATCH 22/33] Add blog post 0.69 draft --- _config.yml | 8 +- source/_posts/2018-05-11-release-69.markdown | 437 +++++++++++++++++++ 2 files changed, 441 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2018-05-11-release-69.markdown diff --git a/_config.yml b/_config.yml index 502ae90635..45147f16ca 100644 --- a/_config.yml +++ b/_config.yml @@ -139,14 +139,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 68 -current_patch_version: 1 -date_released: 2018-04-30 +current_minor_version: 69 +current_patch_version: 0 +date_released: 2018-05-11 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0681---april-30" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown new file mode 100644 index 0000000000..988d2b6cca --- /dev/null +++ b/source/_posts/2018-05-11-release-69.markdown @@ -0,0 +1,437 @@ +--- +layout: post +title: "0.69: TBD - Update date" +description: "TBD." +date: 2018-05-05 00:01:00 +date_formatted: "May 11, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-05-0.69/components.png +--- + + + +## {% linkable_title New Platforms %} + +- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform) +- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform) +- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) +- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform) +- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform) +- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) +- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) +- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking Changes %} + +- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change) +- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change) +- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change) +- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) +- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change) +- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change) +- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change) +- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) +- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change) +- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) +- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) + +## {% linkable_title All changes %} + +- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change) +- Expose the condition code on condition sensors ([@maddox] - [#14011]) ([sensor.yweather docs]) +- upgrade rfxtrx lib, dimming support for Lighting3 ([@danielhiversen] - [#14026]) ([rfxtrx docs]) +- Add Accuracy to Google Location Sharing ([@rdbahm] - [#14039]) ([device_tracker docs]) +- bump gogogate2 version ([@dlbroadfoot] - [#14044]) ([cover.gogogate2 docs]) +- device_tracker.ubus: catch ConnectionError ([@stintel] - [#14045]) ([device_tracker docs]) +- Show a notification when a config entry is discovered ([@balloob] - [#14022]) +- deCONZ use forward entry setup ([@Kane610] - [#13990]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) +- Bump pyEight version to update API & reduce connection issues ([@mezz64] - [#14058]) ([eight_sleep docs]) +- Bump locationsharinglib to 1.2.2 ([@thelittlefireman] - [#14070]) ([device_tracker docs]) +- Remove excessive debugging in webostv module ([@stephanerosi] - [#14056]) ([media_player.webostv docs]) +- Support new Xiaomi Aqara device model names and LAN protocol 2.0 ([@ileler] - [#13540]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) +- Add devices to Tahoma ([@bakedraccoon] - [#14075]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) +- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform) +- Modify weather components for "new" frontend card ([@c727] - [#14076]) ([weather.buienradar docs]) ([weather.darksky docs]) ([weather.openweathermap docs]) +- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change) +- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change) +- Update pyhomematic to 0.1.42 ([@danielperna84] - [#14095]) ([homematic docs]) +- Adds update file_path service to local_file camera ([@robmarkcole] - [#13976]) ([camera.local_file docs]) +- Zone component config entry support ([@Kane610] - [#14059]) ([zone docs]) +- Improve MQTT topic validation ([@OttoWinter] - [#14099]) ([mqtt docs]) +- Fix the optional friendly name of the Yeelight (Closes: #14088) ([@syssi] - [#14110]) ([light.yeelight docs]) +- Update QNAP lib to 0.2.6; handle null temps gracefully ([@colinodell] - [#14117]) ([sensor.qnap docs]) +- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform) +- Upgrade colorlog to 3.1.4 ([@fabaff] - [#14132]) +- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) +- Add support for light sensors with 'lx' unit to HomeKit ([@bieniu] - [#14131]) ([homekit docs]) +- Upgrade restrictedpython to 4.0b3 ([@fabaff] - [#14140]) ([python_script docs]) +- Logitech Pop support for emulated_hue component ([@dgraye] - [#12833]) ([emulated_hue docs]) +- Bump pyvizio to 0.0.3 ([@cgarwood] - [#14147]) ([media_player.vizio docs]) +- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change) +- Upgrade pylast to 2.2.0 ([@fabaff] - [#14139]) ([sensor.lastfm docs]) +- Upgrade sqlalchemy to 1.2.7 ([@fabaff] - [#14138]) +- Upgrade tapsaff to 0.2.0 ([@fabaff] - [#14137]) ([binary_sensor.tapsaff docs]) +- Upgrade python-telegram-bot to 10.0.2 ([@fabaff] - [#14144]) +- Upgrade youtube_dl to 2018.04.25 ([@fabaff] - [#14136]) ([media_extractor docs]) +- Clean up HomeKit accessory information characteristics ([@schmittx] - [#14114]) ([homekit docs]) +- Upgrade psutil to 5.4.5 ([@fabaff] - [#14135]) +- Fixed datetime values ([@gives1976] - [#14153]) ([sensor.sql docs]) +- deluge-components-update ([@engrbm87] - [#14016]) ([sensor.deluge docs]) ([switch.deluge docs]) +- Light mqtt_json: Add HS color support ([@OttoWinter] - [#14029]) ([light.mqtt_json docs]) +- Convert more files to async/await syntax ([@OttoWinter] - [#14142]) +- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change) +- deCONZ allow unloading of config entry ([@Kane610] - [#14115]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs]) +- Upgrade netdisco to 1.4.0 ([@fabaff] - [#14152]) +- Add precipitation to OpenWeatherMap forecast ([@escoand] - [#13971]) ([weather.openweathermap docs]) +- Allow transitioning to colour temp for tradfri ([@Hate-Usernames] - [#14157]) +- Added update_interval to maxcube ([@dingusdk] - [#14143]) ([maxcube docs]) +- zha: Support remotes/buttons ([@rcloran] - [#12528]) ([zha docs]) ([binary_sensor.zha docs]) +- Upgrade numpy to 1.14.3 ([@fabaff] - [#14187]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) +- Updating darksky default update interval to 5 mins ([@msubra] - [#14195]) ([sensor.darksky docs]) +- Fix TypeError on round(self.humidity) (fixes #13116) ([@mvn23] - [#14174]) ([weather docs]) +- Add room hint support to Google Assistant cloud ([@balloob] - [#14180]) +- Update CODEOWNERS ([@pschmitt] - [#14214]) +- Fixes #14169 (Upgrade pyupnp-async to 0.1.0.2) ([@dgomes] - [#14210]) ([upnp docs]) +- zha: Clean up binary_sensor listener registration/state updates ([@rcloran] - [#14197]) +- HomematicIP cloud: Add logic to check accesspoint connection state ([@sander76] - [#14203]) ([homematicip_cloud docs]) +- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform) +- Allow easy extension of websocket API ([@balloob] - [#14186]) ([frontend docs]) ([websocket_api docs]) +- Change the divisor for total consumption output ([@CM000n] - [#14215]) ([switch.fritzbox docs]) +- Upgrade mypy to 0.590 ([@fabaff] - [#14207]) +- Template Sensor add device_class support ([@OttoWinter] - [#14034]) ([sensor.template docs]) +- Add more parameters for DSMR sensor ([@rubenvandeven] - [#13967]) ([sensor.dsmr docs]) +- Support setting explicit mute value for Panasonic Viera TV ([@blackwind] - [#13954]) ([media_player.panasonic_viera docs]) +- Allow to set a desired update interval for camera_proxy_stream view ([@NovapaX] - [#13350]) ([camera docs]) +- panasonic_viera: Provide unique_id from SSDP UDN, if available ([@scop] - [#13541]) ([media_player.panasonic_viera docs]) +- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change) +- Buienradar improvements: continuous sensors and unique ID's ([@corneyl] - [#13249]) ([sensor.buienradar docs]) +- add volumio discovery ([@escoand] - [#14220]) ([media_player.volumio docs]) +- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) +- Add MQTT Sensor device_class ([@OttoWinter] - [#14033]) ([sensor.mqtt docs]) +- Allow independent control of white level on flux_led component ([@oblogic7] - [#13985]) ([light.flux_led docs]) +- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform) +- UPnP code cleanup ([@dgomes] - [#14235]) ([upnp docs]) ([sensor.upnp docs]) +- Improve config schema of the blackbird component ([@syssi] - [#14007]) ([media_player.blackbird docs]) +- Add support for tracking devices on Netgear access points ([@MatMaul] - [#13331]) ([device_tracker docs]) +- WUnderground unique ids ([@OttoWinter] - [#13311]) ([sensor.wunderground docs]) +- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) +- python_openzwave update config service ([@perosb] - [#12060]) ([zwave docs]) +- Add unique_id to zwave node entity ([@andrey-git] - [#14201]) ([zwave docs]) +- Add prereqs for HomeKit Controller ([@marthoc] - [#14172]) +- Restores switch state, case the switch is optimistic ([@dgomes] - [#14151]) ([switch.mqtt docs]) +- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) +- HomeKit - Climate: power state on/off support ([@roiff] - [#14082]) ([homekit docs]) +- Demo Sensor - Added device_class support ([@cdce8p] - [#14269]) ([sensor.demo docs]) +- Re-enable eliqonline requirement ([@molobrakos] - [#14265]) ([sensor.eliqonline docs]) +- Add fetching camera thumbnails over websocket ([@balloob] - [#14231]) ([camera docs]) ([frontend docs]) ([image_processing docs]) ([microsoft_face docs]) ([websocket_api docs]) +- Allow fetching media player covers via websocket connection ([@balloob] - [#14233]) ([media_player docs]) +- Fix ZWave light brightness ([@cdce8p] - [#14261]) ([light.zwave docs]) +- fix check config not working after #14211 ([@fanthos] - [#14259]) +- Issue Template Fix CRLF ([@OttoWinter] - [#14283]) +- Upgrade attrs to 18.1.0 ([@fabaff] - [#14281]) +- Update HAP-python to 2.0.0 ([@cdce8p] - [#14278]) ([homekit docs]) +- Upgrade holidays to 0.9.5 ([@fabaff] - [#14274]) ([binary_sensor.workday docs]) +- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change) +- HomeKit: Support triggered state for alarm_control_panel ([@schmittx] - [#14285]) ([homekit docs]) +- Upgrade astral to 1.6.1 ([@fabaff] - [#14297]) +- BOM Weather throttle fix ([@nickw444] - [#14234]) ([sensor.bom docs]) +- Publish attributes unconditionally ([@blackwind] - [#14179]) ([mqtt_statestream docs]) +- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) +- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) +- deCONZ add new device without restart ([@Kane610] - [#14221]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) +- Add alarmdotcom sensor status ([@jnewland] - [#14254]) ([alarm_control_panel.alarmdotcom docs]) +- Add domain to labels and count state changes to Prometheus ([@jnewland] - [#14253]) ([prometheus docs]) +- Add support for max_volume ([@relvacode] - [#13822]) ([media_player.onkyo docs]) +- Refactor ImageProcessingFaceEntity ([@robmarkcole] - [#14296]) ([image_processing docs]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) +- Onkyo: SUPPORT_VOLUME_STEP ([@rsmeral] - [#14299]) ([media_player.onkyo docs]) +- Add All-Linking capabilities ([@teharris1] - [#14065]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) + +[#12027]: https://github.com/home-assistant/home-assistant/pull/12027 +[#12060]: https://github.com/home-assistant/home-assistant/pull/12060 +[#12366]: https://github.com/home-assistant/home-assistant/pull/12366 +[#12528]: https://github.com/home-assistant/home-assistant/pull/12528 +[#12833]: https://github.com/home-assistant/home-assistant/pull/12833 +[#13249]: https://github.com/home-assistant/home-assistant/pull/13249 +[#13311]: https://github.com/home-assistant/home-assistant/pull/13311 +[#13331]: https://github.com/home-assistant/home-assistant/pull/13331 +[#13350]: https://github.com/home-assistant/home-assistant/pull/13350 +[#13355]: https://github.com/home-assistant/home-assistant/pull/13355 +[#13468]: https://github.com/home-assistant/home-assistant/pull/13468 +[#13540]: https://github.com/home-assistant/home-assistant/pull/13540 +[#13541]: https://github.com/home-assistant/home-assistant/pull/13541 +[#13553]: https://github.com/home-assistant/home-assistant/pull/13553 +[#13822]: https://github.com/home-assistant/home-assistant/pull/13822 +[#13954]: https://github.com/home-assistant/home-assistant/pull/13954 +[#13955]: https://github.com/home-assistant/home-assistant/pull/13955 +[#13967]: https://github.com/home-assistant/home-assistant/pull/13967 +[#13968]: https://github.com/home-assistant/home-assistant/pull/13968 +[#13971]: https://github.com/home-assistant/home-assistant/pull/13971 +[#13976]: https://github.com/home-assistant/home-assistant/pull/13976 +[#13985]: https://github.com/home-assistant/home-assistant/pull/13985 +[#13990]: https://github.com/home-assistant/home-assistant/pull/13990 +[#14007]: https://github.com/home-assistant/home-assistant/pull/14007 +[#14011]: https://github.com/home-assistant/home-assistant/pull/14011 +[#14016]: https://github.com/home-assistant/home-assistant/pull/14016 +[#14018]: https://github.com/home-assistant/home-assistant/pull/14018 +[#14022]: https://github.com/home-assistant/home-assistant/pull/14022 +[#14026]: https://github.com/home-assistant/home-assistant/pull/14026 +[#14029]: https://github.com/home-assistant/home-assistant/pull/14029 +[#14033]: https://github.com/home-assistant/home-assistant/pull/14033 +[#14034]: https://github.com/home-assistant/home-assistant/pull/14034 +[#14039]: https://github.com/home-assistant/home-assistant/pull/14039 +[#14044]: https://github.com/home-assistant/home-assistant/pull/14044 +[#14045]: https://github.com/home-assistant/home-assistant/pull/14045 +[#14056]: https://github.com/home-assistant/home-assistant/pull/14056 +[#14058]: https://github.com/home-assistant/home-assistant/pull/14058 +[#14059]: https://github.com/home-assistant/home-assistant/pull/14059 +[#14060]: https://github.com/home-assistant/home-assistant/pull/14060 +[#14065]: https://github.com/home-assistant/home-assistant/pull/14065 +[#14067]: https://github.com/home-assistant/home-assistant/pull/14067 +[#14070]: https://github.com/home-assistant/home-assistant/pull/14070 +[#14075]: https://github.com/home-assistant/home-assistant/pull/14075 +[#14076]: https://github.com/home-assistant/home-assistant/pull/14076 +[#14082]: https://github.com/home-assistant/home-assistant/pull/14082 +[#14085]: https://github.com/home-assistant/home-assistant/pull/14085 +[#14095]: https://github.com/home-assistant/home-assistant/pull/14095 +[#14099]: https://github.com/home-assistant/home-assistant/pull/14099 +[#14102]: https://github.com/home-assistant/home-assistant/pull/14102 +[#14110]: https://github.com/home-assistant/home-assistant/pull/14110 +[#14114]: https://github.com/home-assistant/home-assistant/pull/14114 +[#14115]: https://github.com/home-assistant/home-assistant/pull/14115 +[#14117]: https://github.com/home-assistant/home-assistant/pull/14117 +[#14131]: https://github.com/home-assistant/home-assistant/pull/14131 +[#14132]: https://github.com/home-assistant/home-assistant/pull/14132 +[#14135]: https://github.com/home-assistant/home-assistant/pull/14135 +[#14136]: https://github.com/home-assistant/home-assistant/pull/14136 +[#14137]: https://github.com/home-assistant/home-assistant/pull/14137 +[#14138]: https://github.com/home-assistant/home-assistant/pull/14138 +[#14139]: https://github.com/home-assistant/home-assistant/pull/14139 +[#14140]: https://github.com/home-assistant/home-assistant/pull/14140 +[#14142]: https://github.com/home-assistant/home-assistant/pull/14142 +[#14143]: https://github.com/home-assistant/home-assistant/pull/14143 +[#14144]: https://github.com/home-assistant/home-assistant/pull/14144 +[#14147]: https://github.com/home-assistant/home-assistant/pull/14147 +[#14151]: https://github.com/home-assistant/home-assistant/pull/14151 +[#14152]: https://github.com/home-assistant/home-assistant/pull/14152 +[#14153]: https://github.com/home-assistant/home-assistant/pull/14153 +[#14156]: https://github.com/home-assistant/home-assistant/pull/14156 +[#14157]: https://github.com/home-assistant/home-assistant/pull/14157 +[#14172]: https://github.com/home-assistant/home-assistant/pull/14172 +[#14174]: https://github.com/home-assistant/home-assistant/pull/14174 +[#14179]: https://github.com/home-assistant/home-assistant/pull/14179 +[#14180]: https://github.com/home-assistant/home-assistant/pull/14180 +[#14186]: https://github.com/home-assistant/home-assistant/pull/14186 +[#14187]: https://github.com/home-assistant/home-assistant/pull/14187 +[#14195]: https://github.com/home-assistant/home-assistant/pull/14195 +[#14197]: https://github.com/home-assistant/home-assistant/pull/14197 +[#14201]: https://github.com/home-assistant/home-assistant/pull/14201 +[#14203]: https://github.com/home-assistant/home-assistant/pull/14203 +[#14207]: https://github.com/home-assistant/home-assistant/pull/14207 +[#14210]: https://github.com/home-assistant/home-assistant/pull/14210 +[#14211]: https://github.com/home-assistant/home-assistant/pull/14211 +[#14214]: https://github.com/home-assistant/home-assistant/pull/14214 +[#14215]: https://github.com/home-assistant/home-assistant/pull/14215 +[#14220]: https://github.com/home-assistant/home-assistant/pull/14220 +[#14221]: https://github.com/home-assistant/home-assistant/pull/14221 +[#14225]: https://github.com/home-assistant/home-assistant/pull/14225 +[#14231]: https://github.com/home-assistant/home-assistant/pull/14231 +[#14233]: https://github.com/home-assistant/home-assistant/pull/14233 +[#14234]: https://github.com/home-assistant/home-assistant/pull/14234 +[#14235]: https://github.com/home-assistant/home-assistant/pull/14235 +[#14253]: https://github.com/home-assistant/home-assistant/pull/14253 +[#14254]: https://github.com/home-assistant/home-assistant/pull/14254 +[#14259]: https://github.com/home-assistant/home-assistant/pull/14259 +[#14261]: https://github.com/home-assistant/home-assistant/pull/14261 +[#14265]: https://github.com/home-assistant/home-assistant/pull/14265 +[#14269]: https://github.com/home-assistant/home-assistant/pull/14269 +[#14274]: https://github.com/home-assistant/home-assistant/pull/14274 +[#14277]: https://github.com/home-assistant/home-assistant/pull/14277 +[#14278]: https://github.com/home-assistant/home-assistant/pull/14278 +[#14281]: https://github.com/home-assistant/home-assistant/pull/14281 +[#14282]: https://github.com/home-assistant/home-assistant/pull/14282 +[#14283]: https://github.com/home-assistant/home-assistant/pull/14283 +[#14285]: https://github.com/home-assistant/home-assistant/pull/14285 +[#14296]: https://github.com/home-assistant/home-assistant/pull/14296 +[#14297]: https://github.com/home-assistant/home-assistant/pull/14297 +[#14299]: https://github.com/home-assistant/home-assistant/pull/14299 +[@CM000n]: https://github.com/CM000n +[@Hate-Usernames]: https://github.com/Hate-Usernames +[@Kane610]: https://github.com/Kane610 +[@MatMaul]: https://github.com/MatMaul +[@NovapaX]: https://github.com/NovapaX +[@OttoWinter]: https://github.com/OttoWinter +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@bieniu]: https://github.com/bieniu +[@blackwind]: https://github.com/blackwind +[@c727]: https://github.com/c727 +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@colinodell]: https://github.com/colinodell +[@corneyl]: https://github.com/corneyl +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dgomes]: https://github.com/dgomes +[@dgraye]: https://github.com/dgraye +[@dingusdk]: https://github.com/dingusdk +[@dlbroadfoot]: https://github.com/dlbroadfoot +[@engrbm87]: https://github.com/engrbm87 +[@escoand]: https://github.com/escoand +[@fabaff]: https://github.com/fabaff +[@fanthos]: https://github.com/fanthos +[@giangvo]: https://github.com/giangvo +[@gives1976]: https://github.com/gives1976 +[@iMicknl]: https://github.com/iMicknl +[@ileler]: https://github.com/ileler +[@jnewland]: https://github.com/jnewland +[@maddox]: https://github.com/maddox +[@marthoc]: https://github.com/marthoc +[@masarliev]: https://github.com/masarliev +[@meauxt]: https://github.com/meauxt +[@mezz64]: https://github.com/mezz64 +[@molobrakos]: https://github.com/molobrakos +[@msubra]: https://github.com/msubra +[@mvn23]: https://github.com/mvn23 +[@mxworm]: https://github.com/mxworm +[@nickw444]: https://github.com/nickw444 +[@oblogic7]: https://github.com/oblogic7 +[@perosb]: https://github.com/perosb +[@pschmitt]: https://github.com/pschmitt +[@ratcashdev]: https://github.com/ratcashdev +[@rcloran]: https://github.com/rcloran +[@rdbahm]: https://github.com/rdbahm +[@relvacode]: https://github.com/relvacode +[@robmarkcole]: https://github.com/robmarkcole +[@roiff]: https://github.com/roiff +[@rsmeral]: https://github.com/rsmeral +[@rubenvandeven]: https://github.com/rubenvandeven +[@sander76]: https://github.com/sander76 +[@schmittx]: https://github.com/schmittx +[@scop]: https://github.com/scop +[@stephanerosi]: https://github.com/stephanerosi +[@stintel]: https://github.com/stintel +[@syssi]: https://github.com/syssi +[@teharris1]: https://github.com/teharris1 +[@thelittlefireman]: https://github.com/thelittlefireman +[@tinloaf]: https://github.com/tinloaf +[alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/ +[auth docs]: /components/auth/ +[binary_sensor docs]: /components/binary_sensor/ +[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ +[binary_sensor.insteon_plm docs]: /components/binary_sensor.insteon_plm/ +[binary_sensor.tapsaff docs]: /components/binary_sensor.tapsaff/ +[binary_sensor.trend docs]: /components/binary_sensor.trend/ +[binary_sensor.workday docs]: /components/binary_sensor.workday/ +[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ +[binary_sensor.zha docs]: /components/binary_sensor.zha/ +[camera docs]: /components/camera/ +[camera.local_file docs]: /components/camera.local_file/ +[cover.gogogate2 docs]: /components/cover.gogogate2/ +[cover.tahoma docs]: /components/cover.tahoma/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[eight_sleep docs]: /components/eight_sleep/ +[emulated_hue docs]: /components/emulated_hue/ +[fan.insteon_plm docs]: /components/fan.insteon_plm/ +[fan.template docs]: /components/fan.template/ +[frontend docs]: /components/frontend/ +[homekit docs]: /components/homekit/ +[homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[http docs]: /components/http/ +[image_processing docs]: /components/image_processing/ +[image_processing.demo docs]: /components/image_processing.demo/ +[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ +[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ +[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/ +[image_processing.microsoft_face_identify docs]: /components/image_processing.microsoft_face_identify/ +[image_processing.opencv docs]: /components/image_processing.opencv/ +[insteon_plm docs]: /components/insteon_plm/ +[light.deconz docs]: /components/light.deconz/ +[light.flux_led docs]: /components/light.flux_led/ +[light.insteon_plm docs]: /components/light.insteon_plm/ +[light.mqtt_json docs]: /components/light.mqtt_json/ +[light.xiaomi_aqara docs]: /components/light.xiaomi_aqara/ +[light.yeelight docs]: /components/light.yeelight/ +[light.zwave docs]: /components/light.zwave/ +[matrix docs]: /components/matrix/ +[maxcube docs]: /components/maxcube/ +[media_extractor docs]: /components/media_extractor/ +[media_player docs]: /components/media_player/ +[media_player.blackbird docs]: /components/media_player.blackbird/ +[media_player.onkyo docs]: /components/media_player.onkyo/ +[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ +[media_player.sonos docs]: /components/media_player.sonos/ +[media_player.vizio docs]: /components/media_player.vizio/ +[media_player.volumio docs]: /components/media_player.volumio/ +[media_player.webostv docs]: /components/media_player.webostv/ +[microsoft_face docs]: /components/microsoft_face/ +[mqtt docs]: /components/mqtt/ +[mqtt_statestream docs]: /components/mqtt_statestream/ +[notify docs]: /components/notify/ +[prometheus docs]: /components/prometheus/ +[python_script docs]: /components/python_script/ +[rainmachine docs]: /components/rainmachine/ +[rfxtrx docs]: /components/rfxtrx/ +[scene docs]: /components/scene/ +[scene.deconz docs]: /components/scene.deconz/ +[sensor docs]: /components/sensor/ +[sensor.bom docs]: /components/sensor.bom/ +[sensor.buienradar docs]: /components/sensor.buienradar/ +[sensor.darksky docs]: /components/sensor.darksky/ +[sensor.deconz docs]: /components/sensor.deconz/ +[sensor.deluge docs]: /components/sensor.deluge/ +[sensor.demo docs]: /components/sensor.demo/ +[sensor.domain_expiry docs]: /components/sensor.domain_expiry/ +[sensor.dsmr docs]: /components/sensor.dsmr/ +[sensor.eliqonline docs]: /components/sensor.eliqonline/ +[sensor.homematicip_cloud docs]: /components/sensor.homematicip_cloud/ +[sensor.insteon_plm docs]: /components/sensor.insteon_plm/ +[sensor.lastfm docs]: /components/sensor.lastfm/ +[sensor.mitemp_bt docs]: /components/sensor.mitemp_bt/ +[sensor.mqtt docs]: /components/sensor.mqtt/ +[sensor.pollen docs]: /components/sensor.pollen/ +[sensor.postnl docs]: /components/sensor.postnl/ +[sensor.qnap docs]: /components/sensor.qnap/ +[sensor.socialblade docs]: /components/sensor.socialblade/ +[sensor.sql docs]: /components/sensor.sql/ +[sensor.tahoma docs]: /components/sensor.tahoma/ +[sensor.template docs]: /components/sensor.template/ +[sensor.upnp docs]: /components/sensor.upnp/ +[sensor.uscis docs]: /components/sensor.uscis/ +[sensor.wunderground docs]: /components/sensor.wunderground/ +[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ +[sensor.yweather docs]: /components/sensor.yweather/ +[switch.deluge docs]: /components/switch.deluge/ +[switch.fritzbox docs]: /components/switch.fritzbox/ +[switch.insteon_plm docs]: /components/switch.insteon_plm/ +[switch.mqtt docs]: /components/switch.mqtt/ +[switch.rainmachine docs]: /components/switch.rainmachine/ +[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ +[system_log docs]: /components/system_log/ +[tahoma docs]: /components/tahoma/ +[upnp docs]: /components/upnp/ +[weather docs]: /components/weather/ +[weather.buienradar docs]: /components/weather.buienradar/ +[weather.darksky docs]: /components/weather.darksky/ +[weather.openweathermap docs]: /components/weather.openweathermap/ +[websocket_api docs]: /components/websocket_api/ +[xiaomi_aqara docs]: /components/xiaomi_aqara/ +[zha docs]: /components/zha/ +[zone docs]: /components/zone/ +[zwave docs]: /components/zwave/ From e46a4d4f3f1fa5b67021e89bd11dbc25f3bcad8f Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Sat, 5 May 2018 15:08:41 -0400 Subject: [PATCH 23/33] Describe the new services added (#5239) * Describe the new services added * Edits per review * UTF-8 error * UTF-8 Error * Convert to utf-8 --- source/_components/insteon_plm.markdown | 55 ++++++++++++++++++------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown index 58a1bad12c..9e15bb0f7d 100644 --- a/source/_components/insteon_plm.markdown +++ b/source/_components/insteon_plm.markdown @@ -63,26 +63,52 @@ a responder or a controller. In order for any two Insteon devices to talk with one another, they must be linked. For an overview of device linking please read the Insteon page on -[understanding linking]. Currently Insteon PLM does not support software -linking of devices. If you need software that can link your devices (if you -are using a USB Stick PLM for example), you can download [HouseLinc] which runs -on any Windows PC, or you can use [Insteon Terminal] which is open source and -runs on most platforms. HouseLinc is no longer supported by SmartHome but it -still works. Insteon Terminal is a very useful tool but please read the -disclaimers carefully, they are important. +[understanding linking]. The Insteon PLM module supports All-Linking through +[Development Tools] service calls. The following services are available: + +In order for any two Insteon devices to talk with one another, they must be +linked. For an overview of device linking, please read the Insteon page on +[understanding linking]. The Insteon PLM module supports All-Linking through +[Development Tools] service calls. The following services are available: +- **insteon_plm.add_all_link**: Tells the Insteon Modem (IM) start All-Linking +mode. Once the IM is in All-Linking mode, press the link button on the device +to complete All-Linking. +- **insteon_plm.delete_all_link**: Tells the Insteon Modem (IM) to remove an +All-Link record from the All-Link Database of the IM and a device. Once the IM +is set to delete the link, press the link button on the corresponding device +to complete the process. +- **insteon_plm.load_all_link_database**: Load the All-Link Database for a +device. WARNING - Loading a device All-Link database is very time consuming +and inconsistent. This may take a LONG time and may need to be repeated to +obtain all records. +- **insteon_plm.print_all_link_database**: Print the All-Link Database for a +device. Requires that the All-Link Database is loaded into memory. +- **insteon_plm.print_im_all_link_database**: Print the All-Link Database for +the INSTEON Modem (IM). + +If you are looking for more advanced options, you can use the +[insteonplm_interactive] command line tool that is distributed with the +[insteonplm] Python module. Please see the documentation on the [insteonplm] +GitHub site. Alternatively, you can download [HouseLinc] which runs on any +Windows PC, or you can use [Insteon Terminal] which is open source and runs +on most platforms. SmartHome no longer supports HouseLinc, but it still +works. Insteon Terminal is a very useful tool but please read the disclaimers +carefully, they are important. [understanding linking]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking +[Development Tools]: https://www.home-assistant.io/docs/tools/dev-tools/ [HouseLinc]: https://www.smarthome.com/houselinc.html [Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal +[insteonplm_interactive]: https://github.com/nugget/python-insteonplm#command-line-interface ### {% linkable_title Customization %} -The only configuration item that is absolutely necessary is the port so that -Home Assistant can connect to the PLM. This will expose all the supported INSTEON -devices which exist in the modem's ALL-Link database. However, devices will -only be shown by their INSTEON hex address (e.g., "1A.2B.3C") which can be a bit -unwieldy. As you link and unlink devices using the 'Set' buttons, they'll be -added and removed from Home Assistant automatically. +The only configuration item that is absolutely necessary is the port so that +Home Assistant can connect to the PLM. This will expose all the supported +INSTEON devices which exist in the modem’s ALL-Link database. However, devices +will only be shown by their INSTEON hex address (e.g., “1A.2B.3C”) which can +be a bit unwieldy. As you link and unlink devices using the ‘Set’ buttons, +they’ll be added and removed from Home Assistant automatically. You can use the normal Home Assistant [device customization] section of your configuration to assign friendly names and special icons to your devices. This @@ -123,7 +149,9 @@ insteon_plm: cat: 0x10 subcat: 0x11 ``` + ### {% linkable_title What NOT to do %} + Insteon PLM is a top level component and device discovery will identify the Home Assistant platform the device belongs in. As such, do not declare Insteon devices in other platforms. For example, this configuration @@ -134,4 +162,3 @@ light: - platform: insteon_plm address: 1a2b3c ``` - From 669b736ac16f32df427afa631258303d84c71a10 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Sat, 5 May 2018 15:08:41 -0400 Subject: [PATCH 24/33] Describe the new services added (#5239) * Describe the new services added * Edits per review * UTF-8 error * UTF-8 Error * Convert to utf-8 --- source/_components/insteon_plm.markdown | 55 ++++++++++++++++++------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown index 58a1bad12c..9e15bb0f7d 100644 --- a/source/_components/insteon_plm.markdown +++ b/source/_components/insteon_plm.markdown @@ -63,26 +63,52 @@ a responder or a controller. In order for any two Insteon devices to talk with one another, they must be linked. For an overview of device linking please read the Insteon page on -[understanding linking]. Currently Insteon PLM does not support software -linking of devices. If you need software that can link your devices (if you -are using a USB Stick PLM for example), you can download [HouseLinc] which runs -on any Windows PC, or you can use [Insteon Terminal] which is open source and -runs on most platforms. HouseLinc is no longer supported by SmartHome but it -still works. Insteon Terminal is a very useful tool but please read the -disclaimers carefully, they are important. +[understanding linking]. The Insteon PLM module supports All-Linking through +[Development Tools] service calls. The following services are available: + +In order for any two Insteon devices to talk with one another, they must be +linked. For an overview of device linking, please read the Insteon page on +[understanding linking]. The Insteon PLM module supports All-Linking through +[Development Tools] service calls. The following services are available: +- **insteon_plm.add_all_link**: Tells the Insteon Modem (IM) start All-Linking +mode. Once the IM is in All-Linking mode, press the link button on the device +to complete All-Linking. +- **insteon_plm.delete_all_link**: Tells the Insteon Modem (IM) to remove an +All-Link record from the All-Link Database of the IM and a device. Once the IM +is set to delete the link, press the link button on the corresponding device +to complete the process. +- **insteon_plm.load_all_link_database**: Load the All-Link Database for a +device. WARNING - Loading a device All-Link database is very time consuming +and inconsistent. This may take a LONG time and may need to be repeated to +obtain all records. +- **insteon_plm.print_all_link_database**: Print the All-Link Database for a +device. Requires that the All-Link Database is loaded into memory. +- **insteon_plm.print_im_all_link_database**: Print the All-Link Database for +the INSTEON Modem (IM). + +If you are looking for more advanced options, you can use the +[insteonplm_interactive] command line tool that is distributed with the +[insteonplm] Python module. Please see the documentation on the [insteonplm] +GitHub site. Alternatively, you can download [HouseLinc] which runs on any +Windows PC, or you can use [Insteon Terminal] which is open source and runs +on most platforms. SmartHome no longer supports HouseLinc, but it still +works. Insteon Terminal is a very useful tool but please read the disclaimers +carefully, they are important. [understanding linking]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking +[Development Tools]: https://www.home-assistant.io/docs/tools/dev-tools/ [HouseLinc]: https://www.smarthome.com/houselinc.html [Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal +[insteonplm_interactive]: https://github.com/nugget/python-insteonplm#command-line-interface ### {% linkable_title Customization %} -The only configuration item that is absolutely necessary is the port so that -Home Assistant can connect to the PLM. This will expose all the supported INSTEON -devices which exist in the modem's ALL-Link database. However, devices will -only be shown by their INSTEON hex address (e.g., "1A.2B.3C") which can be a bit -unwieldy. As you link and unlink devices using the 'Set' buttons, they'll be -added and removed from Home Assistant automatically. +The only configuration item that is absolutely necessary is the port so that +Home Assistant can connect to the PLM. This will expose all the supported +INSTEON devices which exist in the modem’s ALL-Link database. However, devices +will only be shown by their INSTEON hex address (e.g., “1A.2B.3C”) which can +be a bit unwieldy. As you link and unlink devices using the ‘Set’ buttons, +they’ll be added and removed from Home Assistant automatically. You can use the normal Home Assistant [device customization] section of your configuration to assign friendly names and special icons to your devices. This @@ -123,7 +149,9 @@ insteon_plm: cat: 0x10 subcat: 0x11 ``` + ### {% linkable_title What NOT to do %} + Insteon PLM is a top level component and device discovery will identify the Home Assistant platform the device belongs in. As such, do not declare Insteon devices in other platforms. For example, this configuration @@ -134,4 +162,3 @@ light: - platform: insteon_plm address: 1a2b3c ``` - From e9aad886413c9c8a5018a8410616c7c9ffe9def2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 6 May 2018 08:54:51 -0400 Subject: [PATCH 25/33] Fix broken templating --- source/_components/fan.template.markdown | 2 +- source/_docs/configuration/templating.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown index 2b7a984508..9868a85639 100644 --- a/source/_components/fan.template.markdown +++ b/source/_components/fan.template.markdown @@ -61,7 +61,7 @@ fan: required: false type: string value_template: - description: "Defines a template to get the state of the fan. Valid value: 'on'/'off' + description: "Defines a template to get the state of the fan. Valid value: 'on'/'off'" required: true type: template speed_template: diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 9eafdece87..dfcd8bddce 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -140,7 +140,7 @@ With strings ```text {% raw %}{% set tracker_name = "paulus"%} - + {% if states("device_tracker." + tracker_name) != "unknown" %} {{ state_attr("device_tracker." + tracker_name, "battery")}} {% else %} From 3ca0be1d3fca38a08b97658eaaca031c5a7cc6be Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 6 May 2018 10:15:03 -0400 Subject: [PATCH 26/33] Another yaml mistake --- source/_components/fan.template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown index 9868a85639..5ebd666594 100644 --- a/source/_components/fan.template.markdown +++ b/source/_components/fan.template.markdown @@ -69,7 +69,7 @@ fan: required: false type: template oscillating_template: - description: Defines a template to get the osc state of the fan. Valid value: True/False + description: "Defines a template to get the osc state of the fan. Valid value: True/False" required: false type: template turn_on: From b749b17ed225f6043dc544d5bf31e44190133b7c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 7 May 2018 10:05:23 -0400 Subject: [PATCH 27/33] Update blog post --- source/_posts/2018-05-11-release-69.markdown | 26 ++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index 988d2b6cca..4063660e8c 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -47,11 +47,20 @@ Experiencing issues introduced by this release? Please report them in our [issue - Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) - Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) +## {% linkable_title Beta Fixes %} + +- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix) +- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix) +- Fix module names for custom components ([@balloob] - [#14317]) (beta fix) +- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix) +- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix) +- Fix Yeelight naming ([@syssi]) + ## {% linkable_title All changes %} - Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change) - Expose the condition code on condition sensors ([@maddox] - [#14011]) ([sensor.yweather docs]) -- upgrade rfxtrx lib, dimming support for Lighting3 ([@danielhiversen] - [#14026]) ([rfxtrx docs]) +- upgrade rfxtrx lib, dimming support for Lighting3 ([@Danielhiversen] - [#14026]) ([rfxtrx docs]) - Add Accuracy to Google Location Sharing ([@rdbahm] - [#14039]) ([device_tracker docs]) - bump gogogate2 version ([@dlbroadfoot] - [#14044]) ([cover.gogogate2 docs]) - device_tracker.ubus: catch ConnectionError ([@stintel] - [#14045]) ([device_tracker docs]) @@ -157,6 +166,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - Refactor ImageProcessingFaceEntity ([@robmarkcole] - [#14296]) ([image_processing docs]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) - Onkyo: SUPPORT_VOLUME_STEP ([@rsmeral] - [#14299]) ([media_player.onkyo docs]) - Add All-Linking capabilities ([@teharris1] - [#14065]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) +- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix) +- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix) +- Fix module names for custom components ([@balloob] - [#14317]) (beta fix) +- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix) +- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix) [#12027]: https://github.com/home-assistant/home-assistant/pull/12027 [#12060]: https://github.com/home-assistant/home-assistant/pull/12060 @@ -266,7 +280,13 @@ Experiencing issues introduced by this release? Please report them in our [issue [#14296]: https://github.com/home-assistant/home-assistant/pull/14296 [#14297]: https://github.com/home-assistant/home-assistant/pull/14297 [#14299]: https://github.com/home-assistant/home-assistant/pull/14299 +[#14313]: https://github.com/home-assistant/home-assistant/pull/14313 +[#14314]: https://github.com/home-assistant/home-assistant/pull/14314 +[#14317]: https://github.com/home-assistant/home-assistant/pull/14317 +[#14327]: https://github.com/home-assistant/home-assistant/pull/14327 +[#14329]: https://github.com/home-assistant/home-assistant/pull/14329 [@CM000n]: https://github.com/CM000n +[@Danielhiversen]: https://github.com/Danielhiversen [@Hate-Usernames]: https://github.com/Hate-Usernames [@Kane610]: https://github.com/Kane610 [@MatMaul]: https://github.com/MatMaul @@ -284,7 +304,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@cgarwood]: https://github.com/cgarwood [@colinodell]: https://github.com/colinodell [@corneyl]: https://github.com/corneyl -[@danielhiversen]: https://github.com/danielhiversen [@danielperna84]: https://github.com/danielperna84 [@dgomes]: https://github.com/dgomes [@dgraye]: https://github.com/dgraye @@ -296,8 +315,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@fanthos]: https://github.com/fanthos [@giangvo]: https://github.com/giangvo [@gives1976]: https://github.com/gives1976 +[@graffic]: https://github.com/graffic [@iMicknl]: https://github.com/iMicknl [@ileler]: https://github.com/ileler +[@jloutsenhizer]: https://github.com/jloutsenhizer [@jnewland]: https://github.com/jnewland [@maddox]: https://github.com/maddox [@marthoc]: https://github.com/marthoc @@ -329,6 +350,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@teharris1]: https://github.com/teharris1 [@thelittlefireman]: https://github.com/thelittlefireman [@tinloaf]: https://github.com/tinloaf +[abode docs]: /components/abode/ [alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/ [auth docs]: /components/auth/ [binary_sensor docs]: /components/binary_sensor/ From 47c54dc831a6d5441ef9c571548327eed33b9b23 Mon Sep 17 00:00:00 2001 From: NWiBGRsK Date: Tue, 8 May 2018 16:08:25 +0200 Subject: [PATCH 28/33] I just successfully setup a Aeotec Z-Stick Gen5 on Windows 2008 R2 which runs fine (#5331) It was a bit of a challenge to get python-openzwave compiled, but I try to update the according sources to make it easier to use. --- source/_docs/z-wave/controllers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 7a0952abcc..fdaac560c3 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -17,7 +17,7 @@ You need to have a [supported Z-Wave USB stick or module](https://github.com/Ope |-------------------------|----------------|------------------|--------------| | Aeotec Z-Stick | ✓ | | | | Aeotec Z-Stick Series 2 | ✓ | | | -| Aeotec Z-Stick Series 5 | ✓ | | ✓ | +| Aeotec Z-Stick Series 5 | ✓ | ✓ | ✓ | | Pine64 Z-Wave Module | ✓ | | | | Razberry GPIO Module | ✓ | | | | Seluxit ViaSens 100 | | | | From fee95183dbbdf21cb62f4c89e242b36fa3625ec9 Mon Sep 17 00:00:00 2001 From: Tod Schmidt Date: Tue, 8 May 2018 10:10:49 -0400 Subject: [PATCH 29/33] Update snips.markdown (#5315) * Update snips.markdown * Update snips.markdown * Update snips.markdown * Update snips.markdown * Update snips.markdown --- source/_components/snips.markdown | 35 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index e7086ac9dc..feff4866ce 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -105,6 +105,22 @@ By default, Snips runs its own MQTT broker. But we can also tell Snips to use an ## {% linkable_title Home Assistant configuration %} +{% configuration %} +feedback_sounds: + description: Turn on feedbacks sounds for Snips + required: false + type: str + default: false +site_ids: + description: A list of siteIds if using multiple Snips instances. Used to make sure feedback is toggled on or off for all sites + required: false + type: str +probability_threshhold: + description: Threshhold for intent probability. Intents under this level are discarded + require: false + type: int +{% endconfiguration %} + ### {% linkable_title Specifying the MQTT broker %} Messages between Snips and Home Assistant are passed via MQTT. We can either point Snips to the MQTT broker used by Home Assistant, as explained above, or tell Home Assistant which [MQTT broker](/docs/mqtt/) to use by adding the following entry to the `configuration.yaml` file: @@ -147,7 +163,9 @@ In the `data_template` block, we have access to special variables, corresponding ### {% linkable_title Special slots %} -In the above example, the slots are plain strings. However, when more complex types are used, such as dates or time ranges, they will be transformed to rich Python objects, for example: +Two special values for slots are populated with the siteId the intent originated from and the probability value for the intent. + +In the above example, the slots are plain strings. However, snips has a duration builtin value used for setting timers and this will be parsed to a seconds value. {% raw %} ```yaml @@ -159,13 +177,14 @@ SetTimer: service: script.set_timer data_template: name: "{{ timer_name }}" - duration: "{{ timer_duration }}" - seconds: "{{ slots.timer_duration.value.seconds }}" - minutes: "{{ slots.timer_duration.value.minutes }}" - hours: "{{ slots.timer_duration.value.hours }}" + duration: "{{ timer_duration }}", + siteId: "{{ siteId }}", + probability: "{{ probability }}" ``` {% endraw %} + + ### {% linkable_title Sending TTS Notifications %} You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door". @@ -202,7 +221,7 @@ intent_script: turn_on_light: speech: type: plain - text: 'OK, closing the garage door' + text: 'OK, turning on the light' action: service: light.turn_on ``` @@ -256,7 +275,7 @@ intent_script: ##### {% linkable_title Weather %} -So now you can open and close your garage door, let's check the weather. Add the Weather by Snips Skill to your assistant. Create a weather sensor, in this example (Dark Sky)[/components/sensor.darksky/] and the `api_key` in the `secrets.yaml` file. +So now you can open and close your garage door, let's check the weather. Add the Weather by Snips Skill to your assistant. Create a weather sensor, in this example [Dark Sk](/components/sensor.darksky/) and the `api_key` in the `secrets.yaml` file. ```yaml - platform: darksky @@ -272,7 +291,7 @@ So now you can open and close your garage door, let's check the weather. Add the - temperature_min ``` -Then create this `intent_script.yaml` file in your configuration directory. +Then add this to your configuration file. {% raw %} ```yaml From 03cb62b726b8bbe5727825411e8620d41ed94dfd Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Tue, 8 May 2018 16:28:15 +0200 Subject: [PATCH 30/33] Update deconz.markdown (#5307) * Update deconz.markdown * Add link to official list of supported devices --- source/_components/deconz.markdown | 55 +++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index d1fde01521..ae079650ae 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -17,24 +17,19 @@ ha_iot_class: "Local Push" [deCONZ REST API](http://dresden-elektronik.github.io/deconz-rest-doc/). -### {% linkable_title Supported device types %} +### {% linkable_title Recommended way of running deCONZ %} -- [Zigbee Lights](/components/light.deconz/) -- [Consumption Sensors](/components/sensor.deconz/) -- [Humidity Sensors](/components/sensor.deconz/) -- [Light Level Sensors](/components/sensor.deconz/) -- [OpenClose Detectors](/components/binary_sensor.deconz/) -- [Power Sensors](/components/sensor.deconz/) -- [Presence Detectors](/components/binary_sensor.deconz/) -- [Pressure Sensors](/components/sensor.deconz/) -- [Switches (Remote Controls)](/components/sensor.deconz/) -- [Temperature Sensors](/components/sensor.deconz/) +Use [community container](https://hub.docker.com/r/marthoc/deconz/) by Marthoc for your deCONZ needs. It works both as a standalone container as well as with HASS.io. + +### {% linkable_title Supported devices %} + +See [deCONZ wiki](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Supported-Devices) for a list of supported devices. ## {% linkable_title Configuration %} Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file. -If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you've generated the API key from Home Assistant, the API key will be stored in `.config_entries.json` inside the `.homeassistant` folder. +If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry. You can add the following to your configuration.yaml file if you are not using the `discovery:` component: @@ -125,6 +120,8 @@ For the IKEA Tradfri remote, 1 is the middle button, 2 is up, 3 is down, 4 is le ### {% linkable_title Step up and step down input number with wireless dimmer %} +#### YAML + {% raw %} ```yaml automation: @@ -173,3 +170,37 @@ automation: {{ [bri-30, 0] | max }} ``` {% endraw %} + +#### Appdaemon + +{% raw %} +```yaml +remote_control_living_room: + module: remote_control + class: RemoteControl + event: deconz_event + id: dimmer_switch_3 +``` + +```python +import appdaemon.plugins.hass.hassapi as hass + +class RemoteControl(hass.Hass): + + def initialize(self): + if 'event' in self.args: + self.listen_event(self.handle_event, self.args['event']) + + def handle_event(self, event_name, data, kwargs): + if data['id'] == self.args['id']: + self.log(data['event']) + if data['event'] == 1002: + self.log('Button on') + elif data['event'] == 2002: + self.log('Button dim up') + elif data['event'] == 3002: + self.log('Button dim down') + elif data['event'] == 4002: + self.log('Button off') +``` +{% endraw %} From 9dce793b65e4c3d82850714193945520f7445daf Mon Sep 17 00:00:00 2001 From: Evgeniy <592652+evgeniy-khatko@users.noreply.github.com> Date: Tue, 8 May 2018 14:45:03 -0700 Subject: [PATCH 31/33] Improving icloud device tracker (#5240) * Improving icloud device tracker Updating documentation for new pull request to main HA codebase: "Improving icloud device tracker" * Update device_tracker.icloud.markdown --- source/_components/device_tracker.icloud.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/device_tracker.icloud.markdown index f2f902bd30..a57ba44d4b 100644 --- a/source/_components/device_tracker.icloud.markdown +++ b/source/_components/device_tracker.icloud.markdown @@ -33,9 +33,11 @@ Configuration variables: - **username** (*Required*): The username for the iCloud account. - **password** (*Required*): The password for your given username. - **account_name** (*Optional*): The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). +- **max_interval** (*Optional*): Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Default is 30 min. Minimum value is 1 min. +- **gps_accuracy_threshold** (*Optional*): iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. Default is 1000 meters.

-This may cause battery drainage as it wakes up your device to get the current location. +Low `max_interval` may cause battery drainage as it wakes up your device to get the current location.

@@ -48,7 +50,7 @@ To disable the drainage of the battery, a dynamic interval is being used for eac 2 Factor Authentication is the improved version of 2 Steps Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. 4 services are available for this component: -- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. +- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g. to check if anyone is home when door's been opened. - **icloud_lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. - **icloud_set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. - **icloud_reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are being found by the component or if you have added a new iDevice to your account. The `account_name` is optional. From e06c9adce7ff4166cd22b20616e910d4d761f780 Mon Sep 17 00:00:00 2001 From: Mario Di Raimondo Date: Wed, 9 May 2018 00:35:12 +0200 Subject: [PATCH 32/33] Waze Travel Time: optional inclusive/exclusive filters (#5208) * Waze Travel Time: optional inclusive/exclusive filters documentation update about the new optional filtering params * Update --- source/_components/sensor.waze_travel_time.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_components/sensor.waze_travel_time.markdown b/source/_components/sensor.waze_travel_time.markdown index 2440930b9f..db3e3f0418 100644 --- a/source/_components/sensor.waze_travel_time.markdown +++ b/source/_components/sensor.waze_travel_time.markdown @@ -48,4 +48,12 @@ name: required: false default: "Waze Travel Time" type: string +incl_filter: + description: A substring that has to be present in the description of the selected route (a simple case-insensitive matching). + required: false + type: string +excl_filter: + description: A substring that has to be NOT present in the description of the selected route (a simple case-insensitive matching). + required: false + type: string {% endconfiguration %} From a17ecf7a2f594013e0c1c992e5b621e230b7b99c Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 9 May 2018 01:06:33 +0200 Subject: [PATCH 33/33] Add link to a video of a talk at foss-north 2018 I gave a talk at foss-north, which is a free / open source conference covering both software and hardware from the technical perspective. They recorded it and put it on YouTube. This patch adds a link to that talk on the help page under "Videos, talks, workshops and alike". --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index 105bf91613..881204f047 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -31,6 +31,7 @@ Have you found an issue in your Home Assistant installation? Please report it. R ### {% linkable_title Videos, talks, workshops and alike %} +- [Automate your home with Home Assistant](https://www.youtube.com/watch?v=SSrgi4iHGbs) at [foss-north 2018](http://foss-north.se/2018/speakers-and-talks.html#jparadies) - March 2018 - [Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/english/2017-qecampX) at QECampX 2017 - October 2017 - [Open Source Heimautomation mit Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-maker-faire-zurich) at [Mini Maker Faire Zurich 2017](https://www.makerfairezurich.ch/en/) - September 2017 - [Why we can't have the Internet of Nice Things: A home automation primer](https://www.openwest.org/custom/description.php?id=92) at [OpenWest 2017](https://www.openwest.org) - July 2017