From 3a4cfd61ad42bcd8eea89f455b390c62fbfe520c Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Sat, 19 Jan 2019 18:45:39 +0100 Subject: [PATCH 01/65] Add Xiaomi Airpurifier Pro V7 support and a missing Airfresh paragraph (#8169) * Add Xiaomi Airpurifier Pro V7 support and a missing Airfresh paragraph * Add table of supported devices * Use official product names * Remove redundancy --- source/_components/fan.xiaomi_miio.markdown | 82 ++++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 56b29b2e085..6c071047a67 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -13,7 +13,29 @@ ha_iot_class: "Local Polling" ha_release: 0.57 --- -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and Xiaomi Air Humidifier. +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier, Air Humidifier and Air Fresh. + +Supported devices: + +| Name | Model | Model no. | +| ------------------- | ---------------------- | --------- | +Air Purifier | zhimi.airpurifier.v1 | | +Air Purifier 2 | zhimi.airpurifier.v2 | FJY4006CN | +Air Purifier V3 | zhimi.airpurifier.v3 | | +Air Purifier V5 | zhimi.airpurifier.v5 | | +Air Purifier Pro | zhimi.airpurifier.v6 | | +Air Purifier Pro V7 | zhimi.airpurifier.v7 | | +Air Purifier 2 (mini) | zhimi.airpurifier.m1 | | +Air Purifier (mini) | zhimi.airpurifier.m2 | | +Air Purifier MA1 | zhimi.airpurifier.ma1 | | +Air Purifier 2S | zhimi.airpurifier.ma2 | | +Air Purifier 2S | zhimi.airpurifier.mc1 | | +Air Purifier Super | zhimi.airpurifier.sa1 | | +Air Purifier Super 2 | zhimi.airpurifier.sa2 | | +Air Humidifier | zhimi.humidifier.v1 | | +Air Humidifier CA1 | zhimi.humidifier.ca1 | | +Air Fresh VA2 | zhimi.airfresh.va2 | | + ## Features @@ -87,6 +109,37 @@ The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and - motor2_speed - volume +### Air Purifier Pro V7 (zhimi.airpurifier.v7) + +- Power (on, off) +- Operation modes (auto, silent, favorite) +- Child lock (on, off) +- LED (on, off) +- Favorite Level (0...16) +- Attributes + - model + - temperature + - humidity + - aqi + - mode + - filter_hours_used + - filter_life_remaining + - favorite_level + - child_lock + - led + - motor_speed + - average_aqi + - learn_mode + - extra_features + - turbo_mode_supported + - button_pressed + - filter_rfid_product_id + - filter_rfid_tag + - filter_type + - illuminance + - motor2_speed + - volume + ### Air Purifier V3 (zhimi.airpurifier.v3) - Power (on, off) @@ -167,6 +220,31 @@ The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and - depth - dry +### Air Fresh VA2 + +* Power (on, off) +* Operation modes (auto, silent, interval, low, middle, strong) +* Buzzer (on, off) +* Child lock (on, off) +* LED (on, off), LED brightness (bright, dim, off) +* Attributes + - model + - aqi + - average_aqi + - temperature + - humidity + - co2 + - mode + - led + - led_brightness + - buzzer + - child_lock + - filter_life_remaining + - filter_hours_used + - use_time + - motor_speed + - extra_features + Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. To add a Xiaomi Air Purifier to your installation, add the following to your `configuration.yaml` file: @@ -194,7 +272,7 @@ name: type: string default: Xiaomi Air Purifier model: - description: The model of your miio fan. Valid values are `zhimi.airpurifier.v6`, `zhimi.airpurifier.v3`, `zhimi.humidifier.v1` and `zhimi.humidifier.ca1`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. + description: The model of your miio fan. See the table above for valid values (f.e. `zhimi.airpurifier.v2`). This setting can be used to bypass the device model detection and is recommended if your device isn't always available. required: false type: string {% endconfiguration %} From f4806bf06a145c9118e432cbce46fd7cc50c690a Mon Sep 17 00:00:00 2001 From: Andre Lengwenus Date: Sun, 20 Jan 2019 14:56:35 +0100 Subject: [PATCH 02/65] Updated documentation for relay ports for LCN light platform (#7977) --- source/_components/lcn.markdown | 5 +++-- source/_components/light.lcn.markdown | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/lcn.markdown b/source/_components/lcn.markdown index e5130a00d84..5f92a5f5639 100644 --- a/source/_components/lcn.markdown +++ b/source/_components/lcn.markdown @@ -100,11 +100,11 @@ lights: required: true type: string output: - description: "Light source ([OUTPUT_PORT](/components/lcn#ports))." + description: "Light source ([OUTPUT_PORT](/components/lcn#ports), [RELAY_PORT](/components/lcn#ports))." required: true type: string dimmable: - description: Enable the dimming feature for this light + description: Enable the dimming feature for this light. required: false type: bool default: false @@ -155,3 +155,4 @@ The platforms and service calls use several predefined constants as parameters. | Constant | Values | | -------- | ------ | | OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` | +| RELAY_PORT | `relay1`, `relay2`, `relay3`, `relay4`, `relay5`, `relay6`, `relay7`, `relay8` | diff --git a/source/_components/light.lcn.markdown b/source/_components/light.lcn.markdown index 501b20091b2..8519bd6ffb6 100644 --- a/source/_components/light.lcn.markdown +++ b/source/_components/light.lcn.markdown @@ -16,6 +16,7 @@ ha_iot_class: "Local Push" The `lcn` light platform allows the control of the following [LCN](http://www.lcn.eu) ports: - (Dimmable) output ports +- Relays ## {% linkable_title Configuration %} From a0ca2c1df5e9e5b14d7daec1bd7d2fc43ef18408 Mon Sep 17 00:00:00 2001 From: zhujisheng <30714273+zhujisheng@users.noreply.github.com> Date: Mon, 21 Jan 2019 03:56:18 +0800 Subject: [PATCH 03/65] Create image_processing.qrcode.markdown (#8208) * Create image_processing.qrcode.markdown for the new platform * Minor changes --- .../image_processing.qrcode.markdown | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 source/_components/image_processing.qrcode.markdown diff --git a/source/_components/image_processing.qrcode.markdown b/source/_components/image_processing.qrcode.markdown new file mode 100644 index 00000000000..b674e9b4626 --- /dev/null +++ b/source/_components/image_processing.qrcode.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "QR Code Recognition" +description: "Instructions on how to integrate QR Code Recognition into Home Assistant." +date: 2019-01-18 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Image Processing +featured: false +ha_release: 0.87 +--- + +The `qrcode` image processing platform enables QR code recognition from cameras. + +## {% linkable_title Configuration %} + +To enable this, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +image_processing: + - platform: qrcode + source: + - entity_id: camera.door +``` + +{% configuration %} +source: + description: List of image sources. + required: true + type: list + keys: + entity_id: + description: A camera entity id to get picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +{% endconfiguration %} From 35e9dcc37926f411e7513fe05db5c26a0f90e2ce Mon Sep 17 00:00:00 2001 From: koreth Date: Sun, 20 Jan 2019 12:23:22 -0800 Subject: [PATCH 04/65] Document Lutron RadioRA2 button events (#8164) * Add Lutron binary sensor * Fix typo in date * Buttons now fire events instead of showing up as binary sensors * Fix grammar error * Rename "event" attribute to "action" --- source/_components/lutron.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/lutron.markdown b/source/_components/lutron.markdown index 66960face43..33f1e8f62fb 100644 --- a/source/_components/lutron.markdown +++ b/source/_components/lutron.markdown @@ -50,3 +50,15 @@ password:

It is recommended to assign a static IP address to your main repeater. This ensures that it won't change IP addresses, so you won't have to change the `host` if it reboots and comes up with a different IP address.

+ +## {% linkable_title Keypad buttons %} + +Individual buttons on keypads are not represented as entities. Instead, they fire events called `lutron_event` whose payloads include `id` and `action` attributes. + +The `id` attribute includes the name of the keypad and the name of the button, normalized the same way entity names are. For example, if the keypad is called "Kitchen Keypad" and the button is called "Dinner" the event's `id` will be `kitchen_keypad_dinner`. + +The `action` attribute varies depending on the button type. + +For raise/lower buttons (dimmer buttons, shade controls, etc.) there will be two values, `pressed` and `released`, fired when the button is pressed and when it's released, respectively. + +For single-action buttons (scene selection, etc.), `action` will be `single`, and there will only be one event fired. This is a limitation of the Lutron controller which doesn't give Home Assistant any way of knowing when a single-action button is released. From cc79369533f626432c09c61ded7ba347032f4a49 Mon Sep 17 00:00:00 2001 From: Andrey Kupreychik Date: Mon, 21 Jan 2019 15:22:49 +0700 Subject: [PATCH 05/65] Added Xiaomi AirPurifier 2S profile (#8230) --- source/_components/fan.xiaomi_miio.markdown | 43 ++++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 6c071047a67..b5f98b37ae4 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -140,6 +140,37 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - motor2_speed - volume +### Air Purifier 2S (zhimi.airpurifier.mc1) + +- Power (on, off) +- Operation modes (auto, silent, favorite) +- Buzzer (on, off) +- Child lock (on, off) +- LED (on, off) +- Favorite Level (0...16) +- Attributes + - model + - temperature + - humidity + - aqi + - mode + - filter_hours_used + - filter_life_remaining + - favorite_level + - child_lock + - led + - motor_speed + - average_aqi + - learn_mode + - extra_features + - turbo_mode_supported + - button_pressed + - filter_rfid_product_id + - filter_rfid_tag + - filter_type + - illuminance + - buzzer + ### Air Purifier V3 (zhimi.airpurifier.v3) - Power (on, off) @@ -304,7 +335,7 @@ Turn the buzzer off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -### {% linkable_title Service `fan.xiaomi_miio_set_led_on` %} (Air Purifier only) +### {% linkable_title Service `fan.xiaomi_miio_set_led_on` %} (Air Purifiers only) Turn the led on. @@ -312,7 +343,7 @@ Turn the led on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -### {% linkable_title Service `fan.xiaomi_miio_set_led_off` %} (Air Purifier only) +### {% linkable_title Service `fan.xiaomi_miio_set_led_off` %} (Air Purifiers only) Turn the led off. @@ -336,7 +367,7 @@ Turn the child lock off. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -### {% linkable_title Service `fan.xiaomi_miio_set_led_brightness` %} (Air Purifier Pro excluded) +### {% linkable_title Service `fan.xiaomi_miio_set_led_brightness` %} (Air Purifier 2S and Air Purifier Pro excluded) Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). @@ -345,7 +376,7 @@ Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | | `brightness` | no | Brightness, between 0 and 2. | -### {% linkable_title Service `fan.xiaomi_miio_set_favorite_level` %} (Air Purifier only) +### {% linkable_title Service `fan.xiaomi_miio_set_favorite_level` %} (Air Purifiers only) Set the favorite level of the operation mode "favorite". @@ -354,7 +385,7 @@ Set the favorite level of the operation mode "favorite". | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | | `level` | no | Level, between 0 and 16. | -### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_on` %} (Air Purifier Pro only) +### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_on` %} (Air Purifier 2S and Air Purifier Pro only) Turn the auto detect on. @@ -362,7 +393,7 @@ Turn the auto detect on. |---------------------------|----------|---------------------------------------------------------| | `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_off` %} (Air Purifier Pro only) +### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_off` %} (Air Purifier 2S and Air Purifier Pro only) Turn the auto detect off. From 4ba0fe31de8f1766b05e8c8c07af55f5ebbac9ad Mon Sep 17 00:00:00 2001 From: Jon Caruana Date: Mon, 21 Jan 2019 11:28:00 -0800 Subject: [PATCH 06/65] Initial documentation for new EverLights light component (#8076) * Everlights light component documentation. * Review feedback and fix typo. * Add EverLights logo. Image copyright EverLights. Use on this page approved via email. * English... * :pencil2: Tweaks * :pencil2: Tweaks --- source/_components/light.everlights.markdown | 44 ++++++++++++++++++ source/images/supported_brands/everlights.png | Bin 0 -> 4424 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/light.everlights.markdown create mode 100644 source/images/supported_brands/everlights.png diff --git a/source/_components/light.everlights.markdown b/source/_components/light.everlights.markdown new file mode 100644 index 00000000000..df6dca6034a --- /dev/null +++ b/source/_components/light.everlights.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "EverLights Light" +description: "Instructions on how to set up EverLights within Home Assistant." +date: 2018-12-29 +sidebar: true +comments: false +sharing: true +footer: true +logo: everlights.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.87 +--- + +[EverLights](https://myeverlights.com/) are permanent Christmas lights installed on a home's gutters or flashing. This integration can change all LEDs in a zone to a single color or activate a pattern that was previously saved to the control box. + +### {% linkable_title Configuration Details %} + +To enable EverLights, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: everlights + hosts: + - 192.168.1.123 + - 192.168.1.124 +``` + +{% configuration %} +hosts: + description: EverLights control box IP addresses. + required: true + type: list +{% endconfiguration %} + +### {% linkable_title Effects %} + +EverLights patterns saved to the control box can be activated using the effect parameter to the `light.turn_on` service. If an effect is specified, then the color and brightness are ignored. + +### Limitations + +The EverLights control box status indicates if a zone is active but does not indicate the current color or pattern. The color and effect in the state attributes are based on the last execution of `light.turn_on`. If the control box scheduler or another app makes a change, then the state attributes are not updated. diff --git a/source/images/supported_brands/everlights.png b/source/images/supported_brands/everlights.png new file mode 100644 index 0000000000000000000000000000000000000000..ed37a52eeb6c137ee290071eb35ef79ba902dbf9 GIT binary patch literal 4424 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 O0000 Date: Mon, 21 Jan 2019 20:39:25 +0100 Subject: [PATCH 07/65] Add documentation for LCN switch platform (#8223) * Add documentation for LCN switch platform * Changed ha_release to 0.87 --- source/_components/lcn.markdown | 25 +++++++++++++++++++++++++ source/_components/switch.lcn.markdown | 24 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 source/_components/switch.lcn.markdown diff --git a/source/_components/lcn.markdown b/source/_components/lcn.markdown index 5f92a5f5639..5dc88d3fe8d 100644 --- a/source/_components/lcn.markdown +++ b/source/_components/lcn.markdown @@ -23,6 +23,8 @@ With this setup sending and receiving commands to and from LCN modules is possib There is currently support for the following device types within Home Assistant: - [Light](/components/light.lcn) +- [Switch](/components/switch.lcn) + ## {% linkable_title Configuration %} @@ -46,6 +48,11 @@ lcn: output: output1 dimmable: true transition: 5 + + switches: + - name: Sprinkler switch + address: myhome.s0.m7 + output: relay1 ``` {% configuration %} @@ -113,6 +120,24 @@ lights: required: false type: int default: 0 + +switches: + description: List of your switches. + required: false + type: map + keys: + name: + description: "Name of the switch." + required: true + type: string + address: + description: "[Address](/components/lcn#lcn-addresses) of the module/group." + required: true + type: string + output: + description: "Switch source ([OUTPUT_PORT](/components/lcn#ports), [RELAY_PORT](/components/lcn#ports))." + required: true + type: string {% endconfiguration %} diff --git a/source/_components/switch.lcn.markdown b/source/_components/switch.lcn.markdown new file mode 100644 index 00000000000..6e61a908f51 --- /dev/null +++ b/source/_components/switch.lcn.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "LCN Switch" +description: "Instructions on how to setup LCN switches within Home Assistant." +date: 2018-11-01 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lcn.png +ha_category: Switch +ha_release: 0.87 +ha_iot_class: "Local Push" +--- + +The `lcn` switch platform allows the control of the following [LCN](http://www.lcn.eu) ports: + +- Output ports +- Relays + +## {% linkable_title Configuration %} + +The `lcn` component must be configured correctly, see [LCN component](/components/lcn). +This platform is configured within the `lcn` component. From 8060e63d5194e831e97be4136fe39ccf0faea1aa Mon Sep 17 00:00:00 2001 From: Gamester17 Date: Mon, 21 Jan 2019 22:27:07 +0100 Subject: [PATCH 08/65] Update zha.markdown with deconz radio type as optional configuration variable (#8211) Added `deconz` to CONFIGURATION VARIABLES as additional radio type in zha.markdown. --- source/_components/zha.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index c3a1069360a..a2921fe5c9d 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -50,7 +50,7 @@ zha: {% configuration %} radio_type: - description: One of `ezsp` or `xbee`. + description: One of `ezsp`, `xbee` or `deconz`. required: false type: string default: ezsp From 43e8536d66fa22158a3749ef14bac2a85263fb99 Mon Sep 17 00:00:00 2001 From: Rohan Kapoor Date: Mon, 21 Jan 2019 13:29:21 -0800 Subject: [PATCH 09/65] Add docs for the ZoneMinder binary sensor (#8206) --- .../binary_sensor.zoneminder.markdown | 22 +++++++++++++++++++ source/_components/zoneminder.markdown | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 source/_components/binary_sensor.zoneminder.markdown diff --git a/source/_components/binary_sensor.zoneminder.markdown b/source/_components/binary_sensor.zoneminder.markdown new file mode 100644 index 00000000000..675158b4ddb --- /dev/null +++ b/source/_components/binary_sensor.zoneminder.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "ZoneMinder Binary Sensor" +description: "Provides the connectivity from Home Assistant to ZoneMinder." +date: 2019-01-18 02:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: zoneminder.png +ha_category: Binary Sensor +ha_release: 0.87 +ha_iot_class: "Local Polling" +--- + +The `zoneminder` binary sensor platform lets you monitor the availability of your [ZoneMinder](https://www.zoneminder.com) install. + +

+This platform is automatically loaded by the [ZoneMinder component](/components/zoneminder/) during it's setup. +

+ +Each binary_sensor created will be named after the hostname used when configuring the [ZoneMinder component](/components/zoneminder/). diff --git a/source/_components/zoneminder.markdown b/source/_components/zoneminder.markdown index d8d934df811..950870f0e9f 100644 --- a/source/_components/zoneminder.markdown +++ b/source/_components/zoneminder.markdown @@ -14,7 +14,7 @@ ha_release: 0.31 ha_iot_class: "Local Polling" --- -The ZoneMinder component sets up the integration with your [ZoneMinder](https://www.zoneminder.com) instance so that [cameras](/components/camera.zoneminder/), [sensors](/components/sensor.zoneminder/), and [switches](/components/switch.zoneminder) can use it. +The ZoneMinder component sets up the integration with your [ZoneMinder](https://www.zoneminder.com) instance so that [cameras](/components/camera.zoneminder/), [sensors](/components/sensor.zoneminder/), and [switches](/components/switch.zoneminder) can use it. Configuring this component will automatically load the [binary_sensor](/components/binary_sensor.zoneminder) which tracks ZoneMinder availability. ## {% linkable_title Configuration %} From a8cd28c5cf65d58aaf97e535d2208937cf2dc5c4 Mon Sep 17 00:00:00 2001 From: Rohan Kapoor Date: Mon, 21 Jan 2019 13:31:20 -0800 Subject: [PATCH 10/65] Add docs for verify_ssl configuration added to rest_command and switch.rest (#8205) --- source/_components/rest_command.markdown | 12 +++++++++--- source/_components/sensor.rest.markdown | 6 +++--- source/_components/switch.rest.markdown | 6 ++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/source/_components/rest_command.markdown b/source/_components/rest_command.markdown index 6cb1213d5a6..dd2c1619e7d 100644 --- a/source/_components/rest_command.markdown +++ b/source/_components/rest_command.markdown @@ -30,7 +30,7 @@ rest_command: {% configuration %} service_name: description: The name used to expose the service. E.g., in the above example, it would be 'rest_command.service_name'. - required: true + required: true type: map keys: url: @@ -59,7 +59,7 @@ service_name: required: false type: string timeout: - description: Timeout for requests in seconds. + description: Timeout for requests in seconds. required: false type: string defaut: 10 @@ -67,6 +67,11 @@ service_name: description: Content type for the request. required: false type: string + verify_ssl: + description: Verify the SSL certificate of the endpoint. + required: false + type: boolean + default: true {% endconfiguration %} ## {% linkable_title Examples %} @@ -80,11 +85,12 @@ rest_command: my_request: url: https://slack.com/api/users.profile.set method: POST - headers: + headers: authorization: !secret rest_headers_secret accept: 'application/json, text/html' payload: '{"profile":{"status_text": "{{ status }}","status_emoji": "{{ emoji }}"}}' content_type: 'application/json; charset=utf-8' + verify_ssl: true ``` {% endraw %} diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 4f9bb9ee299..672f89517bf 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -67,7 +67,7 @@ payload: required: false type: string verify_ssl: - description: Verify the certification of the endpoint. + description: Verify the SSL certificate of the endpoint. required: false type: boolean default: True @@ -173,7 +173,7 @@ sensor: Content-Type: application/json ``` -The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens. +The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens. ```bash Content-Length: 1024 @@ -234,7 +234,7 @@ This sample fetches a weather report from [OpenWeatherMap](http://openweathermap sensor: - platform: rest name: OWM_report - json_attributes: + json_attributes: - main - weather value_template: '{{ value_json["weather"][0]["description"].title() }}' diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index 8a74470eacf..8ba4f4584b9 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -72,6 +72,11 @@ headers: description: The headers for the request. required: false type: list, string +verify_ssl: + description: Verify the SSL certificate of the endpoint. + required: false + type: boolean + default: true {% endconfiguration %}

@@ -98,6 +103,7 @@ switch: is_on_template: '{{ value_json.is_active }}' headers: Content-Type: application/json + verify_ssl: true ``` {% endraw %} From 6bc6467b0fc9ea2cbd070aeff008defad51b1842 Mon Sep 17 00:00:00 2001 From: Matthew Wegner Date: Mon, 21 Jan 2019 15:00:22 -0700 Subject: [PATCH 11/65] Documentation for Exposing IMAP Search String (#8034) * Documentation for Exposing IMAP Search String To accompany a PR to sensor/imap.py * Rewrote Last Sentence for More Clarity --- source/_components/sensor.imap.markdown | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/_components/sensor.imap.markdown b/source/_components/sensor.imap.markdown index 27ae8f63c78..e993ffbd0fd 100644 --- a/source/_components/sensor.imap.markdown +++ b/source/_components/sensor.imap.markdown @@ -57,4 +57,18 @@ folder: required: false default: inbox type: string +search: + description: The IMAP search to perform on the watched folder. + required: false + default: UnSeen UnDeleted + type: string {% endconfiguration %} + +### {% linkable_title Configuring IMAP Searches %} + +By default, this component will count unread emails. By configuring the search string, you can count other results, for example: + +* `ALL` to count all emails in a folder +* `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4)) +* [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account! + From 6a38afe6b4bbfa86080a5394e102b4faea6dd195 Mon Sep 17 00:00:00 2001 From: Richard Mitchell Date: Mon, 21 Jan 2019 23:04:35 +0000 Subject: [PATCH 12/65] Correctly map Nest hvac_state to Home Assistant states. (#8114) * Correctly map Nest hvac_state to Home Assistant states. * Avoid the Oxford comma, the standards say --- source/_components/sensor.nest.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index 801198eb46b..fe730b1a341 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -51,12 +51,12 @@ The following conditions are available by device: - operation\_mode - temperature - target - - hvac\_state: The currently active state of the HVAC system, `heating`, `cooling`, or `off`. + - hvac\_state: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). - Nest Protect: - - co\_status: `Ok`, `Warning`, or `Emergency` - - smoke\_status: `Ok`, `Warning`, or `Emergency` + - co\_status: `Ok`, `Warning` or `Emergency` + - smoke\_status: `Ok`, `Warning` or `Emergency` - battery\_health: `Ok` or `Replace` - - color\_status: `gray`, `green`, `yellow`, or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. + - color\_status: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. - Nest Camera: none ## {% linkable_title Security State %} From e3715cfd326d0ec17525dec2587b5235b35e6ac9 Mon Sep 17 00:00:00 2001 From: Jonathan Keljo Date: Tue, 22 Jan 2019 03:17:53 -0800 Subject: [PATCH 13/65] Update greeneye_monitor docs with breaking change. (#7976) * Update greeneye_monitor docs with breaking change. * Update to keep pace with changes in the main PR --- source/_components/greeneye_monitor.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/greeneye_monitor.markdown b/source/_components/greeneye_monitor.markdown index 596751358d5..b303f8014bc 100644 --- a/source/_components/greeneye_monitor.markdown +++ b/source/_components/greeneye_monitor.markdown @@ -22,7 +22,7 @@ Configure your GEM(s) to produce binary-format packets (for example, "Bin32 NET" greeneye_monitor: port: 8000 monitors: - - serial_number: YOUR_SERIAL_NUMBER + - serial_number: "YOUR_SERIAL_NUMBER" channels: - number: 1 name: total_power @@ -53,9 +53,9 @@ monitors: type: list keys: serial_number: - description: The last five digits (omitting leading zeroes) of your GEM serial number. + description: Your 8-digit GEM serial number, as it appears in the UI. required: true - type: integer + type: string channels: description: The list of channels that should appear in Home Assistant for this monitor. Data from other channels will be ignored. required: false From a10c6985185e1c5f3538684bf04d135ce7813423 Mon Sep 17 00:00:00 2001 From: Austin Drummond Date: Tue, 22 Jan 2019 06:18:56 -0500 Subject: [PATCH 14/65] Add changes for alarm_control_panel.homekit_controller (#7965) * added documenation changes for alarm_control_panel.homekit_controller * alphabetical order for homekitcontroller_alarm_control_panel change * bump version for homekit controller alarm control panel --- ...arm_control_panel.homekit_controller.markdown | 16 ++++++++++++++++ source/_components/homekit_controller.markdown | 1 + 2 files changed, 17 insertions(+) create mode 100644 source/_components/alarm_control_panel.homekit_controller.markdown diff --git a/source/_components/alarm_control_panel.homekit_controller.markdown b/source/_components/alarm_control_panel.homekit_controller.markdown new file mode 100644 index 00000000000..ae24f556192 --- /dev/null +++ b/source/_components/alarm_control_panel.homekit_controller.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "HomeKit Alarm Control Panel" +description: "Instructions how to setup HomeKit security systems within Home Assistant." +date: 2018-12-27 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple-homekit.png +ha_category: Alarm Control Panel +ha_iot_class: "Local Polling" +ha_release: 0.86 +--- + +To get your HomeKit security system working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/). diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown index 13aac56efa0..1992d84b1d8 100644 --- a/source/_components/homekit_controller.markdown +++ b/source/_components/homekit_controller.markdown @@ -22,6 +22,7 @@ ha_iot_class: "Local Polling" There is currently support for the following device types within Home Assistant: +- [Alarm Control Panel](/components/alarm_control_panel.homekit_controller/) - [Climate](/components/climate.homekit_controller/) - [Cover](/components/cover.homekit_controller/) - [Light](/components/light.homekit_controller/) From 5d7ad0326d00e4b746e382831cc814e2ca0dedb4 Mon Sep 17 00:00:00 2001 From: Louis Matthijssen Date: Tue, 22 Jan 2019 13:10:55 +0100 Subject: [PATCH 15/65] Update documentation for friendly names in SolarEdge sensor (#8193) --- source/_components/sensor.solaredge.markdown | 22 ++++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_components/sensor.solaredge.markdown b/source/_components/sensor.solaredge.markdown index 6f7ba39a19e..4959807488b 100644 --- a/source/_components/sensor.solaredge.markdown +++ b/source/_components/sensor.solaredge.markdown @@ -32,7 +32,7 @@ sensor: site_id: SITE_ID monitored_conditions: - current_power - - last_day_data + - energy_today ``` {% endraw %} @@ -56,13 +56,13 @@ monitored_conditions: type: list default: current_power keys: - life_time_data: + lifetime_energy: description: Lifetime energy generated at your SolarEdge Site in Wh - last_year_data: + energy_this_year: description: Energy generated this year at your SolarEdge Site in Wh - last_month_data: + energy_this_month: description: Energy generated this month at your SolarEdge Site in Wh - last_day_data: + energy_today: description: Energy generated today at your SolarEdge Site in Wh current_power: description: Current generated power in W @@ -84,10 +84,10 @@ sensor: name: SolarEdge monitored_conditions: - current_power - - last_day_data - - last_month_data - - last_year_data - - life_time_data + - energy_today + - energy_this_month + - energy_this_year + - lifetime_energy ``` {% endraw %} @@ -99,7 +99,7 @@ In case you would like to convert the values for example to kWh instead of the d sensors: platform: template sensors: - solaredge_last_year_data_template: - value_template: '{{(states.sensor.solaredge_last_year_data.state | float / 1000) | round(2)}}' + solaredge_energy_this_year_template: + value_template: '{{(states.sensor.solaredge_energy_this_year.state | float / 1000) | round(2)}}' ``` {% endraw %} From 4d4f1d9719a185636212ae0b0c14889b6bb19e0a Mon Sep 17 00:00:00 2001 From: Mattias Welponer Date: Tue, 22 Jan 2019 13:24:11 +0100 Subject: [PATCH 16/65] HomematicIP Cloud add cover devices platform (#8170) * Add HMIP cover devices platform * Fix ha_category * :arrow_up: ha_release 0.87 --- .../cover.homematicip_cloud.markdown | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 source/_components/cover.homematicip_cloud.markdown diff --git a/source/_components/cover.homematicip_cloud.markdown b/source/_components/cover.homematicip_cloud.markdown new file mode 100644 index 00000000000..c1a6a98361d --- /dev/null +++ b/source/_components/cover.homematicip_cloud.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "HomematicIP Cloud Cover" +description: "Instructions on how to integrate HomematicIP covers within Home Assistant." +date: 2019-04-13 13:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: homematicip_cloud.png +ha_category: Cover +ha_release: 0.87 +ha_iot_class: "Cloud Push" +--- + +The `homematicip_cloud` cover platform allows you to control +[HomematicIP](http://www.homematic-ip.com) covers through Home Assistant. + +Devices will be configured automatically. Please refer to the +[component](/components/homematicip_cloud/) configuration on how to setup +HomematicIP Cloud. From 9c2008409501d5e5ea34b369339a36d750ffe85b Mon Sep 17 00:00:00 2001 From: krygal Date: Tue, 22 Jan 2019 12:24:25 +0000 Subject: [PATCH 17/65] Documentation for ee_brightbox device tracker (#7962) * Documentation for ee_brightbox device tracker * updated release to 0.86 * :arrow_up: ha_release 0.87 --- .../device_tracker.ee_brightbox.markdown | 51 ++++++++++++++++++ source/images/supported_brands/ee.png | Bin 0 -> 27957 bytes 2 files changed, 51 insertions(+) create mode 100644 source/_components/device_tracker.ee_brightbox.markdown create mode 100644 source/images/supported_brands/ee.png diff --git a/source/_components/device_tracker.ee_brightbox.markdown b/source/_components/device_tracker.ee_brightbox.markdown new file mode 100644 index 00000000000..8a0ef3b31fa --- /dev/null +++ b/source/_components/device_tracker.ee_brightbox.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "EE Bright Box" +description: "Instructions on how to integrate EE Bright Box router into Home Assistant." +date: 2018-12-27 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ee.png +ha_category: Presence Detection +ha_release: 0.87 +ha_iot_class: "Local Polling" +--- + +This platform offers presence detection by looking at connected devices to a [EE Bright Box 2](https://ee.co.uk/help/phones-and-device/home-broadband/bright-box-2-wireless-router/bright-box-2-wireless-router) router. + +## {% linkable_title Configuration %} + +To use a EE Bright Box router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: ee_brightbox + password: router-admin-password +``` + +{% configuration %} +host: + description: The IP address of your router + default: 192.168.1.1 + required: false + type: string +username: + description: Found at the back of the router in 'Router login details' section + default: admin + required: false + type: string +password: + description: Found at the back of the router in 'Router login details' section + required: true + type: string +version: + description: Currently only version 2 of the router is supported + default: 2 + required: false + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. diff --git a/source/images/supported_brands/ee.png b/source/images/supported_brands/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c58d0dbfbb9866636bcb627e400ad52614c8e5 GIT binary patch literal 27957 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 No!2+fD>`c%`9BqUH=zIk literal 0 HcmV?d00001 From f02be402584423370f7fc10d8e9139ef6eb33955 Mon Sep 17 00:00:00 2001 From: Tommy Jonsson Date: Tue, 22 Jan 2019 13:26:06 +0100 Subject: [PATCH 18/65] Mqtt discovery of vacuums (#7910) * Mqtt discovery of vacuums See https://github.com/home-assistant/home-assistant/pull/19478 * :pencil2: Tweak --- source/_docs/mqtt/discovery.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 88bf2b980ae..a7931e22cf0 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -24,6 +24,7 @@ Supported by MQTT discovery: - [Locks](/components/lock.mqtt/) - [Sensors](/components/sensor.mqtt/) - [Switches](/components/switch.mqtt/) +- [Vacuums](/components/vacuum.mqtt/) To enable MQTT discovery, add the following to your `configuration.yaml` file: @@ -86,12 +87,25 @@ Supported abbreviations: 'bri_scl': 'brightness_scale', 'bri_stat_t': 'brightness_state_topic', 'bri_val_tpl': 'brightness_value_template', + 'bat_lev_t': 'battery_level_topic', + 'bat_lev_tpl': 'battery_level_template', + 'chrg_t': 'charging_topic', + 'chrg_tpl': 'charging_template', 'clr_temp_cmd_t': 'color_temp_command_topic', 'clr_temp_stat_t': 'color_temp_state_topic', 'clr_temp_val_tpl': 'color_temp_value_template', + 'cln_t': 'cleaning_topic', + 'cln_tpl': 'cleaning_template', 'cmd_t': 'command_topic', 'curr_temp_t': 'current_temperature_topic', 'dev_cla': 'device_class', + 'dock_t': 'docked_topic', + 'dock_tpl': 'docked_template', + 'err_t': 'error_topic', + 'err_tpl': 'error_template', + 'fanspd_t': 'fan_speed_topic', + 'fanspd_tpl': 'fan_speed_template', + 'fanspd_lst': 'fan_speed_list', 'fx_cmd_t': 'effect_command_topic', 'fx_list': 'effect_list', 'fx_stat_t': 'effect_state_topic', @@ -141,6 +155,7 @@ Supported abbreviations: 'rgb_cmd_t': 'rgb_command_topic', 'rgb_stat_t': 'rgb_state_topic', 'rgb_val_tpl': 'rgb_value_template', + 'send_cmd_t': 'send_command_topic', 'send_if_off': 'send_if_off', 'set_pos_tpl': 'set_position_template', 'set_pos_t': 'set_position_topic', @@ -154,6 +169,7 @@ Supported abbreviations: 'stat_open': 'state_open', 'stat_t': 'state_topic', 'stat_val_tpl': 'state_value_template', + 'sup_feat': 'supported_features', 'swing_mode_cmd_t': 'swing_mode_command_topic', 'swing_mode_stat_tpl': 'swing_mode_state_template', 'swing_mode_stat_t': 'swing_mode_state_topic', From 7e5647a3bc4318471e6fa2c482a788d2ff28eb0b Mon Sep 17 00:00:00 2001 From: awkwardDuck <34869622+awkwardDuck@users.noreply.github.com> Date: Tue, 22 Jan 2019 17:02:55 -0500 Subject: [PATCH 19/65] Update/Remove GTFS feeds. (#8241) Update the GTFS sensor markdown to remove obsolete/dead links for GBrail.info and PTV Australia. Update the Switzerland link for 2019. **Pull request in [home-assistant](https://github.com/home-assistant/home-assistant) (if applicable):** home-assistant/home-assistant# ## Checklist: - [X] Branch: `next` is for changes and new documentation that will go public with the next [home-assistant](https://github.com/home-assistant/home-assistant) release. Fixes, changes and adjustments for the current release should be created against `current`. - [x] The documentation follows the [standards][standards]. [standards]: https://developers.home-assistant.io/docs/documentation_standards.html --- source/_components/sensor.gtfs.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown index 08a8d4258ea..b2b426fd48a 100644 --- a/source/_components/sensor.gtfs.markdown +++ b/source/_components/sensor.gtfs.markdown @@ -21,9 +21,7 @@ Here are some examples: - [Bay Area Rapid Transit (BART)](http://www.bart.gov/schedules/developers/gtfs) - The light rail system for the San Francisco Bay Area. - [Metropolitan Transit Authority of New York City (MTA)](http://web.mta.info/developers/) - Provides separate data feeds for subway, bus, LIRR and Metro-North of the greater New York City metropolitan region. -- [GBRail.info](http://www.gbrail.info/) - Provides data feeds for most if not all rail companies in Britain. -- [Official Timetable Switzerland](http://www.fahrplanfelder.ch/en/timetable-data.html) - The official timetable data for Switzerland. -- [Public Transport Victoria (Australia)](https://www.data.vic.gov.au/data/dataset/ptv-timetable-and-geographic-information-2015-gtfs) - Official PTV GTFS dataset. +- [Official Timetable Switzerland](https://opentransportdata.swiss/en/dataset/timetable-2019-gtfs) - The official timetable data for Switzerland in 2019. You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. From c604556a8683b09c26050f152a74b779f3c0108a Mon Sep 17 00:00:00 2001 From: Mateusz Korniak Date: Tue, 22 Jan 2019 23:35:41 +0100 Subject: [PATCH 20/65] Ecoal boiler (#7707) * Added components.ecoal_boiler docs. * Sensors and pumps control for ecoal_boiler. * Follow configuration layout changes made during component PR review. * Update 'ha_release' * Update 'ha_release' * Delete platform docs * Remove platform docs * Add redirects * Various fixes --- source/_components/ecoal_boiler.markdown | 78 ++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 source/_components/ecoal_boiler.markdown diff --git a/source/_components/ecoal_boiler.markdown b/source/_components/ecoal_boiler.markdown new file mode 100644 index 00000000000..4eeb3a5f4b6 --- /dev/null +++ b/source/_components/ecoal_boiler.markdown @@ -0,0 +1,78 @@ +--- +layout: page +title: "eCoal water boiler controller" +description: "Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant." +date: 2018-11-29 10:00 +sidebar: true +comments: false +sharing: true +footer: true +# logo: raspberry-pi.png +ha_category: Water heater +ha_release: 0.87 +ha_iot_class: "Local Polling" +redirect_from: + - /components/sensor.ecoal_boiler/ + - /components/switch.ecoal_boiler/ +--- + +The `ecoal_boiler` component is the base for pumps and sensors managed by [esterownik.pl eCoal boiler controller](https://esterownik.pl/nasze-produkty/ecoal). + +## {% linkable_title Configuration %} + +To use your eCoal pumps or sensors in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +ecoal_boiler: + host: YOUR_IP_ADDRESS + username: YOUR_USERNAME + password: YOUR_PASSWORD + switches: + monitored_conditions: + - central_heating_pump + - central_heating_pump2 + sensors: + monitored_conditions: + - outdoor_temp + - indoor_temp +``` + +{% configuration %} +host: + description: The IP address or the hostname of eCoal controller. + required: true + type: string +username: + description: Login used to connect to controller. + required: false + default: admin + type: string +password: + description: Password for username. + required: false + default: admin + type: string +switches: + description: switch-related configuration options + required: false + type: map + keys: + monitored_conditions: + description: controller available source of switches + required: false + type: list + default: all (`central_heating_pump`, `central_heating_pump2`, `domestic_hot_water_pump`) +sensors: + description: sensor-related configuration options + required: false + type: map + keys: + monitored_conditions: + description: controller available source of sensors + required: false + type: list + default: all (`outdoor_temp`, `indoor_temp`, `indoor2_temp`, `domestic_hot_water_temp`, `target_domestic_hot_water_temp`, + `feedwater_in_temp`, `feedwater_out_temp`, `target_feedwater_temp`, + `fuel_feeder_temp`, `exhaust_temp`) +{% endconfiguration %} From d6c195fe2a99de44a6172249e38b5f1f9c3ff9b9 Mon Sep 17 00:00:00 2001 From: arigilder <43716164+arigilder@users.noreply.github.com> Date: Wed, 23 Jan 2019 01:14:37 -0500 Subject: [PATCH 21/65] Add additional documentation for new Jewish Calendar sensors (#7838) * Update docs for new Jewish calendar sensors * Add havdalah example * Update docs for three-day holidays * Attempt to rectify exception while generating docs * Consolidate description into single line. * Fix review comments --- .../sensor.jewish_calendar.markdown | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/sensor.jewish_calendar.markdown index 2d0e6c2be49..2c13d7e1ca5 100644 --- a/source/_components/sensor.jewish_calendar.markdown +++ b/source/_components/sensor.jewish_calendar.markdown @@ -28,7 +28,7 @@ sensor: language: required: false default: english - description: Whether to represent the sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishri 5779). + description: Whether to represent the sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishrei 5779). Valid options are 'english' and 'hebrew'. type: string latitude: required: false @@ -45,6 +45,16 @@ diaspora: description: Consider the location as diaspora or not for calculation of the weekly portion and holidays. default: False type: string +candle_lighting_minutes_before_sunset: + required: false + description: Number of minutes before sunset to report as candle lighting time. + default: 18 + type: integer +havdalah_minutes_after_sunset: + required: false + description: Number of minutes after sunset to report as havdalah time. If this is set to 0, uses the time that the sun is 8.5 degrees below the horizon (same as the 'three_stars' sensor). If non-zero, this value is added as an offset to the time of sunset to report havdalah. + default: 0 + type: integer sensors: required: false default: date @@ -68,17 +78,28 @@ sensors: description: Time of the Plag Hamincha. first_stars: description: Time at which the first stars are visible (Tset Hakochavim - צאת הכוכבים). + upcoming_shabbat_candle_lighting: + description: The time of candle lighting for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. + upcoming_shabbat_havdalah: + description: The time of havdalah for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. If it is currently a three-day holiday, this value *could* be None (i.e. if holiday is Sat./Sun./Mon. and it's Saturday, there will be no shabbat_havdalah value. See comments in hdate library for details.) + upcoming_candle_lighting: + description: The time of candle lighting for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the candle lighting for Rosh Hashana on Monday night. This avoids a situation of triggering pre-candle-lighting automations while it is currently Yom Tov. To always get the Shabbat times, use the upcoming_shabbat_candle_lighting sensor. + upcoming_havdalah: + description: The time of havdalah for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the havdalah for Rosh Hashana on Wednesday night. To always get the Shabbat times, use the upcoming_shabbat_havdalah sensor. + issur_melacha_in_effect: + description: A boolean sensor indicating if melacha is currently not permitted. The value is true when it is currently Shabbat or Yom Tov and false otherwise. + {% endconfiguration %} ### {% linkable_title Holyness levels %} 1. Mido'rayta - by Torah ordination (Rosh Hashana, Yom Kippur, Pesach, Shavuot, Sukkot) -2. Erev Yom Kippur +2. Erev Yom Tov 3. Hol Hamo'ed 4. Hanukka and Purim 5. Fast days -6. Yom Yerushalayim and Yom Haatsmaut -7. Lag ba'omer and Tu bishvat +6. Modern holidays, e.g. Yom Yerushalayim and Yom Haatsmaut +7. Minor holidays, e.g. Lag ba'omer and Tu bishvat 8. Memorial days: yom hazikaron and yom hashoah 9. Days mentioned by the Israeli parliament: Rabin memorial day, Ze'ev Zhabotinsky day, etc. @@ -90,6 +111,7 @@ sensor: - platform: jewish_calendar language: english diaspora: true + havdalah_minutes_after_sunset: 50 sensors: - date - weekly_portion @@ -100,4 +122,6 @@ sensor: - mga_end_shma - plag_mincha - first_stars + - upcoming_candle_lighting + - upcoming_havdalah ``` From 885c014a7fdb78d91d98816a13e9c6654826d60f Mon Sep 17 00:00:00 2001 From: Fabien Piuzzi Date: Wed, 23 Jan 2019 13:36:02 +0100 Subject: [PATCH 22/65] Add path option to octoprint component documentation (#8236) Add path option to octoprint component documentation --- source/_components/octoprint.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 992fd9700da..b9f51d4db04 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -49,6 +49,11 @@ octoprint: required: false type: integer default: 80 + path: + description: The URL path of the Octoprint instance. + required: false + type: string + default: / ssl: description: Enable or disable SSL/TLS. required: false From 823c3b7cabe527748b3e1f1d638dd1503e40bef7 Mon Sep 17 00:00:00 2001 From: Jonas Pedersen Date: Wed, 23 Jan 2019 17:58:32 +0100 Subject: [PATCH 23/65] Add documentation for Danfoss Air HRV. (#8180) * Add documentation for Danfoss Air HRV. * Change category and add logo. * Add documentation for Danfoss Air binary sensor and sensor platform. * Add brief description of the (binary) sensors supported by danfoss air. --- .../binary_sensor.danfoss_air.markdown | 21 +++++++++++ source/_components/danfoss_air.markdown | 33 ++++++++++++++++++ .../_components/sensor.danfoss_air.markdown | 25 +++++++++++++ .../images/supported_brands/danfoss_air.png | Bin 0 -> 31073 bytes 4 files changed, 79 insertions(+) create mode 100644 source/_components/binary_sensor.danfoss_air.markdown create mode 100644 source/_components/danfoss_air.markdown create mode 100644 source/_components/sensor.danfoss_air.markdown create mode 100644 source/images/supported_brands/danfoss_air.png diff --git a/source/_components/binary_sensor.danfoss_air.markdown b/source/_components/binary_sensor.danfoss_air.markdown new file mode 100644 index 00000000000..aff87052378 --- /dev/null +++ b/source/_components/binary_sensor.danfoss_air.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Danfoss Air Binary Sensor" +description: "Instructions for how to setup Danfoss Air binary sensors within Home Assistant." +date: 2019-01-21 19:03 +sidebar: true +comments: false +sharing: true +footer: true +logo: danfoss_air.png +ha_category: Binary Sensor +ha_release: "0.86" +ha_iot_class: "Local Polling" +--- + +

+To get your Danfoss Air binary sensors working with Home Assistant, follow the instructions for the general [Danfoss Air component](/components/danfoss_air/). +

+ +The following binary sensor is supported. +* **Bypass active:** Indicator if heat recovery is currrently bypassed. diff --git a/source/_components/danfoss_air.markdown b/source/_components/danfoss_air.markdown new file mode 100644 index 00000000000..7bd2293221d --- /dev/null +++ b/source/_components/danfoss_air.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Danfoss Air" +description: "How to integrate Danfoss Air HRV in Home Assistant." +date: 2019-01-14 20:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Climate +ha_release: "0.86" +logo: danfoss_air.png +ha_iot_class: "Local Polling" +--- + +The `danfoss_air` component allows you to access information from your Danfoss Air HRV unit. + +*Note*: Danfoss Air CCM only accepts one TCP connection at a time. Due to this the component +will not work while you have the HRV PC-Tool open. + +```yaml +# Example configuration.yaml entry +danfoss_air: + host: IP_ADDRESS_OF_CCM +``` + +{% configuration %} +host: + description: Danfoss Air CCM IP. + required: true + type: string +{% endconfiguration %} + diff --git a/source/_components/sensor.danfoss_air.markdown b/source/_components/sensor.danfoss_air.markdown new file mode 100644 index 00000000000..5c4880213a5 --- /dev/null +++ b/source/_components/sensor.danfoss_air.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "Danfoss Air Sensor" +description: "Instructions for how to setup Danfoss Air sensors within Home Assistant." +date: 2019-01-21 20:59 +sidebar: true +comments: false +sharing: true +footer: true +logo: danfoss_air.png +ha_category: Sensor +ha_release: "0.86" +ha_iot_class: "Local Polling" +--- + +

+To get your Danfoss Air sensors working with Home Assistant, follow the instructions for the general [Danfoss Air component](/components/danfoss_air/). +

+ +The following sensors are supported. +* **Outdoor temperature:** Outdoor air temperature. +* **Supply temperature:** Air temperature of the air supplied to the house. +* **Extract temperature:** Air temperature of the air extracted from the house. +* **Exhaust temperature:** Exhausted air temperature. +* **Remaining filter lifetime:** Reamining filter lifetime measured in percent. diff --git a/source/images/supported_brands/danfoss_air.png b/source/images/supported_brands/danfoss_air.png new file mode 100644 index 0000000000000000000000000000000000000000..cfaad46e69396dc4614aa7d664ee309a2b293055 GIT binary patch literal 31073 zcmcG#1ydbe(=|K?cXxLQK@aZk7TjHf2PeqEf?IHhgg^-H?i$=lZ~{StyMKr4y`P`( z6;x5oRL$(^-Mf4B>eW%|s&eQkBq#s?pex8rYXATY1OPxtNC?m?lY=s-&_8gt5-Jh^ zP?LcAXbunkpUP5RLj?f*7ytkg1_1ZaOOQPP@ZmtWJ4-pGa;{Tstb2|BG@z+N) zV4@MN2DkcI=%V9QS!rw@oH8D1aM1wpuP@G!|1w#t_z_{hZR}RGdmT=_vxnBjZpXds zE9*<*3=W71DTE5Cm%n(@@tlFv2Zv}Vn8TerSH4?dO@5DrSpXXXy&Xao3)Y#a{Sjfr z59(F}X<40WqK8)mj7r87;W6?m{%;isXzDAD{FcMv^Z?t4`XdNJqcS9~pz7Zb^WQsg zA%Q`b+LC7-z)7m5#ye9wE5)d20Pod0g^~Nny#B^uF`yfJQ`TVetg(qL`EzdbFhTWy zFV`e0$oTCVZ4=nTe1-_{zUxRi?jNL=dA*0Ul`zrbZabKK5Xfw5-V1xig$UfquQQm?e-o}rVl{g;3z1wu%))clrNbRg5Fl<raO%XR6)%Lq^fxg4VG6)e!32_45m91D`8}kob!L$vRKJ%dL!*RwVKN_INPT zxsJ2o^Sv6{Tc-Yp$TLc2&;PSu>g@&J1mm6EiVr6X;gsFoKcIh>;`5Q| z|2-%A7~;v+-6e17+z2w7Icempif&vvbaFbPg%A&VwzTI*Ie*n!>ZOAeA-!&wxnoo| zx-HjjmWKxoQp9aH-h#R}(W`Qv=k+j{x;Rv)O7 z#Q$@zZVyD#iQQ?|Aha(r{z+5Tk@0!OyguxIViT^x+@>@69Ey zQ!%a~7{U=4mA%k2c00ePHnXoiJr%HDLb`@u@B^)`E{n)kp&}Bxv4udjb*dM-Ya)>Z zOo+4=Dpm8ESOYTMsHQt0PQ|fVO1w#c9TdWmH(*+@xs29{`1Pc7^=}Nf?ao~09AvJR@Jr@Ml%?>@M1ffAYWe7#Npl(HN4O$+_D%F>StcEzSKIrw72B7xlC? zHfk`=E0y+S102n+RVSf4mj68qr>d-MO6nk!yPvX~pGy-OGS0-e+lZsY3i<}IIeZEaxN%i87^6BbyrzeM-qC;0mZ>#m5}^gNaRvV!UxT$40DU48K8*M;1>G zIs|Bp@`|H{ezZO%tJV6dsZsgiiC@h43o9s6a*N!%DZiJ$^{7mu!3vwK{nF@_mgEr- z+q-hUS}oPN7Zv73aF|aOE9M7-zWn}A5Dj|z+p*?vZ%72Gvu`}cfBQGq;=aIds9Z1- zLibDQ+o!OrB*Sh=ll_dAtGU{lH5{S+wJ}%XY!AqL#-p%J#d3q2E*3?_1*1Smn`01+a_3j`%f~LQIqL#3A$g=< zk8fvV`^1n#ICf4$;E(erI=eWkIpT(J6)h3fKJMi@uFaEIW6(>sa)#(aYPt#06`J{= z`;ZuI_U?eo2F#B%6NqpJ$^ga@_>s(bAwSNZbJ5Unrr--;yEQn{ILETtCE}YC7sXWSlWj(bG)rp<&YVsGk52bO$a3f zsXI!sZQbdIXYwL() z+^@}%(C!A;(Up;mP((+j0fq$H&4Syi9IVwDJ#ksy0_Lb3S-=>qnLKiw z!}H&`FfY39v@cj;XHqUIaYK!(E}`FfMcxfEYRecnkEq)51|mGG9=N!e z(l*e=hONM`@zyNPY0Y$eFk_Lj1cf#-_J;V_uIm6R`F>6*LSJydRt8IG@N4u#9l5Qu z>`&`uAl72>U2=LrQd)MM@8XEQ&K1_BrM%i>gVcq$^doegF@ae6dk0r?jWZ~y;_V_C z1pN;PO*#diJxLN|{;6yuxJJ3??@2KuNf4Pr!NPC2HI~(Iiu#c^wV1H7E900U%o&4Q zWhsMAA~<43SRg(B^6$<|V?5SJjZ^RC(Es7dZ9C}gy2M-a1%B4YT00y6(M<7<8C8Nv z?J{G5k9!8QN49&u^Ll{NmY!SX@Poy_tii9mxEMbd8e%yFu;-KH{2WLQKR2#nM|UYI z3&GfhgstO3s6*D)NbR4*qb0Ehr)fm->G#Nix|zqHLu*`)*>Rc=dfiKuVREyXB~h;J zd}Q}=bBT$_79fug)_Ou+I?F$EGi$)07h8uT#t^-mF!UD5S8K5oark|%L=*@(8$#jd zB|Rg&Sv(mITmMG;Oypm|zC!ay4f=8Nf;J12u5EjyR7?09xgK0C@KiS1=F)2y6Xne) zf6`5{2Jz3#`dZAMyU+qZG%@1%G0)zVa~!gw`-NyErOJjO-T3yg+A19((Eu09P**dN z)qF`%IKh}=0~+P`MOsR!ix5Fh9Y=0rkZ&3!AsnKScZXdlJE-947-z5C)cudGJC34; z^byY}l2?0b7h8F*qe)yKWPvfc-bnHpF_%1=kL+02z^P|Z%^TdXck)=9g>)CzU>a6x zW()}?6TkNkES|kSjK)DhKzA5!S#M$NN~eeRc(#pljj7cj;Y>#B%MR<7i*;ScTj&z` zB!(+zg1bMaI#9CEGWgAj{n4BV5^Zb{^?40x@`IHzD2 zI*%^Aa4Ni{TX4l!U?uaX3-`su{B&AS5$khSmZF~@V$ft*hg@zovI`5zk~Tr?R{Cp9 zv`22BE$Ea+nJ<5bLiL`>uYqgjQIWdolCc7ao!2w0jthvaW{0px6A=tj1R^L8-G8BO zp`k&t?0EAELchJhn!QI5`#46393XZ?kq}@L6>cp)5K z$)4?XCp^Hi?P*=ZNF(3PTNkCn5JFg4VKWh+H`rcz{-o{qFW*<_JU4Osm2s-Nf*}y8 z`;nXCg(HdSWu|=MMt4`p6!)Hh1NH~suWDQ{B^F|5#N`toa~RWT_SR?v^3`eV=xcF?Vh!e{T?1?oR8LB#PtxdW9_r)O z7pkFEK5}Cay&uj$smtS*Ao+A~ zwipzSj{)p`{B`-T1_Y?Sd`f>{HmY?X=q?{3^OIr-gGu z>JM~3+ZWvz7k;`r z$GoJf2)A=aGgMzHE^;T`7=gC&K_DprOOJeHqvG#DCC4W9kA{Z8mgV(k2knPH3E#xw zdVDQxo+yC$(dLgZgt0q`0w%h;JyMr=kgB*ms;)$$tk#oq`DbniaVa?fUQV4C`?LO(6{HS~Oy``?o6U=g>Y2RMwI*~M?PPk!w_CM!*K^te0d7DRM zag~WbgGX=nFl@(6U$h|!UQ8|8sbCh9>^Yc3yh^MyMx^{~_D+6yYj1f0B+26t*en+r zUJ6bmLZ<_@)#pLu)Z#8nkM%lUPV!w;K2wGUP)bU93%vNO&zKN%E6jwij&IzWA4}4S zFyRq#cb<4(W7ZwkK90;J7Nl}BNRTKJ+l~hkSZ$&tUDh*)IAZ`tK&rnE+G4D*KHY^A z#a0CJMwI_bGr^k+g4;mnz<0P|seTF@AK(^H&UXw~?e3{5xN2l4Yn8|E5geIxhIB2Up7tjos>O$}Ue?{2{q;s}A%wT-3ztlqyJfwl+) zf{p#Q?OKV~rsZ)GxRnt(H>6-9B05=?NJHcwsmR9tt(v$xOr*xVMys;=U;37pmiQKY zoysa$%gBl{4TuAEG9+S;ASzW8jOz5p^Z4Z-TLf3`DeY@Q5{ZqA8xm`quTX*Vc^Oh- zFtf7(VW^uqi9&z(ZG4l+W$T>u2#!+y&U?h&s>;k<)>U}JMBLm>D?i1vx^Ted{lRb2>)N-u9gj6F$s{%F$c_>Y+__c>y@V@H|a z!xyGhG2ngCsDSE>knNh$a-+95#|gV%AL~nQ3QQu17Q?f`16fW1xJ^Vl;XI{q2wYUL zKGBgT7+_raA*#M8ANG~;-70Td^P&;#hP3@oNFv2I**ko*Ia@xt--JOn_(xS`<_$Y) zW{%l|lk2l14Z5DU$zG-5c$}kI@t~Xov(M#vPe0V}78L^UhFew@ZB~rFw-e?nw{Q2j{KmfE5-8X0;N{LRw20~H;9_2!q3!6g{Mii!&ldAp5*{pkeDa6@0xkAhxWd1vyT+?N*A zqg{4zX1cC0 z`kY31yyJ*PaY((gf)&4S=|d*`;>`zn0(f{*8_9j)3RY)s6~wv`bz}_k(r4DK3Xk_w z4uvfQTLhOLErP{195CqTOf0sFBngA2k;DhCp}|ctVuN1&77RP7$^6vu2JayKoka?b zVRbk8$-lNA>R*iP|Hb3zCgduU$rXG}JeSc!%lND12Ln0$rj69=XDO|zsnG6ndR$KE zG^T`i*4D^&M~H-O|M&$RW&MoRL7(oMm`2MRxwm#>{F8)Eot|i&1#7|F++a$Us#H@ZGVb0M?I%4%aU346Ok_x|A>%=2&<<3rr` zXtKzyH`^gWmUHPTUNGg zxTe|%V@6BX+Twn^GPEK!c%=NRZR08WEWBC2DV1;LKDZvooC_C|mkeX)W%R<~KGRiC zo9>d4`AoSU*D3eOX_!pluZw}gNgSaZoz*_>{L33at zQHMrZ=e1-4+&hh>SZ%VeQ)@(7@c9@=O+|O2!s3Yzjkyt+Fj8#JW_dp?br2afw+vRg zJB#4A@6<+3fA$r~pwLq9VktsA|EXL)_&#J18{S7-BUzLtTL~YIgJ!%dcAncGXPO7_J=g(9|xz@VT#{Lae%)iIs(Q8{*?YXLrpmj zn$Ovui~Tyom~CgeH}l-q$h)hSA?(=JeV_^dz@QBZ*Usivf!z`S<) z_$EE{EL)hq>vPZgg^VE^-dTD~2m&?u(2)|aQ>3iUT4vf`>VsVjnrL&fQ-hLcy{8-J zd|!qh5Lfho1K}f;J8Fm{_Qr9|XI~;qIu>e#l_O)49&Vyb77dZCh;MN}ZH&l^&Rnnt z*xo4XpG^RjsXDaE42oKJ;lROpq6Zl7y24=L+&n2E=?!n2IYpai%czdmU%cnlO1( zwY2%`y*anDL0=hvxdPz)h)XgkuXs5zaFA4ZYS^7s$@<}}2~C>tJ=cy8ZQ+xDQrfP} zBmU1HqqT~echNAH=LtHkpVPPP2drU@zHec6t_fW1D2`$?4BP@tD)(Ly1C+S4_|R`z z8+h~V(*xtZQtv#|?-J@tC3+H6pF^}h{d0SHHTXU^hI&#kNqNyPEv#aK?4hw?YM%VN z*jwiXb`oCkB0}v?uG*Y!TW|IVT)hjN2_ZLcdOuWWo|eyev@tF{=H%?NsQz(q6Gn2s zSSQ$v^uM<~hvt`r>;*BR;ie!iy7~@$2(P_JuQa30LcVx+I+^kZ{LsMd7+x`x^7VEo z7YWTJAJMuOXMI+rq$m4B7CJj!_a-e}=5*r@yWJt;)cteTT z!~aUvTbeaf-9Ggo>8xi%;%0}pBaIb}jpe;wA3of_6`Z zaE`ik>m5iNrjSM$Ck=`|=7~M%&XRiyV|UZU0bF&qVUBr@)-E@2Lw!t6;E@ zURNb3-5eEck3oNv^MO7{Z*2GJzn&k?t>GtV6|Fs@YJ{=zJ%sJg(}I`585poBX(Eub z)#kp`kRZf?)>#O9M5^a%zmfSoqjgpNKt#Ob%y6y#v0bU4N8&Kjj?F340g2;V>W244 z$>)zGq_MQ9_*oGEx#bF6Z=7%7yM}rybDCKvUjOu-2YyaDtj#xS{2mgV`42nrs4Hjj z&qE;R5$enU6lTB@S{;(yiiq!je4%<)E8N-F>*kX1KtZ@=MDrTcE$iV{9}6g`&P6;`1FW(#oP_b{n3y^ry}Ho^Rp`$2hdk<n!eO)hDxxGycL^<6?&)iuNQ)(tUED8mELlFqhnE@oFAMs7OFZHHT zOh`||4@ZxwV}f_i6wsVw_9+{p4-xpUA~CFiVPo_YIdcOkGsT%R5Usg7v+ z;z1f~p{()g=*`Y`%FS4dkq0LV;WG+g5VhYb>V4i6zBGY*9)Vz*y&E3=X)vkhno|%} z@sTd0Gp}h|+pS6*p4x#Euex)r+f9JsB1=PRz0#<$yo9Ke*)dCVKJC1w)|&GDGmsxrPVyqA9BYlE{x=cWTT$2&kl*syg=CP$28n6W z-Kx9- zFgumW8a)yLM$}FFRS6yvfl?{?PHVGog14?ks z%Z%cnxCz{(ybQHqF@ttu0ZhLUY&aD+yf_lZdOs%c{a*PWtIZ=j(c|$`dJ-M4sIn7umM?#52zf{AWRGmTR1>^Y_awh?dh^h8!&1} z98m2ht%KsL`>EB2D;L<}Ghou;HTrbF8mI5fv|O_rdzy9KI$0Jl-XJ=gTf+!bmfUpOM#M#X}Xh#^n;DRgaI9hEJ>!TZ?5H$0+=uE_h3?YuZwiKJDy+WevI`v!% z?>&Wb9qSMN?-nUN0S25mCGAMv6tjYn!SJfr9~p$ldD$wRF*{iMHu`PejHqr33vw_} zaThG+8NOXFgS_mFvL{*0Q?n{&F!jS+Mc~XdUM>6gLl65AkDfuxIeke_fWjG9Dzr^o%G3a$MBz>_1 zOxkqXy{~H1nnc&5YPx3GEx!b9pFg~wPPzSgh$!;c%#}!&3srWZOoDJxPlbWfQC!+x z?C%CA>!o~C)#$h7ZoWXKqxB({HzG{`}zl=9mLYN=_uP z3q3Ba+iubF+33&K5D*5t;n-;n{d6HwB-d(jbUS27nZD#6-3>ExLILu$x~p(duw8qC356U+ii*>)(O?|xS&xNd6fxGv(P z_(5Bkl5I3oEKP?VFLWa&dm$HSMA%4x1sfqZFOb(gtPezcHre{t_8<6<>3))8s<%o` z$FO+zis3>l;bhGC6ZmgWhu3v>H@y|yrf-l3+t1*_i!s3 zx>dx#laN)+lr1F*!K~*pFfIa{T4FW}CraH( z8Z-IC3C`!zk|nVO-We&zht=u^2E@qU0^k@3syoRTSH!z@XRxAK$NW8@Gzn(xh5$Q7 z`TFO~oxg>8h(tcI!EHZi3e%A$DrlkY9(L@DN%2P!D=c1&ji1y2KCv!rPGAoQyZHu< zY5m`43(QVdJPYx;Md~1>-o|aS{olzI%J_P41=agMS8Ize405pKw($V4SS}ke6~`YN zD{Zoc^=^*{DCjlf-QtFoCG%)WxxUw=oVb9}2E{yVwLh$FtLWCV<2eqvD#D|0g*j$g z+?+zsMyXBQd+gE=iPSl#QZXQPmXWE-D~v0=SHR z-V}Kvlg?-w8kQzkCUZhGBR9x5r^ktYA@)D?kAJ#pLtCVnR}wSG`@J&dN|ez=ggEd8 zR3B=OjLQyc&dm^vtd^`hruxo9^++IYsTzQDS@*;4f_?Tmct(@F9r!$DwZi+E{}7q` z-_PhtkmV5fdRwG~oVHB%3(t~d!BBl57UBf8Y%=Wn4CbE*B7a@&=BxF1jGR)A(1-yn zfe6U`3K}WyBN`Pfo^3#Y0Y1Xx3dP$FbJ@i&+O(OG;R^L6P&*jORZgTIB@j31$QVAG zj9G8+7Hfw%l_Wn|X(En>|6E!uu#h<9&+Y#Uya7L6Em$$;A!qNz_sIM4F}YKknfgld^XrGIgkC`*e&Jq4Tj+lR@09&7HH8yuJwl*CC> zymfrw?3073_cg(>HR%nltc&hIGcuT*ibpm3j1`3&R{6tsR;z^^uFonlKf^(OD_40! zkKe_Y)q=<7aXWSZ+0wMN8+i=IV95vy>SpN;77_Ka>y;hy;jZ5i*>hRTM@ALGM$jK(Ksf zk~k0}|7r>A&m6284wehNH)5(Ni;N{>HDJ@7Gi#Hfb;nxdCi9v3!f5@N3K#_{!LsSkAh^tNyh>2XwB2m*w&nbmK5Z*Ic z+jHQ`tAb)Te_3Ac1A-`v&|bez#+A+_K*5lhY%aj!h;|%4Z4`yJ!5#Yqy0w{%jTTCh zDUUE;9?gD& z(1No5=%M3?jz!!aUcdI9U93(ieDimIWf+uiX)M50i*c-{Z*2RLKCWZih)$9wWq0%r zdragC;UecGm29UUG*p5IRm`!*z4-@Z_L1NUU4ON1lfcBAsO?xQ`KVX5IL{6ER&P?- zbjFFfh>Qief!>lS0A6F|`Jkd*M%FGCmK?EK_EwcyOWsGEjU1yzEGQ#kcTv$2_=(SP zZP8LT-quV4q{RNSn-=A|VNHJdA=|`ij)zEjcd0P|=^RTxHiNvQoe(N0+X!nVDpwPi zJvREFAG@55f7qPj8BVWt?$06I_u`I^YYeuk>MYE#C`TEHNzx+hGe<1R$9Ra2uRMOX z`s>4t3hy`(PXOel5$Fh`eN?!u0V81NfM_+-V~Xn!ZL4f;rCM(JcoziPQhfOc8JqZqg9S5trM!o5TNC>bBY`^#!%tRw z=!1ZOzjs~4;`S|htuZ`G<+b<{;HGvC6ABp3dJ)VU2?fcmS`kT4DzdPAZdF09HQbC% z808aAnqrvrd^I%o3Hd!NlF(n@o>~RBMNO#A1X?RuCH*4-lz_MJ8=yqZTkyg`jw2ap zNcm6_XfY zRt(jr$T2=3le^3+}`hQt(AT4n$$_8&zjE zxAA5i@2F04;%~Swm)f!ZVV&Yc*8Bm&sWR=Al_3#iZV9LRWIDtc?FigTQpb<2bHlt0LBfQiJGQ@$&-oKFS8_^3V;zHPThwc_$+ z=B1e6lnwi4_SW)r#ysewlD@gV{fwRhxfpq@(ucQs zH|mP(qh5!;bpF#*hc%D}a%?Dw%qL4W?CV~~zh#!94}1|r92uvL)f~J7^3fDoj2K}r zy%|=Ol@T#w?#Hh3B~=N!o4YC*L?P?2m*3C=uQ@{}EveU-+1#yN`axnX$Wg(0 zVZWj3Z{6ixzqBUS)Kcl;W~qg_qkfWy9cvRBvLn>+`=L}Kh41V_?VkhN^#WA!KSNca zLedV0DLS6g-?vgQYXvzL2ZSC%5Qc#&(p6$09Pu(sDtAmux1cg9W72(C@j@NS0S(Ho zwQ@ z--wCjo}v&*;>~v)+{?eR%{-Euey4Y_Ok^jChW0c0qPPek9l#pGDT>3@!N})A-B(Fz z;vgTfh|SYGVd->`Fm2o}V$>N`Qs*>O7G>7#xNiC9t&4^G0z&bz_$r(7fq9V&rxW8T zeV+X3aa=-Sigq;&40?h5Pdxx*eHiMj}3dxNBHAC2F&6qzfL{gs^0S{fIy+#bp@T`_#`b?q~eS>{h z=k!wE^W()bF><)sQ|FjJ_``B>Q_nq>=|>0tssN+{{!O{BV>2hAcU8*mTET|HJ2JnC z94(&js|N8`Va&2UWVvWosy<(blXk{L)m>c{l#Mc#o&UoyV8q%Yw0}=V8fHrWX@p&# zRm(v1ru%fDnB9i2UyTYXMb*bV1s#4IK69L8h*XafbuuDAnU2ROUf7Ij?9@ZcpNCRi zrEH4_BxC&IU`Lpqnw(L_T~@!w6x<@DF^WcRij%-WUGca=p* z;^rT~WTs~${zWPq`96k*4}*r8ue!Zh&SqKxT`Wv&vxNDZ`iG~#)<68k5HR2u{=p=o z=KrWu3A9ER=b`eCQ81?Dt0;+@m&x1vb0dqT%RuDaml=bvfR+ExO5l}Kn(rqRNHOA0 zV(Rkh>zu3ma-wQOrgM6Qa^Z48_3VYXwX~8g=3IpqVE|PtNig}rh*t(4np{I6{B8gm zycQYv67j(72kf9%F65UFTA0Td@D=v0vRcvKc$Hk0IQX~8#LL#1x%9-T3D&9C9+x7D z(jQCCn$b5jPR63kWQD4J0s|8I3D~?+a0MJKQJ&WnN(G;UW20|;zOqin4RO7*hHb;q zEDcq>t*p6?ugtoK9~q3Ix;Kdr+(kpUHlJCC>epR#EH`4&wCU&?pT&2IL8_ODw5}}FiUy`F3Eb+OS!{%(SDLDI z=~u3;_eFD}HI)-!Gm^GGKA`vUw_^pmSVFP1g(FWd?c_(=!nV39)I+m{X7n&_=ZbR{ zv@I%AsPsPt@n$lxaM0exFha#$5h|;LoQ`vcc@XMRLOYsIq%-{HL~5++wF&)S-qr8U z;KNa`!=_uSAnt_-(~)Z*ZaY*f7+gycD2IRC!Fn{suw2Mam)aljOMfE8?evpe@*oaw!xYFzEir*onxF`#)u zp%52J-b;y~7W4*hJ7@e}Nb_o+-&a_y0y&_R|iU9m8(fjj+uj z4#1+PyN|ToeE*XG$?gENc$bpMJaQI9x=LQhP%1i@FX$K=>crQU1Wyl8Lii%j!abS} zi8+vlt#_kwh1KixG@!EcJ3_%w{us!CFw%ERVWqUo_#v*%l!2{f3 zgP_naK``yQ6iW6ESSCjm_T@?y{iIz88?xh7GAjd0=;wo*^J0AIOYby#?p3Ivyx5|K0RO?&cdyA1JQV4FK{Q9MIwhMc= zo<#J~M_IfPX|Yj;drWq{jd(=TV{^sB##V+?PAGNO@3FE1Jq_1m3!Wpc$7}K>j>U{C zH^497Ia_2kUlzr#Bn5#hIFfjqLBbEy#{*HyY8A`*AF)<}#MP=d53NqcK(RYp2_U0CF<}H)n+y@UhFz|27+CmtQcn~8$T0L3 zkv(KukD;Qdg-P{TAu^we3Vce_$clBJ>SryWEkPY-^1gTc#;Oh}&iisbedjOfxU`%v zEo+l);`46-|HfkG%lvon22)V9A|_AU@j@3dg84-z=F<$t*QYB9hEAHM#wg4fUkd2J z)i!=eC!Tmq-_J%;?%O&yV>W3qSB{!&USXEqa(D}Zi&*Is4>_n?c#{f3@znCyK1Ok#QH;DUH0$ay| zXSS66yKr{b?{-1+MHN999Ov)1?ht(-<;6U7vN zim$S{2XI68hO{?#>Is!=Af7;^dzAdewA~j`it-l_c%}uuYtD+57Q{FqxDcjG7Y}=^FdA>IAi7PO-TypTlZw4-{0=XA^VDqJovDS#*=gl-Rl65d z>avB`g4vB>Y2>I$rhM3>oiyMgxG({GMJVLMhHduTV(Ys+qh*ECnkFkGJ-G*0ozFM( z==c5{{UuQxLpFVLG$*=(98+%*+qK#qRoN(`QoCfx#i=AS*Y!GAy@>6ncWA=hVJL|Y z9^|7Y{@0B7OSUIF-$8rC@;YRB787pRMICE1bF}OoJgQy8Ra)m4FKD-ocR4D1R^FCg zB8YKTz2OW$U=il_{lro786_U41qkn)(W9U;xDVq!ar62zh2MK4)UCCi0C!{kNN%%~FKNS_EW0Rl;h5^f454XT%!qSr<^s7{E5_ILg2$>4 zZJqyOKABKf@`XlDxL1?c-@X|kt9c$!KD5Bfxm>(kldnnQlV&kG8OxEod6i^lP0B7o z;{?LDX9#wADqQPNQl~({+4{DpxHcT>4$@iWs(Tt6*-re?(tnDvfkx&jJXj_q`zNwo zZVn`t-&Ll>^azvaop*xMdVKF)wQ02pMp$wi*{^Fdl^>kliT-WY(|;B7R3bAh?H`K4$Izrh zBB%6fKWDgLFDmfN*_C%VRPEvT3AL5B$Cb_iANIuN132I$1E=g?r-#Uijuh&&I){s=B~S`vyu zPPaSnJMW-_bIre_!gRFwoNT~(5UI2kbDfa={`!8(EeeJy&I!sW0Toy zc6&E1O{Mp^#Qt%0e=ynoX!jpptaj?i{jTz%0=%G{Nm&vwsVebbi$Mb>QKnqIPErjG z$wg~dovU5q)r{8$J<$!7F5;1L6=nqf<6}O-TUW5AAR)N-sd8I8GhOI742-b@8a#Qo z4IQs@&G~=b1dNywM5wG?EbgZE9YVaNEdtTPRQ#ZJeD;;t^oA*j$&=$ZU2q^cWh#C0 zz)`;@DQab~c0pG+;|h_epb1c(T<#6KOHnQ-rmdHWPRCe--FEgiO@}Rp;9p6rNEWRE`CC%|b?U1q z=`lXseRT)FOa8409|ZVOccrEJ$ha7AvNsg$a^ zRN#V7eQ)x%%(R!_c2^kwI*H=6(C`a#8R{^DO^;n`$?5+I`nIR5yejm$ekGk6!#$P? zt{e=5ETPj|+Fa8Mb}Kw%59XC zZ{)`}O3$CGMqX1ZtwutuV@4rk`}B@s-FxBgdHZzOGtYgK$9-s)Vvy)c%%1F0Q)qU) z+C#E9y1gX$n6l8)mAAAs0xekSz!PpB&E~?%ai+4^kltnn(P74r?+fqVA&ZJq5|X3D zEqB~UxH23BkE6tsU7kQ26|8H&Z@6>ZVjuR6q{3J_@V_nF(rDn9ifxzfEhbi|c^9>Z zEUej67I@cVnqkGlLVY35puiE$ICk22plCI2)!?s34ZV$l9H%QgStlF3UzDcoQpJH9!d}ACizC&{E|O&0lqzK2 zj$+m+h5mG=;`DMomM4S=CB<>fxbG!-DeP|3ay_09UAbvAe+YdRrQ8C3!w`@e^(^=} z9__`+L-sd+*zH9{sf(fsPEczOcXV18=8(r$ey_;2{&fu&@M~Q^r4`DYr-shOWUdD) zF{Jl$*TjRvt8gJQn(U^0v9yEq-pi% ziOqq#1Gxcl3(?`Xfw)A1i(2qLyj% zqseZ(9vr{_%9TSTXAv10^w}va1&a5$5Y8K~2D+Zk=h&O9OK9oo=y2IC!;z$N3T$U;B zF_qMd?Bf6C1`-CIoQ1Z!Z=4z$tlgG9*~wx>+L41@Q=!A?YhziO1{3wO0bQ1zFB-d3 zB*!opH*ynVYZN3|AMDsT%ZNGtq^u1@p|1r9qlpF@H`$Ch9AUU=eB1h4h$n;kG){`1 zgB~`xxI%X>Gu(pB+`90yQ92g4*fXq^LGpJ$6h~&9k|P$!sR`qM%+ih90TXevu07lG~O8h?MHpL9PekrQ`=jC{sI-^j9!rRulRdhRyphh=l-?=1hR*c9 zQ~gRYLI*DipgSzY?+K7Hd6QoG2C%(jmfB%Sl5|?9_4ObnUv%F31r0ZDwr#!LWUE_= zF;>H>CMf%q>FQm0Yn3;=q-|`uzIiAf6}i6_lv^*^VD3fy^nc!O307N38jOH~2pEOroci}a8Y}FfVp~Dmp7)8VYfJ8)knudg)n@cN`E8sahS(Rx z*j8`a<70`pTe)EUfDKxZ5ne}2udV{cvRMi`RadEM$M);Z)hUyoxT33B-nq}7ad@A_ zeFPSjDp)fqE3(Ng*m?KP`Dv#+o4M~_Wt*Dy*d zGENFCB=KH*&j=9u!kT4X0ivxZG%X@8G$U-kq&4sDr6M&C`@z?gR6kXK<&L) zUE*G$=1Uj88JXm-*Qc^woHr4fo4W%w7_!~`3-=E`eAfH0tdJ!#k6`=a3>{>PT@Y_P z_zsO{WcEm7sgVZ;vqqP3m328hz9<|VH(hi?wWsM4Aq8B!yT(8JBTrenI$~`O(_S9; z@%(KM{#o9iUvR3V@T&B(#36Ga>avAss>86n_c|uR@pN^C!6>}N_kOv(N5UL3ybpC46sUt26|Bm(mY zH?!e`f!Iz9_Zz>1O;-IIf>Wih%ePl`WyKc*ZsFwkLZR4*SiFc?wOk+7JpX?5s(ZQi zbS9rT?_6Mi+QT?XYTiqXJn)g9roB~hxC;H^#xA5?m_CaYF(oeMk z4QiTnVoda##fIWO{ro-{jQ2~sAFiDYw4oPiYCX_)e+Z4Qe2Og&tC!m5C-QhV9ToMt zTf=v(SL{0#-g4R=K4%uU2dXpIa@8F=*5Xqovv4WBZFb;p89?r<5wCOYpoK`dNEW=m z&b!8%^~Bt;@Kmm6lwiqCrUTR$?-C<+oc}sLRPz$G%}nJW>ec1EhKosj4faq?6T4*Z zZTdo=Mh^DY+K_(g7DlLEYJ{Q9d0BGr{?*7F|YGB{&$9H$bE$LzB+L z>x$Mwes;~6&dn2OwI2~TFNxPtJRe^;tk&z+Wqe>tpp#{=BjRZT!Bp_bh)+~JTW^XI z4W&n0A3x>qPBE8C-OduUw&L~c7eC_zz4EnIJjOqx9OT`(z?mEZJ@L^k$R4ju;2FLy z3){4$^+_mf zWM<_|`(5tRCa9Tu)20qRCc1rnvcOlZ1hAxwkyicX&!&a@uH%a;$-u336Fa;2*!cP( zas&dfSW{1mLM4!To{8y?Pxc1Qb#}?Av|Ua4#zCBeog~T>&7%WNvZIYWC|-%t1&zk8 zc3<{?>qvXo=K<|-`bXRlzA^B~=;AxCU5y+o(tqBs)(#Ny&~26N^pmHt=700U^Jo8p z3y&o(!sE8{f&Nf#irdsyfv67qpB7ctKI)lDvkEBgEH=d*T!FKE^|qK><>%6XrYj*9 zT{p9(v|)2c7P2uB+EvaeHc>P0AxGQO@?nTduV^ORp;^PAU0`hQxErNo+^w`O%bThtJMWO?Lk}S&Pf-5 zR^c`|rVS7iaB_9V4e$JOaap6iog({J2{2YiRPRu$Jtf#45C~{4Q3Ou8$)to4`=5NE z5Zw*%bQt3Kt?N<{En0@2aKjkC@QYJP!cfw)yeJ=w;Q>@Aai{h~kcTGv*g^~OV@1`O zm9?J^WC$o?8LM+aA;7fm?dGud?87Ol^<$w4GTeLH;$#`wW_YZo@i*|n$eNxdMTxk` zrW(-HM<{X>ydw!CD--p8$(9tc^P*8QYrFw?(RIo(=~cSD#qMuH!)Uhx`v z5$vq8ivEO<29k{jq+-Br zS4)X-jkd0^nmwDf&zo_;Hc^e(5IL|$qfV@$n2UQpGQ~)n!rBJ8{9Be_CCg*%uUtm; zsnq{8{3*~2*ygZ<2{;nUZf}5D)*hfG#$S=d}!L4GvCE>CrUKRE9{0urRH8RwxGS z4Rq+zwO2|eJ>Z+W+0z%1=}vsR89-fGBk*YWPxP9JAvH@|A;(ha4cet!-)I~$MkvYj z7n`N($m6Ff^1P4=s-6WtX$W6`;`X{@R;EV#0d5yJZ8`o2POLNYzq^b|=sO4XDrUj8 zRnzmJUys*b-zAve3PJ;K7$aE+Ik*E){($@_L=#APu z9XVY@zZIbI2LU_s0r7owvZ1DJM+smipna)@@J6+EApUd~D@YvCd$ewd-caYpU2}iq zgyJ~4AT@q19y!xaFMCWCw=maok>2e8_f-JJTqF%)1Z<#5JF&~=AdZHq4T7MtlaS?; z%G2C8aP*HG_{O?gd;VL&&asyc-02ZSn6sD#_H-TCL|NKN7QwgXd`8>gnMdg2PCJ8> zA_zdIO8A3$0D8<jxEPK1NAiMtXe>`mQ;} z<5TqKwHGIs3Wt{{RGpu4tbN#$kD^1gqPsf6Ui97@07_S3v0ZsqXmN>m9$@!0oO)pn zJpFc@xA-jEOrTKiFmA+1;@&D?b6dPKY}Ve7-H_#i%TuQ7T?~4$ym8}A_a2Sm$Sw4z zK93=afNfXilSUxh_UPAScs!OmYASctNc{-A`;~U?8pS2n1i~G@JFw3D}HK&Jk>Ot=u7UXpH0s4DMQC%j`1VD0fp-m`9?|7KINeEp#UYU@y+f!s4HV6 zCyTzOugwM{sjQ7+%5?Y4`qv!pkY@6JI)LS2eauQW5ozoz^d2qAHNglM;R_m7v-J`r zC=9wLi`l^X^wT-`b~CkpQPZDE zpLck&G&h{`r0GfUgrbitGf>O1@LT$d6yQGbeoKt)g?4YRsYQXbvtLR&3tO{~Iw>>3 zZ}9d1%HmaBI>%_a%00>G)+$efhaIoB_ znPW{=r*Vt9&|x!K9#|g3{wVHz6DZI^wQ|3C6Dy5U>*T3rXPI^so#5hG(!5yaVMqWa zgqV>#+nhYFvWysu_w|!w6B77~NmbD9B+*meqa{x5N+&&PS6Wf`i zc|s>iL6qw$GWE9h!f-Z3KI|E~4K~PJJUd*U>KA3%(s`fjet>QDyVbsuw?|%0UA)un zdain0NLw5Y=$W$GW5@s)aGdzZd)7f>RKnILBR{hcV~bFOx4&S|Hwz&|nTZT0^1t6a z>=T|lib!s*1q53S#JK@N!weVoFcu3lCAFcqHX}v!nqt8G=Jx0VuszWcb|L4hZQg~W z+Y({*zUc6Xq8&H88P$erK9Qm~g6{Yrn;ecuz{^^?h4Tw!@PvK;G5y;{BUV<6smo>0 z5*FJ7X#DwUU|FAaVC}Eus_%j?lVmo?Lf0oeNd~xFCD6R2$Yr$OGu%m~u0_w%OwJve zTnm8i60Hty>zLTsS z1VCM=K5XG(oH%Sx#C%v^)@GvBwybX zl*w5s$RVfu6TeMEmZ)?5w+Gq@g5e-&mOQA6y|o z9=*H9GAupcfn{TqKY#RQWSpnqJo_A9Wzp_)B=o~i^-x)VNB4Y~!_lHC4$T86PG$A? z&Ofio3Kezw2tok~D-&42(ykv*8o{&+>CyGjFV_{xURF`l6`az4uuNb|zGQ z=j9{02McR*_Y1SX5qHDHn9JLS!9bNJ;+FErsdF~6}zBa z?1c1a-ZpAzwkDH{B;Z#kHA<%CN>8GTamU~m=e5Yk=acXW{L0E;rsNmU(CU7Fyn03X=xSW_(moKbYCt)d~RuNhQlY`cDRFe(3ju zmk>6E0_ZGynRq}4-WYnwqIoY>?pFe^DOSZI=dY(TQI6#FgN5qQOE@qO!Sf1=w9bYC zb?Ef?`raQzsYo5)1v$~diP+|Ao6}o@dhu#^||&2uWkf+YA5u@H=#pisp=KSykNJB zxSJ!N$Hn+ZvF8c}aX7kpUa1QDN2{IecMYMTwTyT2f_VgR1^N(-zBwZYmk)klzB_=P zN?f>b5@T90ymz-rG@bQpTKFydSyF97-Hdes0bDOpstS}AVgxw^uYr4eW7Hw);QTg@ z3m3PuOG^h_^KZ@@H5-FHED9yRFO`*L-g829zgB;^#DAwM8}@R@kIztHwDF-jeI5^M zK#bryA?PpaZWn#%*V@08=%t}T?_H-pBHe&@jyzB*VkAv1;IZ4AR8_Z$;Zr@4%IISp za^#y45qm>-;}Y-||2N-y0?_o(nNQd(`c-&I)9)oOTO*KwKRk!4r_*|~I`0|v27oV2~;NvaxzmXceTTB0pv-F*Gy%+(jo$0=S@cI zlUpytB8$gpL<`Q!rv#)u^)O5v@z(=Eq@+5R(_OduD%m*4)g`nGAYB`bG0W0fJ(wI0N;=@ zZsh$}?L<-iOwesyv>s=9flzurlU{(wH35OcQj6j13Td>1-I8$(YypV&p;UF{2kj{c>rzp?)8 zCJa;p@_d~I(Z!u}WG>P}dowQ;Pqu9wYEty?aX~t-E_9Lou*RZKkn2K5Gxm6s^H(1i z%&mIasPf-l=HR(K^IzooGZ-t`FTpih1NE}}w~?i>%{d^ub(r)wd^^SNi|;W~(Eys0 z$fSjGcP7;@60$!;#?%3RY76P;*BET(V-P)fq7(E4Dw!)64sjeL%#rI|M{|K5({k;s z#~ilKQ1QPS33PJ<+Go!S>#L@(L90S|4J&vj8j2Sj2;S#C+;kEouLMbJf1}rTvB@Hi zCD*s#pAph!oIl!&!IW9f0HpwrJS{?;@|s;gymq<>Usj3sz*=y#S+V{uWvcioNETR& zM zOzt|M+)@9p1i!`tZnR_mNUl$&9#G@$MAl1Yp71Pp$DL=o zua;R1WnwNGxxcQHBKCX*rq)EH_$9xVlK~%CG2WWL8(xDtOE-V)*lO~Nc>V2`^`J`F zRKd^FsP*O)Q-%eFi+I#Yd_HjXG%lBJXmkEGQ9wqX`{SXmqFMtK8NrE{(T*I=q8x|L zOn+H0P#L>NRe-AWiuAUh5yZ;hYnCne?-Kby-<+Yn?fR%`R z@E*6dh-1O$*reSYW$mY{n{tawm{#OfQ_~7v@PhtmRHkN7YW4$KKkxOMCN7SjBk}zw z=c=Ezz81r7S^&XVd3#dVH=)^{{<%`LM6XYxL~Y*p4c?mjLQxNtpoo_>wcV}wqhtX6 zp(p1ZQ!?&kGuE9Xh7Cw>9)nnK-oe+;Kor5s$sck56f71rkp8fZE&3N#wO_~RLjWp{ zA^i|ZiEekyUP)$rqEl4d#2mjP^kgtHXIPsY6zOuGjnlr8iAfmHa~%h7u-+ z=^t79hicJ)=o-zNEgE7e(ZVp%G>wXEY2n~z3)@OUg)<1lXZ*L zkfODicFbTB(dr2B{7Sd|X79P?hf&ceKE`B<{Yl^!5LE(Uea1u`d8-}WP8R(eYNu1k zX3<{7xQ2=*gI&4<=*P2HF%SRo2Ii7M%|kx3?Snwc)=IG9DJ6Gl#lMRRS^fr~^27s& z(jrr74*`#y;v_yaJJ)eRjZbP|xU-03>DF^^43$za3ReYwm@@fd-y3aJj#Bhy!Mtbs{kaZO z&_Ov+i0Lq4j8L#!`h+5&}S^YGw+Q*x{~+K+xzo6`&}*Wz2bL3 z#g@!}cAT_dI%c@HHiHt%H1g6nos~%9!|RP>1AY>~9KY#gr|b3>Zr+Nsb0c5$P<8f> zC~9?Ttr~nr?2L;+2w%O>=Di;@`GS?>+%xX5n={In6U+ii#}ou-$9#);MLz(*ea(%* z*A>7X0jD)D0ay&rW`yI2wof$CoBqT2#fwY&anQ=+HO$;g;_p+l{rwi<6}`K+Kis$@ z`ut)=7eXIQwj!>3hFRIxn0e4vz^Cm+(ZfX3Gw)DQ~O0%D2hTUj=sT~MF1F0K- zmkllDUGlj%iBJhdwB=w7lC2qWlKaK-616&1@$6}$A(cy|OPDjdAuLc9K}T7JuPGEL zD5+Zqitx>d%6TPXfSO;`#l8$sj8-X)jIQA z5&P?&!E;c+*Nq(!xLsJPuHF)Y=H>Wlz^rJN3ad84Um@|#nruP1JBBo%_l<<(=wk#* z5Q}Un#uGV$X#%&1M%=4Yq!W+_;uVGT3l6Dmf>pYZe(oz}%?qgwVtMp_uxd3wCmf|m`m6cZnkwfebd44yoAY}R*WxGf z+zI1=vtW43_{NSa#_gXK)q{rqYj>pi1awa*Yk)U2kJ1iV`y~DJtZr(lO_LO$3R+eh z`MTF1Bmi67`{djmmFiO7Nw0O7JDJ2+Yr!H@Xqa0^Q@8p=s( z8vr({i{zVQWJeZ$D>!{6*CHL3^Pn^*|8zBPtJ_{cPo-p=sOY8ezHD}K#$+V`=#L0V#R_gkla+yk32GQijWn;_ zRF$?L7aDt5a63Det`JHX78JjDt~42Alob4aol1DdOnvM4T#W;#+n7o!s>gnjuXe~1 zOEl%3*1Z<*~iL~JED<_Ylh``3Cr@872=!JBkaH>|sT!`gP;;XT(0$lk63s+OXLe!Bt)=nNNq z1=vOOVQp?%qal(wr(k{XuO(R|0r^fiV}Z6WD@ms5-;2$I8PA>~j9Fq4UIpQkm6d^3 zc9X}*^MYM-T;N5|F@YLoM1$ML5C zvy5awH*thVZ-z+Cr#Ev+lUZ+=ZN&0=l#FWS-j3A&=~mgcV*Te*2P$Q_Pnl_fl7tTEcu(JD8x~`d=;s{+Sv~LS2GYAelJ|0Fba!y4MseDQ{?i02XOq@`< ze*b3A$3pD)xW|C-Z_qq=F#1vkRtoIM+D|c9J$~vVGm*yJG3}EajeH_Rh!p&Fdr2j? zKhu9yc$Pc+>YGS1{e^8%WqPDE1Wm3TtI9ZvA46Uy;i;gVF1UlT(O3?j&!EPboZh@T zQoc*xR+jyW!%nq^dI2ZeheAEO{OfO(PA+12QV#APqSFf4O6njNm1$Dw0Pn#2>tukL z=~U`kPlT$8|Ge~M{gIgf8+WUh-{?}vGqs`p&m!g8d*4X8qxYS!dr%Mi9vL49+oky* zpp@dvQp>XP8}r$qWiKy?@o5YSNELSKqV| z@iKnnVJ~eJ9m$Krl-jhZ>;;rI0QT7v>}B}Iay`VeM{2qt9a)lgPBD|Citvz*O!^vs^@0=zyhQ`_b}r4Zm#2y{4yB~Kf6nZ z(bOAnriZrs7w732p-EuQ@ShPTEM19C~@;qh|X;OkFM5ihx{5DFlJ@ zx{9Bb<1IloRHFDi(&;_S zc!VG3;I|%B5pAN?>oIw&H~y>C$;9>0e0k-pxp6xc36VE^Z~uK8#cm`+_*DzaWS;_t ze07)8czxMxnOV>->U;bcD^M8hLe864@RFmDEJhk0(j7qOx*wZ-3wu97%W-7H96d+0 zE>LC=JhL>OgBB0ET>dBjVIUO20xx zsiiqjB+LD?)cs`$W=HSei>Z?cK|Nj*d~9*`#3#yh4f_sR%e|Cg4hy^aBG1j}IxdYF z5Bi@KdQ)lLa+lo2ig&|(K8sud@_|IdYWfraEuQ`9q_VFw&8uNR}a(5$*&myt11eX|caRjUw=-P1q)B|44hcdbQjZ52 z+Fy6#|FIlG?f<3DKyqb#&oGkRiL<5;5d2R|%vw=)ZicqGRlSKL$w2c_k=!87)Rm5+ z+D%$WlPgR-ash0my%ykX=JBPK=FrTF*a(;Jh*1 zgYYQnuT(B!0X;m1juZL4aSIS#bAh77>=t{NZ>?pg$9X{7ZOa}QD1^39Je<7HvlrC7 z(P4`2xyJJWF80Pde=1oQ;*rf3Slg^kdiNHI4G_yg5AlNhOHi<(B2(C8rYTtQ@9x6 zg40~yn3F+|2jlcX=$<<&4Ex^Y>l3T1f<)Z+#4#iwM%b^%<<8GIjg>NI^M{X~9T#

ugs^E~pt_T{`p4#T_9~02P0OYU;xxlBhPL84v`!_8rCWBl9g$Ru3RX=pMBOWS zmK@#NR%Idmnu`13poV%vB2B+K-lb5bx`MeRpr25sM9j8jh8n}d=bp0_NXDrEk^n1W zuvgNQJv>p@r0H9F=lA8w$2Z~M*i-4LpFJ(TB!?f1iy7T5Qn{?iF>Yb>^x5c}gOE0f zfy_=kL^JA4Zp`4<*|O)0=2_yI<+hv8;DSWwnxPfE7NHxSCa^482Bm&eRZQfTv zugS&o0kt-8y!~@?wI?K~210s~T;lz4X6I-F*k0g2ouPO*lvzo*A?ZmTDy}yJ8V7y& zkc%d+^dRV4{FA1Zm_hyB%Zut9e4h{0EP`)^YMH^l{NbT{)$+sYS@jEq#vp3uQte!E zbu<5R_JHT(zqDc`xe7_!HXMJtmyE|rq_eD7eDremWVe*dHqqq3rboW#LeO09MuGKo4}I@2S&uE)bs3KHq2EV%kLqe*!vlV6EModzX|p;{v3*$ZIw7 zM|=?urC@6EudH)u_pAl;S-^m`-Yfz9186~ZNmkYS$el4D+=kfY&$ftPeUl57? z2_RKbLCq`vi#;}I*woVgriLs=%NL70%kjD)BABu0AbG%Sz2+}R#{CnJzbVTp?V{gn z&){>FV6u+@g64@!7f#P8BYUS6+5*NBTB(S>GpcXytnwmYR%TBBaX)15kZ|zVd>RTc=f`$qv^dDI3i0l2VT@PkL>0ImGMnA^QvbX_zSw43 zi&&nSiXbE|cyY)R!iUjy@n+*tzV!nPzEScE6^r!&U{s$F(KktHB$;=A)N=Lk{Svpp zk;Q$Gx~^d|=+(YjAeMJH!EDt`p8%qM3IsAxZn!Pso@mD!2)D;%cxQ{YUuTAPeOz5N z$)pc6R+eGxEc^)MK-kIX3A<4NkX>lZQG=m!KD{(jyV$84{0q-)RWF72NnRBi0qP`L zu?Sxazi+NUtC8!|T;BRtOAkw|Jzm|5nlWco7#x}p@>xu0I) z9&kCQ8vw7$(`dv6m>EQfWtu8N!Op0yFJ#>%xh`;w-2uFn#QINj0_9==zs75{MF+)@ z$Uck*q$FB(!B_++-KH!tsI{CXEgjY0>DJtqM)WdpdG&Pv1Q(ATlb)HozethqB*6YoilPx}AW4}(e1amx%Dyl&ap93Km8-|hue4^QE;x%p zkz6Bg^In4eL6*`f`5NdNOtiLu1~d=YK%xNJcg^+hui1Ts{2z@2WI~b2J?BvfKwF^l z_|Y+G+<*)xQ?(vSQFz^PZbwx}H3vJ2MY5dzjO4DldQZb;VxpzBD1s_Dh|JhNaAFV_ zc)Nn_M>t*p^ASj!r`EA^8Q?P|+7YI_GqKE%bUvQ+x-WmdQG*-@gDqD6i{R1hH@%O) z*%Hv~VTyKfSsD_Eywqk1$9tWQca)=6zysX;>CxUU;6tEpV`jT~46h;eX?N%u0yZ$l z>`uoh;zFt5+m@lh7Yf&=-OZEV?c!e9PsYkBe{vD&L%WU(&k8HLt|N}onxQFQ%}IFJ zc2g;h51ZPKF7ZRP@!|W$1xLPzh=+dqg0{&{niS}zt2maknbTB}xtNAdYs^KU42d4;41J}Te^t{n)6F}Ono%-lnL4WKce zHP>`aF+iSmR>n_zDXOzs0cMn#1^_Z#t3MKRE}vfzSb_l`tL89pmYKGf#4&zcN)D$8GyDKU`WN|fA zSZgW&)7~InduxWmb--(Zw!sJlJ-_vrIJ6p~`0=RMG*aES(EL|d$t}QDDg1jI)Mguh z;rOIM3!3CZt2s6h^1HWxh602e+^Fvn2V=y8CC9o;{`OSqd`xQQdGm<{;|G#DEI8Ao zUFIrSAP0X#M2bQPS5n}D3$#d#81xUd! zKrYE@sY&4TKBF`bH-7UTa;NFvxJCEhi8$|m1Zn|FvRB{#B;E`qTC5{mNbd8Abp4U< z0qb4f9hPm|S7O{H_U@mk41pm#qq(k&%`@vi+}I>EfNu^c`Eh|dPb(1Y^~yBTYbeH7 zqX#~<+44K8N6(G5vwwW<4+z>-C}6RLD|`hVn{Ghq#{A&OTB9Sla%=|jhTEdN6coeL z&Fl6?C9(5L>Gp;`YH8XBOa%`n|M#!+H#~?znkjm@s`6;>#YFTtL;(aEQ6b#`g^YYS z&kP?FpQ1VJ6QGjS-_wp-qedd`w1dsNe5Dx3oV-Rs{S*?P){|=b-?m!R5}_~{Bn{w> zBD=SMCX1P^wyO(w_e4p)VbC{r;ND+Ycb^{Zo?xx|{Q6^;;5TukNmyN!2*~t{IaQhh z0M7N1c8H%;n{Jv82sW0TiM>g{M>VUx@SOPK0cU}o`B2=t=D8`9%m|QBs$UWQJ5Ei{ zAuI#k z7LpG2sQ49RK%x_Vl|^%_f0aNTGK8((^2zIgxj59-*-_2dv_q73)Y4=i7p&|c0=mZg{h&+D%OocvLF7xJW6mj8M4M#+k2JNp8bG(G6M^(%Jkq~XRjtnRXWww-$lCVhhDpiK!JX@ z+5~zLW=bg|L6;gDt+3FitH$`1R1XH^nE;th>RhlR{GQ`Mn;(~;T?TnxK{VNRw3Kjy zQo(d{a4tU|DnbY(2+nx4E?Nay*UoH=UD@ofWjfOE;IX#g#V)+#V4b#Dfr z@#hp~vY;Q|=2ITK-Ps|6D-+}>$1oDZOLQ#{pScvvBFsUnos`jC*via4aC+b*fb|O# zxrH))MdIBQ`Xm#|9~RG&ODGWT^e1yb(vVz;aPL_%=2?F||LQj-6de#*uH#)$2L zdw(>HW$MESBCqwlQeIfe+CUzJVq=%mK_`oR!ND-$rusCdb!eJ8MCZ}(evnMen0qpp zs3Jcl$My`20jh)DyTID4J~FurVbl(=>GT$J!A5qX&y z#L6IuY~bWVJo&34a-Omj8h(O@@wWv4UqI!@3dz6ImdBO_A+0deqgR@Y8ii;lVCY2p zHfzTbx2Nv@U*dl!olOlP03q`)OsAMY5aQZV3Pe20?H4pFE}P8{$ijL0(SPx<-;kg4 z_a~7o`2_WP46@79=zK*UlnN&!RtxtAmS0#dA;4K7$A1asA1;DNI+x-Pl#Tc7Z~^qT z`+|qCYh>*z&Ex*%()_>ElS6@#{!1oMKa!HYV1{^3Ajm+Pbng#wz!>1`gluWFQ!f0W#{(p9a$%j|oMWXRN17(9W3AX83Rcadm?4y@3p3W>i>6uyQjU2WAOicfE=k0H*f$* NO-WnvlRPZy{{V?oRO|o% literal 0 HcmV?d00001 From 21c19956a0361b08ef6787c2e03c4120a3b84ccc Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Wed, 23 Jan 2019 14:15:19 -0500 Subject: [PATCH 24/65] Update ha_release for danfoss (#8249) --- source/_components/binary_sensor.danfoss_air.markdown | 4 ++-- source/_components/danfoss_air.markdown | 4 ++-- source/_components/sensor.danfoss_air.markdown | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_components/binary_sensor.danfoss_air.markdown b/source/_components/binary_sensor.danfoss_air.markdown index aff87052378..1c150fcb3c9 100644 --- a/source/_components/binary_sensor.danfoss_air.markdown +++ b/source/_components/binary_sensor.danfoss_air.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: danfoss_air.png ha_category: Binary Sensor -ha_release: "0.86" +ha_release: "0.87" ha_iot_class: "Local Polling" --- @@ -18,4 +18,4 @@ To get your Danfoss Air binary sensors working with Home Assistant, follow the i

The following binary sensor is supported. -* **Bypass active:** Indicator if heat recovery is currrently bypassed. +* **Bypass active:** Indicator if heat recovery is currrently bypassed. diff --git a/source/_components/danfoss_air.markdown b/source/_components/danfoss_air.markdown index 7bd2293221d..ac98c7dc0c1 100644 --- a/source/_components/danfoss_air.markdown +++ b/source/_components/danfoss_air.markdown @@ -8,8 +8,8 @@ comments: false sharing: true footer: true ha_category: Climate -ha_release: "0.86" -logo: danfoss_air.png +ha_release: "0.87" +logo: danfoss_air.png ha_iot_class: "Local Polling" --- diff --git a/source/_components/sensor.danfoss_air.markdown b/source/_components/sensor.danfoss_air.markdown index 5c4880213a5..dacffcc6e08 100644 --- a/source/_components/sensor.danfoss_air.markdown +++ b/source/_components/sensor.danfoss_air.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: danfoss_air.png ha_category: Sensor -ha_release: "0.86" +ha_release: "0.87" ha_iot_class: "Local Polling" --- @@ -17,9 +17,9 @@ ha_iot_class: "Local Polling" To get your Danfoss Air sensors working with Home Assistant, follow the instructions for the general [Danfoss Air component](/components/danfoss_air/).

-The following sensors are supported. +The following sensors are supported. * **Outdoor temperature:** Outdoor air temperature. * **Supply temperature:** Air temperature of the air supplied to the house. -* **Extract temperature:** Air temperature of the air extracted from the house. +* **Extract temperature:** Air temperature of the air extracted from the house. * **Exhaust temperature:** Exhausted air temperature. -* **Remaining filter lifetime:** Reamining filter lifetime measured in percent. +* **Remaining filter lifetime:** Reamining filter lifetime measured in percent. From edfc7450550f4764fd1a2769cea7a5e465ee0889 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 23 Jan 2019 21:12:50 +0100 Subject: [PATCH 25/65] Add docs for data parameter in alert component (#6968) * Add docs for data parameter in alert component * Fix docs based on feedback * Alter docs * Re-add suggestion * Update docs with proper data parameter * Add mention of templateable title --- source/_components/alert.markdown | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index a2e2ac89b3a..765d5c91312 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -58,6 +58,12 @@ entity_id: description: The ID of the entity to watch. required: true type: string +title: + description: > + A title to be used for the notification if the notifier supports it + with [template][template] support. + required: false + type: template state: description: The problem condition for the entity. required: false @@ -98,6 +104,10 @@ notifiers: description: "List of `notification` components to use for alerts." required: true type: list +data: + description: "Dictionary of extra parameters to send to the notifier." + required: false + type: list {% endconfiguration %} In this example, the garage door status (`input_boolean.garage_door`) is watched @@ -254,4 +264,31 @@ alert: The resulting title of the alert could be `Garage has been open for 30 min`. +### {% linkable_title Additional parameters for notifiers %} + +Some notifiers support more parameters (e.g., to set text color or action + buttons). These can be supplied via the `data` parameter: + +```yaml +# Example configuration.yaml entry +alert: + garage_door: + name: Garage is open + entity_id: input_boolean.garage_door + state: 'on' # Optional, 'on' is the default value + repeat: + - 15 + - 30 + - 60 + can_acknowledge: True # Optional, default is True + skip_first: True # Optional, false is the default + data: + inline_keyboard: + - 'Close garage:/close_garage, Acknowledge:/garage_acknowledge' + notifiers: + - frank_telegram +``` +This particular example relies on the `inline_keyboard` functionality of +Telegram, where the user is presented with buttons to execute certain actions. + [template]: /docs/configuration/templating/ From dedd3ca2f30f3de1b54f681ce2353b91cafbd1bf Mon Sep 17 00:00:00 2001 From: zewelor Date: Thu, 24 Jan 2019 17:47:59 +0100 Subject: [PATCH 26/65] Add info about new yeelight start_flow service (#8166) --- source/_components/light.yeelight.markdown | 63 +++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 2de5f6f171b..81be8302ab8 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -76,6 +76,30 @@ devices: description: "Yeelight model. Possible values are `mono1`, `color1`, `color2`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`. The setting is used to enable model specific features f.e. a particular color temperature range." required: false type: string +custom_effects: + description: List of custom effects to add. Check examples below. + required: false + type: array + keys: + name: + description: Name of effect. + required: true + type: string + flow_params: + description: Flow params for effect. + required: true + type: map + keys: + count: + description: The number of times to run this flow (0 to run forever). + required: false + type: integer + default: 0 + transitions: + description: List of transitions, for that effect, check [example](#custom-effects). + required: true + type: array + {% endconfiguration %} #### {% linkable_title Music mode %} @@ -122,9 +146,20 @@ Set an operation mode. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific yeelight. Else targets all. | +| `entity_id` | no | Only act on a specific lights. | | `mode` | no | Operation mode. Valid values are 'last', 'normal', 'rgb', 'hsv', 'color_flow', 'moonlight'. | + +### {% linkable_title Service `light.yeelight_start_flow` %} + +Start flow with specified transitions + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------------------------------------------| +| `entity_id` | no | Only act on a specific lights. | +| `count` | yes | The number of times to run this flow (0 to run forever). | +| `transitions` | no | Array of transitions. See [examples below](#custom-effects). | + ## {% linkable_title Examples %} In this section you find some real-life examples of how to use this light. @@ -158,3 +193,29 @@ light: 192.168.1.13: name: Front Door ``` + +### {% linkable_title Custom effects %} + +This example shows how you can add your custom effects in your configuration. + +Possible transitions are `RGBTransition`, `HSVTransition`, `TemperatureTransition`, `SleepTransition`. + + +More info about transitions and their expected parameters can be found in [python-yeelight documentation](https://yeelight.readthedocs.io/en/stable/flow.html). + + +```yaml +light: + - platform: yeelight + devices: + 192.168.1.25: + name: Living Room + custom_effects: + - name: 'Fire Flicker' + flow_params: + count: 0 + transitions: + - TemperatureTransition: [1900, 1000, 80] + - TemperatureTransition: [1900, 2000, 60] + - SleepTransition: [1000] +``` From 05d9731292858b79ada120c39bc1def098b615d4 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 25 Jan 2019 13:44:42 +0100 Subject: [PATCH 27/65] Add LIFX listen port advanced configuration (#8235) --- source/_components/lifx.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/lifx.markdown b/source/_components/lifx.markdown index 65cd60bfc75..44c60ee7f2d 100644 --- a/source/_components/lifx.markdown +++ b/source/_components/lifx.markdown @@ -118,6 +118,7 @@ There are some manual configuration options available. These are only needed wit lifx: light: - server: IP_ADDRESS + port: 56700 broadcast: IP_ADDRESS ``` @@ -126,6 +127,10 @@ server: description: Your server address. Will listen on all interfaces if omitted. required: false type: string +port: + description: The UDP port for discovery. Will listen on a random port if omitted. + required: false + type: port broadcast: description: The broadcast address for discovering lights. Can also set this to the IP address of a bulb to skip discovery. required: false From 770908731f2bd2a92fade37b3b5c12144c579252 Mon Sep 17 00:00:00 2001 From: Andrey Kupreychik Date: Fri, 25 Jan 2019 19:47:30 +0700 Subject: [PATCH 28/65] Added time throttle filter docs (#8245) --- source/_components/sensor.filter.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.filter.markdown b/source/_components/sensor.filter.markdown index 98f13fb6733..e916082f782 100644 --- a/source/_components/sensor.filter.markdown +++ b/source/_components/sensor.filter.markdown @@ -70,7 +70,7 @@ filters: type: list keys: filter: - description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier`, `range`, `throttle` and `time_simple_moving_average`. + description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier`, `range`, `throttle`, `time_throttle` and `time_simple_moving_average`. required: true type: string window_size: @@ -149,6 +149,14 @@ To adjust the rate you need to set the window_size. To throttle a sensor down to This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes. +### {% linkable_title Time Throttle %} + +The Time Throttle filter (`time_throttle`) will only update the state of the sensor for the first state in the window. This means the filter will skip all other values. + +To adjust the rate you need to set the window_size. To throttle a sensor down to 1 value per minute, the `window_size` should be set to 00:01. + +This filter is relevant when you have a sensor which produces states at a very high inconstant rate, which you might want to throttle down to some constant rate for storing or visualization purposes. + ### {% linkable_title Time Simple Moving Average %} The Time SMA filter (`time_simple_moving_average`) is based on the paper [Algorithms for Unevenly Spaced Time Series: Moving Averages and Other Rolling Operators](http://www.eckner.com/papers/Algorithms%20for%20Unevenly%20Spaced%20Time%20Series.pdf) by Andreas Eckner. From 09cc247d496902509b97c4f4aa8554fae9c5e05b Mon Sep 17 00:00:00 2001 From: jmtatsch Date: Fri, 25 Jan 2019 13:48:05 +0100 Subject: [PATCH 29/65] Add encoding parameter to mqtt automation (#8247) * Add encoding parameter to mqtt automation #20292 This is needed to trigger on received images/other byte payloads via mqtt because otherwise the decode fails. See also #16004 * Update trigger.markdown clarify --- source/_docs/automation/trigger.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 6a084964d8c..6b3868bf5b4 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -46,7 +46,7 @@ automation: ### {% linkable_title MQTT trigger %} -Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic. +Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic. The default payload encoding is 'utf-8'. For images and other byte payloads use `encoding: ''` to disable payload decoding completely. ```yaml automation: @@ -55,6 +55,7 @@ automation: topic: living_room/switch/ac # Optional payload: 'on' + encoding: 'utf-8' ``` ### {% linkable_title Numeric state trigger %} From e236935b2f9a8a941797eebdc8d2ecc9eb9dbfd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9deric=20Kinnaer?= Date: Sat, 26 Jan 2019 10:57:57 +0100 Subject: [PATCH 30/65] addon/git_pull: enhance with repeat_ignore, corrections, re-ordering (#8257) * addon/git_pull: enhance with repeat_ignore, corrections, re-ordering * addon/git_pull: restart_ignore: remove trailing slash requirement and some corrections --- source/_addons/git_pull.markdown | 37 ++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown index 3ae5e0f2927..fb7579a3900 100644 --- a/source/_addons/git_pull.markdown +++ b/source/_addons/git_pull.markdown @@ -13,12 +13,17 @@ Load and update configuration files for Home Assistant from a [Git](https://git- ```json { - "repository": "https://example.com/my_configs.git", - "auto_restart": false, "git_branch": "master", "git_command": "pull", "git_remote": "origin", "git_prune": "false", + "repository": "https://example.com/my_configs.git", + "auto_restart": false, + "restart_ignore": [ + "ui-lovelace.yaml", + ".gitignore", + "exampledirectory/" + ], "repeat": { "active": false, "interval": 300 @@ -38,22 +43,22 @@ Load and update configuration files for Home Assistant from a [Git](https://git- } ``` -- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your GitHub repository URL (see example configuration). The contents of the repository is assumed to be the root of Home Assistant `config/` folder. The configuration cannot be in a subdirectory, i.e., `configuration.yaml`, `groups.yaml`, etc. must be in the root of the repository. - **git_branch** (*Required*): Branch name of the Git repo. If left empty, the currently checked out branch will be updated. Leave this as 'master' if you are unsure. -- **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure. -- **git_prune** (*Required*): If set to true, the add-on will cleanup branches that are deleted on the remote repository, but still have cached entries on the local machine. Leave this as `false` if you are unsure. -- **git_command** (*Required*): Must be either `pull` or `reset`. Leave this as `pull` if you are unsure. - - * **pull**: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files. - * **reset**: Will execute `git reset --hard` and overwrite any local changes to tracked files and update from the remote repository. - +- **git_command** (*Required*): `pull`/`reset`: Command to run. Leave this as `pull` if you are unsure. +* **pull**: Incorporates changes from a remote repository into the current branch. Will preserve any local changes to tracked files. +* **reset**: Will execute `git reset --hard` and overwrite any local changes to tracked files and update from the remote repository. Use with caution.

- Using the `reset` option will overwrite changes to tracked files. Tracked files are those visible in the Github repository or those given by the output on this command: `git ls-tree -r master --name-only`. + Using the `reset` option will overwrite changes to tracked files. Tracked files are those visible in the git repository or those given by the output on this command: `git ls-tree -r master --name-only`.

- -- **auto_restart** (*Optional*): Restart Home Assistant when the configuration has changed (and is valid). -- **repeat/active** (*Optional*): Pull periodic for Git updates. -- **repeat/interval** (*Optional*): Pull all x seconds and look for changes. +- **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure. +- **git_prune** (*Required*): `true`/`false`: If set to true, the add-on will clean-up branches that are deleted on the remote repository, but still have cached entries on the local machine. Leave this as `false` if you are unsure. + +- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your repository URL (see example configuration). +- **auto_restart** (*Required*): `true`/`false`: Restart Home Assistant when the configuration has changed (and is valid). +- **restart_ignore** (*Optional*): When `auto_restart` is enabled, changes to these files will not make HA restart. Full directories to ignore can be specified. +- **repeat**: Poll the repository for updates periodically automatically. +* **active** (*Required*): `true`/`false`: Enable/disable automatic polling. +* **interval** (*Required*): The interval in seconds to poll the repo for if automatic polling is enabled. - **deployment_user** (*Optional*): Username to use when authenticating to a repository with a username and password. - **deployment_password** (*Optional*): Password to use when authenticating to a repository. Ignored if `deployment_user` is not set. - **deployment_key** (*Optional*): A private SSH key that will be used for communication during Git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: `@:`. @@ -63,7 +68,7 @@ Load and update configuration files for Home Assistant from a [Git](https://git- * **ecdsa** * **ed25519** * **rsa** - + The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using `rsa` protocol.

From 00d84bd50c6089d66cf463491f3f82d295cec393 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Sat, 26 Jan 2019 15:33:42 +0000 Subject: [PATCH 31/65] Utility meter (#8025) * add utility_meter * updates * :pencil2: Tweaks * spellcheck * made it into an embedded component * sensor -> component * bump version --- source/_components/utility_meter.markdown | 130 ++++++++++++++++++ .../images/supported_brands/energy_meter.png | Bin 0 -> 3045 bytes 2 files changed, 130 insertions(+) create mode 100644 source/_components/utility_meter.markdown create mode 100644 source/images/supported_brands/energy_meter.png diff --git a/source/_components/utility_meter.markdown b/source/_components/utility_meter.markdown new file mode 100644 index 00000000000..0007d552880 --- /dev/null +++ b/source/_components/utility_meter.markdown @@ -0,0 +1,130 @@ +--- +layout: page +title: "Utility Meter" +description: "Instructions on how to integrate the Utility Meter into Home Assistant." +date: 2019-01-02 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_release: 0.87 +ha_iot_class: "Local Push" +logo: energy_meter.png +ha_qa_scale: internal +--- + +The `utility meter` component provides functionality to track consumptions of various utilities (e.g., energy, gas, water, heating). + +From a user perspective, utility meters operate in cycles (usually monthly) for billing purposes. This sensor will track a source sensor values, automatically resetting the meter based on the configured cycle. On reset an attribute will store the previous meter value, providing the means for comparison operations (e.g., "did I spend more or less this month?") or billing estimation (e.g., through a sensor template that multiplies the metered value per the charged unit amount). + +Some utility providers have different tariffs according to time/resource availability/etc. The utility meter enables you to define the various tariffs supported by your utility provider and accounts your consumptions in accordance. When tariffs are defined a new entity will show up indicating the current tariff. In order to change the tariff, the user must call a service, usually through an automation that can be based in time or other external source (eg. a REST sensor). + + +## {% linkable_title Configuration %} + +To enable the Utility Meter Sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +utility_meter: + energy: + source: sensor.energy_in_kwh +``` + +{% configuration %} +source: + description: The entity ID of the sensor providing utility readings (energy, water, gas, heating). + required: true + type: string +cycle: + description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly` and `yearly`. + required: true + type: string +offset: + description: Cycle reset occur at the beginning of the period (0 minutes, 0h00 hours, Monday, day 1, January). This option enables the offsetting of these beginnings. + required: false + default: 0 + type: integer +tariffs: + description: List of tariffs supported by the utility meter. + required: false + default: [] + type: list +{% endconfiguration %} + +# {% linkable_title Services %} + +### {% linkable_title Service `utility_meter.reset` %} + +Reset the Utility Meter. All sensors tracking tariffs will be reset to 0. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of utility_meters. + +### {% linkable_title Service `utility_meter.next_tariff` %} + +Change the current tariff to the next in the list. +This service must be called by the user for the tariff switching logic to occur (e.g. using an automation) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of utility_meters. + +### {% linkable_title Service `utility_meter.select_tariff` %} + +Change the current tariff to the given tariff. +This service must be called by the user for the tariff switching logic to occur (e.g. using an automation) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of utility_meters. +| `tariff` | no | String that is equal to one of the defined tariffs. + +# {% linkable_title Advanced Configuration %} + +The following configuration shows an example where 2 utility_meters (`daily_energy` and `monthly_energy`) track daily and monthly energy consumptions. + +Both track the same sensor (`sensor.energy`) which continously monitors the energy consumed. + +4 different sensors will be created, 2 per utility meter and corresponding to each tariff. +Sensor `sensor.daily_energy_peak`, `sensor.daily_energy_peak`, `sensor.monthly_energy_peak` and `sensor.monthly_energy_offpeak` will automatically be created to track the consumption in each tariff for the given cycle. + +`utility_meter.daily_energy` and `utility_meter.monthly_energy` entities will track the current tariff and provide a service to change the tariff. + +```yaml +utility_meter: + daily_energy: + source: sensor.energy + cycle: daily + tariffs: + - peak + - offpeak + monthly_energy: + source: sensor.energy + cycle: monthly + tariffs: + - peak + - offpeak +``` + +Assuming your energy provider tariffs are time based according to: +- *peak*: from 9h00 to 21h00 +- *offpeak*: from 21h00 to 9h00 next day + +a time based automation can be used: + +```yaml +automation: + trigger: + - platform: time + at: '09:00:00' + - platform: time + at: '21:00:00' + action: + - service: utility_meter.next_tariff + entity_id: utility_meter.daily_energy + - service: utility_meter.next_tariff + entity_id: utility_meter.monthly_energy +``` diff --git a/source/images/supported_brands/energy_meter.png b/source/images/supported_brands/energy_meter.png new file mode 100644 index 0000000000000000000000000000000000000000..602af055d5389898de22b6d8a9190746f099f058 GIT binary patch literal 3045 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 Date: Sat, 26 Jan 2019 21:43:05 +0100 Subject: [PATCH 32/65] Co2Signal platform (#8037) * Add CO2Signal documentation * Add logo from website * Update sensor.co2signal.markdown Modifications after review * :pencil2: Tweak * Update sensor.co2signal.markdown Update after review --- source/_components/sensor.co2signal.markdown | 102 +++++++++++++++++++ source/images/supported_brands/co2signal.png | Bin 0 -> 2348 bytes 2 files changed, 102 insertions(+) create mode 100644 source/_components/sensor.co2signal.markdown create mode 100644 source/images/supported_brands/co2signal.png diff --git a/source/_components/sensor.co2signal.markdown b/source/_components/sensor.co2signal.markdown new file mode 100644 index 00000000000..c8d268db87c --- /dev/null +++ b/source/_components/sensor.co2signal.markdown @@ -0,0 +1,102 @@ +--- +layout: page +title: "CO2Signal" +description: "Instructions on how to use CO2Signal data within Home Assistant" +date: 2019-01-01 21:47 +sidebar: true +comments: false +sharing: true +footer: true +logo: co2signal.png +ha_category: Environment +ha_release: 0.87 +ha_iot_class: "Cloud Polling" +--- + +The `co2signal` sensor platform queries the [CO2Signal](https://www.co2signal.com/) API for the CO2 intensity of a specific region. Data can be collected via latitude/longitude or by country code. This API uses the same data as https://www.electricitymap.org/. Not all countries/regions in the world are supported so please consult this website to check local availability. + +This platform requires a CO2Signal API key, which can be obtained [here](https://www.co2signal.com/). Note that this API key is for personal use only and other options exist when the data is used commercially. + +At the moment, the free CO2Signal API only supports the average carbon intensity of a country and not the marginal carbon intensity. + +

+The "free" API key is limited to a limited number of calls. Too many requests can result in data loss. +

+ +## {% linkable_title Configuration %} + +To set up this platform, get your [API key](https://www.co2signal.com/) and add the following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: co2signal + token: YOUR_CO2SIGNAL_API_KEY +``` + +By default, the sensor will use your Home Assistant longitude and latitude. More detailed configurations to overwrite this can be found below. + +{% configuration %} +token: + description: Your CO2Signal API key. + required: true + type: string +latitude: + description: The latitude of the location to monitor. + required: false + type: string + default: "The latitude defined under the `homeassistant` key in `configuration.yaml`." +longitude: + description: The longitude of the location to monitor. + required: false + type: string + default: "The longitude defined under the `homeassistant` key in `configuration.yaml`." +country_code: + description: The country code or region code. + required: false + type: string +{% endconfiguration %} + +To enable the platform and gather data via a specific latitude/longitude, add the following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: co2signal + token: YOUR_CO2SIGNAL_API_KEY + latitude: YOUR_LATITUDE + longitude: YOUR_LONGITUDE +``` + +A similar result can be achieved by using the country code. In that case, use the following lines in your `configuration.yaml` file: + +```yaml +sensor: + - platform: co2signal + token: YOUR_CO2SIGNAL_API_KEY + country_code: YOUR_COUNTRY_CODE +``` + +## {% linkable_title Example Configurations %} + +Configuration using custom latitude and longitude: + +```yaml +sensor: + - platform: co2signal + token: YOUR_CO2SIGNAL_API_KEY + latitude: 55.4 + longitude: 5.5 +``` + +Configuration using a country code: + +```yaml +sensor: + - platform: co2signal + token: YOUR_CO2SIGNAL_API_KEY + country_code: BE +``` + +## {% linkable_title Sensor Types %} + +When configured, the platform will create one sensor for each configured location. + diff --git a/source/images/supported_brands/co2signal.png b/source/images/supported_brands/co2signal.png new file mode 100644 index 0000000000000000000000000000000000000000..32879acab9d262b94bcf35300bdbc7080188e73a GIT binary patch literal 2348 zcmV+{3Dfq8P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&2*F82K~#8N?OW+{ z6h##G-y$cuc9Vcdc~D-!2c;-bP(Tq;)DK=&poo+QC=^r)q9T-FA!0ZJ0iyg3h7fX_ zgB&E;gKFQeXL@&Lws$i--91UPKm6+L+nwp-^{-#Q_h$B?2Y;<(4{i~xG%m^5E1WN^ zG%hW(W0aQJF-pI&`3hLwlx~?FqjZcdR=`T5(q*=Q`=iy3=+_eCR{J=5$ig1o<_4!^N)c|M2G(^pzp z&)O=fAyv@*R0SK@Qo|+=G_q7%OVR$9ny&1#2j8fb8cZj!17Li(p-jipWxlep$M+Zd zZKGJZjPZI-SoWrTOp6sBV+R=%PM}(_uJj8D%te+3BL7l0792trwn2{+*#@mkAGi;AY+Ra zh%SfTEbh0#>ao2I?7^R{EPI`d{$&HZ{bckArWD}YNB7k8e!`49ZmH}>07MP4$$QcN zN{zeSX*XPJWy8Ccb4JRpRmGj>X-A!C%8k!K^!e%1^UNmZ`7SC$pZ$gWHYGE%iF<)0 zXZF`*?tUaVFpTV4Wza(6%*bAMU5mo}bm>}{UCM6<0T*)rCm7thANLMyB{yV<<$W8g z7tH~xh1rlplm*HrD+3HZb25>;A0gbx$93l13U<_4cSl8>pAKEi0SP&ApuBjydleb{ zRG#6G_r7X07bXUF)Ivzt*aY87l&{a6N=W1FQs`Y@%`#WrE$+5Ad6*1NQHAV!RlwlW z$8m5Ljz11v8?!U*EusCk7ehO1-Apjw-sIsXqYR(&g?TzlP zH|oRZL{#J%ziC|?vmv9_NqW{)QTEsDYcG3~lBJy#i%YK80YoX8tLUrve00l)oE0Ew zkWu`$!0%hndb<%m5l6g16Ayy)qp1#z=x2SAl^8ttA{T~nx`rDuT zEy=o{Hk0^(7&E86eX7lWK3yxbvz?TnY^jk>EDZWL*RX7dH#%`74=WA%?}4q>5Hp!&I0A*Q(e!(`8a$_N6_o#yJD4t;X`!oTq%!ZskMqwKnO*XMGxcg!i zf7}*qSLHmI4=9Qin~zSZo!P0jW_IUU1s_Z90&YXrHV!oDJ&M4a0CVRN4HfpO6CP#< zePuMAZ~0AXTOJRQ(-+;u!_$810xhJ8Dj^p5pu50|^Dm_bk{S;bbQQnNL6aZSeG;H&O(lhrw6z26r!O~izb?B+1#o?EfwKAN zlG=SXpzOC@V28-s=fx_8Ls$yhExc?X=}#AoFk3a=7CkZq{EF$6z4C~jW8Q>_H2T`Mkbq7 zImo5df%daET6p#+yC*8(`qFKMJ4u%`#_TLHMAue#(s&UE=ljDV=uC8cwGzeo%XDMR zh8*9g$CcnPocKn>!Tx?wEtK686;tAnl*~s}8a4LpnIwNQBAZmXKq$y--hqB_far1Y*JA$^cEhW74|dsiM}WEqq`|0DKZ~bY0PH}eF{;7rkFVQ2rbYb z3Rk)k9mm+k=cA$7_H}N&16MsLc-;|{^9}GGPwi<_<;;@^4kXf##NaA%jZCgg!e)Qw$-rleRXW+WD`FuvmHq`v?KqV6mdT{ zxTJ4YxXgCH$gRZE(Gk+6FD1Ew5KW)}C4eepx-CJmcF-5+?}tPp<25+XLXozI=)W9& z$uZj$f(*|YTykwx1P(~g=l`LeA%mlOC=A}azKZXRV%L|eTV@A~KYWp<3Z_1Uo@$^He8UAJzh S;J%Ik0000 Date: Sun, 27 Jan 2019 01:42:34 -0800 Subject: [PATCH 33/65] Add documentation for splitting up the dovado sensor (#8296) --- source/_components/dovado.markdown | 46 +++++++++++++++++++++++ source/_components/notify.dovado.markdown | 46 +++++++++++++++++++++++ source/_components/sensor.dovado.markdown | 24 +----------- 3 files changed, 94 insertions(+), 22 deletions(-) create mode 100644 source/_components/dovado.markdown create mode 100644 source/_components/notify.dovado.markdown diff --git a/source/_components/dovado.markdown b/source/_components/dovado.markdown new file mode 100644 index 00000000000..33c3c330ccc --- /dev/null +++ b/source/_components/dovado.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Dovado" +description: "How to integrate Dovado within Home Assistant." +date: 2019-01-26 15:45 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: dovado.png +ha_release: 0.87 +ha_iot_class: "Local Polling" +--- + +The `dovado` component manages communication with the [Dovado](http://www.dovado.com/) router. Once you've setup this component, you should enable the [sensor](/components/sensor.dovado) and [notify](/components/notity.dovado) platforms to use Dovado. + +To add a Dovado component to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +dovado: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: Your Dovado username. + required: true + type: string +password: + description: Your Dovado password. + required: true + type: string +host: + description: The IP address of your router. + required: false + type: string + default: Home Assistant's default gateway +port: + description: The port number of your router. + required: false + type: integer + default: 6435 +{% endconfiguration %} diff --git a/source/_components/notify.dovado.markdown b/source/_components/notify.dovado.markdown new file mode 100644 index 00000000000..61c5619639d --- /dev/null +++ b/source/_components/notify.dovado.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Dovado SMS" +description: "How to integrate Dovado SMS notifications within Home Assistant." +date: 2019-01-26 15:45 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: dovado.png +ha_release: 0.87 +ha_iot_class: "Local Polling" +--- + +The `dovado` notify platform allows you to send SMS from your [Dovado](http://www.dovado.com/) router, if it supports it. + +

+You must have the [Dovado component](/components/dovado/) configured to use this notify platform. +

+ +To add the Dovado notify platform to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: dovado +``` + +### {% linkable_title Usage %} + +This is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send an SMS notification to a single phone number in the notification **target**. + +```yaml +# Example automation notification entry +automation: + - alias: The sun has set + trigger: + platform: sun + event: sunset + action: + service: notify.dovado + data: + message: 'The sun has set' + target: '+14151234567' +``` diff --git a/source/_components/sensor.dovado.markdown b/source/_components/sensor.dovado.markdown index d862ef3fef3..029a42ea634 100644 --- a/source/_components/sensor.dovado.markdown +++ b/source/_components/sensor.dovado.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Dovado" +title: "Dovado Sensor" description: "How to integrate Dovado sensors within Home Assistant." date: 2016-11-05 08:00 sidebar: true @@ -13,7 +13,7 @@ ha_release: 0.32 ha_iot_class: "Local Polling" --- -The `dovado` platform let you monitor your router from [Dovado](http://www.dovado.com/). If the router provides SMS functionality, a service for sending SMS will also be registered in Home Assistant. +The `dovado` sensor platform let you monitor your [Dovado](http://www.dovado.com/) router. To add a Dovado sensor to your installation, add the following to your `configuration.yaml` file: @@ -21,31 +21,11 @@ To add a Dovado sensor to your installation, add the following to your `configur # Example configuration.yaml entry sensor: - platform: dovado - username: YOUR_USERNAME - password: YOUR_PASSWORD sensors: - network ``` {% configuration %} -username: - description: Your Dovado username. - required: true - type: string -password: - description: Your Dovado password. - required: true - type: string -host: - description: The IP address of your router. - required: false - type: string - default: Home Assistant's default gateway -port: - description: The port number of your router. - required: false - type: integer - default: 6435 sensors: description: Conditions to display in the frontend. Only accepts the values listed here. required: true From db41c831f75afe9962592af6202d53fa2c151969 Mon Sep 17 00:00:00 2001 From: Jc2k Date: Sun, 27 Jan 2019 11:37:07 +0000 Subject: [PATCH 34/65] Remove homekit controller out-of-date warning (#8307) Remove homekit controller out-of-date warning --- source/_components/homekit_controller.markdown | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown index 1992d84b1d8..f05eabe7489 100644 --- a/source/_components/homekit_controller.markdown +++ b/source/_components/homekit_controller.markdown @@ -15,11 +15,6 @@ 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](/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: - [Alarm Control Panel](/components/alarm_control_panel.homekit_controller/) From b267b7848b86c63cb6a8ce6cbed13b2d6841380b Mon Sep 17 00:00:00 2001 From: Heine Furubotten Date: Sun, 27 Jan 2019 19:29:47 +0100 Subject: [PATCH 35/65] Docs for nilu air_quality platform (#7993) * Docs for nilu air_pollution platform * Updated with new location of pollution index * Fixed stations to be plural * platform rename from air_pollutants to air_quality Managed to remove a commit from maintainer. Edits should be within this renaming commit. * Update 'ha_release' --- source/_components/air_quality.nilu.markdown | 164 +++++++++++++++++++ source/images/supported_brands/nilu_logo.png | Bin 0 -> 6555 bytes 2 files changed, 164 insertions(+) create mode 100644 source/_components/air_quality.nilu.markdown create mode 100644 source/images/supported_brands/nilu_logo.png diff --git a/source/_components/air_quality.nilu.markdown b/source/_components/air_quality.nilu.markdown new file mode 100644 index 00000000000..458429601a4 --- /dev/null +++ b/source/_components/air_quality.nilu.markdown @@ -0,0 +1,164 @@ +--- +layout: page +title: "Norwegian Institute for Air Research" +description: "Instructions on how to integrate air pollution data from NILU within Home Assistant." +date: 2018-12-30 18:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: nilu_logo.png +ha_category: Health +ha_iot_class: "Cloud Polling" +ha_release: 0.87 +--- + +The `nilu` air quality platform shows measurements of current air quality from NILU (Norsk Institutt for luftforskning/Norwegian Institute for Air Research) sensor stations within Norway. Makes data from the open API at [luftkvalitet.info](http://luftkvalitet.info/) and [nilu.no](https://nilu.no/) available in Home Assistant. + +## {% linkable_title Configuration %} + +To enable this platform, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +air_quality: + - platform: nilu +``` + +{% configuration %} + latitude: + description: Manually specify latitude. By default, the value will be taken from the Home Assistant configuration. + required: false + type: number + default: Provided by Home Assistant configuration. + longitude: + description: Manually specify longitude. By default, the value will be taken from the Home Assistant configuration. + required: false + type: number + default: Provided by Home Assistant configuration. + name: + description: Name of the sensor to use in the frontend. + required: false + default: NILU + type: string + area: + description: Name of an area to get sensor stations from. See available areas below. + required: exclusive + type: string + stations: + description: Name of a specific station to get measurements from. + required: exclusive + type: string + show_on_map: + description: Option to show the position of the sensor station on the map. + required: false + default: false + type: boolean +{% endconfiguration %} + +## {% linkable_title Health risk index explainations %} + +Under the attributes from a NILU station, there will be a `nilu pollution index`. This indicates how polluted the air is in the area around the sensor station. Following is a longer explanation of what the indexes mean. + +### {% linkable_title Low %} + +Low or no health risk linked to measured air pollution. Outdoor activites are recommended. + +### {% linkable_title Moderate %} + +Health effects may occur in some asthmatics and people with other respiratory diseases, as well as serious cardiovascular diseases. Outdoor activity can be recommended for the vast majority, but some should consider their activity in areas with high traffic or high emissions. + +### {% linkable_title High %} + +Health effects may occur in asthmatics and people with other respiratory diseases, as well as serious cardiovascular disease. Children with respiratory distress (asthma, bronchitis) and adults with severe cardiac or respiratory distress should reduce outdoor activity and not stay in the most polluted areas. + +### {% linkable_title Extremely high %} + +Sensitive groups in the population can have health effects. Respiratory irritation and discomfort may occur in healthy subjects. People with heart or respiratory distress should reduce outdoor activity and not stay in the most polluted areas. + +Source: [Explainations in Norwegian](http://www.luftkvalitet.info/home/Varslingsklasser.aspx) + +## {% linkable_title Available areas %} + +The `area` configuration is restricted to the areas NILU has defined. Here is the list of available areas: + +- `Bergen` +- `Birkenes` +- `Bodø` +- `Brumunddal` +- `Bærum` +- `Drammen` +- `Elverum` +- `Fredrikstad` +- `Gjøvik` +- `Grenland` +- `Halden` +- `Hamar` +- `Harstad` +- `Hurdal` +- `Karasjok` +- `Kristiansand` +- `Kårvatn` +- `Lillehammer` +- `Lillesand` +- `Lillestrøm` +- `Lørenskog` +- `Mo i Rana` +- `Moss` +- `Narvik` +- `Oslo` +- `Prestebakke` +- `Sandve` +- `Sarpsborg` +- `Stavanger` +- `Sør-Varanger` +- `Tromsø` +- `Trondheim` +- `Tustervatn` +- `Zeppelinfjellet` +- `Ålesund` + +## {% linkable_title Configuration examples %} + +Example of adding health risk monitoring from sensor stations around the Home Assistant location. + +```yaml +# Example configuration.yaml entry +# Adds all sensor stations within 20km. +air_quality: + - platform: nilu +``` + +Example where the sensors are also added to the map. + +```yaml +# Example configuration.yaml entry +# Adds all sensor stations within 20km. +# Additionally adds the sensors to the map. +air_quality: + - platform: nilu + show_on_map: True +``` + +Example of a specific station. + +```yaml +# Example configuration.yaml entry +# Monitors stations 'Alnabru' +air_quality: + - platform: nilu + stations: + - Alnabru +``` + +Example of getting stations from a specified area, giving the sensors a custom name. + +```yaml +# Example configuration.yaml entry +# Stations from specific area, 'Bergen' +# Custom name for the sensors. +air_quality: + - platform: nilu + area: Bergen + name: Forurensing Bergen +``` diff --git a/source/images/supported_brands/nilu_logo.png b/source/images/supported_brands/nilu_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..de170a7ef932a11cb5678983518e344eae1b8d80 GIT binary patch literal 6555 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 Date: Sun, 27 Jan 2019 12:23:54 -0700 Subject: [PATCH 36/65] Add docs for upcoming Lyft sensor changes (#8297) --- source/_components/sensor.lyft.markdown | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/_components/sensor.lyft.markdown b/source/_components/sensor.lyft.markdown index 6241bad852f..49a40eac20b 100644 --- a/source/_components/sensor.lyft.markdown +++ b/source/_components/sensor.lyft.markdown @@ -25,7 +25,6 @@ sensor: - platform: lyft client_id: CLIENT_ID client_secret: CLIENT_SECRET - start_latitude: 37.8116380 ``` {% configuration %} @@ -39,12 +38,14 @@ client_secret: type: string start_latitude: description: The starting latitude for a trip. - required: true + required: false type: float + default: "The latitude defined under the `homeassistant` key in `configuration.yaml`." start_longitude: description: The starting longitude for a trip. - required: true + required: false type: float + default: "The longitude defined under the `homeassistant` key in `configuration.yaml`." end_latitude: description: The ending latitude for a trip. While `end_latitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time. required: false From 5ea2167ffcd042a4a4d8952da089b18c6ea0d0cf Mon Sep 17 00:00:00 2001 From: Eliseo Martelli Date: Sun, 27 Jan 2019 20:30:20 +0100 Subject: [PATCH 37/65] Add Iliad Italy Documentation (#7981) * added iliad docs * :pencil2: Tweaks * smaller logo * Update 'ha_release' --- .../_components/sensor.iliad_italy.markdown | 41 ++++++++++++++++++ source/images/supported_brands/iliad.png | Bin 0 -> 2685 bytes 2 files changed, 41 insertions(+) create mode 100644 source/_components/sensor.iliad_italy.markdown create mode 100644 source/images/supported_brands/iliad.png diff --git a/source/_components/sensor.iliad_italy.markdown b/source/_components/sensor.iliad_italy.markdown new file mode 100644 index 00000000000..4df759558e4 --- /dev/null +++ b/source/_components/sensor.iliad_italy.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Iliad Italy" +description: "Instructions on how to integrate Iliad Italy's data inside Home Assistant" +date: 2018-12-29 00:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Communication +logo: iliad.png +ha_iot_class: "Cloud Polling" +ha_release: 0.87 +--- + +The `iliad_italy` sensor will give you the data from [Iliad Italy's](https://www.iliad.it/) website inside Home Assistant. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: iliad_italy + username: USERNAME + password: PASSWORD +``` + +{% configuration %} +username: + description: The username you use to check Iliad.it. + required: true + type: string +password: + description: The password you use to check Iliad.it. + required: true + type: string +{% endconfiguration %} + +The data is coming from the [iliad.it](https://www.iliad.it/) website. diff --git a/source/images/supported_brands/iliad.png b/source/images/supported_brands/iliad.png new file mode 100644 index 0000000000000000000000000000000000000000..481a9585bc48e5d599c0c381be54e42a2cf1fa6b GIT binary patch literal 2685 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 literal 0 HcmV?d00001 From d6a86ee1c98018d20b5888e02a86b0c51f545daf Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 20:58:07 +0100 Subject: [PATCH 38/65] Document json_attributes_topic for MQTT Alarm (#8300) * Document json_attributes_topic * Update alarm_control_panel.mqtt.markdown * Update alarm_control_panel.mqtt.markdown --- source/_components/alarm_control_panel.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index 244268a501f..f563e6eeaeb 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -93,6 +93,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: 'Information about the device this alarm panel is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false From d146496d6b4d4547cd6d290fe9a58b162c98fcb4 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:01:10 +0100 Subject: [PATCH 39/65] Document json_attributes_topic for MQTT Lock (#8308) * Document json_attributes_topic for MQTT Lock * Update lock.mqtt.markdown --- source/_components/lock.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown index 1b33b55495d..812675886dc 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -89,6 +89,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string unique_id: description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception. required: false From c479a6cdb5849719aeaaf7858ddd2428c90064f3 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:02:42 +0100 Subject: [PATCH 40/65] Document json_attributes_topic for MQTT Vacuum (#8306) * Document json_attributes_topic for MQTT Vacuum * Update vacuum.mqtt.markdown --- source/_components/vacuum.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/vacuum.mqtt.markdown b/source/_components/vacuum.mqtt.markdown index d678b09ee0c..12c4e2970e3 100644 --- a/source/_components/vacuum.mqtt.markdown +++ b/source/_components/vacuum.mqtt.markdown @@ -158,6 +158,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string {% endconfiguration %} ### {% linkable_title Full configuration example %} From 73742713fd962b0663d8771dba52ae158290cc1a Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:03:19 +0100 Subject: [PATCH 41/65] Document json_attributes_topic for MQTT Switch (#8305) * Document json_attributes_topic * Update switch.mqtt.markdown * Update switch.mqtt.markdown --- source/_components/switch.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 461785439d6..8e45fba36ce 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -103,6 +103,10 @@ value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." required: false type: string +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: "Information about the device this switch is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false From 33af42595805650fe9c1a82552cabe425b692325 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:04:08 +0100 Subject: [PATCH 42/65] Document json_attributes_topic for MQTT Light (#8304) * Document json_attributes_topic * Update light.mqtt.markdown * Update light.mqtt.markdown --- source/_components/light.mqtt.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 6ad68f8e898..98cffe460fb 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -225,6 +225,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false @@ -479,6 +483,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false @@ -746,6 +754,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false From 5261f57f720bbeaec227880b7e2a2282639b26d5 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:05:35 +0100 Subject: [PATCH 43/65] Document json_attributes_topic for MQTT Climate (#8303) * Document json_attributes_topic * Update climate.mqtt.markdown * Update climate.mqtt.markdown --- source/_components/climate.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index 3ee30125d18..7e0cf3a0de5 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -211,6 +211,10 @@ temp_step: type: number required: false default: 1 +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string device: description: 'Information about the device this HVAC device is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' required: false From c879c4e7be45ad8c186842df83d1a853c02ed5d2 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:06:20 +0100 Subject: [PATCH 44/65] Document json_attributes_topic for MQTT Fan (#8302) * Document json_attributes_topic * Update fan.mqtt.markdown * Update fan.mqtt.markdown --- source/_components/fan.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown index 13f79898ce0..0fa472b74fb 100644 --- a/source/_components/fan.mqtt.markdown +++ b/source/_components/fan.mqtt.markdown @@ -142,6 +142,10 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string unique_id: description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception. required: false From 32bb4d9da9517ac7218dd38380abcbb1cab6afe5 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Sun, 27 Jan 2019 21:12:17 +0100 Subject: [PATCH 45/65] Document json_attributes_topic for MQTT Cover (#8301) * Document json_attributes_topic * Update cover.mqtt.markdown * Update cover.mqtt.markdown --- source/_components/cover.mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown index cd58e125425..0c469351f50 100644 --- a/source/_components/cover.mqtt.markdown +++ b/source/_components/cover.mqtt.markdown @@ -173,6 +173,10 @@ tilt_invert_state: required: false type: boolean default: false +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/components/sensor.mqtt/#json-attributes-topic-configuration) documentation. + required: false + type: string unique_id: description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception. required: false From 92dd4a063cfcc58640047df284b7864605191064 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 28 Jan 2019 19:04:27 +0100 Subject: [PATCH 46/65] =?UTF-8?q?=F0=9F=9A=9C=20Merges/Redirect=20Neato=20?= =?UTF-8?q?component=20pages=20(#8328)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_components/camera.neato.markdown | 18 ----------- source/_components/neato.markdown | 39 +++++++++++++++++++++++- source/_components/switch.neato.markdown | 17 ----------- source/_components/vacuum.neato.markdown | 35 --------------------- 4 files changed, 38 insertions(+), 71 deletions(-) delete mode 100644 source/_components/camera.neato.markdown delete mode 100644 source/_components/switch.neato.markdown delete mode 100644 source/_components/vacuum.neato.markdown diff --git a/source/_components/camera.neato.markdown b/source/_components/camera.neato.markdown deleted file mode 100644 index 4027e94fd24..00000000000 --- a/source/_components/camera.neato.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Neato Camera" -description: "Instructions on how to setup the Neato cleaning maps within Home Assistant." -date: 2017-04-05 13:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Camera -ha_release: 0.42 -ha_iot_class: "Cloud Polling" ---- - -The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -To add `neato` camera to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/neato.markdown b/source/_components/neato.markdown index 43aca42701f..6d17e1ccdea 100644 --- a/source/_components/neato.markdown +++ b/source/_components/neato.markdown @@ -8,8 +8,15 @@ comments: false sharing: true footer: true logo: neato.png -ha_category: Hub +ha_category: + - Camera + - Switch + - Vacuum ha_release: 0.33 +redirect_from: + - /components/camera.neato/ + - /components/switch.neato/ + - /components/vacuum.neato/ --- The `neato` component allows you to control your [Neato Botvac Connected Robots](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). @@ -37,3 +44,33 @@ password:

After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. More information on how to update can be found [here](https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5-).

+ +## {% linkable_title Vacuum %} + +The `neato` vacuum platform allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). +The status will contain attributes on the robots last clean session. + +

+If you notice the robot stops responding to commands check the state to see if the robot is "unavailable". If you see "unavailable" first try to restart the vacuum and wait about 5 minutes to see if it is no longer "unavailable". If you are still having issues check the Neato app and make sure your robot is connected and working. If it is not then follow the steps in the app to reset your robot and give it the same name as before then restart Home Assistant. +

+ +### {% linkable_title Configuration %} + +Currently supported services are: + +- `start` +- `pause` +- `stop` +- `return_to_base` +- `locate` +- `spot_clean` + +## {% linkable_title Camera %} + +The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). + +## {% linkable_title Switch %} + +The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). + +To add `neato` switch, camera and vacuum to your installation, follow instructions above. \ No newline at end of file diff --git a/source/_components/switch.neato.markdown b/source/_components/switch.neato.markdown deleted file mode 100644 index 2f0e1e8d1ee..00000000000 --- a/source/_components/switch.neato.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Neato Robotics Switch" -description: "Instructions on how to integrate a Neato Botvac Connected switch within Home Assistant." -date: 2016-10-19 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Switch -ha_release: 0.31 ---- - -The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -To add `neato` switch to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/vacuum.neato.markdown b/source/_components/vacuum.neato.markdown deleted file mode 100644 index 3b38389171b..00000000000 --- a/source/_components/vacuum.neato.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Neato Robotics Vacuum" -description: "Instructions on how to integrate a Neato Botvac Connected Vacuum within Home Assistant." -date: 2017-10-18 16:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Vacuum -ha_release: 0.57 -ha_iot_class: "Cloud Polling" -redirect_from: /components/sensor.neato/ ---- - -The `neato` vacuum platform allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). -The status will contain attributes on the robots last clean session. - -

-If you notice the robot stops responding to commands check the state to see if the robot is "unavailable". If you see "unavailable" first try to restart the vacuum and wait about 5 minutes to see if it is no longer "unavailable". If you are still having issues check the Neato app and make sure your robot is connected and working. If it is not then follow the steps in the app to reset your robot and give it the same name as before then restart Home Assistant. -

- -## {% linkable_title Configuration %} - -To add `neato` vacuum to your installation, please follow instructions in [Neato component](/components/neato/). - -Currently supported services are: - -- `start` -- `pause` -- `stop` -- `return_to_base` -- `locate` -- `spot_clean` From 61d73b0f0fc8fd6515c14167f2430c9fa472e0b8 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Tue, 29 Jan 2019 05:12:02 -0700 Subject: [PATCH 47/65] Add doc updates for upcoming Ambient PWS changes (#8244) * Add doc updates for upcoming Ambient PWS changes * Updated method to Cloud Push --- ...tion.markdown => ambient_station.markdown} | 130 +++++++++--------- 1 file changed, 66 insertions(+), 64 deletions(-) rename source/_components/{sensor.ambient_station.markdown => ambient_station.markdown} (76%) diff --git a/source/_components/sensor.ambient_station.markdown b/source/_components/ambient_station.markdown similarity index 76% rename from source/_components/sensor.ambient_station.markdown rename to source/_components/ambient_station.markdown index b7042957996..0c1568f76fb 100644 --- a/source/_components/sensor.ambient_station.markdown +++ b/source/_components/ambient_station.markdown @@ -8,27 +8,29 @@ comments: false logo: ambient_weather.png ha_category: Weather ha_release: "0.85" -ha_iot_class: "Cloud Polling" +ha_iot_class: "Cloud Push" --- -The `Ambient Weather Station` platform uses the [Ambient Weather](https://ambientweather.net) -web API to retrieve weather data from your personal weather station (PWS). +The `Ambient Weather Station` component retrieves local weather information +via personal weather stations from +[Ambient Weather](https://ambientweather.net). -You need to register your compatible PWS using its MAC address and then request both an API key and an Application key. The key requests can be found -under `My Account`. Requesting an application key requires emailing the ambient weather support team. +## {% linkable_title Generating API Keys and Application Keys %} -To add your Ambient Weather PWS to your Home Assistant installation, add the following to your `configuration.yaml` file: +Using this component requires both an Application Key and an API Key. To +generate both, simply utilize the profile section of +[your Ambient Weather dashboard](https:/dashboard.ambientweather.net). + +## {% linkable_title Configuration %} + +To add your Ambient Weather PWS to your Home Assistant installation, add the +following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -sensor: - - platform: ambient_station - api_key: YOUR_API_KEY - app_key: YOUR_APP_KEY - monitored_conditions: - - tempf - - humidity - - windspeedmph +ambient_station: + api_key: + app_key: ``` {% configuration %} @@ -42,67 +44,67 @@ app_key: type: string monitored_conditions: description: Weather conditions to track. - required: true + required: optional type: list keys: - winddir: - description: Wind direction - windspeedmph: - description: Windspeed - windgustmph: - description: Wind gust - maxdailygust: - description: Max daily wind gust - windgustdir: - description: Wind gust direction - windspdmph_avg2m: - description: Wind speed, 2m moving average - winddir_avg2m: - description: Wind direction, 2m moving average - windspdmph_avg10m: - description: Wind speed, 10m moving average - winddir_avg10m: - description: Wind direction, 10m moving average + 24hourrainin: + description: 24h rain accumulation + baromabsin: + description: Absolute atmospheric pressure + baromrelin: + description: Relative atmospheric pressure + battout: + description: Weather station battery health + co2: + description: CO2 level + dailyrainin: + description: Daily rain accumulation + dewPoint: + description: Dewpoint temperature + eventrainin: + description: Event Rain accumulation + feelsLike: + description: Feels Like temperature + hourlyrainin: + description: Hourly rain accumulation humidity: - description: Outdoor humidity + description: Outdoor humidity humidityin: description: Indoor humidity + lastRain: + description: Datetime of last rain event + maxdailygust: + description: Max daily wind gust + monthlyrainin: + description: Monthly rain accumulation + solarradiation: + description: Solar radiation tempf: description: Outdoor temperature tempinf: description: Indoor temperature - battout: - description: Weather station battery health - hourlyrainin: - description: Hourly rain accumulation - dailyrainin: - description: Daily rain accumulation - 24hourrainin: - description: 24h rain accumulation - weeklyrainin: - description: Weekly rain accumulation - monthlyrainin: - description: Monthly rain accumulation - yearlyrainin: - description: Yearly rain accumulation - eventrainin: - description: Event Rain accumulation totalrainin: description: Lifetime rain accumulation (since last reset) - baromrelin: - description: Relative atmospheric pressure - baromabsin: - description: Absolute atmospheric pressure uv: description: UV index - solarradiation: - description: Solar radiation - co2: - description: CO2 level - lastRain: - description: Datetime of last rain event - dewPoint: - description: Dewpoint temperature - feelsLike: - description: Feels Like temperature + weeklyrainin: + description: Weekly rain accumulation + winddir: + description: Wind direction + winddir_avg10m: + description: Wind direction, 10m moving average + winddir_avg2m: + description: Wind direction, 2m moving average + windgustdir: + description: Wind gust direction + windgustmph: + description: Wind gust + windspdmph_avg10m: + description: Wind speed, 10m moving average + windspdmph_avg2m: + description: Wind speed, 2m moving average + windspeedmph: + description: Windspeed + yearlyrainin: + description: Yearly rain accumulation {% endconfiguration %} From db7c47a2f5912c2646bd491b70f565e5f45a9a04 Mon Sep 17 00:00:00 2001 From: Julien Brochet Date: Tue, 29 Jan 2019 13:20:37 +0100 Subject: [PATCH 48/65] Add documentation for Synology SRM device tracker (#8240) * Add documentation for Synology SRM device tracker * :pencil2: Tweaks --- .../device_tracker.synology_srm.markdown | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 source/_components/device_tracker.synology_srm.markdown diff --git a/source/_components/device_tracker.synology_srm.markdown b/source/_components/device_tracker.synology_srm.markdown new file mode 100644 index 00000000000..1f79413a183 --- /dev/null +++ b/source/_components/device_tracker.synology_srm.markdown @@ -0,0 +1,67 @@ +--- +layout: page +title: "Synology SRM" +description: "Instructions on how to integrate Synology SRM routers into Home Assistant." +date: 2019-01-22 13:43 +sidebar: true +comments: false +sharing: true +footer: true +logo: synology.png +ha_category: Presence Detection +ha_release: 0.87 +--- + +This platform allows you to detect presence by looking at connected devices to a [Synology SRM](https://www.synology.com/en-us/srm) router. + +## {% linkable_title Configuration %} + +To use this device tracker in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: synology_srm + host: 192.168.1.254 + password: YOUR_ADMIN_PASSWORD +``` + +{% configuration %} +host: + description: The Synology SRM router host or IP address, e.g., `192.168.1.1` or `router.mydomain.local` + required: true + type: string +port: + description: The port to connect to the Synology SRM router. + required: false + default: 8001 + type: int +username: + description: The username of a user with administrative privileges. + required: false + default: admin + type: string +password: + description: The password for your given admin account. + required: true + type: string +ssl: + description: Use HTTPS instead of HTTP to connect. + required: false + default: true + type: boolean +verify_ssl: + description: Enable or disable SSL certificate verification. + required: false + default: false + type: boolean +{% endconfiguration %} + +It's not possible to create another account in SRM with admin permissions. You'll need to use your admin account (or the one you renamed at creation) for this connection. + +List of models known to be supported: + +- RT1900ac +- RT2600ac + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. From 2ef1ea72aa802a636cfe120b036d99e873cae780 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Tue, 29 Jan 2019 12:27:34 +0000 Subject: [PATCH 49/65] Adds Integration Sensor (#8012) * energy sensor * address review comments * from energy meter -> integration meter * :pencil2: Tweaks * bump version --- .../_components/sensor.integration.markdown | 78 ++++++++++++++++++ source/images/supported_brands/integral.png | Bin 0 -> 9361 bytes 2 files changed, 78 insertions(+) create mode 100644 source/_components/sensor.integration.markdown create mode 100644 source/images/supported_brands/integral.png diff --git a/source/_components/sensor.integration.markdown b/source/_components/sensor.integration.markdown new file mode 100644 index 00000000000..2e35f2d9994 --- /dev/null +++ b/source/_components/sensor.integration.markdown @@ -0,0 +1,78 @@ +--- +layout: page +title: "Integration Sensor" +description: "Instructions on how to integrate Integration Sensor into Home Assistant." +date: 2019-01-02 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Utility +ha_release: 0.87 +ha_iot_class: "Local Push" +logo: integral.png +ha_qa_scale: internal +--- + +The `integration` platform provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum) of the values provided by a source sensor. The Riemann sum is an approximation of an **integral** by a finite sum. In this implementation, we follow the Trapezoidal rule. + +## {% linkable_title Configuration %} + +To enable Integration Sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: integration + source: sensor.current_power +``` + +{% configuration %} +source: + description: The entity ID of the sensor providing numeric readings + required: true + type: string +name: + description: Name to use in the frontend. + required: false + default: source entity ID meter + type: string +round: + description: Round the calculated integration value to at most N decimal places. + required: false + default: 3 + type: integer +unit_prefix: + description: Metric unit to prefix the integration result. Available units are k, M, G, T. + required: false + default: None + type: unit +unit_time: + description: SI unit of time to integrate over. Available units are s, min, h, d. + required: false + default: h + type: unit +unit: + description: Unit of Measurement to be used for the integration. + required: false + type: string +{% endconfiguration %} + +If 'unit' is set then 'unit_prefix' and 'unit_time' are ignored. + +## {% linkable_title Energy %} + +An `integration` sensor is quite useful in energy billing scenarios since energy is generally billed in kWh and many sensors provide power in W (Watts). + +If you have a sensor that provides you with power readings in Watts (uses W as `unit_of_measurement`), then you can use the `integration` sensor to track how much energy is being spent. Take the next configuration as an example: + +```yaml +sensor: + - platform: integration + source: sensor.current_power + name: energy_spent + unit_prefix: k + round: 2 +``` + +This configuration will provide you with `sensor.energy_spent` who will have your energy in kWh. diff --git a/source/images/supported_brands/integral.png b/source/images/supported_brands/integral.png new file mode 100644 index 0000000000000000000000000000000000000000..4313036ed3599ed2076222e4ce31dd52ce0f59a1 GIT binary patch literal 9361 zcmY*<1yo$U*7giCxD;A!fa1C{o-hPI1@b4#kSY$9wPn z@Be*gt(+wLJb89@lC_eZeZrL$r7=*6Pyqk{#s?V*)z{qRHTffhUf)Zp3Usd-&{_$0{{Z< ze6K}Ya~BgbciT^P&V25I6#qi-y_WwGvrv%z3*urUNTIEuOeSvcWKPBj;ebFXgiy)I z$ON1|TJWh#Nd2ezYfX^C%EiTjkA=m}%?;wl4zYK#WMSpy_2)0SpHG|zdG}8OaCQ(HB|^z zfaSl#CWI>AL#qP-P)vT15LI^vo@Aml=}RUKtY>{k4E}C!f{P$2M)pa}RGTWuA1W&H zQ5p2d42)p@sO};njfAh?#lkRLLMCcLRS_tH14n@TfFnXCvVc)Ln6+(t`S7kW&6j1> z$KGwdF;;8c?ZNIx2Hy)`v0|p4#_GcNPr*eB+^hAj&yRNzX0EhKS#9^}_8rY$US1Eh zU@({#V%X-MIX5?#oSv3uxADB^ygS-F)>NGB>xnC^CC|Mu9u<_?<#_<+w$nc{a9f=v zy<9X;HV|5yoOE=zwA}OcZ%i9+#;k5_Z3U;Lr}uL1l{T(^UOwL_$`uuIrJWDDzk*x` zrTtv`qE>6ycHX~>Z|I)eOZ<7&b)Md)qNbk(cm|gFt=*;9QC?o2S!abx5DjiVG3=R~ zn3}5XZ8@rX2-wT=I@MhpDkcZ+Kd6X-V~3OI5?fCimJ1r!JdgNgw!ZmK0ls9Zw+GH_ zDuf#sKmc|y8=GaqYp}()8R|DG&+>3o_&FcXxpr%l?7@yh2$ zjq$XIM5K`m#>aTJBGWGD#;U8Ukpu%^=nK~6l}n`Ff4Zq@v%N2z8dsb~T<(XJ03~HA zC~80Ei1>!eQ@5n3uC_kncyKc1{&3=8HbB5F)j!#Nok&3-`!`M-M0U8jfCQWSu^7x@ zw$58fR6Wp3_@hRZwdT-@=TYT+*Pmt#sPL!`RN7%ijfL8g^)5=pytAbTmGM#Eh0bO| zuW3q0sZT+eOcZ|51Z6Et<;szJYh!Wd83%?lsv8(roQ7Bbxtk+CmQtFO%d9^#nK^n{ z)P6(O`53>A6o*{54pXJ7R`$D;p7E?j5H72#py<+a{|VUQ=V`~60mMw;41QLTqyb7PiNMg50>QO zgc9Wt(VXxffA7`e^~1N(d|!#9t{|vhT{g=#26v~We$;GJ-TrqcS>I{MMu;6<5?a_w zBt_uYCFWAQHN1Rs(zu>gX-yT}?e|Wilus{4V)jsA#j|*0uC&hf|XH^Galzo0(kq?N*z5%||&nzXQkpf0}UlB(`O6KW#$n01RD6VDiV!j*K&A3j$ z6J;XtpS4|5J=U=UsLOgP>RCi7maP!5HY?UMO$NmX%*>Q~%nWthIjJ@!${m$)ye34E zIFAHkcrrli(vqIA7tMDm1+8vdQQT`PP>t#W?(rLvlo^-d@<~0mW08O} z_Gvm8xr&?I`I+n59y^HxV;Q`cj?|Y=m_=k5yI3n5K^IOV%s15NY4A8mVtC>*@L^O6 zQB4TNzfV$agyr**%e=^RE&P&rwW-xxS`x>kQDm0Vh=C>OqbO3?=f2(#Cym)X9x~0R zY%|rS38JvK)Y)Z3`{L1}uBb(2TxgZK>k^zVw&}JFcV9UNzIz%G3GXQX>M3x7J#2f_ ze{$?-WR>RyIWW=6&67DW`=3R&tBncXtbBe@h$J6K9g!dGDe*N2ku|hm3^QhG7l#3M zCyB>8)DVkZu}oC)&moetzG2R2cXW#*>I9!~mfkX}_&>GD_!r_Nfh=Ma(Th)2@}+!w zU3lgNnVrd_RGx-o_WfTL286gyGu_sjgL(>;M5Z}DK!dS&FHhSp$MU~)$`gvsG-87i zgD(;(T~fU9_>tW*jrnF|;HNoS{^#a^g`8gT^UYL&8vQ36@BYkb`J4!Q9k843*(Q_@AgKWQL+X3GVL)yth&gLZWDDVN zWSu-B5Kq>n7cyk2E1SCqPZj)L)%JOm>m*cXoU1G^%{+@oOo0ggiQ(Exv#Ii!Yl%_f z{1z-u=T<4POK_U1KhKh2L zSCr(PVKg$ilj_lM6F;B{C>vvjw#avo{9f#-9~p<{Z&S?LJ`xzx_}4LfJpiM=+UH0M-HN-M=NE4a*B!BeY)Jc; zwLx;3J#`T^?BVZQp!wJYJ@k@^7@_8+LPGCRf{Uc{BtV%?TwaTd${19nGG|GDMD@1& z^O^O@O0kY zmO-PrEAYIU@NIT72MY5tR!h+)tCc@rEL3aT4g*Z0(_041$yw!VAMGOjHA)Ay3xky3 z5Hl1~HK=a%RiL*nB0vSGu3Fr_81qr(nXdC=^a1{XPdgStWkEIY;@|j?0(XAc)W4Vq;diX}l zz8Eq9SH{lP0;}ixi7l%^*Ku^o-W%yphHxs=$E0+<+{z|5DQZpxHMNs9)J~02I{Ok1 zvJ$Z+RZM&Oh~PL3T;y-QaU8aUA7Od^dC_-`pi#>5j(4Q4K(t9nI!#erPvVCTfSUUK zh#f`dYF}yv`l8H9KoZ&k5{_~JS|~c6!Gcq$7o!%6@_Hi!r+XM&4iEM4Y%X-0>?K}4 ze%lDraVCdoxndJs`M4RuVrYRtI9R&m9Y{L@3aGb7Q|QEfD~2$0R3Qqp4J*>T;2o2Q zR6|0{F`*#v5kD55PI+s|(pJA@UA}4~3Eh*EwRHJ=Rx?0q$F`GUm|reygW{WoJL6a~ zv`$61@P~o3gLH>(HW0;tk@94EXr$hkv_fO)IlW+(p`X(rwn!kgtlsT# zySRT?)BGW|(lb>yQR#Vu^_*LNEjeLZ6*eNEhDxLnFVm;A!tNlHE^5IMCnhf0;s-eK zqCeR-f6-TpAq5%)NY#eUN1B0O#~bGGYZ!AQFVZCbb$2HFOF|?8RHmXz^lgKTyxUPZ zE9~OYs1G>*{c`fUq>c&*Ka2@bDIksTVs1T}69r*>*PK>WC?CP5XBY%+=^G#Lyve>8Pms}o-sFDT znzDZ;EK(}kutu0&wofxhH(BWU<&og?)^gU)iwM_jQ-A#PnuQFtu$Xzfyhf%JTbD@Z zAWxB8z5$jj8vFh_&9BrCyogfi(wW_Dfw2;TW8EG#>BguG<3SDG@n+3|gd{|+cseqt zhb@}-V|_04FDGgoV!us@)KGc1Jw*G0_&&`b$QCdJI`d!|ulx=J;q_TIB)6gk_xKHFSiW zBv{1k_A_!=vZ#DJ9d6{umidLmdzCHqLt&rnUTwo2|E{?kJl2_L9veM#`zt#Vwvsp zSCm08tyfmdTHoX|oa3p<=}AK>njA&HP)J)*_NSKrQc{LiE(MWkO5b&3);S_ zZal061sSpTLGNS8fL6J#h3`VeH%_S(b>X!c7$3Nh?nXu22@KE1a=}XQG$k*EI5U6z zTlS4Ko=_|_q9BDl8lK>*wT_qPhnEP){Gy}Gs&(pwfX@W{Jrl+oVjp$i!)LejwkUzd zuyg`=`i~7#>%EZf0zKD#ZdSh)C^m>X(v^k?(J@D(pA~X)Lv!ul;0VJ-{N3Q3*LTLE zs_lgoG_5lgm39Juv~>ySUf`+g>-H$Is{eM!!q|dUv~S-3^Z_~xr)Bg9yDv4c@BFY0GSPKAcE^iPowLg;r9l10oSKB0 z%jMSj=j(+;!94ws@#9QKKRD|}oRi0Cs}0QrE{)oE+wS2e{c1(b++l-muE7vtx6~{j z7vZ3YKWQIV_EuJ&k-HUh$nVadBd(72_&IWamw`3>;E1}M-Jr}XZmr{A4>hGgBD})C z);*Z60vKxq_DEdpXyrdOJ)E}QkiYO=mEQYYa{QEywe{JYIKI+*b>oUxTH_$-XR_2K zR~733a}nZw_owUmdEn>|T#+Dkbu#P?bV#Q(F1{9SB$lcnxx%k%;&l`T^Urm-i&-Td z9x`R8t!32Ily3qFGfon&)jCi!yW3M{KBZiPb5d4B#SY-P3wH(ryxlc(FE#|_pY(7B zTzn{UV?&Y4)>S-qvj>Fo?|1mP@lBW_oN28aFnsm>HE;9A<3o*{NggnisTlpmU+N20 zEzNltfYycjZ2JX=06Mc8+4EoQ$=IShk5ehEW}ibt5hpSluaDv|N$#hW>t1L!{%(cS zlr@t+f#}|bY9cu|$j;c}<$+5b@Zn#KH~3H(HXz&if8nN0v9EPrV9%@z(F}z$qhC4lc(t?M7Z{W}Y20}r zhM7T>`M!Ecs}0q&t2DyAOSOFs!Wnm0F3stXK$Wu8TxB5TnJKmDA_cG6V+Z+QsY&)D z?=y-Nd?Rni%V{NHL3r0r-YDgKI`rF1=E~eR2aUPJXeH~rpMo^r%~W9CBPzG?=Vr_s zdf8HbiF*HIdiWa-(G2s!N2^taaDidaKGUZ*$K6!R=hRSc($KJKc5~d>8!=Lz_UR8s z#jJieax47aWjeS8tUrXD;%6L_;6RgjG8szjazr?6;|NzQoQ=BE#fTU<93lh{ta@iS z!>&VtFYYBF%gNnC_G6^SyIU_<1K&uz3J$a2Y#17i0Oo@@1aLWev>8JbuufG6SdoAuU>;Ijnl(UG2j3j6CKeUPdxe&xjH@f8 z=%HmTr%x0gNtJW*=rLwSv){|Sjw)b$@N{Exs8XVHaDor5)WdP9MG%_&^P+zA^<2!{ zw8|q}!+d+ubu*my&~cFoEvJ6rR^?&wdfwp;MWt^k;CqtW?D0uTe4Vct+OBB5D+(3P`0tXZCjiZY06#&-m2|mid({uWT2@C zU^(d~6e$Oz^?Dbd$AYZfqXV$fDME3JMwqE0b=Y82RF=;QjCnRtf5IceBxa|&IXRYg z4lrp&UICxtw>Pqx4@AnB(V$6bT(~LqVvMexGpXphw_^D+Q}eE0otb{bnmq|8B+)d&9sYzaa~WT zIJ-wbi6)IT52%6jr)7G^j0D$a+_ofaw3-zpcJLbJK1g8;Iw_jjMGyX1gFZh((bavv zSm~zbz69TXx5YR=I-Ngui+i@@;MX4u+{lONdjuT>GOW5QIo|FaPm#2M$2@|+TN59- zy<~n~I%u>gVK3k=fsIy%VK+LV#Px}Iv{@(gqH3~ziF^;(j$ahS`(}+|y?mq_Xk3=3 zKcsMdjjoEMH?|&D0oweV1raZQ^T^&ptePkHo=z4@XK{#o&pYln@aW%6;npBQEA3Re)Ruh(ev)f1ftwH%J0Fmh=?0fELG$r5yt*O`!}E*tA|RHppOGN)^#Ref2+GhQo-)WF05R~_5|BeW0HBpqFXR~xtULn>-$m*0t(+j{6@7zU z#l<88M-fA=x(gP4|MIeSZ5UOWpR6%&w|320(b}rF{z4d!-#A$P0;{F~yoC)-U)ZW$i;b(C3Zz*|qFo21RuX3dOh*I| zik29rhf(VWfEyNn#cqwZrr$I76^M~jLylWXJ@<3JZGGdnljPdwNp}(!sSjjei7i-? zhHPp5`fO^hn89f?w^inLuLM>Y`klRek@pTIZ6Ky!7;a(uN?=4TuAv%y}*Xs)qG)(FYcm84lMwBY#^e=S!ntga1R`d%dV`iLTwoZm8Cs}m?^avqO z9D>#gMM-)oU7=YHGH_Tmq3+IO~~;zDrM3t<6l~&j}Bif4xcztM(6R1V{ep z&>2Q~qJ2R5#U{#pnB>dIL6x*w8B$<_LgWN|Thxr9PbvR^+NEFiu}rm)QykfaFj{Dy z@J-#IT!fcOXnm255(DR-*CAyeCd$-)sR?KP6R3-;kQk*H}ucaMTluNaC14e@Q?m zphbVppKHn*9vi#ueSgsPwa`1|t*LuU6J?$5v`|I@TB^R{`8m7>@D5w$3bydh!1D*; zL#F%T{D@7>Rqajf$zLo4WAaj}>qR7cCU>Cb+%@}MR62BxD}H@8Wca^|Gq!KAh7Cb{ z`{`AzAnR6Zi&O{%v}-ermQW3(%;DTI_YF3l?76*@O~fKLazcIjax)7GQy+5JRk2_r zjVWjZ&S%ihs`oB7j*q{a&~7fy^0aoV;*_Ogt3)R}%ganA1g(4`4ewnXDHF>eY}yC~ z3yEb#(-P%riuCrYb3}5xV$x~AH&0 zBqlb~;w{Eb@0)2~eBFZpbOstzs`M?_^)+s6)dx&7_w-i*yDXKlNcu$}a7C*#S7p=Y z*Jj;joJm30RDpsO{R7P*7lF(>nYa{eB-dQ{c5;>FAF_!D;<^P-(z5tDgE`i1>?DD( zh+<4>REx(f1|MF~OEJg9a43mU-l*`BR(vPM_q2N!icEHvDhqu9egzVXqHI~DcF`AC zgwa1nN4B;bIwA5iPncRO;v4s<=WLxle3%bd2ClOj;~QcETq>DCF0C7~a@ z*diSKdVOxQhIwxQIUy%TlZs(v$jP)hOMvML@AX#O6(^1rErK!<#(>!`4d){vWSP>h z(E?d{ZjWFYNb~rVU#M*Z@S1|VoGcSVzF*T+pqd>KtVU}@@eGeOtfZ06L7YlfSHR6> zF%mZ?m6Go_S1oAdpXKa<7nPWH&oyO**`l#aa3_Bb+_ z)VM=t3+;ih^n>Y7dBo(1;F_E=t1j`&GpHogTvvAu2an5KVpWk{@UDdP5-@#?kW1LR z^-1?BOJ5in9-R{5Tkq3R=F3*_?i*Qjz07 z14>@c=_ODl<)@sVtqE1;;6wLnW9#pQtb#xAaPnq%-(vAy$D7FJP&1SN+&@%PCG9OG zwy5*@TbKRgWsq?J%4hq;18>K3J)l-#Uq=Iz?W?In{;4HM5a7_L_N<7S*N1v^q4;V;ocex~uAv>))MVmO=Nx4*B#`}@lP#a@#gZ`U-8 zs%CV}aqH4ofbk>gg$n(r9?ckb-LAe1=%L

!NbaQUeH%#&Bm zHMiQ|_c@Z4=s=6CzLp=yZntVJzgA&HG&i?d+C_tD@0aiI;I``%;^Hg~GEP+w*|mR# z%w<8JJz5T{)L&L3)wyy_E9IhZT!FF{x!JjiO5zyAUtKH+-EoYd*Tq8L8oeO^4u28n7Jt%A7^17NPk_3Nj`8_a)6PZs+&E#Vi z;k5aExh-?crl43jm9RUaa^2Z4$v&|z)TutHu#w=dBILG`&0PUUgC9#on%owy>}OHP zZ$gSGNg2yE@x=Pt^_#QuBxUBZeYpJfjBjP{72CI1Aad;x1n(tbG;15 zQ1Q>0>eRV?yR1(|eiOTHg6)ht>Xqte2`~ntx!|-%$45ePEou+xWGQ|^q_kxjP3e?1l%c%)lo=dJv-5^O}J%ZYoZcfRQ z+X%0p`Yg1t4nO{)>7>#L9KRu>y-k_&a9lTzM39y-gu1y5l!TtJm&cAmGbX9Ov>wuh zYaa4ql>U~I#Q!2a*Rh)a)6R~9>D;x=R+0thIo2#X=@+v;Oy@&YTvIbqeIXt84XS`3x zFVHEf6rIeYL|HUriqwcZ?KZUc5ocekdSt^x*LQjY@Iq;5P3jkvI>eK7-0m5)JeBLL z4kf)~G6$LNTQlyz{CIU&FrT`BjYf-LK*AW$DqG10!$`wAy0MdQ>_PC>LG&JKQ5|8~ zs11)N39*$}9GA?LC8wt+e(~hY&W%FBqn%K=Z3OK;aP}CQ(ylXmbE7a?=RtB%UtpDK z!908WtQR;&sNf&T&=g~FYx Date: Tue, 29 Jan 2019 04:29:34 -0800 Subject: [PATCH 50/65] Add Recollect Waste platform documentation (#8171) * Added Recollect Waste platform documentation. * Using configuration tags now. * Fixed invalid formatting of configuration section. * Fixed invalid formatting of configuration section. * Adjusted scan_interval description as platform has been updated to use built-in scan_interval. * :pencil2: Tweaks --- .../sensor.recollect_waste.markdown | 59 ++++++++++++++++++ .../supported_brands/recollect-waste.png | Bin 0 -> 7135 bytes 2 files changed, 59 insertions(+) create mode 100644 source/_components/sensor.recollect_waste.markdown create mode 100644 source/images/supported_brands/recollect-waste.png diff --git a/source/_components/sensor.recollect_waste.markdown b/source/_components/sensor.recollect_waste.markdown new file mode 100644 index 00000000000..d9fc685b5b6 --- /dev/null +++ b/source/_components/sensor.recollect_waste.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: Recollect Waste Sensor +description: "Instructions on how to set up Recollect Waste sensor within Home Assistant." +date: 2019-01-14 13:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: recollect-waste.png +ha_category: Sensor +ha_release: 0.87 +ha_iot_class: "Cloud Polling" +--- + +The `Recollect Waste` platform allows you to track the next scheduled waste pickup and what type of waste from [Recollect](https://recollect.net/solutions/waste/). To use this sensor your city's waste company must be Recollect and you will need to find your place_id and service_id. + +1. In Chrome open developer tools and go to the network tab. +2. Go to your city's Recollect collection calendar. +3. Search for and select your address in the UI. +4. Watch for a request that looks like + + https://api.recollect.net/api/places/**(place_id)**/services/**(service_id)**/events?nomerge ... + +5. Use the place_id and service_id when configuring the sensor. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: recollect_waste + place_id: YOUR_PLACE_ID + service_id: YOUR_SERVICE_ID +``` + +{% configuration %} +place_id: + description: The place_id used for your neighbourhood. + required: true + type: string +service_id: + description: The service_id used for your city. + required: true + type: string +name: + description: Name the sensor. + required: false + type: string + default: recollect_waste +{% endconfiguration %} + +The default frequency for pulling data from Recollect Waste is once a day (86400 seconds). + +

+The Recollect Waste sensor uses the Recollect API URL to obtain data not an official API from Recollect. Use at your own risk. +

diff --git a/source/images/supported_brands/recollect-waste.png b/source/images/supported_brands/recollect-waste.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e28cbac13f6093d2741fbf17ece7564619a8ae GIT binary patch literal 7135 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 literal 0 HcmV?d00001 From 75b38fdfdb85e455b5a85b17225cde7784b8bd90 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 30 Jan 2019 17:42:40 -0800 Subject: [PATCH 51/65] Add draft 87 post --- _config.yml | 6 +- source/_posts/2019-02-06-release-87.markdown | 540 +++++++++++++++++++ 2 files changed, 543 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2019-02-06-release-87.markdown diff --git a/_config.yml b/_config.yml index a01e12f706e..bbe95b287f0 100644 --- a/_config.yml +++ b/_config.yml @@ -143,9 +143,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 86 -current_patch_version: 4 -date_released: 2019-01-29 +current_minor_version: 87 +current_patch_version: 0 +date_released: 2019-02-06 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown new file mode 100644 index 00000000000..4118738152f --- /dev/null +++ b/source/_posts/2019-02-06-release-87.markdown @@ -0,0 +1,540 @@ +--- +layout: post +title: "0.87: SmartThings, TBD UPDATE DATE " +description: "TBD UPDATE DATE" +date: 2019-01-30 00:01:03 +date_formatted: "February 6, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-02-release-87/smartthings.png +--- + + + +SmartThings + +## {% linkable_title New Platforms %} + +- Add a Zoneminder availability sensor ([@rohankapoorcom] - [#20184]) ([zoneminder docs]) (new-platform) +- Add platform image_processing.qrcode ([@zhujisheng] - [#20215]) ([image_processing.qrcode docs]) (new-platform) +- Add LCN switch platform ([@alengwenus] - [#20267]) ([lcn docs]) ([switch.lcn docs]) (new-platform) +- Fire events for Lutron RadioRA2 keypad buttons ([@koreth] - [#20090]) ([lutron docs]) ([binary_sensor.lutron docs]) (new-platform) +- Add EverLights light component ([@joncar] - [#19817]) ([light.everlights docs]) (new-platform) +- Add device tracker support for EE Brightbox 2 router ([@krygal] - [#19611]) ([device_tracker docs]) (new-platform) +- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([cover.homematicip_cloud docs]) (new-platform) +- Add Danfoss Air HRV support ([@JonasPed] - [#20138]) ([danfoss_air docs]) ([binary_sensor.danfoss_air docs]) ([sensor.danfoss_air docs]) (new-platform) +- Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) +- Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) +- introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) (new-platform) +- Add nilu air_quality platform ([@hfurubotten] - [#19674]) ([air_pollutants docs]) (new-platform) +- Add Iliad Italy (Mobile Telephony Provider) Sensor ([@eliseomartelli] - [#19645]) ([sensor.iliad_italy docs]) (new-platform) +- Add support for HomeKit motion sensor devices ([@Jc2k] - [#20555]) ([homekit_controller docs]) (new-platform) +- Add an Integration sensor ([@dgomes] - [#19703]) ([sensor.integration docs]) (new-platform) +- Add Synology SRM device tracker ([@aerialls] - [#20320]) ([device_tracker docs]) (new-platform) +- Add Recollect Waste ([@stealthhacker] - [#20121]) ([sensor.recollect_waste docs]) (new-platform) +- New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) +- Add support for FRITZ DECT 100 (temp sensor) ([@choss] - [#20308]) ([fritzbox docs]) ([sensor.fritzbox docs]) (new-platform) +- RFC: Add system health component ([@balloob] - [#20436]) ([system_health docs]) ([updater docs]) (new-platform) +- Add sensor platform for Rova Garbage Collection ([@GidoHakvoort] - [#18868]) ([sensor.rova docs]) (new-platform) +- ZHA component rewrite part 4 - add device module ([@dmulcahey] - [#20469]) ([zha docs]) (new-platform) +- Add SmartThings component and switch platform ([@andrewsayre] - [#20148]) ([smartthings docs]) ([switch.smartthings docs]) (new-platform) + +## {% linkable_title New Features %} + +- Add yeelight start_flow service and ability to declare custom effects ([@zewelor] - [#20107]) ([light.yeelight docs]) (new-feature) + +## {% 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 %} + +- Fix unused friendly name for SolarEdge sensor ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) +- Fix typo C02 to CO2 ([@reefab] - [#20306]) ([air_quality docs]) (breaking change) +- Remove creation of geolocation default group ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) +- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([notify:dovado docs]) ([sensor.dovado docs]) (breaking change) +- Reset Brottsplatskartan incident types every day ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) +- Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) +- New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) + +## {% linkable_title All changes %} + +- Remove color call to set lights to black. ([@boralyl] - [#20176]) ([light.hyperion docs]) +- Embed zoneminder platforms into component ([@rohankapoorcom] - [#20182]) ([zoneminder docs]) +- Add a Zoneminder availability sensor ([@rohankapoorcom] - [#20184]) ([zoneminder docs]) (new-platform) +- Add JSON attribute topic to MQTT cover ([@emontnemery] - [#20190]) ([mqtt docs]) +- Add JSON attribute topic to MQTT light ([@emontnemery] - [#20191]) ([mqtt docs]) +- Add JSON attribute topic to MQTT switch ([@emontnemery] - [#20192]) ([mqtt docs]) +- Log exceptions thrown by signal callbacks ([@emontnemery] - [#20015]) +- Set ehendrix23 as owner for harmony platform ([@ehendrix23] - [#20203]) +- Add platform image_processing.qrcode ([@zhujisheng] - [#20215]) ([image_processing.qrcode docs]) (new-platform) +- Add verify_ssl to restful_command and switch.rest (#20199) ([@rohankapoorcom] - [#20207]) ([rest_command docs]) ([switch.rest docs]) +- Fix unused friendly name for SolarEdge sensor ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) +- Fix for issue #19086 ([@JoakimLindbom] - [#20225]) ([media_player.volumio docs]) +- Use local IP to discover IGD device ([@gorynychzmey] - [#20035]) ([upnp docs]) +- Tibber Pulse for homes without subscriptions ([@Danielhiversen] - [#20246]) ([tibber docs]) ([sensor.tibber docs]) +- Added Search Configuration to IMAP Sensor ([@mwegner] - [#19749]) ([sensor.imap docs]) +- Support for relay ports for LCN light platform ([@alengwenus] - [#19632]) ([lcn docs]) ([light.lcn docs]) +- Add LCN switch platform ([@alengwenus] - [#20267]) ([lcn docs]) ([switch.lcn docs]) (new-platform) +- Updated sense library to 0.6.0 ([@kbickar] - [#20271]) ([sense docs]) +- Fire events for Lutron RadioRA2 keypad buttons ([@koreth] - [#20090]) ([lutron docs]) ([binary_sensor.lutron docs]) (new-platform) +- Update Tibber library ([@Danielhiversen] - [#20273]) ([tibber docs]) +- Make Netatmo battery_percent icon dynamic ([@notoriousbdg] - [#20275]) ([sensor.netatmo docs]) +- Add type hints to helpers.condition ([@scop] - [#20266]) ([zone docs]) +- Add discovery_info check to LCN light platform ([@alengwenus] - [#20280]) ([light.lcn docs]) +- Reduce log noise from Envisalink component ([@koreth] - [#20282]) ([envisalink docs]) +- Print a message when reconnected after a connection failure, requirement for IQS silver ([@rytilahti] - [#20261]) ([media_player.songpal docs]) +- Add JSON attribute topic to MQTT vacuum ([@emontnemery] - [#20242]) ([mqtt docs]) +- Add JSON attribute topic to MQTT lock ([@emontnemery] - [#20241]) ([mqtt docs]) +- Add JSON attribute topic to MQTT fan ([@emontnemery] - [#20240]) ([mqtt docs]) +- Add JSON attribute topic to MQTT climate ([@emontnemery] - [#20239]) ([mqtt docs]) +- Add JSON attribute topic to MQTT alarm ([@emontnemery] - [#20238]) ([mqtt docs]) +- Add EverLights light component ([@joncar] - [#19817]) ([light.everlights docs]) (new-platform) +- Added recursive detection of functools.partial. ([@andrewsayre] - [#20284]) +- Added Xiaomi AirPurifier 2S profile ([@foxel] - [#20285]) ([fan.xiaomi_miio docs]) +- Update Tibber lib ([@Danielhiversen] - [#20289]) ([tibber docs]) ([sensor.tibber docs]) +- Remove trailing slash from base_url and added ability to generate webhook path. ([@andrewsayre] - [#20295]) ([http docs]) ([webhook docs]) +- Add radiotherm is_on method to return on/off ([@TD22057] - [#20283]) ([climate.radiotherm docs]) +- Fix typo C02 to CO2 ([@reefab] - [#20306]) ([air_quality docs]) (breaking change) +- Add git to the development Dockerfile ([@kellerza] - [#20276]) +- Add device tracker support for EE Brightbox 2 router ([@krygal] - [#19611]) ([device_tracker docs]) (new-platform) +- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([cover.homematicip_cloud docs]) (new-platform) +- Upgrade python-nest to 4.1.0 ([@awarecan] - [#20313]) ([nest docs]) +- Upgrade youtube_dl to 2019.01.17 ([@fabaff] - [#20318]) +- Add data/data_template/title to alert component ([@syphernl] - [#17616]) ([alert docs]) +- Remove creation of geolocation default group ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) +- Add Octoprint custom path ([@reefab] - [#20302]) +- Update Requirement for PyISY Package in isy994 Component to v1.1.1 ([@shbatm] - [#20349]) ([isy994 docs]) +- Fix mpd logging format string field ([@heytensai] - [#20333]) ([media_player.mpd docs]) +- Add Danfoss Air HRV support ([@JonasPed] - [#20138]) ([danfoss_air docs]) ([binary_sensor.danfoss_air docs]) ([sensor.danfoss_air docs]) (new-platform) +- clean up of islamic_prayer_times ([@Danielhiversen] - [#20352]) ([sensor.islamic_prayer_times docs]) +- Bump homekit==0.12.2 + improve controller reliability ([@Jc2k] - [#20325]) ([homekit_controller docs]) +- Fix entity registry comments ([@balloob] - [#20357]) +- Clean up concord232 ([@Danielhiversen] - [#20353]) ([alarm_control_panel.concord232 docs]) +- Change STATE_UNKOWN to None ([@Danielhiversen] - [#20337]) +- Upgrade TwitterAPI to 2.5.9 ([@fabaff] - [#20372]) ([notify docs]) +- SongPal: do not crash if active_source is not (yet) available - fixes #20343 ([@Censored3] - [#20344]) ([media_player.songpal docs]) +- Add yeelight start_flow service and ability to declare custom effects ([@zewelor] - [#20107]) ([light.yeelight docs]) (new-feature) +- Remove logging from tibber ([@Danielhiversen] - [#20382]) ([sensor.tibber docs]) +- Improve deprecation warnings ([@amelchio] - [#20391]) +- Upgrade emulated_roku to 0.1.8 to fix invalid encodings, fixes #20388 ([@mindigmarton] - [#20390]) ([emulated_roku docs]) +- Upgrade numpy to 1.16.0 ([@fabaff] - [#20396]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) ([image_processing.tensorflow docs]) ([sensor.pollen docs]) +- Update pyhomematic to 0.1.55 ([@danielperna84] - [#20397]) ([homematic docs]) +- Return windspeed and windgust in km/h instead of m/s. ([@jvanderneutstulen] - [#20340]) ([weather.darksky docs]) +- Update device registry of MQTT Switch ([@emontnemery] - [#19540]) ([mqtt docs]) ([switch.mqtt docs]) +- Cleanup if discovered mqtt light can't be added ([@emontnemery] - [#19740]) ([light.mqtt docs]) +- Add character encoding to MQTT automation. ([@emontnemery] - [#20292]) ([automation.mqtt docs]) +- Add LIFX listen port advanced configuration ([@amelchio] - [#20299]) +- Add time_throttle filter to sensor.filter ([@foxel] - [#20334]) ([sensor.filter docs]) +- Upgrade youtube_dl to 2019.01.24 ([@jonudewux] - [#20408]) ([media_extractor docs]) +- Move homekit_controller entity types under homekit_controller platform ([@Jc2k] - [#20376]) ([homekit_controller docs]) +- Fix cast platform album name property ([@zewelor] - [#20411]) ([media_player.cast docs]) +- Fix minor homematicip cloud binary sensor issues ([@coreGreenberet] - [#20398]) ([binary_sensor.homematicip_cloud docs]) +- Fix homematicip cloud alarm_arm_home ([@coreGreenberet] - [#20321]) ([alarm_control_panel.homematicip_cloud docs]) +- Fix HTTP login attempts check triggering too late ([@LouisMT] - [#20431]) ([http docs]) +- WeMo - Fix device discovery issues ([@sqldiablo] - [#20446]) ([wemo docs]) +- Add alarm type workaround zwave lock Yale YRD240 ([@adrum] - [#20438]) ([lock.zwave docs]) +- Error handling for recorder purge ([@amelchio] - [#20424]) +- ZHA component rewrite part 1 ([@dmulcahey] - [#20456]) +- Upgrade astral to 1.8 ([@fabaff] - [#20459]) +- Correct minor comments from PR#20138. ([@JonasPed] - [#20454]) ([danfoss_air docs]) +- Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) +- Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) +- introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) (new-platform) +- Update device registry of MQTT fan ([@emontnemery] - [#20445]) ([mqtt docs]) +- Update device registry of MQTT climate ([@emontnemery] - [#20444]) ([mqtt docs]) +- Update device registry of MQTT sensor ([@emontnemery] - [#20440]) ([mqtt docs]) +- Update device registry of MQTT alarm ([@emontnemery] - [#20439]) +- Update device registry of MQTT cover ([@emontnemery] - [#20443]) ([mqtt docs]) +- Upgrade sqlalchemy to 1.2.16 ([@fabaff] - [#20474]) ([sensor.sql docs]) +- Upgrade psutil to 5.5.0 ([@fabaff] - [#20462]) ([sensor.systemmonitor docs]) +- Include exception details in the error log ([@shaan7] - [#20461]) ([media_player.firetv docs]) +- Use HASS latitude/longitude as defaults for Lyft ([@bachya] - [#20491]) ([sensor.lyft docs]) +- Upgrade zm-py to 0.3.1 ([@rohankapoorcom] - [#20489]) ([zoneminder docs]) +- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([notify:dovado docs]) ([sensor.dovado docs]) (breaking change) +- Add homekit_controller tests ([@Jc2k] - [#20457]) ([homekit_controller docs]) +- Upgrade to async-upnp-client==0.14.3 ([@StevenLooman] - [#20502]) ([upnp docs]) ([media_player.dlna_dmr docs]) +- Upgrade tibber library ([@Danielhiversen] - [#20504]) ([tibber docs]) +- Update device registry of MQTT Lock ([@emontnemery] - [#20501]) ([mqtt docs]) +- Update device registry of MQTT Vacuum ([@emontnemery] - [#20500]) ([mqtt docs]) +- Small cleanup of MQTT platforms ([@emontnemery] - [#20503]) ([mqtt docs]) +- Upgrade mill library ([@Danielhiversen] - [#20514]) ([climate.mill docs]) +- Add nilu air_quality platform ([@hfurubotten] - [#19674]) ([air_pollutants docs]) (new-platform) +- Add Iliad Italy (Mobile Telephony Provider) Sensor ([@eliseomartelli] - [#19645]) ([sensor.iliad_italy docs]) (new-platform) +- Load/unload geofency entities correctly between component and platform ([@rohankapoorcom] - [#20497]) ([geofency docs]) +- Load/unload locative entities correctly between component and platform ([@rohankapoorcom] - [#20498]) ([locative docs]) +- Load/unload gpslogger entities correctly between component and platform ([@rohankapoorcom] - [#20448]) ([gpslogger docs]) ([device_tracker.gpslogger docs]) +- Use more up-to-date version of pyfoscam library ([@davidlie] - [#20419]) ([camera.foscam docs]) +- Reset Brottsplatskartan incident types every day ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) +- Add more HomeKit controller tests ([@Jc2k] - [#20515]) ([homekit_controller docs]) +- Homekit controller BLE groundwork ([@Jc2k] - [#20538]) ([homekit_controller docs]) +- Homekit controller BLE groundwork (part 2) ([@Jc2k] - [#20548]) ([homekit_controller docs]) +- Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) +- Area registry ([@Kane610] - [#20435]) +- Cleanup if discovered mqtt vacuum can't be added ([@emontnemery] - [#20549]) ([mqtt docs]) +- Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) +- Add discovery update support to MQTT camera ([@emontnemery] - [#20529]) ([mqtt docs]) +- ZHA component rewrite part 3 - update helpers ([@dmulcahey] - [#20463]) ([zha docs]) +- Add missing switch for motion_detect ([@perosb] - [#20540]) ([android_ip_webcam docs]) +- Update device registry of MQTT light ([@emontnemery] - [#20441]) ([mqtt docs]) +- Move CONF_UPDATE_INTERVAL to homeassistant.const ([@rohankapoorcom] - [#20526]) +- Add support for HomeKit motion sensor devices ([@Jc2k] - [#20555]) ([homekit_controller docs]) (new-platform) +- Add an Integration sensor ([@dgomes] - [#19703]) ([sensor.integration docs]) (new-platform) +- Allow usernames to be case-insensitive ([@balloob] - [#20558]) +- Add Synology SRM device tracker ([@aerialls] - [#20320]) ([device_tracker docs]) (new-platform) +- Treat each player as a 'device' for non-client devices. ([@mitchellrj] - [#20074]) ([media_player.plex docs]) +- Add Recollect Waste ([@stealthhacker] - [#20121]) ([sensor.recollect_waste docs]) (new-platform) +- New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) +- Homekit Motion Sensor Review feedback ([@Jc2k] - [#20568]) ([homekit_controller docs]) +- add empy all groups view. Makes Brilliant Lightpad work ([@merc1031] - [#20564]) ([emulated_hue docs]) +- Disable extra=vol.ALLOW_EXTRA for MQTT platforms. ([@emontnemery] - [#20562]) ([mqtt docs]) +- html5 notifications add VAPID support ([@quazzie] - [#20415]) ([notify docs]) +- Bump pymodbus to 1.5.2 ([@mindakas] - [#20582]) ([modbus docs]) +- Change Unifi timeout ([@arsaboo] - [#20606]) ([unifi docs]) +- Fix area registry config being loaded ([@balloob] - [#20598]) ([config docs]) +- Philips Hue: add prompt to update bridge/bulb ([@starkillerOG] - [#20590]) ([hue docs]) +- Add support for FRITZ DECT 100 (temp sensor) ([@choss] - [#20308]) ([fritzbox docs]) ([sensor.fritzbox docs]) (new-platform) +- Add remove commmand to entity registry ([@balloob] - [#20597]) ([config docs]) +- Fix map icons ([@bramkragten] - [#20602]) ([map docs]) +- Fix LIFX for single-zone strip extensions ([@amelchio] - [#20604]) ([light.lifx docs]) +- RFC: Add system health component ([@balloob] - [#20436]) ([system_health docs]) ([updater docs]) (new-platform) +- Update to the newest python-wink and fix push updates! ([@w1ll1am23] - [#20594]) ([wink docs]) +- Add lovelace systeam health ([@balloob] - [#20592]) ([lovelace docs]) +- Add sensor platform for Rova Garbage Collection ([@GidoHakvoort] - [#18868]) ([sensor.rova docs]) (new-platform) +- Added code to Abode Alarm control panel ([@arsaboo] - [#20611]) ([alarm_control_panel.abode docs]) +- ZHA component rewrite part 4 - add device module ([@dmulcahey] - [#20469]) ([zha docs]) (new-platform) +- Fix duplicate luftdaten entities ([@jvanderneutstulen] - [#20226]) ([luftdaten docs]) +- Add SmartThings component and switch platform ([@andrewsayre] - [#20148]) ([smartthings docs]) ([switch.smartthings docs]) (new-platform) +- fix #20571 ([@dgomes] - [#20589]) ([sensor.history_stats docs]) + +[#17616]: https://github.com/home-assistant/home-assistant/pull/17616 +[#18868]: https://github.com/home-assistant/home-assistant/pull/18868 +[#19204]: https://github.com/home-assistant/home-assistant/pull/19204 +[#19230]: https://github.com/home-assistant/home-assistant/pull/19230 +[#19540]: https://github.com/home-assistant/home-assistant/pull/19540 +[#19611]: https://github.com/home-assistant/home-assistant/pull/19611 +[#19632]: https://github.com/home-assistant/home-assistant/pull/19632 +[#19645]: https://github.com/home-assistant/home-assistant/pull/19645 +[#19674]: https://github.com/home-assistant/home-assistant/pull/19674 +[#19703]: https://github.com/home-assistant/home-assistant/pull/19703 +[#19718]: https://github.com/home-assistant/home-assistant/pull/19718 +[#19740]: https://github.com/home-assistant/home-assistant/pull/19740 +[#19749]: https://github.com/home-assistant/home-assistant/pull/19749 +[#19794]: https://github.com/home-assistant/home-assistant/pull/19794 +[#19817]: https://github.com/home-assistant/home-assistant/pull/19817 +[#20015]: https://github.com/home-assistant/home-assistant/pull/20015 +[#20035]: https://github.com/home-assistant/home-assistant/pull/20035 +[#20074]: https://github.com/home-assistant/home-assistant/pull/20074 +[#20090]: https://github.com/home-assistant/home-assistant/pull/20090 +[#20107]: https://github.com/home-assistant/home-assistant/pull/20107 +[#20109]: https://github.com/home-assistant/home-assistant/pull/20109 +[#20117]: https://github.com/home-assistant/home-assistant/pull/20117 +[#20121]: https://github.com/home-assistant/home-assistant/pull/20121 +[#20138]: https://github.com/home-assistant/home-assistant/pull/20138 +[#20148]: https://github.com/home-assistant/home-assistant/pull/20148 +[#20176]: https://github.com/home-assistant/home-assistant/pull/20176 +[#20182]: https://github.com/home-assistant/home-assistant/pull/20182 +[#20184]: https://github.com/home-assistant/home-assistant/pull/20184 +[#20190]: https://github.com/home-assistant/home-assistant/pull/20190 +[#20191]: https://github.com/home-assistant/home-assistant/pull/20191 +[#20192]: https://github.com/home-assistant/home-assistant/pull/20192 +[#20203]: https://github.com/home-assistant/home-assistant/pull/20203 +[#20207]: https://github.com/home-assistant/home-assistant/pull/20207 +[#20215]: https://github.com/home-assistant/home-assistant/pull/20215 +[#20224]: https://github.com/home-assistant/home-assistant/pull/20224 +[#20225]: https://github.com/home-assistant/home-assistant/pull/20225 +[#20226]: https://github.com/home-assistant/home-assistant/pull/20226 +[#20238]: https://github.com/home-assistant/home-assistant/pull/20238 +[#20239]: https://github.com/home-assistant/home-assistant/pull/20239 +[#20240]: https://github.com/home-assistant/home-assistant/pull/20240 +[#20241]: https://github.com/home-assistant/home-assistant/pull/20241 +[#20242]: https://github.com/home-assistant/home-assistant/pull/20242 +[#20246]: https://github.com/home-assistant/home-assistant/pull/20246 +[#20261]: https://github.com/home-assistant/home-assistant/pull/20261 +[#20266]: https://github.com/home-assistant/home-assistant/pull/20266 +[#20267]: https://github.com/home-assistant/home-assistant/pull/20267 +[#20271]: https://github.com/home-assistant/home-assistant/pull/20271 +[#20273]: https://github.com/home-assistant/home-assistant/pull/20273 +[#20275]: https://github.com/home-assistant/home-assistant/pull/20275 +[#20276]: https://github.com/home-assistant/home-assistant/pull/20276 +[#20280]: https://github.com/home-assistant/home-assistant/pull/20280 +[#20282]: https://github.com/home-assistant/home-assistant/pull/20282 +[#20283]: https://github.com/home-assistant/home-assistant/pull/20283 +[#20284]: https://github.com/home-assistant/home-assistant/pull/20284 +[#20285]: https://github.com/home-assistant/home-assistant/pull/20285 +[#20289]: https://github.com/home-assistant/home-assistant/pull/20289 +[#20292]: https://github.com/home-assistant/home-assistant/pull/20292 +[#20295]: https://github.com/home-assistant/home-assistant/pull/20295 +[#20299]: https://github.com/home-assistant/home-assistant/pull/20299 +[#20302]: https://github.com/home-assistant/home-assistant/pull/20302 +[#20306]: https://github.com/home-assistant/home-assistant/pull/20306 +[#20308]: https://github.com/home-assistant/home-assistant/pull/20308 +[#20313]: https://github.com/home-assistant/home-assistant/pull/20313 +[#20318]: https://github.com/home-assistant/home-assistant/pull/20318 +[#20320]: https://github.com/home-assistant/home-assistant/pull/20320 +[#20321]: https://github.com/home-assistant/home-assistant/pull/20321 +[#20325]: https://github.com/home-assistant/home-assistant/pull/20325 +[#20332]: https://github.com/home-assistant/home-assistant/pull/20332 +[#20333]: https://github.com/home-assistant/home-assistant/pull/20333 +[#20334]: https://github.com/home-assistant/home-assistant/pull/20334 +[#20337]: https://github.com/home-assistant/home-assistant/pull/20337 +[#20338]: https://github.com/home-assistant/home-assistant/pull/20338 +[#20339]: https://github.com/home-assistant/home-assistant/pull/20339 +[#20340]: https://github.com/home-assistant/home-assistant/pull/20340 +[#20344]: https://github.com/home-assistant/home-assistant/pull/20344 +[#20349]: https://github.com/home-assistant/home-assistant/pull/20349 +[#20352]: https://github.com/home-assistant/home-assistant/pull/20352 +[#20353]: https://github.com/home-assistant/home-assistant/pull/20353 +[#20357]: https://github.com/home-assistant/home-assistant/pull/20357 +[#20372]: https://github.com/home-assistant/home-assistant/pull/20372 +[#20376]: https://github.com/home-assistant/home-assistant/pull/20376 +[#20382]: https://github.com/home-assistant/home-assistant/pull/20382 +[#20390]: https://github.com/home-assistant/home-assistant/pull/20390 +[#20391]: https://github.com/home-assistant/home-assistant/pull/20391 +[#20396]: https://github.com/home-assistant/home-assistant/pull/20396 +[#20397]: https://github.com/home-assistant/home-assistant/pull/20397 +[#20398]: https://github.com/home-assistant/home-assistant/pull/20398 +[#20408]: https://github.com/home-assistant/home-assistant/pull/20408 +[#20411]: https://github.com/home-assistant/home-assistant/pull/20411 +[#20415]: https://github.com/home-assistant/home-assistant/pull/20415 +[#20419]: https://github.com/home-assistant/home-assistant/pull/20419 +[#20424]: https://github.com/home-assistant/home-assistant/pull/20424 +[#20431]: https://github.com/home-assistant/home-assistant/pull/20431 +[#20435]: https://github.com/home-assistant/home-assistant/pull/20435 +[#20436]: https://github.com/home-assistant/home-assistant/pull/20436 +[#20438]: https://github.com/home-assistant/home-assistant/pull/20438 +[#20439]: https://github.com/home-assistant/home-assistant/pull/20439 +[#20440]: https://github.com/home-assistant/home-assistant/pull/20440 +[#20441]: https://github.com/home-assistant/home-assistant/pull/20441 +[#20443]: https://github.com/home-assistant/home-assistant/pull/20443 +[#20444]: https://github.com/home-assistant/home-assistant/pull/20444 +[#20445]: https://github.com/home-assistant/home-assistant/pull/20445 +[#20446]: https://github.com/home-assistant/home-assistant/pull/20446 +[#20448]: https://github.com/home-assistant/home-assistant/pull/20448 +[#20454]: https://github.com/home-assistant/home-assistant/pull/20454 +[#20456]: https://github.com/home-assistant/home-assistant/pull/20456 +[#20457]: https://github.com/home-assistant/home-assistant/pull/20457 +[#20459]: https://github.com/home-assistant/home-assistant/pull/20459 +[#20460]: https://github.com/home-assistant/home-assistant/pull/20460 +[#20461]: https://github.com/home-assistant/home-assistant/pull/20461 +[#20462]: https://github.com/home-assistant/home-assistant/pull/20462 +[#20463]: https://github.com/home-assistant/home-assistant/pull/20463 +[#20469]: https://github.com/home-assistant/home-assistant/pull/20469 +[#20474]: https://github.com/home-assistant/home-assistant/pull/20474 +[#20489]: https://github.com/home-assistant/home-assistant/pull/20489 +[#20491]: https://github.com/home-assistant/home-assistant/pull/20491 +[#20497]: https://github.com/home-assistant/home-assistant/pull/20497 +[#20498]: https://github.com/home-assistant/home-assistant/pull/20498 +[#20500]: https://github.com/home-assistant/home-assistant/pull/20500 +[#20501]: https://github.com/home-assistant/home-assistant/pull/20501 +[#20502]: https://github.com/home-assistant/home-assistant/pull/20502 +[#20503]: https://github.com/home-assistant/home-assistant/pull/20503 +[#20504]: https://github.com/home-assistant/home-assistant/pull/20504 +[#20514]: https://github.com/home-assistant/home-assistant/pull/20514 +[#20515]: https://github.com/home-assistant/home-assistant/pull/20515 +[#20526]: https://github.com/home-assistant/home-assistant/pull/20526 +[#20529]: https://github.com/home-assistant/home-assistant/pull/20529 +[#20538]: https://github.com/home-assistant/home-assistant/pull/20538 +[#20540]: https://github.com/home-assistant/home-assistant/pull/20540 +[#20548]: https://github.com/home-assistant/home-assistant/pull/20548 +[#20549]: https://github.com/home-assistant/home-assistant/pull/20549 +[#20555]: https://github.com/home-assistant/home-assistant/pull/20555 +[#20558]: https://github.com/home-assistant/home-assistant/pull/20558 +[#20562]: https://github.com/home-assistant/home-assistant/pull/20562 +[#20564]: https://github.com/home-assistant/home-assistant/pull/20564 +[#20568]: https://github.com/home-assistant/home-assistant/pull/20568 +[#20582]: https://github.com/home-assistant/home-assistant/pull/20582 +[#20589]: https://github.com/home-assistant/home-assistant/pull/20589 +[#20590]: https://github.com/home-assistant/home-assistant/pull/20590 +[#20592]: https://github.com/home-assistant/home-assistant/pull/20592 +[#20594]: https://github.com/home-assistant/home-assistant/pull/20594 +[#20597]: https://github.com/home-assistant/home-assistant/pull/20597 +[#20598]: https://github.com/home-assistant/home-assistant/pull/20598 +[#20602]: https://github.com/home-assistant/home-assistant/pull/20602 +[#20604]: https://github.com/home-assistant/home-assistant/pull/20604 +[#20606]: https://github.com/home-assistant/home-assistant/pull/20606 +[#20611]: https://github.com/home-assistant/home-assistant/pull/20611 +[@Censored3]: https://github.com/Censored3 +[@Danielhiversen]: https://github.com/Danielhiversen +[@GidoHakvoort]: https://github.com/GidoHakvoort +[@Jc2k]: https://github.com/Jc2k +[@JoakimLindbom]: https://github.com/JoakimLindbom +[@JonasPed]: https://github.com/JonasPed +[@Kane610]: https://github.com/Kane610 +[@LouisMT]: https://github.com/LouisMT +[@MatteGary]: https://github.com/MatteGary +[@StevenLooman]: https://github.com/StevenLooman +[@TD22057]: https://github.com/TD22057 +[@adrum]: https://github.com/adrum +[@aerialls]: https://github.com/aerialls +[@alengwenus]: https://github.com/alengwenus +[@amelchio]: https://github.com/amelchio +[@andrewsayre]: https://github.com/andrewsayre +[@arsaboo]: https://github.com/arsaboo +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@boralyl]: https://github.com/boralyl +[@bramkragten]: https://github.com/bramkragten +[@choss]: https://github.com/choss +[@chrillux]: https://github.com/chrillux +[@coreGreenberet]: https://github.com/coreGreenberet +[@danielperna84]: https://github.com/danielperna84 +[@danielsjf]: https://github.com/danielsjf +[@davidlie]: https://github.com/davidlie +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@ehendrix23]: https://github.com/ehendrix23 +[@eliseomartelli]: https://github.com/eliseomartelli +[@emontnemery]: https://github.com/emontnemery +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@foxel]: https://github.com/foxel +[@gorynychzmey]: https://github.com/gorynychzmey +[@heytensai]: https://github.com/heytensai +[@hfurubotten]: https://github.com/hfurubotten +[@joncar]: https://github.com/joncar +[@jonudewux]: https://github.com/jonudewux +[@jvanderneutstulen]: https://github.com/jvanderneutstulen +[@kbickar]: https://github.com/kbickar +[@kellerza]: https://github.com/kellerza +[@koreth]: https://github.com/koreth +[@krygal]: https://github.com/krygal +[@merc1031]: https://github.com/merc1031 +[@mindakas]: https://github.com/mindakas +[@mindigmarton]: https://github.com/mindigmarton +[@mitchellrj]: https://github.com/mitchellrj +[@mwegner]: https://github.com/mwegner +[@mxworm]: https://github.com/mxworm +[@notoriousbdg]: https://github.com/notoriousbdg +[@perosb]: https://github.com/perosb +[@quazzie]: https://github.com/quazzie +[@reefab]: https://github.com/reefab +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@shaan7]: https://github.com/shaan7 +[@shbatm]: https://github.com/shbatm +[@sqldiablo]: https://github.com/sqldiablo +[@starkillerOG]: https://github.com/starkillerOG +[@stealthhacker]: https://github.com/stealthhacker +[@syphernl]: https://github.com/syphernl +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zewelor]: https://github.com/zewelor +[@zhujisheng]: https://github.com/zhujisheng +[air_pollutants docs]: /components/air_pollutants/ +[air_quality docs]: /components/air_quality/ +[alarm_control_panel docs]: /components/alarm_control_panel/ +[alarm_control_panel.abode docs]: /components/alarm_control_panel.abode/ +[alarm_control_panel.concord232 docs]: /components/alarm_control_panel.concord232/ +[alarm_control_panel.homematicip_cloud docs]: /components/alarm_control_panel.homematicip_cloud/ +[alert docs]: /components/alert/ +[ambient_station docs]: /components/ambient_station/ +[android_ip_webcam docs]: /components/android_ip_webcam/ +[automation.mqtt docs]: /docs/automation/trigger/#mqtt-trigger +[binary_sensor.danfoss_air docs]: /components/binary_sensor.danfoss_air/ +[binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ +[binary_sensor.lutron docs]: /components/binary_sensor.lutron/ +[binary_sensor.trend docs]: /components/binary_sensor.trend/ +[camera.foscam docs]: /components/camera.foscam/ +[climate.mill docs]: /components/climate.mill/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[config docs]: /components/config/ +[cover.homematicip_cloud docs]: /components/cover.homematicip_cloud/ +[danfoss_air docs]: /components/danfoss_air/ +[device_tracker docs]: /components/device_tracker/ +[device_tracker.gpslogger docs]: /components/device_tracker.gpslogger/ +[dovado docs]: /components/dovado/ +[emulated_hue docs]: /components/emulated_hue/ +[emulated_roku docs]: /components/emulated_roku/ +[envisalink docs]: /components/envisalink/ +[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ +[fritzbox docs]: /components/fritzbox/ +[geo_location docs]: /components/geo_location/ +[geofency docs]: /components/geofency/ +[gpslogger docs]: /components/gpslogger/ +[homekit_controller docs]: /components/homekit_controller/ +[homematic docs]: /components/homematic/ +[http docs]: /components/http/ +[hue docs]: /components/hue/ +[image_processing.opencv docs]: /components/image_processing.opencv/ +[image_processing.qrcode docs]: /components/image_processing.qrcode/ +[image_processing.tensorflow docs]: /components/image_processing.tensorflow/ +[isy994 docs]: /components/isy994/ +[lcn docs]: /components/lcn/ +[light.everlights docs]: /components/light.everlights/ +[light.hyperion docs]: /components/light.hyperion/ +[light.lcn docs]: /components/light.lcn/ +[light.lifx docs]: /components/light.lifx/ +[light.mqtt docs]: /components/light.mqtt/ +[light.yeelight docs]: /components/light.yeelight/ +[locative docs]: /components/locative/ +[lock.zwave docs]: /components/lock.zwave/ +[lovelace docs]: /components/lovelace/ +[luftdaten docs]: /components/luftdaten/ +[lutron docs]: /components/lutron/ +[map docs]: /components/map/ +[media_extractor docs]: /components/media_extractor/ +[media_player.cast docs]: /components/media_player.cast/ +[media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/ +[media_player.firetv docs]: /components/media_player.firetv/ +[media_player.mpd docs]: /components/media_player.mpd/ +[media_player.plex docs]: /components/media_player.plex/ +[media_player.songpal docs]: /components/media_player.songpal/ +[media_player.volumio docs]: /components/media_player.volumio/ +[modbus docs]: /components/modbus/ +[mqtt docs]: /components/mqtt/ +[nest docs]: /components/nest/ +[notify docs]: /components/notify/ +[notify:dovado docs]: /components/notify:dovado/ +[rest_command docs]: /components/rest_command/ +[sense docs]: /components/sense/ +[sensor.ambient_station docs]: /components/sensor.ambient_station/ +[sensor.brottsplatskartan docs]: /components/sensor.brottsplatskartan/ +[sensor.co2signal docs]: /components/sensor.co2signal/ +[sensor.danfoss_air docs]: /components/sensor.danfoss_air/ +[sensor.dovado docs]: /components/sensor.dovado/ +[sensor.filter docs]: /components/sensor.filter/ +[sensor.fritzbox docs]: /components/sensor.fritzbox/ +[sensor.history_stats docs]: /components/sensor.history_stats/ +[sensor.iliad_italy docs]: /components/sensor.iliad_italy/ +[sensor.imap docs]: /components/sensor.imap/ +[sensor.integration docs]: /components/sensor.integration/ +[sensor.islamic_prayer_times docs]: /components/sensor.islamic_prayer_times/ +[sensor.lyft docs]: /components/sensor.lyft/ +[sensor.netatmo docs]: /components/sensor.netatmo/ +[sensor.pollen docs]: /components/sensor.pollen/ +[sensor.recollect_waste docs]: /components/sensor.recollect_waste/ +[sensor.rova docs]: /components/sensor.rova/ +[sensor.solaredge docs]: /components/sensor.solaredge/ +[sensor.sql docs]: /components/sensor.sql/ +[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ +[sensor.tibber docs]: /components/sensor.tibber/ +[sensor.transmission docs]: /components/sensor.transmission/ +[sensor.utility_meter docs]: /components/sensor.utility_meter/ +[smartthings docs]: /components/smartthings/ +[switch.lcn docs]: /components/switch.lcn/ +[switch.mqtt docs]: /components/switch.mqtt/ +[switch.rest docs]: /components/switch.rest/ +[switch.smartthings docs]: /components/switch.smartthings/ +[system_health docs]: /components/system_health/ +[tibber docs]: /components/tibber/ +[transmission docs]: /components/transmission/ +[unifi docs]: /components/unifi/ +[updater docs]: /components/updater/ +[upnp docs]: /components/upnp/ +[weather.darksky docs]: /components/weather.darksky/ +[webhook docs]: /components/webhook/ +[wemo docs]: /components/wemo/ +[wink docs]: /components/wink/ +[zha docs]: /components/zha/ +[zone docs]: /components/zone/ +[zoneminder docs]: /components/zoneminder/ From 5eb4153a7fd3f18b54da76aff8871477ddb85312 Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Wed, 30 Jan 2019 19:43:30 -0600 Subject: [PATCH 52/65] New component SmartThings and switch platform (#8184) * Added SmartThings component and switch platform documentation. * Minor changes per style guidelines * Embedded switch platform. * :pencil2: Tweaks --- source/_components/smartthings.markdown | 73 ++++++++++++++++++ .../_components/smartthings.switch.markdown | 19 +++++ .../supported_brands/samsung_smartthings.png | Bin 0 -> 7368 bytes 3 files changed, 92 insertions(+) create mode 100644 source/_components/smartthings.markdown create mode 100644 source/_components/smartthings.switch.markdown create mode 100644 source/images/supported_brands/samsung_smartthings.png diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown new file mode 100644 index 00000000000..961e98c6241 --- /dev/null +++ b/source/_components/smartthings.markdown @@ -0,0 +1,73 @@ +--- +layout: page +title: "SmartThings" +description: "Instructions on setting up Samsung SmartThings within Home Assistant." +date: 2018-01-14 00:00 +sidebar: true +comments: false +sharing: true +footer: true +featured: true +logo: samsung_smartthings.png +ha_category: Hub +ha_release: "" +ha_iot_class: "Cloud Push" +--- + +Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings component is the main component to integrate all SmartThings related platforms. The basic features of this integration include: + +1. Controlling SmartThings devices with pushed state updates from SmartThings. +2. Entities automatically added, removed, or updated when changed in SmartThings (upon Home Assistant restart). +3. Support for multiple SmartThings accounts and locations, each represented as a unique integration in the front-end configuration. +4. No brokers, bridges, or additional dependencies. + +## {% linkable_title Basic requirements %} + +1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions). +2. Home Assistant setup for [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.* +3. [`base_url` of the http component](/components/http#base_url) set the URL that Home Assistant is available on the internet. + +## {% linkable_title Setup instructions %} + +### {% linkable_title Create personal access token %} + +1. Log into the [personal access tokens page](https://account.smartthings.com/tokens) and click '[Generate new token](https://account.smartthings.com/tokens/new)' +2. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes: + - Devices (all) + - Installed Apps (all) + - Locations (all) + - Apps (all) + - Schedules (all) + - Scenes (all) +3. Click 'Generate token'. When the token is displayed, copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again. + +### {% linkable_title Configure Home Assistant %} + +

+The SmartThings component is configured exclusively through the front-end. Manual setup through `configuration.yaml` is not available at this time. +

+ +1. From the Home Assistant front-end, navigate to 'Configuration' then 'Integrations'. Under 'Set up a new integration' locate 'SmartThings' and click 'Configure'. +2. Enter the personal access token created above and click 'Submit' +3. When prompted, install the SmartApp: + 1. Open the SmartThings mobile app. Navigate to 'Automation' and select the 'SmartApps' tab. + 2. Click 'Add a SmartApp', scroll to the bottom, and select 'My Apps', then choose 'Home Assistant'. + 3. Optionally change the display name and press 'Done' + 4. Authorize the app by pressing 'Allow' +4. Return to Home Assistant and click 'Submit'. + +

+Advanced: If you have multiple locations in SmartThings, each can be integrated into Home Assistant. Follow the steps above, then for each subsequent location, install the SmartApp and it will automatically add to Home Assistant. This can be completed during step 3 (install SmartApp) above or at any time after that. +

+ +## {% linkable_title Additional information %} + +### Supported capabilities/device mapping + +SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component follows the following rules to represent those as entities in Home Assistant: + +| Capability |Platform +|-------------------|------------------------------------------------------------| +| [switch](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) | [switch](/components/smartthings.switch) + +Support for additional capabilities will be added in the future. diff --git a/source/_components/smartthings.switch.markdown b/source/_components/smartthings.switch.markdown new file mode 100644 index 00000000000..0727e9f4a75 --- /dev/null +++ b/source/_components/smartthings.switch.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "SmartThings Switch" +description: "Instructions on setting up Samsung SmartThings switches within Home Assistant." +date: 2018-01-14 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: samsung_smartthings.png +ha_category: Switch +ha_release: "" +ha_iot_class: "Cloud Push" +--- + +The SmartThings switch platform lets you control Samsung SmartThings connected devices that have the [switch capability](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch). + +

+Entities for this platform are loaded automatically when you configure the [SmartThings component](/components/smartthings). This platform cannot be manually configured.

\ No newline at end of file diff --git a/source/images/supported_brands/samsung_smartthings.png b/source/images/supported_brands/samsung_smartthings.png new file mode 100644 index 0000000000000000000000000000000000000000..585c1db0d9c0de7b5d7c1ad3f93f7212c73dd306 GIT binary patch literal 7368 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 Date: Wed, 30 Jan 2019 21:47:49 -0800 Subject: [PATCH 53/65] Add MDI link --- source/_posts/2019-02-06-release-87.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown index 4118738152f..5b0fb71821b 100644 --- a/source/_posts/2019-02-06-release-87.markdown +++ b/source/_posts/2019-02-06-release-87.markdown @@ -15,6 +15,12 @@ og_image: /images/blog/2019-02-release-87/smartthings.png SmartThings +Areas + +Entity Registry UI + +Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesignicons.com/upgrade + ## {% linkable_title New Platforms %} - Add a Zoneminder availability sensor ([@rohankapoorcom] - [#20184]) ([zoneminder docs]) (new-platform) From 147bc4e26c564e62bc4cfbb492151eeb9bd65ba9 Mon Sep 17 00:00:00 2001 From: Gido Date: Thu, 31 Jan 2019 03:48:10 +0100 Subject: [PATCH 54/65] Added documentation for ROVA sensor (#7780) * Added documentation for ROVA sensor * Update source/_components/sensor.rova.markdown Fixed example configuration Co-Authored-By: GidoHakvoort * Update sensor.rova.markdown * Update sensor.rova.markdown * Update sensor.rova.markdown * :pencil2: Tweak * Update sensor.rova.markdown Update ha_release --- source/_components/sensor.rova.markdown | 99 ++++++++++++++++++++++++ source/images/supported_brands/rova.jpg | Bin 0 -> 12391 bytes 2 files changed, 99 insertions(+) create mode 100644 source/_components/sensor.rova.markdown create mode 100644 source/images/supported_brands/rova.jpg diff --git a/source/_components/sensor.rova.markdown b/source/_components/sensor.rova.markdown new file mode 100644 index 00000000000..3ccc888443e --- /dev/null +++ b/source/_components/sensor.rova.markdown @@ -0,0 +1,99 @@ +--- +layout: page +title: "ROVA Sensor" +description: "Instructions on how to integrate ROVA sensor within Home Assistant." +date: 2018-12-08 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rova.jpg +ha_category: Sensor +ha_release: 0.87 +ha_iot_class: "Cloud Polling" +--- + +[ROVA](https://rova.nl) is a waste collection company that operates in the center and east of the Netherlands. The `rova` platform uses an unofficial [ROVA](https://rova.nl) API to allow you to get your waste collection schedule and integrate this in your Home Assistant installation. + +## {% linkable_title Configuration %} + +To use the ROVA sensor in your installation, add the following to your configuration.yaml file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rova + zip_code: ZIP_CODE + house_number: HOUSE_NUMBER +``` + +{% configuration %} +zip_code: + description: Your zip code. + required: true + type: string +house_number: + description: Your house number. + required: true + type: string +name: + description: Let you overwrite the name of the device in the frontend. + required: false + default: Rova + type: string +monitored_conditions: + description: ROVA information to be monitored. The following collection dates can be monitored. + required: false + type: list + keys: + bio: + description: Upcoming collection date of your biodegradable waste + paper: + description: Upcoming collection date of your paper waste + plastic: + description: upcoming collection date of your plastic waste + residual: + description: Upcoming collection date of your general waste +{% endconfiguration %} + +If no **monitored_conditions** are specified, only **bio** will be enabled. + +### {% linkable_title Full configuration sample %} + +A full configuration entry would look like the sample below. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rova + zip_code: ZIP_CODE + house_number: HOUSE_NUMBER + name: Rova + monitored_conditions: + - bio + - paper + - plastic + - residual +``` + +To have your Home Assistant installation remind you of upcoming waste collections, combine the `rova` platform with some [Automations](/docs/automation/) and a [notification platform](/components/notify/). + +{% raw %} +```yaml +# Example configuration.yaml entry for Rova waste collection reminder +automation: + - id: rova-garbage-bio-reminder + alias: 'Send Rova Bio waste collection reminder' + hide_entity: true + trigger: + - platform: time + at: '19:00:00' + condition: + - condition: template + value_template: "{% if (as_timestamp(states.sensor.rova_garbage_gft.state) - as_timestamp(now())) < 43200 %}true{% endif %}" + action: + - service: NOTIFICATION_SERVICE + data: + message: 'Reminder: put out biowaste bin' +``` +{% endraw %} diff --git a/source/images/supported_brands/rova.jpg b/source/images/supported_brands/rova.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ead2f2b7cfec7754a7340a5a72bf7c722e7e53b2 GIT binary patch literal 12391 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 literal 0 HcmV?d00001 From e324c3f7da264d589574840834172092ea7f2e19 Mon Sep 17 00:00:00 2001 From: choss Date: Thu, 31 Jan 2019 03:58:20 +0100 Subject: [PATCH 55/65] adding documentation for fritz.dect 100 sensor component (#8242) * adding documentation for new sensor component * :pencil2: Tweak * :pencil2: Add HA Release --- source/_components/sensor.fritzbox.markdown | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 source/_components/sensor.fritzbox.markdown diff --git a/source/_components/sensor.fritzbox.markdown b/source/_components/sensor.fritzbox.markdown new file mode 100644 index 00000000000..fdf6ca7dcba --- /dev/null +++ b/source/_components/sensor.fritzbox.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Fritzbox temperature sensor" +description: "Instructions on how to integrate the AVM Fritzbox temperature sensor." +date: 2019-01-22 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: avm.png +ha_category: Sensor +ha_release: 0.87 +ha_iot_class: "Local Polling" +--- + +To get AVM Fritzbox temperature sensor (e.g. FRITZ!DECT Repeater 100) follow the instructions for the [Fritzbox component](/components/fritzbox/). + +## {% linkable_title Attributes %} + +The are several attributes that can be useful for automations and templates. + +| Attribute | Description | +| --------- | ----------- | +| `device_locked` | The state of the key lock at the device. +| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. +| `temperature_unit` | The unit of the temperature sensor. +| `temperature` | The current temperature sensor reading. From 1be4adde4d847709dc8e612a65ef21d679704859 Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Wed, 30 Jan 2019 21:26:48 -0600 Subject: [PATCH 56/65] Add ha_version for SmartThings component and switch (#8355) --- source/_components/smartthings.markdown | 2 +- source/_components/smartthings.switch.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index 961e98c6241..1b17d6fc63a 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -10,7 +10,7 @@ footer: true featured: true logo: samsung_smartthings.png ha_category: Hub -ha_release: "" +ha_release: "0.87" ha_iot_class: "Cloud Push" --- diff --git a/source/_components/smartthings.switch.markdown b/source/_components/smartthings.switch.markdown index 0727e9f4a75..b7e77915ba6 100644 --- a/source/_components/smartthings.switch.markdown +++ b/source/_components/smartthings.switch.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: samsung_smartthings.png ha_category: Switch -ha_release: "" +ha_release: "0.87" ha_iot_class: "Cloud Push" --- From 88a61503dc47ac29b648ab9f3e03a732fde3d7d2 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Thu, 31 Jan 2019 15:29:35 +0100 Subject: [PATCH 57/65] =?UTF-8?q?=F0=9F=9A=9C=20Merges/Redirect=20SmartThi?= =?UTF-8?q?ngs=20component=20pages=20(#8357)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_components/smartthings.markdown | 11 ++++++++++- .../_components/smartthings.switch.markdown | 19 ------------------- 2 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 source/_components/smartthings.switch.markdown diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index 1b17d6fc63a..e82b4c3c7fc 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -9,9 +9,14 @@ sharing: true footer: true featured: true logo: samsung_smartthings.png -ha_category: Hub +ha_category: + - Hub + - Switch ha_release: "0.87" ha_iot_class: "Cloud Push" +redirect_from: + - /components/smartthings.switch/ + - /components/switch.smartthings/ --- Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings component is the main component to integrate all SmartThings related platforms. The basic features of this integration include: @@ -21,6 +26,10 @@ Samsung SmartThings is integrated into Home Assistant through the SmartThings Cl 3. Support for multiple SmartThings accounts and locations, each represented as a unique integration in the front-end configuration. 4. No brokers, bridges, or additional dependencies. +There is currently support for the following device types within Home Assistant: + +- Switch ([SmartThings switch platform](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch)) + ## {% linkable_title Basic requirements %} 1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions). diff --git a/source/_components/smartthings.switch.markdown b/source/_components/smartthings.switch.markdown deleted file mode 100644 index b7e77915ba6..00000000000 --- a/source/_components/smartthings.switch.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "SmartThings Switch" -description: "Instructions on setting up Samsung SmartThings switches within Home Assistant." -date: 2018-01-14 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: samsung_smartthings.png -ha_category: Switch -ha_release: "0.87" -ha_iot_class: "Cloud Push" ---- - -The SmartThings switch platform lets you control Samsung SmartThings connected devices that have the [switch capability](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch). - -

-Entities for this platform are loaded automatically when you configure the [SmartThings component](/components/smartthings). This platform cannot be manually configured.

\ No newline at end of file From 253a13e025cad8a8aab3f0d0bab8d5127073cac7 Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Sat, 2 Feb 2019 09:48:00 -0600 Subject: [PATCH 58/65] Add SmartThings Light platform (#8365) * Add SmartThings Light platform docs * Minor tweaks * Specify the classic ST mobile app * Updated ha_version --- source/_components/smartthings.light.markdown | 27 +++++++++++++++++++ source/_components/smartthings.markdown | 7 ++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 source/_components/smartthings.light.markdown diff --git a/source/_components/smartthings.light.markdown b/source/_components/smartthings.light.markdown new file mode 100644 index 00000000000..6c9723b2c79 --- /dev/null +++ b/source/_components/smartthings.light.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "SmartThings Light" +description: "Instructions on setting up Samsung SmartThings lights within Home Assistant." +date: 2018-01-30 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: samsung_smartthings.png +ha_category: Light +ha_release: "0.87" +ha_iot_class: "Cloud Push" +--- + +The SmartThings light platform lets you control Samsung SmartThings connected devices that have light-control related capabilities. + +| Capability |Light Features +|-------------------|------------------------------------------------------------| +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` +| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` +| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` + +For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities above in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. + +

+Entities for this platform are loaded automatically when you configure the [SmartThings component](/components/smartthings). This platform cannot be manually configured.

\ No newline at end of file diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index e82b4c3c7fc..e622cf93361 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -59,7 +59,7 @@ The SmartThings component is configured exclusively through the front-end. Manua 1. From the Home Assistant front-end, navigate to 'Configuration' then 'Integrations'. Under 'Set up a new integration' locate 'SmartThings' and click 'Configure'. 2. Enter the personal access token created above and click 'Submit' 3. When prompted, install the SmartApp: - 1. Open the SmartThings mobile app. Navigate to 'Automation' and select the 'SmartApps' tab. + 1. Open the SmartThings Classic mobile app. Navigate to 'Automation' and select the 'SmartApps' tab. 2. Click 'Add a SmartApp', scroll to the bottom, and select 'My Apps', then choose 'Home Assistant'. 3. Optionally change the display name and press 'Done' 4. Authorize the app by pressing 'Allow' @@ -75,8 +75,9 @@ Advanced: If you have multiple locations in SmartThings, each can be integrated SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component follows the following rules to represent those as entities in Home Assistant: -| Capability |Platform +| Capabilities |Platform |-------------------|------------------------------------------------------------| -| [switch](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) | [switch](/components/smartthings.switch) +| `switchLevel`, `colorControl` and `colorTemperature` | [light](/components/smartthings.light) +| `switch` | [switch](/components/smartthings.switch) Support for additional capabilities will be added in the future. From 74bd9dc978d49d75a5207129ed74f097d345a659 Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Tue, 5 Feb 2019 11:13:32 -0600 Subject: [PATCH 59/65] Add SmartThings event and platform docs (#8392) * Conslidated SmartThings platforms docs * Tweaks * Added button event docs * Fixed event table * Clarifications * Clean-up --- source/_components/smartthings.light.markdown | 27 ------ source/_components/smartthings.markdown | 90 ++++++++++++++++--- 2 files changed, 79 insertions(+), 38 deletions(-) delete mode 100644 source/_components/smartthings.light.markdown diff --git a/source/_components/smartthings.light.markdown b/source/_components/smartthings.light.markdown deleted file mode 100644 index 6c9723b2c79..00000000000 --- a/source/_components/smartthings.light.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "SmartThings Light" -description: "Instructions on setting up Samsung SmartThings lights within Home Assistant." -date: 2018-01-30 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: samsung_smartthings.png -ha_category: Light -ha_release: "0.87" -ha_iot_class: "Cloud Push" ---- - -The SmartThings light platform lets you control Samsung SmartThings connected devices that have light-control related capabilities. - -| Capability |Light Features -|-------------------|------------------------------------------------------------| -| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` -| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` -| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` - -For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities above in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. - -

-Entities for this platform are loaded automatically when you configure the [SmartThings component](/components/smartthings). This platform cannot be manually configured.

\ No newline at end of file diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown index e622cf93361..c3301c68331 100644 --- a/source/_components/smartthings.markdown +++ b/source/_components/smartthings.markdown @@ -10,11 +10,20 @@ footer: true featured: true logo: samsung_smartthings.png ha_category: + - Binary Sensor + - Fan - Hub + - Light - Switch ha_release: "0.87" ha_iot_class: "Cloud Push" redirect_from: + - /components/smartthings.binary_sensor/ + - /components/binary_sensor.smartthings/ + - /components/smartthings.fan/ + - /components/fan.smartthings/ + - /components/smartthings.light/ + - /components/light.smartthings/ - /components/smartthings.switch/ - /components/switch.smartthings/ --- @@ -26,10 +35,6 @@ Samsung SmartThings is integrated into Home Assistant through the SmartThings Cl 3. Support for multiple SmartThings accounts and locations, each represented as a unique integration in the front-end configuration. 4. No brokers, bridges, or additional dependencies. -There is currently support for the following device types within Home Assistant: - -- Switch ([SmartThings switch platform](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch)) - ## {% linkable_title Basic requirements %} 1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions). @@ -69,15 +74,78 @@ The SmartThings component is configured exclusively through the front-end. Manua Advanced: If you have multiple locations in SmartThings, each can be integrated into Home Assistant. Follow the steps above, then for each subsequent location, install the SmartApp and it will automatically add to Home Assistant. This can be completed during step 3 (install SmartApp) above or at any time after that.

-## {% linkable_title Additional information %} +## {% linkable_title Events %} -### Supported capabilities/device mapping +The SmartThings component triggers events for select device capabilities. -SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component follows the following rules to represent those as entities in Home Assistant: +### {% linkable_title smartthings.button %} -| Capabilities |Platform -|-------------------|------------------------------------------------------------| -| `switchLevel`, `colorControl` and `colorTemperature` | [light](/components/smartthings.light) -| `switch` | [switch](/components/smartthings.switch) +The component will trigger an event when a device with the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability is actuated and can be used to trigger automations within Home Assistant. Below is an example of the data payload: + +```json +{ + "component_id": "main", + "device_id": "42a16cf2-fef7-4ee8-b4a6-d32cb65474b7", + "location_id": "2a54b9fa-f66c-42d9-8488-d8f036b980c8", + "value": "pushed", + "name": "Scene Button" +} +``` + +| Attribute | Description +|---------------------------|------------------------------------------------------------------| +`component_id` | Describes which component of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. +`device_id` | The unique id of the device in SmartThings. This can be located in the HASS device registry or in the [SmartThings Groovy IDE](https://developers.smartthings.com/). +`location_id` | The unique id of the location the device is part of. This can be found in the config entry registry or in the [SmartThings Groovy IDE](https://developers.smartthings.com/). +`value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). +`name` | The name given to the device in SmartThings. + +## {% linkable_title Platforms %} + +SmartThings represents devices as a set of [capabilities](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html) and the SmartThings component mapps those to entity platforms in Home Assistant. A single device may be represented by one or more platforms. + +| Platform |Capabilities +|---------------------------------|--------------------------------------------------------------------------------------------| +[binary_sensor](#binary-sensor) | `accelerationSensor`, `contactSensor`, `filterStatus`, `motionSensor`, `presenceSensor`, `tamperAlert`, `valve` and `waterSensor` +[fan](#fan) | `fanSpeed` and `switch` +[light](#light) | `colorControl`, `colorTemperature`, `switch` and `switchLevel` +[switch](#switch) | `switch` Support for additional capabilities will be added in the future. + +### {% linkable_title Binary Sensor %} + +The SmartThings Binary Sensor platform lets you view devices that have binary sensor-related capabilities. A Binary Sensor entity will be created for each attribute (below) supported by the device. + +| Capability |Attribute |On-Value |Binary Sensor Device Class +|-------------------|--------------|----------------|---------------------------------| +| [`accelerationSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Acceleration-Sensor) | `acceleration` | `active` | `moving` +| [`contactSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Contact-Sensor) | `contact` | `open` | `opening` +| [`filterStatus`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Filter-Status) | `filterStatus` | `replace` | `problem` +| [`motionSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Motion-Sensor) | `motion` | `active` | `motion` +| [`presenceSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Presence-Sensor) | `presence` | `present` | `presence` +| [`tamperAlert`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tamper-Alert) | `tamper` | `detected` | `problem` +| [`valve`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Valve) | `valve` | `open` | `opening` +| [`waterSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Water-Sensor) | `water` | `wet` | `moisture` + +### {% linkable_title Fan %} + +The SmartThings fan platform lets you control devices that have fan-related capabilities. For a SmartThings device to be represented by the fan platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. + +| Capability |Fan Features +|-------------------|------------------------------------------------------------| +| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) | `speed` (`off`, `low`, `medium`, and `high`) + +### {% linkable_title Light %} + +The SmartThings light platform lets you control devices that have light-related capabilities. For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. + +| Capability |Light Features +|-------------------|------------------------------------------------------------| +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` +| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` +| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` + +### {% linkable_title Switch %} + +The SmartThings switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. \ No newline at end of file From 521d2b0126166890efb39be8ad35ecf2785aede0 Mon Sep 17 00:00:00 2001 From: codedmind Date: Tue, 5 Feb 2019 15:23:56 +0000 Subject: [PATCH 60/65] Update utility_meter.markdown (#8409) --- source/_components/utility_meter.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/utility_meter.markdown b/source/_components/utility_meter.markdown index 0007d552880..3e4b5a3b2a3 100644 --- a/source/_components/utility_meter.markdown +++ b/source/_components/utility_meter.markdown @@ -89,7 +89,7 @@ The following configuration shows an example where 2 utility_meters (`daily_ener Both track the same sensor (`sensor.energy`) which continously monitors the energy consumed. 4 different sensors will be created, 2 per utility meter and corresponding to each tariff. -Sensor `sensor.daily_energy_peak`, `sensor.daily_energy_peak`, `sensor.monthly_energy_peak` and `sensor.monthly_energy_offpeak` will automatically be created to track the consumption in each tariff for the given cycle. +Sensor `sensor.daily_energy_peak`, `sensor.daily_energy_offpeak`, `sensor.monthly_energy_peak` and `sensor.monthly_energy_offpeak` will automatically be created to track the consumption in each tariff for the given cycle. `utility_meter.daily_energy` and `utility_meter.monthly_energy` entities will track the current tariff and provide a service to change the tariff. From 5735528bf37668879eb329c1cbcca48a0579ee65 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 5 Feb 2019 09:19:50 -0800 Subject: [PATCH 61/65] Update release notes --- source/_posts/2019-02-06-release-87.markdown | 109 +++++++++++++++++-- 1 file changed, 100 insertions(+), 9 deletions(-) diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown index 5b0fb71821b..73f62cdbf13 100644 --- a/source/_posts/2019-02-06-release-87.markdown +++ b/source/_posts/2019-02-06-release-87.markdown @@ -26,14 +26,12 @@ Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesi - Add a Zoneminder availability sensor ([@rohankapoorcom] - [#20184]) ([zoneminder docs]) (new-platform) - Add platform image_processing.qrcode ([@zhujisheng] - [#20215]) ([image_processing.qrcode docs]) (new-platform) - Add LCN switch platform ([@alengwenus] - [#20267]) ([lcn docs]) ([switch.lcn docs]) (new-platform) -- Fire events for Lutron RadioRA2 keypad buttons ([@koreth] - [#20090]) ([lutron docs]) ([binary_sensor.lutron docs]) (new-platform) - Add EverLights light component ([@joncar] - [#19817]) ([light.everlights docs]) (new-platform) - Add device tracker support for EE Brightbox 2 router ([@krygal] - [#19611]) ([device_tracker docs]) (new-platform) - HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([cover.homematicip_cloud docs]) (new-platform) - Add Danfoss Air HRV support ([@JonasPed] - [#20138]) ([danfoss_air docs]) ([binary_sensor.danfoss_air docs]) ([sensor.danfoss_air docs]) (new-platform) - Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) - Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) -- introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) (new-platform) - Add nilu air_quality platform ([@hfurubotten] - [#19674]) ([air_pollutants docs]) (new-platform) - Add Iliad Italy (Mobile Telephony Provider) Sensor ([@eliseomartelli] - [#19645]) ([sensor.iliad_italy docs]) (new-platform) - Add support for HomeKit motion sensor devices ([@Jc2k] - [#20555]) ([homekit_controller docs]) (new-platform) @@ -44,8 +42,10 @@ Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesi - Add support for FRITZ DECT 100 (temp sensor) ([@choss] - [#20308]) ([fritzbox docs]) ([sensor.fritzbox docs]) (new-platform) - RFC: Add system health component ([@balloob] - [#20436]) ([system_health docs]) ([updater docs]) (new-platform) - Add sensor platform for Rova Garbage Collection ([@GidoHakvoort] - [#18868]) ([sensor.rova docs]) (new-platform) -- ZHA component rewrite part 4 - add device module ([@dmulcahey] - [#20469]) ([zha docs]) (new-platform) - Add SmartThings component and switch platform ([@andrewsayre] - [#20148]) ([smartthings docs]) ([switch.smartthings docs]) (new-platform) +- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) ## {% linkable_title New Features %} @@ -69,7 +69,33 @@ Experiencing issues introduced by this release? Please report them in our [issue - Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([notify:dovado docs]) ([sensor.dovado docs]) (breaking change) - Reset Brottsplatskartan incident types every day ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) - Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) +- Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) - New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) +- Disable extra=vol.ALLOW_EXTRA for MQTT platforms. ([@emontnemery] - [#20562]) ([mqtt docs]) (breaking change) + +## {% linkable_title Beta Fixes %} + +- Fix pjlink issue ([@emkay82] - [#20510]) ([media_player.pjlink docs]) (beta fix) +- Fix geofency requiring a configuration.yaml entry ([@balloob] - [#20631]) ([geofency docs]) (beta fix) +- Upgrade blinkpy to re-enable motion detection ([@fronzbot] - [#20651]) ([blink docs]) (beta fix) +- Fix parsing yeelight custom effects, when not present in config ([@zewelor] - [#20658]) ([light.yeelight docs]) (beta fix) +- Add PLATFORM_SCHEMA_BASE support to check_config.py ([@emontnemery] - [#20663]) (beta fix) +- InfluxDB - change connection test method ([@magenbrot] - [#20666]) ([sensor.influxdb docs]) (beta fix) +- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) +- Fix allow extra in locative webhook schema validation ([@rohankapoorcom] - [#20657]) ([locative docs]) (beta fix) +- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) +- Add entity_namespace to PLATFORM_SCHEMA ([@emontnemery] - [#20693]) (beta fix) +- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) +- fix test commented in #20678 ([@dgomes] - [#20680]) (beta fix) +- Add SmartThings button support via events ([@andrewsayre] - [#20707]) ([smartthings docs]) (beta fix) +- Fix temperature unit conversion in Ambient PWS ([@bachya] - [#20723]) ([ambient_station docs]) (beta fix) +- Revert pyfoscam back to libpyfoscam ([@davidlie] - [#20727]) ([camera.foscam docs]) (beta fix) +- Fix ffmpeg v4 stream issue ([@awarecan] - [#20314]) ([ffmpeg docs]) ([camera.amcrest docs]) ([camera.arlo docs]) ([camera.canary docs]) ([camera.ffmpeg docs]) ([camera.onvif docs]) ([camera.ring docs]) ([camera.xiaomi docs]) ([camera.yi docs]) (beta fix) +- Improve cloud error handling ([@balloob] - [#20729]) ([cloud docs]) (beta fix) +- Fix cloud webhook body ([@pvizeli] - [#20739]) ([cloud docs]) (beta fix) (new-platform) +- Fix the line reference in config error message ([@awarecan] - [#20743]) (beta fix) +- Upgrade to async_upnp_client==0.14.4 ([@StevenLooman] - [#20751]) ([upnp docs]) ([media_player.dlna_dmr docs]) (beta fix) +- Keep cloud tokens always valid ([@balloob] - [#20762]) ([cloud docs]) (beta fix) ## {% linkable_title All changes %} @@ -91,7 +117,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Support for relay ports for LCN light platform ([@alengwenus] - [#19632]) ([lcn docs]) ([light.lcn docs]) - Add LCN switch platform ([@alengwenus] - [#20267]) ([lcn docs]) ([switch.lcn docs]) (new-platform) - Updated sense library to 0.6.0 ([@kbickar] - [#20271]) ([sense docs]) -- Fire events for Lutron RadioRA2 keypad buttons ([@koreth] - [#20090]) ([lutron docs]) ([binary_sensor.lutron docs]) (new-platform) +- Fire events for Lutron RadioRA2 keypad buttons ([@koreth] - [#20090]) ([lutron docs]) - Update Tibber library ([@Danielhiversen] - [#20273]) ([tibber docs]) - Make Netatmo battery_percent icon dynamic ([@notoriousbdg] - [#20275]) ([sensor.netatmo docs]) - Add type hints to helpers.condition ([@scop] - [#20266]) ([zone docs]) @@ -154,7 +180,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Correct minor comments from PR#20138. ([@JonasPed] - [#20454]) ([danfoss_air docs]) - Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) - Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) -- introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) (new-platform) +- introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) - Update device registry of MQTT fan ([@emontnemery] - [#20445]) ([mqtt docs]) - Update device registry of MQTT climate ([@emontnemery] - [#20444]) ([mqtt docs]) - Update device registry of MQTT sensor ([@emontnemery] - [#20440]) ([mqtt docs]) @@ -186,7 +212,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) - Area registry ([@Kane610] - [#20435]) - Cleanup if discovered mqtt vacuum can't be added ([@emontnemery] - [#20549]) ([mqtt docs]) -- Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) +- Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) - Add discovery update support to MQTT camera ([@emontnemery] - [#20529]) ([mqtt docs]) - ZHA component rewrite part 3 - update helpers ([@dmulcahey] - [#20463]) ([zha docs]) - Add missing switch for motion_detect ([@perosb] - [#20540]) ([android_ip_webcam docs]) @@ -199,9 +225,10 @@ Experiencing issues introduced by this release? Please report them in our [issue - Treat each player as a 'device' for non-client devices. ([@mitchellrj] - [#20074]) ([media_player.plex docs]) - Add Recollect Waste ([@stealthhacker] - [#20121]) ([sensor.recollect_waste docs]) (new-platform) - New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) +- Fixing the openssl issue ([@kennedyshead] - [#20570]) ([asuswrt docs]) ([sensor.asuswrt docs]) - Homekit Motion Sensor Review feedback ([@Jc2k] - [#20568]) ([homekit_controller docs]) - add empy all groups view. Makes Brilliant Lightpad work ([@merc1031] - [#20564]) ([emulated_hue docs]) -- Disable extra=vol.ALLOW_EXTRA for MQTT platforms. ([@emontnemery] - [#20562]) ([mqtt docs]) +- Disable extra=vol.ALLOW_EXTRA for MQTT platforms. ([@emontnemery] - [#20562]) ([mqtt docs]) (breaking change) - html5 notifications add VAPID support ([@quazzie] - [#20415]) ([notify docs]) - Bump pymodbus to 1.5.2 ([@mindakas] - [#20582]) ([modbus docs]) - Change Unifi timeout ([@arsaboo] - [#20606]) ([unifi docs]) @@ -216,10 +243,32 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add lovelace systeam health ([@balloob] - [#20592]) ([lovelace docs]) - Add sensor platform for Rova Garbage Collection ([@GidoHakvoort] - [#18868]) ([sensor.rova docs]) (new-platform) - Added code to Abode Alarm control panel ([@arsaboo] - [#20611]) ([alarm_control_panel.abode docs]) -- ZHA component rewrite part 4 - add device module ([@dmulcahey] - [#20469]) ([zha docs]) (new-platform) +- ZHA component rewrite part 4 - add device module ([@dmulcahey] - [#20469]) ([zha docs]) - Fix duplicate luftdaten entities ([@jvanderneutstulen] - [#20226]) ([luftdaten docs]) - Add SmartThings component and switch platform ([@andrewsayre] - [#20148]) ([smartthings docs]) ([switch.smartthings docs]) (new-platform) - fix #20571 ([@dgomes] - [#20589]) ([sensor.history_stats docs]) +- Fix pjlink issue ([@emkay82] - [#20510]) ([media_player.pjlink docs]) (beta fix) +- Fix geofency requiring a configuration.yaml entry ([@balloob] - [#20631]) ([geofency docs]) (beta fix) +- Upgrade blinkpy to re-enable motion detection ([@fronzbot] - [#20651]) ([blink docs]) (beta fix) +- Fix parsing yeelight custom effects, when not present in config ([@zewelor] - [#20658]) ([light.yeelight docs]) (beta fix) +- Add PLATFORM_SCHEMA_BASE support to check_config.py ([@emontnemery] - [#20663]) (beta fix) +- InfluxDB - change connection test method ([@magenbrot] - [#20666]) ([sensor.influxdb docs]) (beta fix) +- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) +- Fix allow extra in locative webhook schema validation ([@rohankapoorcom] - [#20657]) ([locative docs]) (beta fix) +- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) +- Add entity_namespace to PLATFORM_SCHEMA ([@emontnemery] - [#20693]) (beta fix) +- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) +- Remove fingerprint middleware ([@balloob] - [#20682]) ([http docs]) +- fix test commented in #20678 ([@dgomes] - [#20680]) (beta fix) +- Add SmartThings button support via events ([@andrewsayre] - [#20707]) ([smartthings docs]) (beta fix) +- Fix temperature unit conversion in Ambient PWS ([@bachya] - [#20723]) ([ambient_station docs]) (beta fix) +- Revert pyfoscam back to libpyfoscam ([@davidlie] - [#20727]) ([camera.foscam docs]) (beta fix) +- Fix ffmpeg v4 stream issue ([@awarecan] - [#20314]) ([ffmpeg docs]) ([camera.amcrest docs]) ([camera.arlo docs]) ([camera.canary docs]) ([camera.ffmpeg docs]) ([camera.onvif docs]) ([camera.ring docs]) ([camera.xiaomi docs]) ([camera.yi docs]) (beta fix) +- Improve cloud error handling ([@balloob] - [#20729]) ([cloud docs]) (beta fix) +- Fix cloud webhook body ([@pvizeli] - [#20739]) ([cloud docs]) (beta fix) (new-platform) +- Fix the line reference in config error message ([@awarecan] - [#20743]) (beta fix) +- Upgrade to async_upnp_client==0.14.4 ([@StevenLooman] - [#20751]) ([upnp docs]) ([media_player.dlna_dmr docs]) (beta fix) +- Keep cloud tokens always valid ([@balloob] - [#20762]) ([cloud docs]) (beta fix) [#17616]: https://github.com/home-assistant/home-assistant/pull/17616 [#18868]: https://github.com/home-assistant/home-assistant/pull/18868 @@ -284,6 +333,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20306]: https://github.com/home-assistant/home-assistant/pull/20306 [#20308]: https://github.com/home-assistant/home-assistant/pull/20308 [#20313]: https://github.com/home-assistant/home-assistant/pull/20313 +[#20314]: https://github.com/home-assistant/home-assistant/pull/20314 [#20318]: https://github.com/home-assistant/home-assistant/pull/20318 [#20320]: https://github.com/home-assistant/home-assistant/pull/20320 [#20321]: https://github.com/home-assistant/home-assistant/pull/20321 @@ -344,6 +394,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20502]: https://github.com/home-assistant/home-assistant/pull/20502 [#20503]: https://github.com/home-assistant/home-assistant/pull/20503 [#20504]: https://github.com/home-assistant/home-assistant/pull/20504 +[#20510]: https://github.com/home-assistant/home-assistant/pull/20510 [#20514]: https://github.com/home-assistant/home-assistant/pull/20514 [#20515]: https://github.com/home-assistant/home-assistant/pull/20515 [#20526]: https://github.com/home-assistant/home-assistant/pull/20526 @@ -357,6 +408,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20562]: https://github.com/home-assistant/home-assistant/pull/20562 [#20564]: https://github.com/home-assistant/home-assistant/pull/20564 [#20568]: https://github.com/home-assistant/home-assistant/pull/20568 +[#20570]: https://github.com/home-assistant/home-assistant/pull/20570 [#20582]: https://github.com/home-assistant/home-assistant/pull/20582 [#20589]: https://github.com/home-assistant/home-assistant/pull/20589 [#20590]: https://github.com/home-assistant/home-assistant/pull/20590 @@ -368,6 +420,26 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20604]: https://github.com/home-assistant/home-assistant/pull/20604 [#20606]: https://github.com/home-assistant/home-assistant/pull/20606 [#20611]: https://github.com/home-assistant/home-assistant/pull/20611 +[#20631]: https://github.com/home-assistant/home-assistant/pull/20631 +[#20651]: https://github.com/home-assistant/home-assistant/pull/20651 +[#20652]: https://github.com/home-assistant/home-assistant/pull/20652 +[#20657]: https://github.com/home-assistant/home-assistant/pull/20657 +[#20658]: https://github.com/home-assistant/home-assistant/pull/20658 +[#20663]: https://github.com/home-assistant/home-assistant/pull/20663 +[#20666]: https://github.com/home-assistant/home-assistant/pull/20666 +[#20680]: https://github.com/home-assistant/home-assistant/pull/20680 +[#20681]: https://github.com/home-assistant/home-assistant/pull/20681 +[#20682]: https://github.com/home-assistant/home-assistant/pull/20682 +[#20693]: https://github.com/home-assistant/home-assistant/pull/20693 +[#20699]: https://github.com/home-assistant/home-assistant/pull/20699 +[#20707]: https://github.com/home-assistant/home-assistant/pull/20707 +[#20723]: https://github.com/home-assistant/home-assistant/pull/20723 +[#20727]: https://github.com/home-assistant/home-assistant/pull/20727 +[#20729]: https://github.com/home-assistant/home-assistant/pull/20729 +[#20739]: https://github.com/home-assistant/home-assistant/pull/20739 +[#20743]: https://github.com/home-assistant/home-assistant/pull/20743 +[#20751]: https://github.com/home-assistant/home-assistant/pull/20751 +[#20762]: https://github.com/home-assistant/home-assistant/pull/20762 [@Censored3]: https://github.com/Censored3 [@Danielhiversen]: https://github.com/Danielhiversen [@GidoHakvoort]: https://github.com/GidoHakvoort @@ -400,10 +472,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [@dmulcahey]: https://github.com/dmulcahey [@ehendrix23]: https://github.com/ehendrix23 [@eliseomartelli]: https://github.com/eliseomartelli +[@emkay82]: https://github.com/emkay82 [@emontnemery]: https://github.com/emontnemery [@exxamalte]: https://github.com/exxamalte [@fabaff]: https://github.com/fabaff [@foxel]: https://github.com/foxel +[@fronzbot]: https://github.com/fronzbot [@gorynychzmey]: https://github.com/gorynychzmey [@heytensai]: https://github.com/heytensai [@hfurubotten]: https://github.com/hfurubotten @@ -412,8 +486,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@jvanderneutstulen]: https://github.com/jvanderneutstulen [@kbickar]: https://github.com/kbickar [@kellerza]: https://github.com/kellerza +[@kennedyshead]: https://github.com/kennedyshead [@koreth]: https://github.com/koreth [@krygal]: https://github.com/krygal +[@magenbrot]: https://github.com/magenbrot [@merc1031]: https://github.com/merc1031 [@mindakas]: https://github.com/mindakas [@mindigmarton]: https://github.com/mindigmarton @@ -422,6 +498,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@mxworm]: https://github.com/mxworm [@notoriousbdg]: https://github.com/notoriousbdg [@perosb]: https://github.com/perosb +[@pvizeli]: https://github.com/pvizeli [@quazzie]: https://github.com/quazzie [@reefab]: https://github.com/reefab [@rohankapoorcom]: https://github.com/rohankapoorcom @@ -445,14 +522,24 @@ Experiencing issues introduced by this release? Please report them in our [issue [alert docs]: /components/alert/ [ambient_station docs]: /components/ambient_station/ [android_ip_webcam docs]: /components/android_ip_webcam/ +[asuswrt docs]: /components/asuswrt/ [automation.mqtt docs]: /docs/automation/trigger/#mqtt-trigger [binary_sensor.danfoss_air docs]: /components/binary_sensor.danfoss_air/ [binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ -[binary_sensor.lutron docs]: /components/binary_sensor.lutron/ [binary_sensor.trend docs]: /components/binary_sensor.trend/ +[blink docs]: /components/blink/ +[camera.amcrest docs]: /components/camera.amcrest/ +[camera.arlo docs]: /components/camera.arlo/ +[camera.canary docs]: /components/camera.canary/ +[camera.ffmpeg docs]: /components/camera.ffmpeg/ [camera.foscam docs]: /components/camera.foscam/ +[camera.onvif docs]: /components/camera.onvif/ +[camera.ring docs]: /components/camera.ring/ +[camera.xiaomi docs]: /components/camera.xiaomi/ +[camera.yi docs]: /components/camera.yi/ [climate.mill docs]: /components/climate.mill/ [climate.radiotherm docs]: /components/climate.radiotherm/ +[cloud docs]: /components/cloud/ [config docs]: /components/config/ [cover.homematicip_cloud docs]: /components/cover.homematicip_cloud/ [danfoss_air docs]: /components/danfoss_air/ @@ -463,6 +550,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [emulated_roku docs]: /components/emulated_roku/ [envisalink docs]: /components/envisalink/ [fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ +[ffmpeg docs]: /components/ffmpeg/ [fritzbox docs]: /components/fritzbox/ [geo_location docs]: /components/geo_location/ [geofency docs]: /components/geofency/ @@ -493,6 +581,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/ [media_player.firetv docs]: /components/media_player.firetv/ [media_player.mpd docs]: /components/media_player.mpd/ +[media_player.pjlink docs]: /components/media_player.pjlink/ [media_player.plex docs]: /components/media_player.plex/ [media_player.songpal docs]: /components/media_player.songpal/ [media_player.volumio docs]: /components/media_player.volumio/ @@ -504,6 +593,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [rest_command docs]: /components/rest_command/ [sense docs]: /components/sense/ [sensor.ambient_station docs]: /components/sensor.ambient_station/ +[sensor.asuswrt docs]: /components/sensor.asuswrt/ [sensor.brottsplatskartan docs]: /components/sensor.brottsplatskartan/ [sensor.co2signal docs]: /components/sensor.co2signal/ [sensor.danfoss_air docs]: /components/sensor.danfoss_air/ @@ -513,6 +603,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.history_stats docs]: /components/sensor.history_stats/ [sensor.iliad_italy docs]: /components/sensor.iliad_italy/ [sensor.imap docs]: /components/sensor.imap/ +[sensor.influxdb docs]: /components/sensor.influxdb/ [sensor.integration docs]: /components/sensor.integration/ [sensor.islamic_prayer_times docs]: /components/sensor.islamic_prayer_times/ [sensor.lyft docs]: /components/sensor.lyft/ From 23164a496a101eeb4438bcff476f034504b2a057 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 6 Feb 2019 12:56:57 -0800 Subject: [PATCH 62/65] Update cover.homematicip_cloud.markdown --- source/_components/cover.homematicip_cloud.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cover.homematicip_cloud.markdown b/source/_components/cover.homematicip_cloud.markdown index c1a6a98361d..439fe4cf6ff 100644 --- a/source/_components/cover.homematicip_cloud.markdown +++ b/source/_components/cover.homematicip_cloud.markdown @@ -2,7 +2,7 @@ layout: page title: "HomematicIP Cloud Cover" description: "Instructions on how to integrate HomematicIP covers within Home Assistant." -date: 2019-04-13 13:40 +date: 2019-01-13 13:40 sidebar: true comments: false sharing: true From e762622b08d823efb50958247cfdaaad178f25da Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 6 Feb 2019 13:09:27 -0800 Subject: [PATCH 63/65] Update ambient_station.markdown --- source/_components/ambient_station.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/ambient_station.markdown b/source/_components/ambient_station.markdown index 0c1568f76fb..97d072abebd 100644 --- a/source/_components/ambient_station.markdown +++ b/source/_components/ambient_station.markdown @@ -9,6 +9,8 @@ logo: ambient_weather.png ha_category: Weather ha_release: "0.85" ha_iot_class: "Cloud Push" +redirect_from: + - /components/sensor.ambient_station/ --- The `Ambient Weather Station` component retrieves local weather information From 1f4b494ac7eeac7c83c65394b76b5783d10c2cbb Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 6 Feb 2019 14:31:04 -0800 Subject: [PATCH 64/65] Update release notes --- source/_components/ambient_station.markdown | 8 +-- source/_components/system_health.markdown | 18 ++++++ source/_posts/2019-02-06-release-87.markdown | 59 +++++++++++------- .../blog/2019-02-release-87/components.png | Bin 0 -> 69122 bytes 4 files changed, 57 insertions(+), 28 deletions(-) create mode 100644 source/_components/system_health.markdown create mode 100644 source/images/blog/2019-02-release-87/components.png diff --git a/source/_components/ambient_station.markdown b/source/_components/ambient_station.markdown index 97d072abebd..079d57f9f96 100644 --- a/source/_components/ambient_station.markdown +++ b/source/_components/ambient_station.markdown @@ -62,7 +62,7 @@ monitored_conditions: dailyrainin: description: Daily rain accumulation dewPoint: - description: Dewpoint temperature + description: Dewpoint temperature eventrainin: description: Event Rain accumulation feelsLike: @@ -80,9 +80,9 @@ monitored_conditions: monthlyrainin: description: Monthly rain accumulation solarradiation: - description: Solar radiation + description: Solar radiation tempf: - description: Outdoor temperature + description: Outdoor temperature tempinf: description: Indoor temperature totalrainin: @@ -94,7 +94,7 @@ monitored_conditions: winddir: description: Wind direction winddir_avg10m: - description: Wind direction, 10m moving average + description: Wind direction, 10m moving average winddir_avg2m: description: Wind direction, 2m moving average windgustdir: diff --git a/source/_components/system_health.markdown b/source/_components/system_health.markdown new file mode 100644 index 00000000000..c17842e8957 --- /dev/null +++ b/source/_components/system_health.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "System Health" +description: "Systeam Health component will report system info and allow to run system diagnostics." +date: 2019-02-06 13:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +ha_qa_scale: internal +ha_release: 0.87 +--- + +The System Health component provides an API to offer information on the system and it's components. It also allows to run diagnostic tools to diagnose problems. + +The system health component data can be viewed in the developer tools under service developer tool icon. diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown index 73f62cdbf13..6e784b13233 100644 --- a/source/_posts/2019-02-06-release-87.markdown +++ b/source/_posts/2019-02-06-release-87.markdown @@ -1,7 +1,7 @@ --- layout: post -title: "0.87: SmartThings, TBD UPDATE DATE " -description: "TBD UPDATE DATE" +title: "0.87: SmartThings, Areas and Entity Registry UI." +description: "Integrate SmartThings without issues" date: 2019-01-30 00:01:03 date_formatted: "February 6, 2019" author: Paulus Schoutsen @@ -13,13 +13,19 @@ og_image: /images/blog/2019-02-release-87/smartthings.png
-SmartThings +Today we're releasing Home Assistant 0.87, our third release of the year. Besides a bunch of bugs squashing and performance improvements, we got some cool new features too. -Areas +Let's start with the big one: we now support SmartThings. Via a custom app that can be installed inside SmartThings, you can now push the state of each device, as soon as it changes, to Home Assistant. No more fiddling with MQTT bridges or other solutions. Big shoutout to [@andrewsayre] for making this possible. Have a look at the [SmartThings docs] to get started. -Entity Registry UI +New in this release is a new area feature thanks to [@Kane610]. Areas will allow users to organize their devices by their physical area, like kitchen or living room. This will unlock a whole new range of possible new features (of which none are implemented yet). With this release, users will just be able to manage areas in the configuration panel and place devices in areas via the integration page. In the future, we're planning to add area based user permissions and a Lovelace area card. If you can't wait to start leveraging areas today, [@thomasloven] has created [a custom Lovelace card](https://github.com/thomasloven/lovelace-auto-entities) that can leverage areas. -Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesignicons.com/upgrade +This release also includes a UI to manage the entity registry. The entity registry contains all entities with unique IDs that Home Assistant has ever seen. It will allow users to quickly rename entities, change entity IDs or have Home Assistant forget entities that are no longer active. + +We didn't forget about the frontend in this release. In the last release we introduced Lovelace, so for this release we focused on bug squashing, performance improvements and usability. The YAML editor is now rendered using a full editor including line numbers thanks to [@bramkragten]. There is also a new system health component that will help users diagnose problems from the "info" developer tool. [See changelog for the frontend.](https://github.com/home-assistant/home-assistant-polymer/releases/tag/20190130.1) + +In this release we have also upgraded the Material Design Icons to 3.3.92, which renames some icons. Make sure to check [their changelog](https://dev.materialdesignicons.com/upgrade). + +If you prefer a podcast over release notes, check out [the Hass Podcast](https://hasspodcast.io/ha043/) in which Phil and Rohan discuss each new Home Assistant release and keep a tap on what's happening in the home automation space. ## {% linkable_title New Platforms %} @@ -28,9 +34,9 @@ Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesi - Add LCN switch platform ([@alengwenus] - [#20267]) ([lcn docs]) ([switch.lcn docs]) (new-platform) - Add EverLights light component ([@joncar] - [#19817]) ([light.everlights docs]) (new-platform) - Add device tracker support for EE Brightbox 2 router ([@krygal] - [#19611]) ([device_tracker docs]) (new-platform) -- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([cover.homematicip_cloud docs]) (new-platform) +- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([homematicip_cloud docs]) (new-platform) - Add Danfoss Air HRV support ([@JonasPed] - [#20138]) ([danfoss_air docs]) ([binary_sensor.danfoss_air docs]) ([sensor.danfoss_air docs]) (new-platform) -- Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) +- Utility meter ([@dgomes] - [#19718]) ([utility_meter docs]) (new-platform) - Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) - Add nilu air_quality platform ([@hfurubotten] - [#19674]) ([air_pollutants docs]) (new-platform) - Add Iliad Italy (Mobile Telephony Provider) Sensor ([@eliseomartelli] - [#19645]) ([sensor.iliad_italy docs]) (new-platform) @@ -43,9 +49,7 @@ Material Design Icons upgraded to 3.3.92, some renames: https://dev.materialdesi - RFC: Add system health component ([@balloob] - [#20436]) ([system_health docs]) ([updater docs]) (new-platform) - Add sensor platform for Rova Garbage Collection ([@GidoHakvoort] - [#18868]) ([sensor.rova docs]) (new-platform) - Add SmartThings component and switch platform ([@andrewsayre] - [#20148]) ([smartthings docs]) ([switch.smartthings docs]) (new-platform) -- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) -- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) -- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) +- Fix cloud webhook body ([@pvizeli] - [#20739]) ([cloud docs]) (beta fix) (new-platform) ## {% linkable_title New Features %} @@ -66,7 +70,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix unused friendly name for SolarEdge sensor ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) - Fix typo C02 to CO2 ([@reefab] - [#20306]) ([air_quality docs]) (breaking change) - Remove creation of geolocation default group ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) -- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([notify:dovado docs]) ([sensor.dovado docs]) (breaking change) +- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([sensor.dovado docs]) (breaking change) - Reset Brottsplatskartan incident types every day ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) - Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) - Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) @@ -81,11 +85,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix parsing yeelight custom effects, when not present in config ([@zewelor] - [#20658]) ([light.yeelight docs]) (beta fix) - Add PLATFORM_SCHEMA_BASE support to check_config.py ([@emontnemery] - [#20663]) (beta fix) - InfluxDB - change connection test method ([@magenbrot] - [#20666]) ([sensor.influxdb docs]) (beta fix) -- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) - Fix allow extra in locative webhook schema validation ([@rohankapoorcom] - [#20657]) ([locative docs]) (beta fix) -- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) - Add entity_namespace to PLATFORM_SCHEMA ([@emontnemery] - [#20693]) (beta fix) -- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) - fix test commented in #20678 ([@dgomes] - [#20680]) (beta fix) - Add SmartThings button support via events ([@andrewsayre] - [#20707]) ([smartthings docs]) (beta fix) - Fix temperature unit conversion in Ambient PWS ([@bachya] - [#20723]) ([ambient_station docs]) (beta fix) @@ -96,6 +100,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix the line reference in config error message ([@awarecan] - [#20743]) (beta fix) - Upgrade to async_upnp_client==0.14.4 ([@StevenLooman] - [#20751]) ([upnp docs]) ([media_player.dlna_dmr docs]) (beta fix) - Keep cloud tokens always valid ([@balloob] - [#20762]) ([cloud docs]) (beta fix) +- Fix tellduslive responsiveness ([@fredrike] - [#20603]) ([tellduslive docs]) (beta fix) +- Make sure Locative doesn't submit invalid device IDs ([@balloob] - [#20784]) ([locative docs]) (beta fix) ## {% linkable_title All changes %} @@ -138,7 +144,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix typo C02 to CO2 ([@reefab] - [#20306]) ([air_quality docs]) (breaking change) - Add git to the development Dockerfile ([@kellerza] - [#20276]) - Add device tracker support for EE Brightbox 2 router ([@krygal] - [#19611]) ([device_tracker docs]) (new-platform) -- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([cover.homematicip_cloud docs]) (new-platform) +- HomematicIP add cover FROLL and BROLL devices ([@mxworm] - [#19794]) ([homematicip_cloud docs]) (new-platform) - Upgrade python-nest to 4.1.0 ([@awarecan] - [#20313]) ([nest docs]) - Upgrade youtube_dl to 2019.01.17 ([@fabaff] - [#20318]) - Add data/data_template/title to alert component ([@syphernl] - [#17616]) ([alert docs]) @@ -178,7 +184,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - ZHA component rewrite part 1 ([@dmulcahey] - [#20456]) - Upgrade astral to 1.8 ([@fabaff] - [#20459]) - Correct minor comments from PR#20138. ([@JonasPed] - [#20454]) ([danfoss_air docs]) -- Utility meter ([@dgomes] - [#19718]) ([sensor.utility_meter docs]) (new-platform) +- Utility meter ([@dgomes] - [#19718]) ([utility_meter docs]) (new-platform) - Add Co2signal sensor ([@danielsjf] - [#19204]) ([sensor.co2signal docs]) (new-platform) - introduce gateway ([@dmulcahey] - [#20460]) ([zha docs]) - Update device registry of MQTT fan ([@emontnemery] - [#20445]) ([mqtt docs]) @@ -191,7 +197,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Include exception details in the error log ([@shaan7] - [#20461]) ([media_player.firetv docs]) - Use HASS latitude/longitude as defaults for Lyft ([@bachya] - [#20491]) ([sensor.lyft docs]) - Upgrade zm-py to 0.3.1 ([@rohankapoorcom] - [#20489]) ([zoneminder docs]) -- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([notify:dovado docs]) ([sensor.dovado docs]) (breaking change) +- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([sensor.dovado docs]) (breaking change) - Add homekit_controller tests ([@Jc2k] - [#20457]) ([homekit_controller docs]) - Upgrade to async-upnp-client==0.14.3 ([@StevenLooman] - [#20502]) ([upnp docs]) ([media_player.dlna_dmr docs]) - Upgrade tibber library ([@Danielhiversen] - [#20504]) ([tibber docs]) @@ -253,11 +259,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix parsing yeelight custom effects, when not present in config ([@zewelor] - [#20658]) ([light.yeelight docs]) (beta fix) - Add PLATFORM_SCHEMA_BASE support to check_config.py ([@emontnemery] - [#20663]) (beta fix) - InfluxDB - change connection test method ([@magenbrot] - [#20666]) ([sensor.influxdb docs]) (beta fix) -- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Light platform ([@andrewsayre] - [#20652]) ([smartthings docs]) (beta fix) - Fix allow extra in locative webhook schema validation ([@rohankapoorcom] - [#20657]) ([locative docs]) (beta fix) -- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Fan platform ([@andrewsayre] - [#20681]) ([smartthings docs]) (beta fix) - Add entity_namespace to PLATFORM_SCHEMA ([@emontnemery] - [#20693]) (beta fix) -- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) (new-platform) +- Add SmartThings Binary Sensor platform ([@andrewsayre] - [#20699]) ([smartthings docs]) (beta fix) - Remove fingerprint middleware ([@balloob] - [#20682]) ([http docs]) - fix test commented in #20678 ([@dgomes] - [#20680]) (beta fix) - Add SmartThings button support via events ([@andrewsayre] - [#20707]) ([smartthings docs]) (beta fix) @@ -269,6 +275,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix the line reference in config error message ([@awarecan] - [#20743]) (beta fix) - Upgrade to async_upnp_client==0.14.4 ([@StevenLooman] - [#20751]) ([upnp docs]) ([media_player.dlna_dmr docs]) (beta fix) - Keep cloud tokens always valid ([@balloob] - [#20762]) ([cloud docs]) (beta fix) +- Fix tellduslive responsiveness ([@fredrike] - [#20603]) ([tellduslive docs]) (beta fix) +- Make sure Locative doesn't submit invalid device IDs ([@balloob] - [#20784]) ([locative docs]) (beta fix) [#17616]: https://github.com/home-assistant/home-assistant/pull/17616 [#18868]: https://github.com/home-assistant/home-assistant/pull/18868 @@ -417,6 +425,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20597]: https://github.com/home-assistant/home-assistant/pull/20597 [#20598]: https://github.com/home-assistant/home-assistant/pull/20598 [#20602]: https://github.com/home-assistant/home-assistant/pull/20602 +[#20603]: https://github.com/home-assistant/home-assistant/pull/20603 [#20604]: https://github.com/home-assistant/home-assistant/pull/20604 [#20606]: https://github.com/home-assistant/home-assistant/pull/20606 [#20611]: https://github.com/home-assistant/home-assistant/pull/20611 @@ -440,6 +449,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#20743]: https://github.com/home-assistant/home-assistant/pull/20743 [#20751]: https://github.com/home-assistant/home-assistant/pull/20751 [#20762]: https://github.com/home-assistant/home-assistant/pull/20762 +[#20784]: https://github.com/home-assistant/home-assistant/pull/20784 [@Censored3]: https://github.com/Censored3 [@Danielhiversen]: https://github.com/Danielhiversen [@GidoHakvoort]: https://github.com/GidoHakvoort @@ -477,6 +487,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@exxamalte]: https://github.com/exxamalte [@fabaff]: https://github.com/fabaff [@foxel]: https://github.com/foxel +[@fredrike]: https://github.com/fredrike [@fronzbot]: https://github.com/fronzbot [@gorynychzmey]: https://github.com/gorynychzmey [@heytensai]: https://github.com/heytensai @@ -541,7 +552,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [climate.radiotherm docs]: /components/climate.radiotherm/ [cloud docs]: /components/cloud/ [config docs]: /components/config/ -[cover.homematicip_cloud docs]: /components/cover.homematicip_cloud/ [danfoss_air docs]: /components/danfoss_air/ [device_tracker docs]: /components/device_tracker/ [device_tracker.gpslogger docs]: /components/device_tracker.gpslogger/ @@ -557,6 +567,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [gpslogger docs]: /components/gpslogger/ [homekit_controller docs]: /components/homekit_controller/ [homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ [http docs]: /components/http/ [hue docs]: /components/hue/ [image_processing.opencv docs]: /components/image_processing.opencv/ @@ -589,7 +600,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [mqtt docs]: /components/mqtt/ [nest docs]: /components/nest/ [notify docs]: /components/notify/ -[notify:dovado docs]: /components/notify:dovado/ [rest_command docs]: /components/rest_command/ [sense docs]: /components/sense/ [sensor.ambient_station docs]: /components/sensor.ambient_station/ @@ -616,18 +626,19 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.systemmonitor docs]: /components/sensor.systemmonitor/ [sensor.tibber docs]: /components/sensor.tibber/ [sensor.transmission docs]: /components/sensor.transmission/ -[sensor.utility_meter docs]: /components/sensor.utility_meter/ [smartthings docs]: /components/smartthings/ [switch.lcn docs]: /components/switch.lcn/ [switch.mqtt docs]: /components/switch.mqtt/ [switch.rest docs]: /components/switch.rest/ [switch.smartthings docs]: /components/switch.smartthings/ [system_health docs]: /components/system_health/ +[tellduslive docs]: /components/tellduslive/ [tibber docs]: /components/tibber/ [transmission docs]: /components/transmission/ [unifi docs]: /components/unifi/ [updater docs]: /components/updater/ [upnp docs]: /components/upnp/ +[utility_meter docs]: /components/utility_meter/ [weather.darksky docs]: /components/weather.darksky/ [webhook docs]: /components/webhook/ [wemo docs]: /components/wemo/ diff --git a/source/images/blog/2019-02-release-87/components.png b/source/images/blog/2019-02-release-87/components.png new file mode 100644 index 0000000000000000000000000000000000000000..7657342584b645fb618fdfdfd8486e635e9fe981 GIT binary patch literal 69122 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 z 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
BvDmZ^mW&o|4QU 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

3rK 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 VL9b-(4$lAp002ovPDHLkV1g{oiHQIJ literal 0 HcmV?d00001 From 8106ef09ccb42423864190ed1b3b6236d0f29309 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 6 Feb 2019 14:52:05 -0800 Subject: [PATCH 65/65] Update breaking changes --- source/_posts/2019-02-06-release-87.markdown | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown index 6e784b13233..488c7514301 100644 --- a/source/_posts/2019-02-06-release-87.markdown +++ b/source/_posts/2019-02-06-release-87.markdown @@ -67,15 +67,14 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Fix unused friendly name for SolarEdge sensor ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) -- Fix typo C02 to CO2 ([@reefab] - [#20306]) ([air_quality docs]) (breaking change) -- Remove creation of geolocation default group ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) -- Split out dovado to a component and sensor platform ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([sensor.dovado docs]) (breaking change) -- Reset Brottsplatskartan incident types every day ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) -- Make Ambient PWS async and cloud-push ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) -- Add COMPONENT_SCHEMA and use it in alarm_control_panel ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) -- New Transmission component ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) -- Disable extra=vol.ALLOW_EXTRA for MQTT platforms. ([@emontnemery] - [#20562]) ([mqtt docs]) (breaking change) +- SolarEdge sensors: This PR changes the **entity names** of this sensor and the **monitoring condition keys** in the configuration: `sensor.solaredge_current_power` -> `sensor.solaredge_current_power`, `sensor.solaredge_last_day_data` -> `sensor.solaredge_energy_today`, `sensor.solaredge_last_month_data` -> `sensor.solaredge_energy_this_month`, `sensor.solaredge_last_year_data` -> `sensor.solaredge_energy_this_year`, `sensor.solaredge_life_time_data` -> `sensor.solaredge_lifetime_energy`, ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) +- Geolocation is no longer creating a default group. ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) +- The Dovado sensor platform has been broken up into a Dovado component with sensor and notify platforms. The configuration variables have been changed. Please refer to the documentation for the correct configuration. ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([sensor.dovado docs]) (breaking change) +- Brottsplatskartan: The incident type count is reset every day. Before this change, it didn't reset until you restarted Home assistant. ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) +- Ambient PWS has new configuration and entity IDs will change. Configure it now via the integrations page. ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) +- New Transmission component. With the introduction of the Transmission component, the configuration for Transmission sensor and switch has been moved to the component configuration. Configuration must be changed accordingly. ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) +- The alarm control panel will now flag mistyped configs from `configuration.yaml` correctly as invalid, instead of just ignoring them. ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) +- MQTT platforms will now flag mistyped configs from `configuration.yaml` correctly as invalid, instead of just ignoring them. ([@emontnemery] - [#20562]) ([mqtt docs]) (breaking change) ## {% linkable_title Beta Fixes %}