From 197a87b5e62d8dc4780017d296953dd429dbc01a Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Fri, 31 Aug 2018 23:34:36 -0700 Subject: [PATCH 01/44] Add notify MFA module --- .../authentication/multi-factor-auth.markdown | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index fd229645c24..86ce2ad13c8 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -42,7 +42,7 @@ Below is a list of currently available auth providers. [Time-based One-Time Password](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) is widely adopted in modern authencation system, it combines a secret key with the current timestamp using a cryptographic hash function to generate a one-time password. Whoever possessed the secret key will get same one-time password in certain time period. By verifying that password, Home Assistant knows the user have the right secrt key. -When try to set up TOTP module, a QR code will show up, user can scan it by an authenticator app, or set it up manauly using the code showed in UI. After setup, user need to input a six digit number generate in the autendicator app to verify the setup is good. If the verificaiton keep falling, you need to check whether the clock on Home Asistant is accurate. +When try to set up TOTP module, a QR code will show up, user can scan it by an authenticator app, or set it up manauly using the code showed in UI. After setup, user need to input a six digit number generate in the authenticator app to verify the setup is good. If the verificaiton keep falling, you need to check whether the clock on Home Asistant is accurate. There are several authenctior apps on the market, we recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/) @@ -51,7 +51,7 @@ Please treat the secret key like a password, never exposure it to others.

-By default one TOTP multi-factor named "Authenticator app" will be auto loaded if no `auth_mfa_modules` config section defined in `configuration.yaml`. +By default one TOTP multi-factor auth module named "Authenticator app" will be auto loaded if no `auth_mfa_modules` config section defined in `configuration.yaml`. Example of configuration @@ -59,4 +59,42 @@ Example of configuration homeassistant: auth_mfa_modules: - type: totp -``` \ No newline at end of file +``` + +### {% linkable_title Notify mutli-factor authentication module %} + +Notify MFA module using [notify component](https://www.home-assistant.io/components/notify/) to delivery a [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm) to user configured target. + +User need first set up the MFA module by select one of the aviliable notify service. A six digit one-time password will be sent by this notify service, user need to input it to verify the setup. + +During the login process, a six digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again. + +

+Notify MFA module would not verify the one-time password deliveried success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable nofiy MFA module to resolve the issue. +

+ +By default notify MFA module will be auto loaded if no `auth_mfa_modules` config section defined in `configuration.yaml`. However if you don't have any notify component configured, user cannot enable notify MFA module. + +Example of configuration + +```yaml +homeassistant: + auth_mfa_modules: + - type: notify +``` + +Optional configuration variables: + +- **exclude** (*Optional*): The list of notify services you do not want to include in. +- **include** (*Optional*): The list of notify services you want to include in. +- **message** (*Optional*): The message template + +```yaml +# Example configure with message template +homeassistant: + auth_mfa_modules: + - type: totp + name: Authenticator app + - type: notify + message: 'I almost forget, to get into my clubhouse, you need to say {}' +``` From c1a0c4e87e0c67d986282f19d67c2cb9ddbfcf8c Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Wed, 5 Sep 2018 00:04:08 -0700 Subject: [PATCH 02/44] Update multi-factor-auth.markdown --- source/_docs/authentication/multi-factor-auth.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 86ce2ad13c8..ceefb1b39d8 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -73,8 +73,6 @@ During the login process, a six digit one-time password will be sent again, user Notify MFA module would not verify the one-time password deliveried success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable nofiy MFA module to resolve the issue.

-By default notify MFA module will be auto loaded if no `auth_mfa_modules` config section defined in `configuration.yaml`. However if you don't have any notify component configured, user cannot enable notify MFA module. - Example of configuration ```yaml From 97fef7f0e918d8aff80ce7f048576507ba431a0f Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Thu, 6 Sep 2018 13:59:36 -0700 Subject: [PATCH 03/44] Update multi-factor-auth.markdown --- source/_docs/authentication/multi-factor-auth.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index d1528a8197b..19fc53d8d98 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -66,9 +66,9 @@ homeassistant: Notify MFA module using [notify component](https://www.home-assistant.io/components/notify/) to delivery a [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm) to user configured target. -User need first set up the MFA module by select one of the aviliable notify service. A six digit one-time password will be sent by this notify service, user need to input it to verify the setup. +User need first set up the MFA module by select one of the aviliable notify service. A 8 digit one-time password will be sent by this notify service, user need to input it to verify the setup. -During the login process, a six digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again. +During the login process, an 8 digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again.

Notify MFA module would not verify the one-time password deliveried success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable nofiy MFA module to resolve the issue. From 7d05122aa55cc8adde42e84e04ad502d95d8e9dc Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Mon, 10 Sep 2018 13:23:36 -0400 Subject: [PATCH 04/44] Support for Insteon Hub Version 1 (#6211) * Support for Insteon Hub Version 1 * Spelling and gramar fixes * :pencil2: Tweaks --- .gitignore | 1 + source/_components/insteon.markdown | 98 +++++++++++++++++------------ 2 files changed, 60 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index f02128325f5..933ece07209 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ source/.jekyll-metadata /.vs/slnx.sqlite-journal /.vs/VSWorkspaceState.json .vscode +*.suo diff --git a/source/_components/insteon.markdown b/source/_components/insteon.markdown index e2518a09784..7cb8e635ec7 100644 --- a/source/_components/insteon.markdown +++ b/source/_components/insteon.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Insteon" -description: "Instructions on how to setup an Insteon Modem (PLM or Hub) locally within Home Assistant." +description: "Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant." date: 2018-08-20 16:00 sidebar: true comments: false @@ -18,19 +18,20 @@ linked INSTEON devices to be used within Home Assistant as binary sensors, lights, fans, sensors and switches. Device support is provided by the underlying [insteonplm] package. It is known to work with the [2413U] USB and [2412S] RS242 flavors of PLM and the [2448A7] USB stick. It has also been -tested to work with the [2245] Hub. +tested to work with the [2242] and [2245] Hubs. [insteonplm]: https://github.com/nugget/python-insteonplm [2413U]: https://www.insteon.com/powerlinc-modem-usb [2412S]: https://www.insteon.com/powerlinc-modem-serial [2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html [2245]: https://www.insteon.com/insteon-hub/ +[2242]: https://www.insteon.com/support-knowledgebase/2014/9/26/insteon-hub-owners-manual ### {% linkable_title INSTEON Modem configuration %} -To setup a Powerline Modem (PLM) device such as the [2413U], use the following -configuration: +To set up an INSTEON Powerline Modem (PLM) device such as the [2413U], use the +following configuration: ```yaml # PLM configuration variables @@ -38,15 +39,26 @@ insteon: port: SERIAL_PORT ``` -To setup an INSTEON Hub such as the [2245], use the following configuration: - +To set up an INSTEON Hub model [2245], use the following configuration: + ```yaml -# Hub configuration variables +# Hub 2245 configuration variables insteon: host: HOST ip_port: IP_PORT username: USERNAME password: PASSWORD + hub_version: 2 +``` + +To set up an INSTEON Hub model [2242], use the following configuration: + +```yaml +# Hub 2242 configuration variables +insteon: + host: HOST + ip_port: IP_PORT + hub_version: 1 ``` Addtional configuration items are available: @@ -71,14 +83,23 @@ insteon: ``` Configuration variables: - **port** (*Required for PLM setup*): The serial or USB port for your device, - e.g., `/dev/ttyUSB0` -- **host** (*Required for Hub setup*): The host name or IP address of the Hub -- **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. - (default value is 25105) -- **username** (*Required for Hub setup*): The username to login to the local - Hub -- **password** (*Required for Hub setup*): The password to login to the local - Hub + e.g., `/dev/ttyUSB0` or `COM3` +- **host** (*Required for Hub setup*): The host name or IP address of the Hub. +- **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. For + Hub model [2245] (i.e. Hub version 2) the default port is 25105. For the Hub + model [2242] (i.e. Hub version 1) the default port is 9761. Use the Insteon + app to find the port number for your specific Hub. +- **username** (*Required for Hub version 2 setup*): The username to login in + to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup. + You can find your Hub username on the bottom of the Hub or you can use the + Insteon app. +- **password** (*Required for Hub version 2 setup*): The password to login in + to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup. + You can find your Hub password on the bottom of the Hub or you can use the + Insteon app. +- **hub_version** (*Required for Hub version 1 setup*): The Hub version number + where model [2242] is Hub version 1 and model [2245] is Hub version 2. + (Default is 2) - **device_override** (*Optional*): Override the default device definition - *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c - *CATEGORY* is found in the back of the device's User Guide in the form of @@ -92,16 +113,16 @@ Configuration variables: - *UNITCODE* is the X10 unit code values 1 - 16 - *PLATFORM* is the Home Assistant Platform to associate the device with. The following platforms are supported - - binary_sensor: Used for on/off devices or keypad buttons that are read only. + - binary_sensor: Used for on/off devices or keypad buttons that are read-only. - light: Used for dimmable X10 devices - switch: Used for On/Off X10 devices - *STEPS* is the number of dim/bright steps the device supports. Used for dimmable X10 devices only. Default value is 22. -- **x10_all_units_off** (*Optional*): Creates an binary_sensor that responds +- **x10_all_units_off** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Units Off. -- **x10_all_lights_on** (*Optional*): Creates an binary_sensor that responds +- **x10_all_lights_on** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Lights On -- **x10_all_lights_off** (*Optional*): Creates an binary_sensor that responds +- **x10_all_lights_off** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Lights Off ### {% linkable_title Autodiscovery %} @@ -111,27 +132,27 @@ per device. Subsequent startups will occur much quicker using cached device information. If a device is not recognized during autodiscovery, you can add the device to the **device_override** configuration. -In order for a device to be discovered it must be linked to the INSTEON Modem +In order for a device to be discovered, it must be linked to the INSTEON Modem as either a responder or a controller. ### {% linkable_title Linking Devices to the INSTEON Modem %} In order for any two Insteon devices to talk with one another, they must be -linked. For an overview of device linking please read the Insteon page on +linked. For an overview of device linking, please read the Insteon page on [understanding linking]. The Insteon Modem module supports All-Linking through [Development Tools] service calls. The following services are available: - **insteon.add_all_link**: Puts the Insteon Modem (IM) into All-Linking -mode. The IM can be set as as controller or a responder. If the IM is a -controler, put the IM into linking mode then press the SET button on the -device. If the IM is a responer, press the SET button on the device then +mode. The IM can be set as a controller or a responder. If the IM is a +controller, put the IM into linking mode then press the SET button on the +device. If the IM is a responder, press the SET button on the device then put the IM into linking mode. - **insteon.delete_all_link**: Tells the Insteon Modem (IM) to remove an All-Link record from the All-Link Database of the IM and a device. Once the IM is set to delete the link, press the SET button on the corresponding device to complete the process. - **insteon.load_all_link_database**: Load the All-Link Database for a -device. WARNING - Loading a device All-Link database may take a LONG time and +device. WARNING - Loading a device All-Link database may take a LONG time and may need to be repeated to obtain all records. - **insteon.print_all_link_database**: Print the All-Link Database for a device. Requires that the All-Link Database is loaded first. @@ -174,7 +195,7 @@ devices. INSTEON devices are added to Home Assistant using the platform(s) that make the most sense given the model and features of the hardware. The features of the -INSTEON device are built into the Home Assistant platform. Changing the +INSTEON devices are built into the Home Assistant platform. Changing the platform is not recommended. There are two primary uses for the **device_override** feature. - Devices that do not respond during autodiscovery. This is common for battery @@ -185,7 +206,7 @@ platform is not recommended. There are two primary uses for the ### {% linkable_title Example Configuration with Options%} ```yaml -# Full example of insteon configuration with customizations and overrides +# Full example of Insteon configuration with customizations and overrides homeassistant: customize: @@ -205,7 +226,7 @@ insteon: ### {% linkable_title What NOT to do %} -Insteon Modem is a top level component and device discovery will identify +Insteon Modem is a top-level component and device discovery will identify the Home Assistant platform the device belongs in. As such, do not declare Insteon devices in other platforms. For example, this configuration will NOT work: @@ -224,19 +245,18 @@ events. The following events are available: - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without dots (e.g. 1a2b3c) - - **button**: (Optional) The button id in lower case. For an 4 button remote - the values are a to d. For an 8 button remote the values are a to g. For - a one button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote + the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For + a one-button remote this field is not used. - **insteon.button_of** - **address**: (required) The Insteon device address in lower case without dots (e.g. 1a2b3c) - - **button**: (Optional) The button id in lower case. For an 4 button remote - the values are a to d. For an 8 button remote the values are a to g. For - a one button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote + the values are a to d. For an 8 button remote the values are `a` to `g`. For + a one-button remote this field is not used. -This allows the mini-remotes to be configured as - -Here is an example of how to use these events for automations: +This allows the mini-remotes to be configured as triggers for automations. Here +is an example of how to use these events for automations: ``` automation: @@ -276,8 +296,8 @@ The INSTEON Hub has three known issues that are inherent to the design of the Hub: 1. If you see multiple error messages in the log file stating the Hub -connection is closed and reconnection has failed, this generally requires -the Hub to be restarted in order to reconnect. +connection is closed, and reconnection has failed, this generally requires +the Hub to be restarted to reconnect. 2. You cannot use both Home Assistant and the INSTEON app. If you do, the changes made in the app will not appear in Home Assistant. Changes made in From 1e77e3aea8f63892eeb6587cf41981a294959aa8 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Tue, 11 Sep 2018 10:30:09 +0100 Subject: [PATCH 05/44] Adds token parameter to Camera.Push (#6130) * Adds token parameter to Camera.Push * update require --- source/_components/camera.push.markdown | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/_components/camera.push.markdown b/source/_components/camera.push.markdown index c70dee014c0..be639978032 100644 --- a/source/_components/camera.push.markdown +++ b/source/_components/camera.push.markdown @@ -25,11 +25,9 @@ The `push` camera can as an example be used with [motionEye](https://github.com/ In motionEye, under **File Storage -> Run A Command** type in: ```bash -curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera +curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera?token=12345678 ``` -Please take note that you might need to add `-H "x-ha-access: YOUR_PASSWORD"` if you have API authentication enabled. - Optionally configure motionEye to save only motion triggered images by going into **Still Images -> Capture Mode** and setting **Motion Triggered**. Tune your preferences under **Motion Detection**. In this setup, you can configure the push camera to continuously replay the last motion triggered event using a configuration such as: @@ -40,6 +38,7 @@ camera: name: MotionEye Outdoor buffer: 3 timeout: 5 + token: 12345678 ``` ## {% linkable_title Configuration %} @@ -51,6 +50,7 @@ To enable this camera in your installation, add the following to your `configura camera: - platform: push name: My Push Camera + token: 12345678 ``` {% configuration %} @@ -69,6 +69,10 @@ timeout: required: false default: 5 seconds type: time +token: + description: User provided token acting as access control, should be a large string (more then 8 chars). Required if you can't use HA new auth system (0.77). + required: false + type: string field: description: HTTP POST field containing the image file required: false From 810473b6921e48e46d0026f264dbe6011893adfa Mon Sep 17 00:00:00 2001 From: Nate Clark Date: Wed, 12 Sep 2018 07:55:16 -0400 Subject: [PATCH 06/44] document option added to konnected binary sensors (#6220) * document option added to konnected binary sensors * Update konnected.markdown --- source/_components/konnected.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index df50d5abc37..35ed373fd36 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -83,6 +83,11 @@ devices: description: The name of the device used in the front end. required: false default: automatically generated + inverse: + type: boolean + description: Inverts the open/closed meaning of a binary sensor circuit. Commonly needed for normally open wired smoke alarm circuits. + required: false + default: false switches: description: A list of actuators (on/off switches) connected to the device. See [Konnected Switch](/components/switch.konnected/) for configuration variables. required: false @@ -133,6 +138,7 @@ konnected: - zone: 2 type: smoke name: 'Bedroom Smoke Detector' + inverse: true - zone: 3 type: motion name: 'Test Motion' @@ -182,6 +188,9 @@ Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly use ### {% linkable_title Revision History %} +#### 0.79 +* Added `inverse` configuration option for binary sensors. + #### 0.77 * Added support for momentary and beep/blink switches. [[#15973](https://github.com/home-assistant/home-assistant/pull/15973)] * Decouple entity initialization from discovery, enabling devices to recover faster after a Home Assistant reboot. [[#16146](https://github.com/home-assistant/home-assistant/pull/16146)] From 5e06db6c45b1430ecaf4cebcc3bb8bf2496f9fc4 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Wed, 12 Sep 2018 14:59:33 +0200 Subject: [PATCH 07/44] Update docs for nfandroid notify platform (#6259) * Update docs for nfandroid notify platform * Remove IoT class --- .../_components/notify.nfandroidtv.markdown | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown index e1bf8659ba8..6ec1639edb2 100644 --- a/source/_components/notify.nfandroidtv.markdown +++ b/source/_components/notify.nfandroidtv.markdown @@ -10,15 +10,14 @@ footer: true logo: nfandroidtv.png ha_category: Notifications ha_release: 0.32 -ha_iot_class: "Local Polling" --- -Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). +Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g. security cam) is supported too. The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. -When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. +When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your Android TV device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. To enable the notification platform, add the following to your `configuration.yaml` file: @@ -35,6 +34,7 @@ Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - **host** (*Required*): IP address of the Android TV / FireTV device. - **duration** (*Optional*): The duration in seconds for which the notification will be displayed. Default is 5 seconds. +- **fontsize** (*Optional*): Has to be one of: small, medium (default), large, max - **position** (*Optional*): Has to be one of: bottom-right (default), bottom-left, top-right, top-left, center - **color** (*Optional*): Has to be one of: grey (default), black, indigo, green, red, cyan, teal, amber, pink - **transparency** (*Optional*): Has to be one of: 0%, 25% (default), 50%, 75%, 100% @@ -48,6 +48,7 @@ This is a fully customized JSON you can use to test how the final notification w "message": "Messagetext", "title": "My Notification", "data":{ + "fontsize": "large", "position":"center", "duration":2, "transparency":"0%", @@ -56,3 +57,48 @@ This is a fully customized JSON you can use to test how the final notification w } } ``` + +### {% linkable_title Service data for sending images %} + +The following attributes can be placed inside `data` to send images. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `file` | yes | Groups the attributes for file upload. If present, either `url` or `path` have to be provided. +| `path ` | yes | Local path of an image file. Is placed inside `file`. +| `url` | yes | URL of an image file. Is placed inside `file`. +| `username` | yes | Username if the url requires authentication. Is placed inside `file`. +| `password` | yes | Password if the url requires authentication. Is placed inside `file`. +| `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing, HTTP-BASIC-Authentication is used. Is placed inside `file`. + +Example for posting file from URL: + +```json +{ + "message":"Messagetext", + "title":"My Notification", + "data":{ + "file":{ + "url":"http://[url to image file]", + "username":"optional user, if necessary", + "password":"optional password, if necessary", + "auth":"digest" + } + } +} +``` + +Example for posting file from local path: + +```json +{ + "message":"Messagetext", + "title":"My Notification", + "data":{ + "file":{ + "path":"/path/to/file.ext" + } + } +} +``` +Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. From 15c0bf02a6b6d00956075fbbedf64cea5d9405c0 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Thu, 13 Sep 2018 03:36:47 -0400 Subject: [PATCH 08/44] Nimbus doc (#6246) * Nimbus doc * Call out that the Nimbus can't officially be added to Wink anymore --- source/_components/wink.markdown | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index cf62b8d380e..0d97c91d465 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -141,6 +141,7 @@ The Wink hub, by default, can only be accessed via the cloud. This means it requ - GoControl siren and strobe - Dome siren/chime/strobe +- Quirky Nimbus (Legacy device) These can no longer be officialy added to your Wink account ### {% linkable_title Service `set_siren_auto_shutoff` %} @@ -286,3 +287,55 @@ script: data: enabled: False ``` + +### {% linkable_title Service `set_nimbus_dial_state` %} + +You can use the service wink/set_nimbus_dial_state to update an individual dial's value/position and it's labels + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. +| `value` | no | A number, should be between the dials min and max value (See set_nimbus_dial_configuration below) +| `labels` | yes | A list of strings the first being the value set on the dial's face and the second being the value on the dial face when the Nimbus is pressed + +Example: + +```yaml +script: + set_dial_1_value: + sequence: + - service: wink.set_nimbus_dial_state + data: + entity_id: wink.nimbus_dial_1 + value: 150 + labels: + - "Dial 1" + - "150" +``` + +### {% linkable_title Service `set_nimbus_dial_configuration` %} + +You can use the service wink/set_nimbus_dial_configuration to update an individual dial's configuration. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of chime/chime. +| `rotation` | yes | One of "cw" or "ccw" the direction the dial hand should rotate. +| `ticks` | yes | A positive number, the number of times the hand should move. +| `scale` | yes | One of "linear" or "log" How the dial should move in response to higher values. +| `min_value` | yes | A number, the minimum value that the dial can have. +| `max_value` | yes | A number, the maximum value that the dial can have. +| `min_position` | yes | A number generally [0-360], the minimum position for the dial's hand. +| `max_value` | yes | A number generally [0-360], the maximum position for the dial's hand. + +Example: + +```yaml +script: + set_dial_1_value: + sequence: + - service: wink.set_nimbus_dial_state + data: + entity_id: wink.nimbus_dial_1 + rotation: 'ccw' +``` From 600c6f7aae7e65ebe93343745db74c497d1f008d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Fri, 14 Sep 2018 12:00:26 +0200 Subject: [PATCH 09/44] Update switch.switchmate.markdown (#6275) --- source/_components/switch.switchmate.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/switch.switchmate.markdown b/source/_components/switch.switchmate.markdown index b6e53624eed..2d332c4c838 100644 --- a/source/_components/switch.switchmate.markdown +++ b/source/_components/switch.switchmate.markdown @@ -34,3 +34,5 @@ name: type: string {% endconfiguration %} + +The component is tested with SwitchMate Lighting Control Rocker and SwitchMate Lighting Control Toggle. From 219562064bf511412676ed09af4950a5e31fe0be Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 14 Sep 2018 13:49:07 +0200 Subject: [PATCH 10/44] Update device_tracker.bluetooth_le_tracker.markdown (#6273) --- .../device_tracker.bluetooth_le_tracker.markdown | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/source/_components/device_tracker.bluetooth_le_tracker.markdown b/source/_components/device_tracker.bluetooth_le_tracker.markdown index ce1dab50002..83c21c615b7 100644 --- a/source/_components/device_tracker.bluetooth_le_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_le_tracker.markdown @@ -13,10 +13,6 @@ ha_iot_class: "Local Poll" ha_release: 0.27 --- -

-We have received numerous reports that this integration will have a big impact on the performance of the server. -

- This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. Devices discovered are stored with 'BLE_' as the prefix for device mac addresses in `known_devices.yaml`. @@ -24,7 +20,7 @@ Devices discovered are stored with 'BLE_' as the prefix for device mac addresses This platform requires pybluez to be installed. On Debian based installs, run ```bash -$ sudo apt install bluetooth libbluetooth-dev pkg-config libboost-python-dev libboost-thread-dev libglib2.0-dev python-dev +$ sudo apt install bluetooth ``` Before you get started with this platform, please note that: @@ -42,9 +38,7 @@ device_tracker: Configuration variables: -- **device_id** (*Optional*): The device ID for the Bluetooth device to be used for tracking. Defaults to `hci0`. - **track_new_devices** (*Optional*): If new discovered devices are tracked by default. Defaults to `True`. -- **scan_duration** (*Optional*): How long should the scanner be looking for BLE devices. Defaults to `10` seconds. - **interval_seconds** (*Optional*): Seconds between each scan for new devices. Defaults to `12` seconds. As some BT LE devices change their MAC address regularly, a new device is only discovered when it has been seen 5 times. @@ -59,12 +53,6 @@ $ sudo apt-get install libcap2-bin $ sudo setcap 'cap_net_raw,cap_net_admin+eip' `readlink -f \`which python3\`` ``` -If you have installed Home Assistant with [AIO](/getting-started/installation-raspberry-pi-all-in-one/), you need to do the following command, this will grant access to Home Assistant to run the required command. - -```bash -$ sudo setcap cap_net_raw,cap_net_admin+eip /srv/homeassistant/homeassistant_venv/bin/python3 -``` - A restart of Home Assistant is required. For additional configuration variables check the [Device tracker page](/components/device_tracker/). From 8b7a5d58f83dfc0aec55949ec7043ae4a8408db1 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Fri, 14 Sep 2018 16:09:54 +0200 Subject: [PATCH 11/44] Changes for 0.78 --- source/_docs/z-wave/control-panel.markdown | 65 +++++++++++----------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index dc3f19c5cc5..6263208d9de 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -41,6 +41,36 @@ Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices fro * **Test Node** sends no_op test messages to the node. This could in theory bring back a dead node. +* **Node Information** this will display the Z-Wave entity card with information about the node: + +* **averageRequestRTT** The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second. +* **averageResponseRTT** The average Round Trip Time of responses to requests +* **battery_level** *Battery powered devices only* - the battery level, which may be rounded to the nearest 10 +* **capabilities** A comma separated list of the capabilities of the device +* **friendly_name** The name you specified to be displayed +* **is_awake** Whether the device is awake or not +* **is_failed** Whether the device has been marked as failed. The controller won't try to contact failed devices. +* **is_info_received** True once the controller has received the node information from the node. +* **is_ready** When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren't yet ready. +* **is_zwave_plus** True for any Z-Wave Plus devices (note that controllers always report *false*, regardless of whether they are Plus devices or not) +* **lastRequestRTT** The Round Trip Time of the last request +* **lastResponseRTT** The Round Trip Time of the response to the last request +* **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave +* **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher +* **node_id** The unique node ID of this node +* **node_name** The base name of this node, this is used to build the entity ID of all entities of this node +* **product_name** The product name of the device, as supplied by OpenZWave +* **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details) +* **receivedCnt** The number of messages received from the device +* **receivedDups** The number of duplicate messages received from the device +* **receivedTS** The date and time the last message was received from the devices +* **receivedUnsolicited** How many unsolicited messages were received +* **retries** How many retries have been made to send messages to this node +* **sentCnt** How many messages have been sent to the node +* **sentFailed** How many messages that were sent weren't acknowledged +* **sentTS** The date and time the last message was sent to the ndoe +* **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds +

Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.

@@ -58,38 +88,6 @@ The **Polling intensity** says how many poll intervals does is this device polle You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. -### {% linkable_title Node Information %} - -This will display the Z-Wave related information about the node: - -* **averageRequestRTT** The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second. -* **averageResponseRTT** The average Round Trip Time of responses to requests -* **battery_level** *Battery powered devices only* - the battery level, which may be rounded to the nearest 10 -* **capabilities** A comma separated list of the capabilities of the device -* **friendly_name** The name you specified to be displayed -* **is_awake** Whether the device is awake or not -* **is_failed** Whether the device has been marked as failed. The controller won't try to contact failed devices. -* **is_info_received** True once the controller has received the node information from the node. -* **is_ready** When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren't yet ready. -* **is_zwave_plus** True for any Z-Wave Plus devices (note that controllers always report *false*, regardless of whether they are Plus devices or not) -* **lastRequestRTT** The Round Trip Time of the last request -* **lastResponseRTT** The Round Trip Time of the response to the last request -* **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave -* **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher -* **node_id** The unique node ID of this node -* **node_name** The base name of this node, this is used to build the entity ID of all entities of this node -* **product_name** The product name of the device, as supplied by OpenZWave -* **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details) -* **receivedCnt** The number of messages received from the device -* **receivedDups** The number of duplicate messages received from the device -* **receivedTS** The date and time the last message was received from the devices -* **receivedUnsolicited** How many unsolicited messages were received -* **retries** How many retries have been made to send messages to this node -* **sentCnt** How many messages have been sent to the node -* **sentFailed** How many messages that were sent weren't acknowledged -* **sentTS** The date and time the last message was sent to the ndoe -* **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds - ### {% linkable_title Node Values %} Contains a list of available values of the selected node, and it's instances. @@ -160,4 +158,5 @@ for c in sys.argv[1]: ## {% linkable_title OZW Log %} If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log. -Select **Refresh** to display the log if you need it to check activities. +Select **Load** to open a new window with the static log. +Select **Tail** to open a new window with a tailing log with the last specified lines of the log. This is a self updating window. From 669fc8ef196502810de4e19615b7201fad41451a Mon Sep 17 00:00:00 2001 From: Mattias Welponer Date: Sat, 15 Sep 2018 21:33:13 +0200 Subject: [PATCH 12/44] Add new supported devices (#6290) --- source/_components/homematicip_cloud.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown index 2a4c981e2e0..42ee4b27e2a 100644 --- a/source/_components/homematicip_cloud.markdown +++ b/source/_components/homematicip_cloud.markdown @@ -65,9 +65,11 @@ authtoken: - homematicip_cloud.binary_sensor - Window and door contact (*HmIP-SWDO*) - - Smoke sensor and alarm (*HmIP-SWSD*) + - Rotary Handle Sensor (*HmIP-SRH*) + - Smoke sensor and alarm (*HmIP-SWSD*) - Motion detectors (*HmIP-SMI*) - Motion detectors and push button (*HmIP-SMI55*) + - Water detector (*HmIP-SWD*) - homematicip_cloud.climate - Radiator thermostat (*HmIP-eTRV,-2*) @@ -82,6 +84,7 @@ authtoken: - Wall-mounted thermostat (*HmIP-WTH*) - Temperature and humidity sensor (*HmIP-STH*) - Temperature and humidity Sensor with display (*HmIP-STHD*) + - Outdoor temperature and humidity sensor (*HmIP-STHO*) - Illuminance sensor (*HmIP-SMI, 55*) - homematicip_cloud.switch From dde89ddcf9517fa63666d3eec85f5769a8afbf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Sun, 16 Sep 2018 09:17:47 +0100 Subject: [PATCH 13/44] Add docs for new EDP re:dy component (#6200) * add docs for EDP re:dy component * fix platform name * Fix indentation * PR fixes --- source/_components/edp_redy.markdown | 45 ++++++++++++++++++++ source/_components/sensor.edp_redy.markdown | 18 ++++++++ source/_components/switch.edp_redy.markdown | 18 ++++++++ source/images/supported_brands/edp_redy.png | Bin 0 -> 26259 bytes 4 files changed, 81 insertions(+) create mode 100644 source/_components/edp_redy.markdown create mode 100644 source/_components/sensor.edp_redy.markdown create mode 100644 source/_components/switch.edp_redy.markdown create mode 100644 source/images/supported_brands/edp_redy.png diff --git a/source/_components/edp_redy.markdown b/source/_components/edp_redy.markdown new file mode 100644 index 00000000000..ed1bbdef7fe --- /dev/null +++ b/source/_components/edp_redy.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "EDP re:dy" +description: "Instructions on how to integrate the EDP re:dy platform into Home Assistant." +date: 2018-09-04 16:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: edp_redy.png +ha_category: Hub +ha_release: "0.79" +ha_iot_class: "Cloud Polling" +--- + +[EDP re:dy](https://www.edp.pt/particulares/servicos/redy/) is a Home Automation platform from Portuguese energy provider EDP, that allows control of appliances and other devices, as well as monitoring power consumption. This component allows integrating EDP re:dy into Home Assistant. + +## {% linkable_title Configuration %} + +You will need your re:dy login information (username and password) to use this component. + +To set it up, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +edp_redy: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: The username for accessing your re:dy account. + required: true + type: string +password: + description: The password for accessing your re:dy account. + required: true + type: string +{% endconfiguration %} + +After configuring the component, it will automatically add to Home Assistant: + +* A switch per toggleable device (switch, plug, etc). +* A sensor per each device that reports power consumption (SmartMeter, plug, meter) diff --git a/source/_components/sensor.edp_redy.markdown b/source/_components/sensor.edp_redy.markdown new file mode 100644 index 00000000000..4071a509467 --- /dev/null +++ b/source/_components/sensor.edp_redy.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "EDP re:dy Sensor" +description: "Instructions on how to integrate the EDP re:dy sensors into Home Assistant." +date: 2018-09-04 16:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: edp_redy.png +ha_category: Sensor +ha_release: "0.79" +ha_iot_class: "Cloud Polling" +--- + +See the [EDP re:dy main component](/components/edp_redy/) for configuration instructions. + +This sensor platform will provide a sensor per each EDP re:dy device that reports power consumption (SmartMeter, plug, meter). \ No newline at end of file diff --git a/source/_components/switch.edp_redy.markdown b/source/_components/switch.edp_redy.markdown new file mode 100644 index 00000000000..9f8e7984164 --- /dev/null +++ b/source/_components/switch.edp_redy.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "EDP re:dy Switch" +description: "Instructions on how to integrate the EDP re:dy switches into Home Assistant." +date: 2018-09-04 16:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: edp_redy.png +ha_category: Switch +ha_release: "0.79" +ha_iot_class: "Cloud Polling" +--- + +See the [EDP re:dy main component](/components/edp_redy/) for configuration instructions. + +This switch platform will provide a switch per toggleable EDP re:dy device (switch, plug, etc). diff --git a/source/images/supported_brands/edp_redy.png b/source/images/supported_brands/edp_redy.png new file mode 100644 index 0000000000000000000000000000000000000000..81959baffb95a2114ae9a8da46773f77e4846ab9 GIT binary patch literal 26259 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 Date: Sun, 16 Sep 2018 14:13:54 +0200 Subject: [PATCH 14/44] Update switch.switchmate.markdown (#6292) --- source/_components/switch.switchmate.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/switch.switchmate.markdown b/source/_components/switch.switchmate.markdown index 2d332c4c838..bfc26d496c9 100644 --- a/source/_components/switch.switchmate.markdown +++ b/source/_components/switch.switchmate.markdown @@ -32,6 +32,11 @@ name: description: The name used to display the switch in the frontend. required: false type: string +flip_on_off: + description: Option to flip the on/off state. + required: false + type: boolean + default: false {% endconfiguration %} From 0f1cdee7b0f4706784da79a88c35c1626bc75dbf Mon Sep 17 00:00:00 2001 From: randellhodges Date: Mon, 17 Sep 2018 14:16:40 -0500 Subject: [PATCH 15/44] Added aspect_ratio documentation (#6301) --- source/_lovelace/picture-entity.markdown | 4 ++++ source/_lovelace/picture-glance.markdown | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index 39ad6002f19..de390f82299 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -38,6 +38,10 @@ state_image: required: false description: "Map entity states to images (`state: image URL`, check the example below)." type: object +aspect_ratio: + required: false + description: "Forces the height of the image to be a ratio of the width. You may enter a value such as: `16x9`, `16:9`, `1.78`." + type: string name: required: false description: Overwrite entity name. diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index 62a6c258c82..e4f4162cbf6 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -51,6 +51,10 @@ state_image: type: string required: false description: "`state: image-url`, check the example below." +aspect_ratio: + required: false + description: "Forces the height of the image to be a ratio of the width. You may enter a value such as: `16x9`, `16:9`, `1.78`." + type: string entity: required: false description: Entity to use for `state_image`. From 2493f6970ee33f04a8abf0bfcf54e72d2ebeaaa5 Mon Sep 17 00:00:00 2001 From: Tsvi Mostovicz Date: Mon, 17 Sep 2018 23:30:20 +0300 Subject: [PATCH 16/44] Jewish calendar component documentation (#6265) * Initial commit for Jewosh calendar documentation * Minimize the configuration sample * Update 'ha_release' --- .../sensor.jewish_calendar.markdown | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 source/_components/sensor.jewish_calendar.markdown diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/sensor.jewish_calendar.markdown new file mode 100644 index 00000000000..c9f6f8c7ec6 --- /dev/null +++ b/source/_components/sensor.jewish_calendar.markdown @@ -0,0 +1,104 @@ +--- +layout: page +title: "Jewish Calendar" +description: "Instructions on how to integrate the Jewish Calendar sensor within Home Assistant." +date: 2018-09-09 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Calendar +ha_iot_class: "Local Push" +ha_release: "0.80" +--- + +The Jewish Calendar (`jewish_calendar`) sensor platform displays a variety of information related to the Jewish Calendar as a variety of sensors. + +## {% linkable_title Configuration %} + +To enable this sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: jewish_calendar +``` + +{% configuration %} +language: + required: false + default: hebrew + description: Whether to represent the sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishri 5779). + type: string +latitude: + required: false + description: Latitude for time calculations of the sensor. + default: Home Assistant location + type: int +longitude: + required: false + description: Longitude for time calculations of the sensor. + default: Home Assistant location + type: int +disapora: + required: false + description: Consider the location as diaspora or not for calculation of the weekly portion and holidays. + default: False + type: string +sensors: + required: false + default: date + description: List of available sensors. + keys: + date: + description: Show the hebrew date for today. + weekly_portion: + description: Show the weekly portion (parshat hashavu'a) - _At the moment only shows up on Saturday's_. + holiday_name: + description: If it is a holiday, show the name of the holiday. + holyness: + description: On a scale of 1 to 9 show the level of holyness _(see below)_. + first_light: + description: First light of dawn (Alot Hashachar - עלות השחר). + gra_end_shma: + description: Last time for reading of the Shma according to the GR"A. + mga_end_shma: + description: Last time for reading of the Shma according to the MG"A. + plag_mincha: + description: Time of the Plag Hamincha. + first_stars: + description: Time at which the first stars are visible (Tset Hakochavim - צאת הכוכבים). +{% endconfiguration %} + +### {% linkable_title Holyness levels %} + +1. Mido'rayta - by Torah ordination (Rosh Hashana, Yom Kippur, Pesach, Shavuot, Sukkot) +2. Erev Yom Kippur +3. Hol Hamo'ed +4. Hanukka and Purim +5. Fast days +6. Yom Yerushalayim and Yom Haatsmaut +7. 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. + +## {% linkable_title Full configuration sample %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: jewish_calendar + language: english + disapora: True + sensors: + - date + - weekly_portion + - holiday_name + - holyness + - first_light + - gra_end_shma + - mga_end_shma + - plag_mincha + - first_stars +``` From 53f3f12d5a62bc3658bd2a5fe428d775a245d4be Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Tue, 18 Sep 2018 12:20:01 +0200 Subject: [PATCH 17/44] Update on velbus docu (#6307) --- source/_components/sensor.velbus.markdown | 2 +- source/_components/velbus.markdown | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/_components/sensor.velbus.markdown b/source/_components/sensor.velbus.markdown index 7ec537b6e57..56233e50c8a 100644 --- a/source/_components/sensor.velbus.markdown +++ b/source/_components/sensor.velbus.markdown @@ -13,6 +13,6 @@ ha_iot_class: "Local Push" ha_release: 0.78 --- -The `velbus` sensor allows you to control [Velbus](http://www.velbus.eu) connected temperature sensors. +The `velbus` sensor allows you to control [Velbus](http://www.velbus.eu) connected sensors. For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/velbus.markdown b/source/_components/velbus.markdown index 329258ee28a..c5cb790ee99 100644 --- a/source/_components/velbus.markdown +++ b/source/_components/velbus.markdown @@ -13,21 +13,27 @@ ha_iot_class: "Local Push" ha_release: "0.50" --- -The `velbus` component supports the Velbus USB and serial gateways. +The `velbus` component supports the Velbus USB, Velbus serial and a TCP/IP gateway. ## {% linkable_title Configuration %} The gateway needs to be configured by adding the following lines to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for a USB or serial interface velbus: port: '/dev/ttyUSB00' ``` +```yaml +# Example configuration.yaml entry for a TCP/IP interface +velbus: + port: '127.0.0.1:3678' +``` + {% configuration %} port: - description: The port where your board is connected to your Home Assistant host. The port will be most likely named `ttyUSB*`. + description: The port where your board is connected to your Home Assistant host. required: true type: string {% endconfiguration %} From c521be3079cc91a7cb5a9ead19f174d97ee9f08c Mon Sep 17 00:00:00 2001 From: Adam Dullage Date: Tue, 18 Sep 2018 14:55:22 +0100 Subject: [PATCH 18/44] Added Component Page for Starling Bank Platform (#6236) * First Draft * Updated Starling Bank Docs * Changed Category to Finance * Added Sandbox Option Description * Minimize configuration sample --- .../_components/sensor.starlingbank.markdown | 80 ++++++++++++++++++ .../images/supported_brands/starlingbank.png | Bin 0 -> 26439 bytes 2 files changed, 80 insertions(+) create mode 100644 source/_components/sensor.starlingbank.markdown create mode 100644 source/images/supported_brands/starlingbank.png diff --git a/source/_components/sensor.starlingbank.markdown b/source/_components/sensor.starlingbank.markdown new file mode 100644 index 00000000000..e997e0da2a3 --- /dev/null +++ b/source/_components/sensor.starlingbank.markdown @@ -0,0 +1,80 @@ +--- +layout: page +title: "Starling Bank" +description: "How to integrate your Starling Bank account within Home Assistant." +date: 2018-09-07 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: starlingbank.png +ha_category: Finance +featured: false +ha_release: "0.79" +ha_iot_class: "Cloud Polling" +--- + +The Starling Bank sensor platform allows you to monitor your account balance data as sensors in Home Assistant. + +* Turn off the lights when money's tight? +* Play a song when you reach a savings goal? +* Sound an alarm if you go into your overdraft? + +You can find more information about Starling Bank at [their website](https://www.starlingbank.com/). Information on their API can be found on their [developers site](https://developer.starlingbank.com/). + +## {% linkable_title Access Token %} + +Once you have your own Starling bank account you will need to sign up for a Staring developer account [here](https://developer.starlingbank.com/signup). You won't need to do any development but you will need to get a "Personal Access Token" that will allow the integration to access your account balance. + +

+ You control what access is granted using this token. This integration only needs very basic access (see below). +

+ +Once you've signed up: +1. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account. +2. Click "Create Token". +3. Give your token a name e.g. "Home Assistant". +4. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked. +5. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration. + +## {% linkable_title Configuration %} + +To add Starling account balance sensors to your installation, add the following to your `configuration.yaml` file: +```yaml +# Example configuration.yaml entry +sensor: + - platform: starlingbank + accounts: + - access_token: YOUR_PERSONAL_ACCESS_TOKEN +``` + +{% configuration %} +accounts: + description: A list of Starling accounts. Allows you to monitor multiple Starling accounts. + required: true + type: list +name: + description: A friendly name for your account. + required: false + type: string + default: Starling +sandbox: + description: For test purposes. Set to true if you are using an access token for a sandbox Starling account. + required: false + default: false + type: boolean +access_token: + description: Your personal access token. + required: true + type: string +balance_types: + description: Choose to monitor your cleared or effective balance (or both). + required: false + type: list + default: Both balance types will be monitored. + keys: + cleared_balance: + description: Excludes outstanding transactions. + effective_balance: + description: Includes outstanding transactions. +{% endconfiguration %} diff --git a/source/images/supported_brands/starlingbank.png b/source/images/supported_brands/starlingbank.png new file mode 100644 index 0000000000000000000000000000000000000000..dd1c5eff70323d8eab5c841381586f03ce01de2a GIT binary patch literal 26439 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

G@OVVlrzdtDb$gCz|xrS^N)A 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 Qfjtw}(CkRzA-9 Date: Wed, 19 Sep 2018 00:36:25 +0200 Subject: [PATCH 19/44] New netdata config syntax to allow for multiple elements per group (#6296) --- source/_components/sensor.netdata.markdown | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/source/_components/sensor.netdata.markdown b/source/_components/sensor.netdata.markdown index 6cf4c3e1d86..0a1a4df622d 100644 --- a/source/_components/sensor.netdata.markdown +++ b/source/_components/sensor.netdata.markdown @@ -51,9 +51,11 @@ To add this platform to your installation, add the following to your `configurat sensor: - platform: netdata resources: - system.load: + load: + data_group: system.load element: load15 - system.cpu: + cpu: + data_group: system.cpu element: system ``` @@ -78,19 +80,19 @@ resources: required: true type: map keys: - data_group: - description: "Name of the data group to monitor, e.g., `system.cpu`." + name: + description: Name to use for the sensor in the frontend. required: true + type: string keys: + data_group: + description: "Name of the data group to monitor, e.g., `system.cpu`." + required: true + type: string element: description: The element of the group to monitor. required: true type: string - name: - description: Name to use for the sensor in the frontend. - required: false - type: string - default: element name icon: description: Icon to use for the sensor. required: false From 98b2098d5378b5195116ad23215331db0c0a21fc Mon Sep 17 00:00:00 2001 From: Nikolay Kasyanov Date: Thu, 20 Sep 2018 08:16:48 +0200 Subject: [PATCH 20/44] Add unique_id to mqtt_json light (#6319) Applies changes from #6121 to mqtt_json component. --- source/_components/light.mqtt_json.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown index 6e70c8be891..cd4f65737e5 100644 --- a/source/_components/light.mqtt_json.markdown +++ b/source/_components/light.mqtt_json.markdown @@ -56,6 +56,10 @@ name: required: false type: string default: MQTT JSON Light +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string command_topic: description: The MQTT topic to publish commands to change the light’s state. required: true @@ -262,4 +266,4 @@ Home Assistant expects the hue values to be in the range 0 to 360 and the satura - [esphomelib](https://github.com/OttoWinter/esphomelib) is a library for ESP8266 and ESP32 boards that has many of Home Assistant's MQTT features (like [discovery](/docs/mqtt/discovery/)) pre-implemented and provides high-level abstractions for components such as lights or sensors. -- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/components/light.mqtt_json/) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. \ No newline at end of file +- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/components/light.mqtt_json/) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. From b464765a1c4ef64ce9adeab3752d118f6b8823ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Thu, 20 Sep 2018 17:50:24 +0200 Subject: [PATCH 21/44] Met.no weather platform (#6287) * Create weather.met.markdown * Add files via upload * Update weather.met.markdown * Update weather.met.markdown * Update weather.met.markdown --- source/_components/weather.met.markdown | 44 +++++++++++++++++++++++ source/images/supported_brands/metno.png | Bin 0 -> 24183 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/weather.met.markdown create mode 100644 source/images/supported_brands/metno.png diff --git a/source/_components/weather.met.markdown b/source/_components/weather.met.markdown new file mode 100644 index 00000000000..1c31f4a0357 --- /dev/null +++ b/source/_components/weather.met.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Met.no" +description: "Instructions on how to integrate Met.no within Home Assistant." +date: 2018-09-17 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: metno.png +ha_category: Weather +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `met` platform uses the [Met.no](https://met.no/) web service as a source for meteorological data for your location. The weather forecast is delivered by the Norwegian Meteorological Institute and the NRK. + +## {% linkable_title Configuration %} + +To add Met to your installation, add the following to your `configuration.yaml` file: + +```yaml +weather: + - platform: met +``` + + +{% 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 +altitude: + description: Manually specify altitude. By default the value will be taken from the Home Assistant configuration. + required: false + type: number + default: Provided by Home Assistant configuration +{% endconfiguration %} diff --git a/source/images/supported_brands/metno.png b/source/images/supported_brands/metno.png new file mode 100644 index 0000000000000000000000000000000000000000..79a82c559ceb3ec150713867e6ff91633016cf80 GIT binary patch literal 24183 zcmeFZc|4Tg`#3z3ltk~cmAwsR--cnRBo(q}$(m#dlVvQ!SSl1n?}!)-+4p@nD51!b z!C)|!tYZwu7>wb$y}zH&_xE{Tuix`~{(GK(zVpwy?=$B**LALQo$H)yxzAg}hdO82 zF0z3@pfmUH-7yA%SoA=kV=gC805zB=MfN~(!B^YD*97*=*Wbb033Tfz?1_`eeGdm` zCu1jvr-5ESozy`fW`e7!g|CIa9>fvmA?3POWikN{FJ$DTWo0}(j>h#*Yad@@r~gI9|F*S{Y2XVd z8Dl3O7~Iw5u!^zXv2OvuBABq6V zAqL*AzyvzD-+?*8kN&-X2YLw(cYO*`R?=2hP?c3yQP#RECwJ%eEoE)_J1Qz*E$v%c zw-sfCDgAd#K=h9u|9i~=FaN!2ojif1>J6;Py?bE~ zKp-pW`*&`c28^#x;sf!WUzDdeLcCk6ub(uzmB6NFes*^SXOj;+h!h;da(`~Ywp3b& zFS8Y!o-JjoeZ+F0n(C1Kqw<}?&2=O?%8x@G^y({UM^+(Vn@Ys}qb+Wp>_49S&(qsB zuA@@q{O4mw<Kp6`IFwU=Ar|tcM2!y$e)A&|yn=Xj%KdZ;5>j)(_Bc zZ7QeqmRrxU>9xYVl+H+i7^;WRpJlbhlp80C4#y6lnl@u+34{N)mhnT+62k^6q1V^xnu5dLG` zVNk^`v3VMA=evEgs$)3MaP`^!)T!ABsZ;D*&AChA}KD*uvZqpatRg`S^}*vz)jkW*o_T6+%UQPjI+fhPO< z_H1TSr3*9C;@pi1K3v8YIb9OS6n9&n4&dK51oAJy)F!dUE zWsYhD8?gf|Rs)vKbA7t~Nkwzn)Im`?k(9UpBEL#j)8@uG$VY@)7XqLbbjzNtBYRi5 zpS97q4u$K*gxbMu4+H-oHKRiNDlQ7^DOC$qVta`_xy^*g-Q|dA9i3+=2ra~9@lo{A z-WM*Re)Y`xILrevsLW4kE{1@yNQ$lg)^|Oq^W2RS`I?KZbaoSe3hF?}7>4EN{+r{w zgmQ?<5p^f^W`cOkNowy6Hl_=s%=@hAoS@*@^w`zpKs>Mgzug+FrTi)rD3!>}7;NVnv`!Pg-K4edk5M4RdRpu<((?)=9qoso zm0>N@m1iO{vDH_m)B_9njyQom6hFpc#WvOQdi&cT-%^Ka>yx+|To(G3LaE&fV^`Of zTzjmy9&^x*=S=adEO=~kBtI`cAI}viRkU+u*TpZLy71~7--m-BwMASe_4PXK4tH1Gb>hkZAzkReZoBM`*0%J zXwoX71sDTPYNkPf|28>r?AldLtJxk?%{NjC z`gbNj{E<#|Kdei)jkTP5X134~+e7uDGzwYYORSw2zDmOoNqg$eZ?W^Wg-x8bJ`XE` zmi~CnIK_}2A;SK6$Pj5ey(v$CjwzC5la{noT|+t? zwIpMDrsA;FmD&6EC^x$L(UXspCjEIfij$D#yWXh_dq(pM#8MK35ZsSfM;hXY{?@Z~ z>63VwK1z#`vz^5P(t&iA6J($eB@vaCR<4-tdvHxsN+J=MKya&T{IftcEt5VU3#CY9 z+1k+1h=um{fQ>^>3d8OMwY*rxT1nc30(M@bTi3rco;Dh;o~M~J_6uh`{JhFyl~s|t z)@TF#)D&{HzjvhLzHL%F%2{-Hp-6j;OQQ-pC8lQJk9lBM*cAstAQk_cd8g9I&iQl&{La zX_Q$D5=K~2D6ye1vvnjk8t-+ka7(&KX!Fo&9Z4Lgh)hw_)mCz1YcHhK(!zd5bwZ0F zf?Z7~6{0R)6oRiaZkvDtUbiJwpr3-_GtK-jLrd%*Cv?-aT|D0$sAWnR4AsSa5VA5^ zeS$b#G3IYq>G>@51?eTL)AnD3-M~HXK9bu zo!0MlWdqSp>Rlk-_iLVhzH%FR;mMoDw_hgf`M(fMRTvNZPo*2?cI}`r4H zT{l;r{(-xg&0?@@1UtC+A%%_l>|AuzDtuAqJ@i9VxhBSSi|_9~%|2#$&xXrQ_@A?@ z-TX&J+PjS_^!l&yEh=`)mO?GM=7VP$D(azQ1K^O0z43jnjinv-A!f5Ly?1Wib7Nj) zw)z6jT5Cw~+~k7ZH9fVE%bnytzUll(X=UktKDghF0n0 zp}Cl{2HoR;yuJ|(eV&*vo={gqzaM(?KX6+=RoCl~W}znW@u+q9rkJY0t% z2o!M%&AGC)Wh+=>Y%3vN81&1)!DN_J!{G`^(G=dNp(!E$DwnSsW6FGd+;Fjzv@+{R z?B5B49;Gt+WzLfRi!GqD089F#2K3^NJ1iT1CzaPnADV&{p?!o6uaf*oG5l1`fV98=R09rR)=5jg8QZrUB)Wumxnl`3ttC&jmd=axtkMc+eV+@ z*07!pI{c}5?8XVV)foXTI&yWlrH|^g`)cnT&LbT^B~Mg!{j|7#;{`(Yi6z`x$0*(dZZ9fHvrYNXrfQs(D;R_n+OeZXNY9$YB zg)^(ag`)LDatNBxMkyuq0Dp>l3ZuF?*OM4x~tW)FMmzdEWPa7jh?T4NU}5N z4lp4m-CoRhh01IqO0A?rL3~%kCFTYuw0K_UXboGt>~(5o1Z>U9Qy*S;%cpQ9p1O(? zjmQCWcM~DmwzW>*x(Gqyaih7dp2+L5irVds(@l9-TLP_oeva>!c(?D9g^S`IjQlp^ z;DX(7kJpZH>@2=(d1$oBkhzft%VxlvGhG`ijB|DVR1R8GBn;J0)6b{adg3duch&kb zXa0Jn7}rbZ039>w^zxn@iibwzXyE{w9ELbEGu;@`Og#WTu~)>BRL|oH4L^{UH}2_u z)ldG=KorU?Q}e`{vk+*_)7z=9ujPK0n98CCwi9E6lhQY$ z`dl$9Nxd&Vjhz6iZWZGmvTFw0&QE=z_IdS`EGmN9!q0z}KT(lqKDn-I(I}I0N?$B< zEbo$nkkiV@Zre+mJTx!q6CyFBNi*?OavWr}#y38xL{~eiz<@v4?(a4_Ei#Gdr~|Jq zNdG#Yi_iaJU61h;*&m-Q=bH=c@%riUxK043r2u{sj2MUI-LS+E<5>)he}A%0O3G0%37T+NxULpM z-IF|L!KLb_e_FCX`+KeBuy~fd=r6byeaoYOT&V2Sqp=!9e*$P$a1CNP1ix0sY9)jV z?2gOrOY?l3j|Is-IA*eKzA|Q3mo!}&WqVK2XZ8>>M7E*y4Fn4r<%0WzZ~9=k&t#3f z-;&0J-m;she&t=?>r?DEd96caHutNy_-1}C0MKNB8M(JmkiqEYhqnSYBckH`E9%vO1+4Ev~lV!O7h$kS8XCS6-KJ`qdC7xG^X|5yn^kDLi5 zkVJ5m1+J`-V~?2IGJt8*>}Br=9b12)x!3gBW!Cj8nd?g2P*D%GNUJNzu(Dsr7S{di zlWK|O!=`m_vuO-gSimG^B&{@3s?IC8#i&fDrmTejptI(-)bL%Vwk1aP$(6ZtD>B;W_OJ}qKJOEvB`RjBZtS&F7-4u{e0-ws3q{|Qa0^|2^; zWuJO3_GJ%!ESCi|ZFo{|Ot=8oTigjwO|J9(V;on6gSUv{6n32PMx`8rH!5FwM$IP3 zXvZq)5DIQMEyzq-a_{`w`g_hTc~{q5SsDb2x^3UBQ9v>LL^S4{vk&bxNK%qnrJnuc zkY)utkW~28#UJ6f9$kA2`|^;qOqSsp6w;J;`d&TlJ>{zs3V2Jm9s+`K&tN6>(SCL2 zPE=msz<#oAuKH}{owO9sm4UaH)Le!aVv^| zT><0ECB*nRyH#U3%B;mA4PDAL%M`=8XJuV-yJi>WC}Vj4&dz_EuUJlK<>^?=e}=)Ymx1lrQ1y| zakytmIKz>=;)@g4v|EWj;d6^#?LBt6>bWdaV2{jL9%!D$!ZKHPHA@|e@CKdC72q$> z@S4?^)&{H_2L?a!)w&!zI(bAzU~)H+VBvXC1lTL9?ZH8PLn(N`4?I2%<{&? zeb&5eiS-|kO>gFyT~P z%7t#!%Sg+&2F0A^iNz2``V-1$zlI4KV@yjhEg?UvjwKHopf|RBddefw!`1GaTR< z)U3BuX}TafXs7p!lh@?xw z-Md@!4(S7a$*i|ObZv(=zIw*`+S!=!k)*+|A?%hW7Ley&V=bQ+x=SJC=M%ztGk8_A zxdTfca0?n(|LH3CJ*h=W zx=Ijkf63Y4jE^G*teT}Dnm(mbV3URhJxH^I&pnZM3sPOrKEI(RjAZ|G*bVg-(<~M)I1_aKbq=WQ{E@DC&}d)gee8y0j?0G^ zO$E-l%>5zGcv1&~V(|W%I{bMX#b%J)E0fa(yVz@*d_CPLz7Hx%HjqBE-tM4@)~! zLg;;VVXikG9A221IkEpkv=vP4wy`F8@&&ixLiE3hQioVTZotV-(M;xt=5@$}k)-%& zs)>EKiL}-s=5HAvMyWT&6)ai*6JGyQ>l3Fr+i%Ysp7CZKb_{`)U#B!C7*9Xi>5u$& z%7SJr=Ed}GA1DcQre=Ap%4~E#E52-|wK$ium;eGr{!virzY*e@v$Q0_9#Fcp^ED#G zJth$<(+*)T(#aF;rpB6})ebPI5#fx_+wmPYYjxGIuD=ZWA#SHTcguVDAZm5YAjB0} zCzsq$(royadPjHOCru7rHbVv+2JAOrL8WtY?tI@&ua@aMZq#|c>R+LJE`>}OL>hwo ztkj}_9SG&aFQc`)t3mr|$@g4@9mJjv>^tIgt_iisIjk8*6|ot9?re@wy4Fd#C!+(- zA~nChO8qSS=Df1KUA&1xtBo7XA}~u0vFSAjZ9l3x_jyt{zwoMl5Da>Jk@#kS3$&El zmLQt!7jWxjQ7lm+>T2W_qHWT&^am?y<$)uoPd6+M#RmVfR$Fu~q!f{#g?ydsoYq^y zU&q+r(so(6*6H^683l`DttR;Xl>$jR4m!AH-~D0VYVPU9?h%w(9yLL$$Zliy!24{^ z-!D^26R(!idS0FK>Arzq3kH@%BYJj0TG7UDD~9;tSeFwg-EkEz7=-FHPexs@YY4V= zr!8I+HmngQE$d5H)%MXmYe_tyHYl*$JRSVnA)?-V?>f<{> z3Ep&m4^FQsm=p7WSue@fPYBx&9qz|ZTvm;IMC1u|{hPQ{xX9Re7G&ZOve&afI1n_p z7l6rIYXo38B(5-MwZR-x;tc2H5}(nDErH*-hIeP^te}G#G3~Z6J+=Cs*Yw#A=P{6} z{eufh4&qpq)yP`u(%H>aaJ_X836Z;dV%H00VrpVg6xSL!_-(VsNXIb%jw#5h>Lrw2 zbb}qaW;rTjb3K|@GFH1PLOW5KF-3gA{XT-Kg+@YUlhaI~79IO;S<}!Du`@eE8_p5^ z-&r*USvWKKz6^t8*340R=YsmUUFSy9q)a4>hSoYoNP+ieTz^kHr1e0i${W|pokyJB z&hzK;jY^e9m+F{w)zwAd8#A};^)OXQw3Q`trgd9ryqz$o$XU916um=s`|HqxwL1`& zpi}2`NUI+ApbuKjWg4wo;Y+aYL^z+;V>XcBQ9#=~=Vt4t^|7iCLF&lD^$o%=hX+o> z#L1YlvID{cCXRBc%)SHJQxY%Ud|hr&M>g$+I4)gh&d+MX)xoRd2Ef!ejI8MAw7;NWu8Q0l|x{`CF#4b++Gbn5v*rhY`Uq%3Q-CCXd0@Y1*KwDb z-Q;*iY24MRAORk8@}@xcd`^^JuWs<{c>6dA)cx0Ic`h@=Y6&+#G+F!@Xib7Hk~g+M zEf`wg=PQ>k)p)%LHPsvk_Wb#Mz-VxMu6>iakliFzTp4u06ZAs5G*Of#Q@f*lt7pMS z&i#Gnf*S=&NXG-4VSCza`7u(JkfHgCV57@4>PbJ=m6=dAC5eqV!wme_mT+K(TnbMQ z2ep-dx6LJnOZMoZm_ZpAfn&l8>tz!PmS39{#C{iX5y^g?-ck^>pneLJ0Xa%rP`t|W zN#=HF=5jJClnFEhkOB(3M&(Um(`5o(6ghg!%^BEA>LoV5vWsb@qRP2I85aO9W{e9w zjwvem!VEfbqt6wh`Q9g`b1Ij}6C%28kD1u-ge^$2fLvnR5*)07Y_4}SYv-E4j;UNZ z6&vOC_i_Tz(-o}5{jJ+f%pgUgm^Kh~5Pb91_2dSehsRtD)fxvbTSVcmvBu-#-{+Mi(B>MRN-sb&>?={@tp zcF`MM{i@pgm$`Gb*vbjRaG_lGu6@N5Ms?g8yG`G+UIGV~V%GDOMz~#(#3x=#r?lGv z8wvyg4u&p|faR6CnDzRJ@jdv25##CSXAMGIq=}=189p9hI40C^h*)&&xm-bNd5x_h-9+$($AjnE1O3n1c81#Wp*em(7Bx$*sQ4PXYpekCiRkj7PYNj|2tG*8`NP zKfR}+Rb9B#5Ff5iP04&fovZ&Q25a9p<-~3vhBp#~5J|v{vwsG5^7~qjMUf^7EI-Z{ zZm*nAjD5^5vzWI3aViHG{VQjn8}6ui^W^87aRc)MR@*vkh0l~$F3<4@WiJs(=&yM(QEeAYDuom$>(7!0B%_qU`?(fJNgBq0D;`ts6*Tu z4q^$A9Z&BuB?D6z1_f-Z`awe!yu;x1HJ2|M6YeWB?`PG-L#sDS{u$otkxk)mx#44i z(Hkq|HN}{Pu{wVw>R~6o11uUnFSPf4zzn%#!o?i@>5_VY*{j0GoSbS)5bQ*)uoihx zv5x2!f-HmDF5>jlqf(xAholhuP2esyQuN(rME?j$r3|;RG(uX2Yam_}H!M&4`@>!K zzBhS#Tk>1}{?!tQ>hWzI|6XlNcuvIOk=~N@tnHGYkXE&W=bB-^|8px77EE=tw}RV# zRmjBMLKpWbhqe^$EcfV7Htb9t4*3ClS|GjED@bWLzN(?t(Ti&CavfNP8pNF^G7pVp z8DCilj-Hzl)ASMP^tEFdUEk-^xvl$fSL?nO&U?oZeJcYQLg^fJ-~6R5<~ETNl8e-7 zzd^3%F4CrYnd61J(6YzP$>Z7}v*7IRx$v$@4d4CmweM!IF+6eMO_kC?bGspyWop-n z2Cts8ayk&2@iINdI7qhY6fa>lrh|q;+}gx;g?ZvhP2Lm3aWi!=QVAB4%^?G8byZub zEfA~|>!UJ3^~PAeEPRLCwt{^Inn&=w!%`M-rNsolbC5Gt`tAtA zJNPz|On-)9c+9LzV75&>Ky^V7HU5DDXah32nw8!`H+^oAU}z2(B(B3YXGk{4Y&{ZG&A~kCKnPz_P_ah zQ6=o|DO+mjG#qqzqiNNiIw)KdNq*?`d7;O3mbP^v{B15r zo}?rtji3-iv7Ob(TYW)=uyn z;WbWZ+Smqkfm(J&W`gL;c~de!u;kEXC$z!WsU$=4U5CHKL?eX7Sj%C3YU5x6yb+d* z*ppBsB-_isVU#!R$&t#D#A`3~z`-rA7hqdLk0wEPwE=fnKCVac^$NwJ620P1&WXD4 z&h|G+t>6NCD!5tQ!&*deK4#G}sue<3Z{}ZMp*2lBf}3$HA8SROCR?C2eCs{Cc3(D^ ziI8#4!h%%8I6o!}bBFK0{qWnv&l{SMRXzM_*a7W~p%5F@ZaQNWzh>D*r)N{QNo$b? zDEOQSXjB34MBh)d4aFLvCwvaG$zM88*$G4*T8YL^LAY9(D1}d;sgbkLcV^Vr*U zw|X3zzB)waN_92dH9#0FvpW6X9#-vhU8=*wnre9 z^l7<6oYw0w^hs_gPP7_EzUVg{>6VOt?6> zSEu1@i#2(W20g)yWpaNzc8hvoz}u*G@~zl=yPdq#WKq3Pg@pN~*#PkC4|BcZo_F*7 zf=+TSt9d%8MjD%MH-x;aK@u04;GiJDI~sBybGX882kpDXG^dt~JikIs3@Y(o{_0wk zv@Fa*s2d+@Fyo{@XjVZeWsqKk+|;5(as5eCR1aq8^F0(-SaU?K466$M7!-)`+Ts!( zY*B@|69gXFj5*IeCm6?#ok#IZ(*b*bHEnnKiO+|_%ch)NvmJq&w^%%E)YD%h41(WN z9STG^OQkGfD-S2us&13+7K>??#>5*2-&=Gtcy7CRe;nK(0OVe%{)yQLoo_9w?$HT6 z#PGq9x?i=2=SKE!H4qla(M~jVQ_ee2?rrHZ6CdSHX>#G__r5mjZxV6Mo@Oh=qF!&Q zyNJuH`tK`asZ0IVc_R((jy8L$N!09bwA^*1U4IckdqD-PbB|64>Uwi+yZ1>~>h{Wm zAFZMBI8qCQSQAHeEG9ipYphV?4Jh^$V1=fH|9$pzW!dbjz!h~5xxT-ssJzU$**n`R zL*xsyw+y0)mD3Re)%GHWzT!@3jIJ|xkLzxlvJZ8d-hX5N?x&d6yza6k7Nj-0G*>%+ zu*e_SgSv>_3~xe2U)clO{D-yR)P+2p60W5C>@2F;6UVYbl059p{!SB~M~p6--stHi z&iUD(AcT8PM#}F-p#$rCYV=VmhKydQOn;P5C@M!64iSjfp)jj)a9)kp(h7W@D^ilJpryt?AY z`@YAxE1c{RH|tYf3MTmczV(aq+qMB+$m z#B+E=!){vrJJ^GRk)if0iuiE*8zwU{%WXu-QpO1;kVJ^mcJ zz87Cxg!EDR(fD!71l~GPNBLDr^t0Tl-|Y7eHs9p4$wSgHf9P|nZ87IaKjh1BC_~tB zzMEx$(${EWr>09!-s!)yXGW7C5C`mDbd-;O{1V<~!aLHwW`po&vc1N)Q!;oaqB=z8 zc0<$_Lt_@Qt@D$HHcPp7g~eCq+obQQjukjmEQeMn@373UcL+i7biZCHU?q8V;US() zNhPmy3K$Yq8n{49&l?G}4nLdmlG9p-wUdDjy!2+4-f znG?N5ZX~=-*~pjfh@3;~GTc{jY5O=Jlw`NuhI~YM`~-AKaZ<;%NuR&Ie7N1>aV1+v z&_=4Jmlx#54iNPtDd=34$*>z4*EAlmdS=tLzy4OdM`;+O5F1 zw9<=9zxicaa8jR;Buw!<;9V-#W%y)QOFJD)MK&*c8G93~hbO>2?(ta{!$Xs)R#Af-njgX>eKa|0G z`=kQmEY)Kj5bD0}-&0K4SXz11a5iAfzKrIi%R69JXX(SK@c=3ulZef3_xZb)+a_r; zz5yjpguf-H{MmkCmw=keKsRna?}0l_T9hsM3JBs;*R_d1+~UUT)`-XkzvK3@KrF2F zS>%Ea`E~9qPN8R+2hCOb!@Qk&ZZg;}&>@@@Cyw!VDEE}kil!1~g$4IJ9QSqM<%(}O z0_)b0#4o+yGE;fos;rT1rs*VeE})v-0veO$sorQ$gdU=x)s3rhdvK!Fvkytf_+Qi0K#-E}{ix4#FYd+7+>&+uP=*Q)vc!;3VLC#D}dL$dcfV0 zJjaVKYP2?vrSl4|X-sr(GYr1c%mUf=s=qhkE)#eg8&6o)tRstzhUwmo^n#xd_gLw?G&T(JImAJB>G@e^*iO;wKd(tx)(}LRKuua%oG<+ zS~61U!VF|`yf~-=oi)X*2$<5H{$FbA5f!_6trzQWrof``eFnY$V^NAjs*xjACt5r( zff&<#F0S_8OIXccY`9j&%2;sA*kPa9t3G}3{DGMqkX(MaCF>MCI7#A5QTB3H-p?-J$9Zl=Ztu>F11m4U=3C_iQZ$q_--~LSWG-LH9`G$a%5?&7OL`RQkdw<3 zqDfuyiokKaWU3c1!sx&$u0CfV>!<2H!t0Jqo#v$U~c$BGdGZaIxOM5(iE36{Qv~E4VQ?@+#OJa zCb)P}@4~Rr#$|(?sL;K$Df};mUzR64!<6l)VgP>)Xgi@Tq5XHTOCw|C0|J#UK7EeI zyy^quld_HHH{*+CC87~%r)3-9+m-S>ASX1@?>2T+ZL{5vqpxGQ;&#aG)J~CJvps1= ze39aD2MJR31-Y%@$D1bqMMVW*g0qT6x&e+U1M?xi%g zAJ`JuYqhh@_YiP=S>3`uIy2R58!;<-=-nTb)VWRk_KZB?X0j&3#a!OC7?fLZ%w7>l zjFinuf72S_rsWa(lxI+u;jb#L{^$JS&su@Ob-Ly0*0Xhl(+(0+b-YeN$t`9spe^5D zR-Xd=v5N(Ft(asl9y8(CeZ6_@d%4tWRAPt&4~LS9ho<2NNu;ziDj)!*2 zo+yX;;l^_U!|fIA$!b@WM%0SXIP>V9B$0n!^`v&47M7E+KPU2-?DbIF9>Fp_o!ri4 ze0I~@r_$%IL3Nae>R1bpIq^f}s%_k*bzO|J^X`?v!LKqcQwb>6l>wc{UV`J8hS^KY z106AIjP%28iHgOs!Wr_7MzYZOz1MSh@rB-;)y;ygfyyOI?+Xg)zx2P(YmB=SEH88R z>ZKjysEKl|B0XLW`>^m(X0Qe0;+2--u9M5L+1B#c=Wmmzx;hr@g$(>Oss;G;l*_<) z-0b!AH^J-@>XYc0cU&Jk;~O*~>Z-O;TQBlHb+dhv$%wHo*W*94X55booOxj%Ob@U| ze*w?sp0Ug5J1x{d!p$5n4}W?w<%}L$cv>U)@rxkkN!?(`;HGubXj1N(I(-kc8pCoH zvxuks-t#!vJqhgE_^O|K8$mJjNeCBldcc=oZN%?5pIo@a1g}9PuX*cht`t8nd(EF^ zD*dkP3R8=1_5m0NW6t>a;Bz=Q=Sx13)c5s^+`codSMj+{uSnLvPcO@DAD6^>GK5mt z^sw(sz$^qzaW!VH!p+O<*`)MEtGcXnT}yJq1z*6>hZomM_Jay2`HTu_%M(SBD=_t_ zlxpkHGTqg~cv7H?fQK0}Z7QOI<;nbb-Dr5m&))`OQX_HjuX|vRdO_7+%NN5i&p1qW zwvR6>bHV}z8wIWWQVl#?-5(kr$n*yye)pVB40y>E3T7Nckv6~2KgiTca&S!ndxz{9 zTd>u9Y8ZuWe#_M>%c7o)lW>xDaXzDQrChJ!&~nZ{x|HDcs;i3cnt)PsFg@c}<1hZ* z4z4wQorc52)Bet9`b>5UzXu(fcukI6CF-WUYFUNkQab!ICj*Hz2lVq&WQ@s`YJ3ZF zEmQC{K?AG*2B(yS9G_{~RYte- zz-U;l2Xl)&22=SD=`)^NZCBpm`0#b8hxorYi9;n`{em1rS7amdvd_Qf-R)aK4UpRn zukFG&r*DQH9?$>5bSTaqWPD&#Hu#+T>_v}$Pl|dk_9a?{(9-JmCi!K!JnwzvDn&=o zMiMD$v?f*~^zEbcL(K#?A0o?eMV;|)+k0L3DHjU1>LPKw;7>(>Uf0J-{fQ@VwUJjH z!!g~|rhQprzu+e=^(ag5mQB&Q#XA)J~syGjp4S$Ldkab8nVVpn?_S7eE$v6G8uIO0O>05?;9 zIqad9ro*9AFQq$hlqG*zi8E?zJzcIARv>8UHxTbhYJ6Cs_ed>JX z1K7(vsIn_Jdux>Rs?c%ctyz0q)0MR>SZIL4<%puP>(y~YAy~q%%?O))hOj2z^ALp5 z%ua>$Sd%}!z&bq%?-YaxSoM;oSw>Jp@rIb|6ug+IKHc!?68TCft;nz?X%PR{TD!2; z2J5%i0*}5sjKnl^mZ8OokoMvvL5}B>B__rGhk@nn#EdweZtj(LBKQy_a!U&IkZ^6Af|X@y;xW?Ga^+sMuEf%eQ+FsJmR&_3d$ z8vnt@&4FbHa=TfiWt4TRq#uRf^qc7(+dygonmkO)l1=^KJLwp7 z?A@C-u9Z~x?=y3*A=nB71fd%B;ia(_IWwpt&+^lh@G?w^qb`~0#mYx>~?w@}{o2j4FFx_9hqOL5AfKr8}KY1=pL~7i|>|tc_ zqu~CF)~$GwKtelO*E@fauH{a!1rKD=EAL_^Yc6A%U{#N)g84lHxdY$dZtrg;1$#Fc zix@=DpBIZg)VE;6)L7QNw|&Pc!B_vd>kH>sqN7bzrFBdsB5A61$Ch)!LZNdi$DgVu zq#5PS{+_xEcf^-yma$ex$nc}TxPT#rjBRJ=AjUJ8^mt{bf^S!e^`_J@6PLB8iYM}9 zHcu@Zhwp1i#t~}g9e1GYnV3eQdulZ<75eo;_6=R9*F=viY&eLP@!Qt%egB@>ie&xP zG|$(>*HXq>E+E67+O*{u2S^xS=lg84)6g|?*<6fa$R0C&Dga;C!$Z^}Xq*U3Ii5SP zf8R`f?7i4z>uZO}zt_g4`F3cv>M5k3$A@4=du!aS?&{U_?b|Qj%(t*JPAD`DWWR?u zonoB$Rww%YNj)@-;eV2;&oT?FKG;&R7D%w(ZicnE2MWS!vw~A#!m!O2e}!4((FpfS zm9@57;%cH0XHF>Iv1cO*=3|?KUF#1@am%AJvz`=0%V;TW-`DFbZ)tg}?Kan0NgsQ> zC%^j8Oe7;B7o17Dx#2n4=t=i?_%<_<+C-Ea)e(O&GFZ)879@?e@R!kPfF1ZiWo|cC zw7T23HmQF`$_(#nc$!w@THw4X+rJ-TIF1rjGEwJ?&DNZD$w5pV7B9cs+}rbR3UP&+ zD??Vb@xFMkn;#a`+|?v8k6UpL`6k)fr^(U_Toaa&rN@$+;Kb`U-*%ErE0Z-Z26oLHQTzX{pyKbP!F=kvewSKq2Frn6Wj%{f1aY@#|IeOA?eHZu^A;{0 z6r^j<#z4QAWQkqAqSW#v459vkneM>>IbdIQIDUhl<1StZ^MhpA3{rPpLOGtL*Wzj~ zZ!6kZW6ntEK`snwn>5~gpSkAL-s2zNgB+vmb;xSiuJ`k^^Nir(x+ZF$x93ZXlkoDc z$|{rZF9qUV?H@RIuh~1|e|Dp$_H`KE1LQGd5Sh$ya}6JXR^@pA04l2 zf*h`^+neKbYM^OE=A)YcmNt)1oDmwYuHU=C)%15r6>{3trKZ`qLg3}r`ub?jAqfbs##I@_r+yTc zZwp8`b;X&sFkXDEH}3JZ0EYW{CRyJjq+u1G(Vb$Sk}hl>h(@K)=ZG@A)&{fAp&M)e z2J!t9(r>FzICa%=bXS72NX8TJ5=b)64aQ?*tjNRhGfXNL{pt)LJ_=E10zRD*9Vi`g z+|rFOCWGn1^hEwYx@VhJm%=zY+&M> zOjm&^;h;<*+R+dO}&OT+DgXzSr;04%+_b(gpkGS;L){bUoovn)YY( z)Hpk6_54xbJxto54Z8JKL$Y)V2x-H2V!jz~C#D`h>gr~a*z_@zy~_F&*nv9daskbw z@fQ|A^YK6FM+0L2;WpOtG@*sft7UMjO=9%1_qm%#7dqIahn?2D@RBRFPq|D}x$ORX zShUt!5(@YDmV~3I7}L?M4g>S2>W`w>)`GBuR8QM}EjEKVbbx;<$`=#JXb7~4+FgEs z?5X>oD`EfN-2E`8l7V3mzOYvJ0AX;$CtIFgR9DI(5Cu0!LFl)`-$zkkpfCrz@KJ&V za9_pA|KoiXV+PS6kjlxJqL`QDcLq6j5-}z7xsoH-4YHgx1Gl$Bog=2y04(-Dab+{KE{|nqw?b8`|h2 z(Ezg>k1|b`fUnOB&H@V|fc@uDD#QQd)fq>*6-WzfL14-~ZM)+33Dj*RO&iirguo*1 zxBnEpDRA-++zP)Vo8sqQx$E;0UrDwcqcMdcDgWp^rZ9%)zZumVLDzmCX3u-}V6?qW z0qF;bs?m;`@#wl2#mcjV>~}T-Qx6&2-wnDa`ZN1a9xk*DyT8>K;e^uI2-W1?Pn=(% zwhTecPQBtWH;DK}oAhis%+0F|5Hud0^t04E-9pLz&B*9Gux13!g@&4}qihqbvrv!l zZ>w!-v_oK>#`bX2cKh+Iy3%>ic|aMuh|kAvs>-d3UsQ(D>40?dqBQLyyqUBVd&|Hm zvPC4EJ@B1fwuWSGG z%yrFkueI*ay6@+?pS3<~Ejt>e#fzq{Hq^BS4@8P*g|ZW)B0n?6#PlemCWtjUgHwkz z|9RM1DIaCxkG@Fw!SI@8i8#2bgJ01hqPN=6sppeHxTk+IZ!{5);W;?fUzE4e&)vk- zcsp@~yXOm+-}W$tGTf-h*eaL>LF!;P+Fj^*$k!w8w2*cz&WXr^&{zW_`O58q`;|{)l1=6l>-$uog zQKx;kB^Zn4Ezvm)&pbC}{-MFnE0(r&!!M89_sF@pM#0^7d3|$e`P%bb(%uxXX7e^a za_sMOd8A+!#8~1yK4D8OD;6GSzZQ7gdT95^VWG{B<{GI%7F$a;LtSP!4e5B{?BK%I zeK`Zn^p$?R*|qkcg`32_u3IZU3GlU8;v#-n$s*`m=sdvd_zt<`TM{Jzj%?{r9sMPR(AETwDp@qJsO z22sdUz5md;buOdcaAWAB-nlQ^n);&diCltzg7SmbxZY)~M`E=Onaa%JBO6KfHP`d` z0^DdL{*V0$zb-o;7~(`fRXEDJKL=G;Xc7Lpgl^1Yhk>=FbY{{j{Zn!-7~;7v{o2) zy$cIDGd2R#moK~R6)u$CTdxX5qO?Io^``=VH1*JYF1e+tCnro~I+9qFOewGCMTBzQ z>Db6_XlZZVy@>2>!oFvTwFMQzjZnS`h{U>zDUp6p3Ie`gj*i(j^@LUI52hJ>6WNfR z_ip0cx5y@pD^`P%#lf(d+g~rul1N^kJE_fKxIks_0^XDr9#aCK7*|J?e!pyjX(O5S z<<%9u8wKJwVZbmSq%N%feC$qyv~q?vo&(+pCSlzB4HfkO2dBM34{$#MB_q zPm-}CFG2%rHJD;EmZWdrvmc{BoSxP&O}H;D*#O;eC;&z6k)W&?jknz}z|AFhBo9|^_#F3+-(#u@K`S7^ z6}Pe~7qo}~#%u03)gjvBDs`8oOB1!DSp6rA_F&MU!p;u}MMhwF)XAyjjU;njV&8!@ z%pLOEGtc*Q29a*Dz0E;}*j-n0Q>_#ni*r^^Y&^IffDR5XHtkB>vUj3cd$z9l9@{h1 z$rTe2H{Bkkd_~`ZO*z1cpK%%{zCGh_PpZRK5{hcERGbYf!D8g+rI!~LcJrF+$db+v<0iiO_WtgLl6c~L=hLLIwh@%-T@vD&Okzd&snJ+tzGJhxSeSP|Z zZXB1jUNO)5eH5_{T6ma@sLZ2kf?;1-wb}=^kKN9vuIe0%rfE44HawziDVeoM-!#Vw ztO_j)lzB;|V>984E}_3w=k1i5dht)eA7-0NX|5AqC1vLx$il78xv0~z@pz1`5<~@* z9GLM84H$KDAX%3b{oSa84q!58%?4k0YA`H>Z5KYsTLANZ`rCtFZ+;F_{@EV!=tzRc;9v5#F?J;tVRd6hlF1Glz!OjNy3V52 zQ7h=LGJ(0|qhry>eKl7=XMTqvcLdqT}OaJj%SnxG3`gU4a|`ggDj(!4)f8 zx>ieUCfA_2ojYqY^x9|81vw`Q%XNcpq~fMGH<^D12-+9Y)Q+w(|l5x)5RKk{!XVCiUw5{wlAYIy)AI$LU1Ci(A`u{upIgu3W>S{Q;X?+w z#_&XQ&!q6C2v`u)hY~ISsMC}c&?1QAc2Nhpf-)zxA~oEA<}Dy&(3k+d&l?u2oioiC z7?S8qvP2rzK?R?B8i0{pm4@Mss5&hc@EAbFmF|1CjqBRz5(X1UXz@xf;F-?)uCCUOB(S-s1G)5dP1}6r z!dCIdc8^3n-H-Vh|7JPVWO^d#9aD)IJ8a>lbqO|jKn=1B1yo_C-dpf!Nu9K36V@XY zIHf-4RZEQMnlf#S_ryYNtME^U%kynMhd=&uL}NVHzF;<;M=Q~-eD5uKr9vC8*4KyZ zDuA4(tnYGm+p|}6pE&6C^nn_G#UQP)@ZAF_waI69;zO-eb$hkeLRgxXv)Z#;uT;Li z8!u8WR{rh!50P(hbG93m?wkBMS|cSKVto3P>QL(WgY4ML6SQX5*ukcX~)kN-C*)spN%7QKFCX zywm8{KNoqXZ?1sr8a_J5H>!%>X&u6QHH93!yEfvSVV4tXOkL;TsP*^S;rj>~` zrUIaRom+-c4-ONBx&~%Xd2Z=2;;B8P--{NOYhu|MS(OUfmo_}z%W;T+_!kYavzNiA zXAn3-bXg(ca2oMXy554dVz61Tp4}Q%$6!}?Fc*u{Q$h?fU|N((T?5GOXBF2#NvVDW ze9qWPYa6P9B)>e^bj-DKOVS0JsGbuE!%8!1&Od!$A%2tR5X^F{OLdEo2pcN>&7Kgg zcP8J(E`|{HjH4Vl(KM2TAAG^oQfR@7XB52UjeQK-30+ca&|9-_KlWT49|1#g(u!oN zOg9VKes2PIT+tH^pJR?;4sZR1su_m;vfGEp6Hgb`EZ#I)y1?yh$?X%wnI%=x!liOw z@k+3mdXdqIm7WygWa)b6_%V?*tIV>zm>4VA+zKW(FUK{(*jsUqlNtP=h1qG~iLJtS z%(o3oY$C36SZMi3+J~5msZb>GZ5-Z;1-#)lVCMf-X}z!fdzr2R~kC%}{N$fP=>RPF6Z1El`p+*7eA@5$2k^$EU= z70@2#R>gbTVu-=4cPA}e3w<}jtzUL2XcV^hPp1>0L#G9P923M_B5+!{_QmRo#(CDkE1V zt*9M2OazgsH(u zj$-N~y#1jgTq0D_+C!`!>))L>B<0rWAvKt*l^uF&jjQ^hA5}o44+I%E{1qv( z|Er_vy1)MfeeC`Q;cpPY*U;Y}{C@&rtQb;;D0g+w%<1S{UUl9H$CLjkx4(4j-)o7L Aod5s; literal 0 HcmV?d00001 From 1f4aad31cccfb48cc6aae1c9313f2f047d30b680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=A9=20B=C5=91le?= Date: Thu, 20 Sep 2018 20:24:18 +0200 Subject: [PATCH 22/44] Changed save_on_change to default to False (#6321) --- source/_components/light.yeelight.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index c446d5950f7..326fea0ecf6 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -28,7 +28,7 @@ light: name: Living Room transition: 1000 use_music_mode: True #(defaults to False) - save_on_change: False #(defaults to True) + save_on_change: True #(defaults to False) 192.168.1.13: name: Front Door ``` @@ -39,7 +39,7 @@ Configuration variables: - **name** (*Optional*): A friendly name for the device. - **transition** (*Optional*, default 350): Smooth transitions over time (in ms). - **use_music_mode** (*Optional*, default False): Enable music mode. -- **save_on_change** (*Optional*, default True): Saves the bulb state when changed from Home Assistant. +- **save_on_change** (*Optional*, default False): Saves the bulb state in its nonvolatile memory when changed from Home Assistant. #### {% linkable_title Music mode %} Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the component and it tries to keep the connection open, which may not be wanted in all use-cases. From 67514b8d6905dce2a4e2df3af1092ec58fb5355e Mon Sep 17 00:00:00 2001 From: PhracturedBlue Date: Fri, 21 Sep 2018 02:55:50 -0700 Subject: [PATCH 23/44] Add asterisk_cdr platform (#6264) --- source/_components/mailbox.asterisk_cdr.markdown | 15 +++++++++++++++ source/_docs/asterisk_mbox.markdown | 3 +++ 2 files changed, 18 insertions(+) create mode 100644 source/_components/mailbox.asterisk_cdr.markdown diff --git a/source/_components/mailbox.asterisk_cdr.markdown b/source/_components/mailbox.asterisk_cdr.markdown new file mode 100644 index 00000000000..61597bdfeff --- /dev/null +++ b/source/_components/mailbox.asterisk_cdr.markdown @@ -0,0 +1,15 @@ +--- +layout: page +title: "Asterisk Call Data Recorder" +description: "Instructions on how to integrate an Asterisk CDR within Home Assistant." +date: 2018-09-12 06:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: asterisk.png +ha_category: Mailbox +ha_release: 0.79 +--- + +The Asterisk Call Data Recorder provides access to Asterisk call logs on the Asterisk PBX server. This mailbox is enabled automatically through the [Asterisk Voicemail component](/components/asterisk_mbox/) configuration if the `asterisk_mbox_server` is configured to provide CDR data. More information on configuring the server can be found in the [Asterisk PBX configuration guide](/docs/asterisk_mbox/). diff --git a/source/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown index 438ed0fd422..45bc4071a80 100644 --- a/source/_docs/asterisk_mbox.markdown +++ b/source/_docs/asterisk_mbox.markdown @@ -56,6 +56,8 @@ Before beginning make sure that you have the following: mbox_path = PATH_TO_VOICEMAIL_FILES cache_file = PATH_TO_CACHE_FILE google_key = GOOGLE_API_KEY + cdr = mysql+pymysql://:@localhost/asterisk/cdr + ``` - **host** (*Optional*): The IP address to listen on for client requests. This defaults to all IP addresses on the server. To listen only locally, choose `127.0.0.1` @@ -64,6 +66,7 @@ Before beginning make sure that you have the following: - **mbox\_path** (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` - **cache\_file** (*Required*): A fully-qualified path to a file thht can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` - **google\_key** (*Required*): Your 40 characters Google API key. + - **cdr** (*Optional*): Where to find CDR data. Supports various SQL databases as well as a file log. Configuring the CDR will enable the `asterisk_cdr` platfom. Once complete, ensure this file is only accessible by the Asterisk user: From f857cea3bcd726dc6dfff9b33f598acf6bb56336 Mon Sep 17 00:00:00 2001 From: Evan Bruhn Date: Fri, 21 Sep 2018 20:00:41 +1000 Subject: [PATCH 24/44] Add Logi Circle component, camera and sensor platform documentation (#6249) * Added documentation for the Logi component, camera platform and sensor platform. * Updated Logi Circle camera and sensor platforms based on feature changes. * Renamed `logi` component domain to `logi_circle`. * Bumped HA release version to 0.79. Renamed logi brand image to logi_circle. * Fixed typo. Removed redundant definition of last_activity_time sensor. --- .../_components/camera.logi_circle.markdown | 69 ++++++++++++++++++ source/_components/logi_circle.markdown | 40 ++++++++++ .../_components/sensor.logi_circle.markdown | 43 +++++++++++ .../images/supported_brands/logi_circle.png | Bin 0 -> 10629 bytes 4 files changed, 152 insertions(+) create mode 100644 source/_components/camera.logi_circle.markdown create mode 100644 source/_components/logi_circle.markdown create mode 100644 source/_components/sensor.logi_circle.markdown create mode 100644 source/images/supported_brands/logi_circle.png diff --git a/source/_components/camera.logi_circle.markdown b/source/_components/camera.logi_circle.markdown new file mode 100644 index 00000000000..1b525400700 --- /dev/null +++ b/source/_components/camera.logi_circle.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "Logi Circle Camera" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` camera platform allows you to watch the still frames of your [Logi Circle](https://circle.logi.com/) camera's live stream in Home Assistant. + +

+You must have the [Logi Circle component](/components/logi_circle/) configured to use this camera platform. +

+ +Logi Circle cameras support the `camera.turn_on` and `camera.turn_off` services. This will set the streaming mode property of your camera accordingly, controlling whether the live stream is available and activity recordings are captured. + +## {% linkable_title Configuration %} + +Once you have enabled the [Logi Circle component](/components/logi_circle), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: logi_circle +``` + +Configuration variables: + +- **scan_interval**: (*Optional*): How frequently to query for new camera stills. Defaults to 60 seconds. + +### {% linkable_title Service `camera.logi_circle_livestream_record` %} + +Initiates a recording of the camera's live stream. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to initiate a recording for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.mp4`{% endraw %}. | +| `duration` | no | Duration of recording, in seconds. + +The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. + +### {% linkable_title Service `camera.logi_circle_livestream_snapshot` %} + +Take a snapshot from a camera's live stream. This differs from the generic [snapshot](/components/camera/#service-snapshot) service in that it sources the snapshot from the camera's live stream. For battery powered devices, this will wake your camera from sleep to perform this action. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to create a live stream snapshot from, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.jpg`{% endraw %}. | + +The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. + +### {% linkable_title Service `camera.logi_circle_set_config` %} + +Sets an configuration property for your camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to set the operation mode for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `mode` | no | Configuration property to set. Allowed values: `BATTERY_SAVING`, `LED`, `PRIVACY_MODE` | +| `value` | no | Mode value. Allowed values: `true`, `false` | \ No newline at end of file diff --git a/source/_components/logi_circle.markdown b/source/_components/logi_circle.markdown new file mode 100644 index 00000000000..5b891755da2 --- /dev/null +++ b/source/_components/logi_circle.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Logi Circle" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` implementation allows you to integrate your [Logi Circle](https://circle.logi.com/) cameras in Home Assistant. + +## {% linkable_title Configuration %} + +To integrate cameras linked with your [Logi Circle](https://circle.logi.com/) account, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +logi_circle: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: The username for accessing your Logi Circle account. + required: true + type: string +password: + description: The password for accessing your Logi Circle account. + required: true + type: string +{% endconfiguration %} + +Finish its configuration by visiting the [Logi Circle camera](/components/camera.logi_circle/) or [Logi Circle sensor](/components/sensor.logi_circle/) documentation. diff --git a/source/_components/sensor.logi_circle.markdown b/source/_components/sensor.logi_circle.markdown new file mode 100644 index 00000000000..aa42c0218c8 --- /dev/null +++ b/source/_components/sensor.logi_circle.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Logi Circle Sensor" +description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +date: 2018-09-08 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: logi_circle.png +ha_category: Camera +ha_release: 0.79 +ha_iot_class: "Cloud Polling" +--- + +The `logi_circle` sensor platform lets you monitor sensors connected to your [Logi Circle](https://circle.logi.com) cameras in Home Assistant. + +

+You must have the [Logi Circle component](/components/logi_circle/) configured to use this sensor platform. +

+ +## {% linkable_title Configuration %} + +Once you have enabled the [Logi Circle component](/components/logi_circle), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: logi_circle +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions supported by your camera will be enabled. + - **battery_level**: Return the battery level percentage from the camera. + - **last_activity_time**: Return the timestamp from the last time the Logi Circle camera detected any activity. + - **privacy_mode**: Return the privacy mode status from the camera. + - **signal_strength_category**: Return the WiFi signal level from the camera. + - **signal_strength_percentage**: Return the WiFi signal percentage from the camera. + - **speaker_volume**: Return the relative speaker volume from the camera (0-100%). + - **streaming_mode**: Return the streaming mode status from the camera. + +Currently it supports all 1st and 2nd generation cameras. Cameras without an internal battery will not expose a `battery_level` sensor. \ No newline at end of file diff --git a/source/images/supported_brands/logi_circle.png b/source/images/supported_brands/logi_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..61a8c72dc501ca238d62136d4798dbf44eff46b0 GIT binary patch literal 10629 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 Xxp!xM(@PF$uLSAq8Y649(NX^kK7-~u literal 0 HcmV?d00001 From 90fd72da7614e434aa7760d07dc6830e52e22483 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Fri, 21 Sep 2018 17:34:52 +0200 Subject: [PATCH 25/44] Add unique_id (#6262) --- source/_components/camera.mqtt.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/camera.mqtt.markdown b/source/_components/camera.mqtt.markdown index f0e903a37a9..411a37d19de 100644 --- a/source/_components/camera.mqtt.markdown +++ b/source/_components/camera.mqtt.markdown @@ -30,4 +30,5 @@ Configuration variables: - **topic** (*Required*): MQTT topic to subscribe to. - **name** (*Optional*): Name of the camera + - **unique_id** (*Optional*): An ID that uniquely identifies this camera. If two cameras have the same unique ID, Home Assistant will raise an exception. From 4051e3a483531aa9f00b7938690c37724bd2b0eb Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Fri, 21 Sep 2018 17:35:44 +0200 Subject: [PATCH 26/44] Add CO Sensor support for HomeKit (#6300) --- source/_components/homekit.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 74bb8a7c48a..b1ea53ff54d 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -272,6 +272,7 @@ The following components are currently supported: | sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | | sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. | | sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | +| sensor | CarbonMonoxideSensor | All sensors that have `co` as their `device_class` | | sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | | sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | | switch | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. | From a114c7fa9b6d3e11ac5685133820fc5b445f8cca Mon Sep 17 00:00:00 2001 From: Malte Franken Date: Sat, 22 Sep 2018 16:10:18 +0930 Subject: [PATCH 27/44] GeoJSON platform (#6316) * new geo json platform for the geo location component * added iot class; removed `scan_interval` and mention default in the description instead --- .../geo_location.geo_json_events.markdown | 57 ++++++++++++++++++ source/_components/geo_location.markdown | 2 +- .../images/supported_brands/geo_location.png | Bin 0 -> 15711 bytes 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 source/_components/geo_location.geo_json_events.markdown create mode 100644 source/images/supported_brands/geo_location.png diff --git a/source/_components/geo_location.geo_json_events.markdown b/source/_components/geo_location.geo_json_events.markdown new file mode 100644 index 00000000000..3be0ccc2fb2 --- /dev/null +++ b/source/_components/geo_location.geo_json_events.markdown @@ -0,0 +1,57 @@ +--- +layout: page +title: "GeoJSON Events" +description: "Instructions on how to integrate GeoJSON feeds into Home Assistant." +date: 2018-09-19 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: geo_location.png +ha_category: Geo Location +ha_iot_class: "Cloud Polling" +ha_release: "0.79" +--- + +The `geo_json_events` platform lets you integrate GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. +All entries in the GeoJSON feed must define a `geometry` which typically is a point or polygon with geo coordinates. In addition, this platform will look for a `title` key in the entry's `properties` and use that as the entity's name. + +Entities are generated, updated and removed automatically with each update from the GeoJSON feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity. + +The data is updated every 5 minutes. + +## {% linkable_title Configuration %} + +To integrate a GeoJSON feed, add the following lines to your `configuration.yaml`. This is an example configuration showing [earthquake data provided by the U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: geo_json_events + url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson +``` + +{% configuration %} +url: + description: Full URL of the GeoJSON feed. + required: true + type: string +radius: + description: The distance in kilometers around the Home Assistant's coordinates in which events are considered. + required: false + type: string + default: 20km +{% endconfiguration %} + +## {% linkable_title Advanced Configuration Example %} + +When integrating several GeoJSON feeds, it may be useful to distinguish the entities of different feeds. The easiest way to do that is by defining an [`entity_namespace`](/docs/configuration/platform_options/#entity-namespace/) for each platform which will prefix each entity ID with the defined value. + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: geo_json_events + url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson + radius: 250 + entity_namespace: 'usgs_earthquakes' +``` diff --git a/source/_components/geo_location.markdown b/source/_components/geo_location.markdown index 2990c019514..c77243971a8 100644 --- a/source/_components/geo_location.markdown +++ b/source/_components/geo_location.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Other +logo: geo_location.png ha_release: "0.78" --- diff --git a/source/images/supported_brands/geo_location.png b/source/images/supported_brands/geo_location.png new file mode 100644 index 0000000000000000000000000000000000000000..a8fab0f913329b027b3ae4d32c31c68d4d1d3637 GIT binary patch literal 15711 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 Date: Sun, 23 Sep 2018 10:52:52 +0200 Subject: [PATCH 28/44] Add config option to specify router IP address (#6333) * Add config option to specify router IP address * Update configuration sample and add description --- .../_components/device_tracker.bbox.markdown | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/source/_components/device_tracker.bbox.markdown b/source/_components/device_tracker.bbox.markdown index 35bae013f02..5efa022bad2 100644 --- a/source/_components/device_tracker.bbox.markdown +++ b/source/_components/device_tracker.bbox.markdown @@ -16,9 +16,11 @@ ha_iot_class: "Local Polling" The `bbox` platform offers presence detection by looking at connected devices to a [Bbox](https://fr.wikipedia.org/wiki/Bbox) based router from [Bouygues](https://www.bouyguestelecom.fr/), which is one of the main Internet provider in France. -

-Bbox is a generic name for different hardware routers. The platform has only been tested on a Sagem F@st 5330b because it's the only model the developer owns. -

+Bbox is a generic name for different hardware routers. The platform has been tested with the following devices: + +- Sagem F@st 5330b + +## {% linkable_title Configuration %} To use an Bbox router in your installation, add the following to your `configuration.yaml` file: @@ -28,8 +30,17 @@ device_tracker: - platform: bbox ``` +{% configuration %} +host: + description: IP address of your Bbox device. + required: false + type: string + default: 192.168.1.254 +{% endconfiguration %} + +

-For now and due to third party limitation, the Bbox must be on the same local network as the Home Assistant installation. And with the default IP configuration (IP of the router must be 192.168.1.254). +For now and due to third party limitation, the Bbox must be on the same local network as the Home Assistant installation.

See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From 4ed2cbd936a9623d8efa0b24c8038fe814de2bf1 Mon Sep 17 00:00:00 2001 From: Daniel Shokouhi Date: Sun, 23 Sep 2018 03:48:24 -0700 Subject: [PATCH 29/44] Add note about robot being offline (#6340) * Add note about robot being offline * Remove spaces --- source/_components/vacuum.neato.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/vacuum.neato.markdown b/source/_components/vacuum.neato.markdown index 51cf2cc1d81..4b95366c08c 100644 --- a/source/_components/vacuum.neato.markdown +++ b/source/_components/vacuum.neato.markdown @@ -17,6 +17,10 @@ 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 status attribute to see if the robot is offline. If you see "Robot Offline" 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. +

+ To add `neato` vacuum to your installation, please follow instructions in [Neato component](/components/neato/). Currently supported features are: From e7ff99d6c8288afc1740c21a0fc30052aab07353 Mon Sep 17 00:00:00 2001 From: Baptiste Lecocq Date: Mon, 24 Sep 2018 06:30:14 +0000 Subject: [PATCH 30/44] Add linky component page (#6346) * Add linky component page * Minor changes --- source/_components/sensor.linky.markdown | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 source/_components/sensor.linky.markdown diff --git a/source/_components/sensor.linky.markdown b/source/_components/sensor.linky.markdown new file mode 100644 index 00000000000..00a236deded --- /dev/null +++ b/source/_components/sensor.linky.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Linky Sensor" +description: "Instructions on how to integrate Linky daily data within Home Assistant." +date: 2018-09-06 08:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_release: 0.79 +ha_category: Energy +ha_iot_class: "Cloud Polling" +--- + + +The `linky` sensor platform is showing the last day consumption of your home from the [Linky electric meter](https://www.enedis.fr/english). + +## {% linkable_title Configuration %} + +To add the Linky sensor to your installation, add your Enedis account credentials to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: linky + username: YOUR_LINKY_USERNAME + password: YOUR_LINKY_PASSWORD +``` + +{% configuration %} +username: + description: The Enedis account username. + required: true + type: string +password: + description: The Enedis account password. + required: true + type: string +{% endconfiguration %} + From 05463dbf801d132e7845a8eed0a7d99188506eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Mon, 24 Sep 2018 10:22:09 +0200 Subject: [PATCH 31/44] Documentation change to go with pull request home-assistant/home-assistant#16177 (#6075) --- source/_docs/configuration/packages.markdown | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index b8caf5394cb..9bcd0e2822c 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -63,9 +63,8 @@ light: There are some rules for packages that will be merged: -1. Component names may only use the basic form (e.g., `switch`, but not `switch 1` or `switch aa`). -2. Platform based components (`light`, `switch`, etc) can always be merged. -3. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. +1. Platform based components (`light`, `switch`, etc) can always be merged. +2. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. For example if we have the following in the main config. You are not allowed to re-use "my_input" again for `input_boolean` in a package: @@ -73,7 +72,7 @@ There are some rules for packages that will be merged: input_boolean: my_input: ``` -4. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] can only be merged if its keys, except those for lists, are solely defined once. +3. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] can only be merged if its keys, except those for lists, are solely defined once.

Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the component name. From d13cd890b8d859e8e8154ed63efad2a33cd0b237 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Mon, 24 Sep 2018 10:22:33 +0200 Subject: [PATCH 32/44] Documentation for removal of discovered device (#6276) * Update discovery.markdown * Minor change --- source/_docs/mqtt/discovery.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 75a56503e8a..a7477b959da 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -22,7 +22,6 @@ Supported by MQTT discovery: - [Sensors](/components/sensor.mqtt/) - [Switches](/components/switch.mqtt/) - To enable MQTT discovery, add the following to your `configuration.yaml` file: ```yaml @@ -49,6 +48,8 @@ The discovery topic need to follow a specific format: The payload will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`. +An empty payload will cause a previously discovered device to be deleted. + The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. ### {% linkable_title Support by third-party tools %} @@ -79,6 +80,12 @@ Update the state. $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON ``` +Delete the sensor by sending an empty message. + + ```bash +$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m '' +``` + Setting up a switch is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/components/switch.mqtt/). - Configuration topic: `homeassistant/switch/irrigation/config` From 191cd5faf39bcf15b7486b0f0f10ff535d2fab20 Mon Sep 17 00:00:00 2001 From: Baptiste Lecocq Date: Mon, 24 Sep 2018 08:23:38 +0000 Subject: [PATCH 33/44] Add Enedis logo to linky component page (#6347) --- source/_components/sensor.linky.markdown | 2 +- source/images/supported_brands/enedis.png | Bin 0 -> 22566 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 source/images/supported_brands/enedis.png diff --git a/source/_components/sensor.linky.markdown b/source/_components/sensor.linky.markdown index 00a236deded..a6f60920053 100644 --- a/source/_components/sensor.linky.markdown +++ b/source/_components/sensor.linky.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: home-assistant.png +logo: enedis.png ha_release: 0.79 ha_category: Energy ha_iot_class: "Cloud Polling" diff --git a/source/images/supported_brands/enedis.png b/source/images/supported_brands/enedis.png new file mode 100644 index 0000000000000000000000000000000000000000..df4e95c4c747ad638a8079357d0e099aba2af8f6 GIT binary patch literal 22566 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 z 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

-This platform is an alternative to the [`darksky`](/components/sensor.darksky/) -sensor. +This platform is an alternative to the [`darksky`](/components/sensor.darksky/) sensor.

Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs). From 6f6b3847be4f1cff816e4ae1ca0c7e6b169a152d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 24 Sep 2018 21:08:11 +0200 Subject: [PATCH 36/44] Add more text --- source/_posts/2018-10-01-release-79.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_posts/2018-10-01-release-79.markdown b/source/_posts/2018-10-01-release-79.markdown index 6f0b25b32f8..0d70c2dbe25 100644 --- a/source/_posts/2018-10-01-release-79.markdown +++ b/source/_posts/2018-10-01-release-79.markdown @@ -13,6 +13,10 @@ og_image: /images/blog/2018-10-release-0.79/components.png +Config entries for iOS, MQTT, Tradfri. + +Show devices in frontend (config -> integrations) + ## {% linkable_title New Platforms %} - Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) From 504ed350a47d3ee21af787b12c41a7cc1a80205a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Tue, 25 Sep 2018 00:20:56 +0300 Subject: [PATCH 37/44] Add Huawei LTE router platform, device tracker, and sensor (#6229) * Add Huawei LTE router platform, device tracker, and sensor * Update device_tracker.huawei_lte.markdown * Update huawei_lte.markdown * Update sensor.huawei_lte.markdown --- .../device_tracker.huawei_lte.markdown | 32 ++++++++++++ source/_components/huawei_lte.markdown | 49 ++++++++++++++++++ source/_components/sensor.huawei_lte.markdown | 51 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 source/_components/device_tracker.huawei_lte.markdown create mode 100644 source/_components/huawei_lte.markdown create mode 100644 source/_components/sensor.huawei_lte.markdown diff --git a/source/_components/device_tracker.huawei_lte.markdown b/source/_components/device_tracker.huawei_lte.markdown new file mode 100644 index 00000000000..7beb8c788cc --- /dev/null +++ b/source/_components/device_tracker.huawei_lte.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Huawei LTE Router Device Tracker" +description: "Instructions on how to use Huawei LTE routers to track devices within Home Assistant." +date: 2018-09-08 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: huawei.svg +ha_category: Presence Detection +ha_release: 0.79 +--- + + +This platform offers presence detection by looking at connected devices to a [Huawei LTE router](https://consumer.huawei.com/en/smart-home/). + +This requires you to have set up the [Huawei LTE component](/components/huawei_lte/). + +## {% linkable_title Configuration %} + +To enable the sensor, add the following lines to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: huawei_lte +``` + +See the [device tracker component page](/components/device_tracker/) +for instructions how to configure the people to be tracked. diff --git a/source/_components/huawei_lte.markdown b/source/_components/huawei_lte.markdown new file mode 100644 index 00000000000..7d6afd4afa6 --- /dev/null +++ b/source/_components/huawei_lte.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Huawei LTE Routers" +description: "Instructions on how to integrate Huawei LTE routers with Home Assistant." +date: 2018-09-08 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: huawei.svg +ha_category: Network +ha_release: 0.79 +--- + +The Huawei LTE router integration for Home Assistant allows you to observe +and control [Huawei LTE routers](https://consumer.huawei.com/en/smart-home/). + +The integration provides: + +* a sensor with device, signal, and traffic information +* a device tracker for connected devices + +## {% linkable_title Configuration %} + +To enable the component, add the following lines to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +huawei_lte: + - url: http://192.168.100.1/ + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +url: + description: URL of the router web interface. + required: true + type: url +username: + description: The username used for the router web interface. + required: true + type: string +password: + description: The password used for the router web interface. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.huawei_lte.markdown b/source/_components/sensor.huawei_lte.markdown new file mode 100644 index 00000000000..682d3bc0518 --- /dev/null +++ b/source/_components/sensor.huawei_lte.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "Huawei LTE Router Sensor" +description: "Instructions on how to integrate Huawei LTE router sensors into Home Assistant." +date: 2018-09-08 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: huawei.svg +ha_category: Network +ha_iot_class: "Local Polling" +ha_release: 0.79 +--- + +The `huawei_lte` sensor platform allows you to monitor Huawei LTE routers. + +This requires you to have set up the [Huawei LTE component](/components/huawei_lte/). + +## {% linkable_title Configuration %} + +To enable the sensor, add the following lines to your +`configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: huawei_lte + monitored_conditions: + - device_information.SoftwareVersion + - device_signal.rssi + - traffic_statistics.CurrentDownloadRate + - traffic_statistics.TotalConnectTime +``` + +Configuration variables: + +**monitored_conditions** array (*Optional*): Defines the data to monitor as sensors. Defaults to a few generally available data items expected to be available on most boxes. The names here are dot separated paths to information returned by the router. The data set varies by router model; to see what your router provides, set logging level to debug and watch homeassistant.components.huawei_lte debug entries. The following list contains a few example paths just to illustrate the syntax; these may not be available on all routers or their semantics may differ, and there are quite likely many more that are not listed here. + + - **device_information.SoftwareVersion**: Software version. + - **device_information.WanIPAddress**: WAN interface IP address. + - **device_information.WanIPv6Address**: WAN interface IP address. + - **device_signal.rsrq**: The signal RSRQ value. + - **device_signal.rsrp**: The signal RSRP value. + - **device_signal.rssi**: The signal RSSI value. + - **device_signal.sinr**: The signal SINR value. + - **traffic_statistics.CurrentDownloadRate**: Current download rate, bytes/sec. + - **traffic_statistics.CurrentUploadRate**: Current upload rate, bytes/sec. + - **traffic_statistics.TotalUpload**: Total bytes uploaded since last reset. + - **traffic_statistics.TotalDownload**: Total bytes downloaded since last reset. + - **traffic_statistics.TotalConnectTime**: Total time connected since last reset. From 212777dd6e2540a82c7a8d7750a2f782f569aaba Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Mon, 24 Sep 2018 21:45:41 +0200 Subject: [PATCH 38/44] deCONZ cover documentation (#6325) * deCONZ cover documentation * Add device type description --- source/_components/cover.deconz.markdown | 26 ++++++++++++++++++++++++ source/_components/cover.markdown | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 source/_components/cover.deconz.markdown diff --git a/source/_components/cover.deconz.markdown b/source/_components/cover.deconz.markdown new file mode 100644 index 00000000000..1b721a581c1 --- /dev/null +++ b/source/_components/cover.deconz.markdown @@ -0,0 +1,26 @@ +--- +layout: page +title: "deCONZ Covers" +description: "Instructions on how to integrate Zigbee covers from deCONZ into Home Assistant." +date: 2018-09-20 23:32 +sidebar: true +comments: false +sharing: true +footer: true +logo: deconz.jpeg +ha_category: Cover +ha_release: "0.79" +ha_iot_class: "Local Push" +--- + +See the [deCONZ main component](/components/deconz/) for configuration instructions. + +Covers are devices like ventilation dampers. + +Note that devices in the cover platform identify as lights, so there is a manually curated list that defines which "lights" are covers. + +The `entity_id` name will be `cover.device_name`, where `device_name` is defined in deCONZ. + +#### {% linkable_title Verified supported covers %} + +- Keen vents diff --git a/source/_components/cover.markdown b/source/_components/cover.markdown index a530768096f..f276c9b398a 100644 --- a/source/_components/cover.markdown +++ b/source/_components/cover.markdown @@ -15,7 +15,7 @@ The display style of each entity can be modified in the [customize section](/get | Attribute | Default | Description | | --------- | ------- | ----------- | -| `device_class` | | `none` Generic cover device
`window` Window controller
`garage` Garage door controller +| `device_class` | | `none` Generic cover device
`damper` Ventilation damper controller
`garage` Garage door controller
`window` Window controller | `assumed_state` | `false` | If set to `true`, cover buttons will always be enabled ## {% linkable_title Services %} From 6b36e0eb7691d746fb5bd417c4ff450b50882abd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 24 Sep 2018 23:24:42 +0200 Subject: [PATCH 39/44] 6 digit --- source/_docs/authentication/multi-factor-auth.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 19fc53d8d98..936ed2e2cfd 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -66,7 +66,7 @@ homeassistant: Notify MFA module using [notify component](https://www.home-assistant.io/components/notify/) to delivery a [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm) to user configured target. -User need first set up the MFA module by select one of the aviliable notify service. A 8 digit one-time password will be sent by this notify service, user need to input it to verify the setup. +User need first set up the MFA module by select one of the aviliable notify service. A 6 digit one-time password will be sent by this notify service, user need to input it to verify the setup. During the login process, an 8 digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again. From d3fc513fed187ddcadbb271aa424cefb7c0df255 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Sep 2018 11:22:15 +0200 Subject: [PATCH 40/44] Update release blog post --- source/_posts/2018-10-01-release-79.markdown | 61 ++++++++++++++++---- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/source/_posts/2018-10-01-release-79.markdown b/source/_posts/2018-10-01-release-79.markdown index 0d70c2dbe25..6ba4a93806b 100644 --- a/source/_posts/2018-10-01-release-79.markdown +++ b/source/_posts/2018-10-01-release-79.markdown @@ -26,8 +26,8 @@ Show devices in frontend (config -> integrations) - Jewish calendar sensor ([@tsvi] - [#16393]) ([sensor.jewish_calendar docs]) (new-platform) - Added support for Starling Bank ([@Dullage] - [#16522]) ([sensor.starlingbank docs]) (new-platform) - Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) (new-platform) -- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) ([mailbox.demo docs]) (new-platform) -- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi docs]) ([camera.logi docs]) ([sensor.logi docs]) (new-platform) +- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) (new-platform) +- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi_circle docs]) ([camera.logi_circle docs]) ([sensor.logi_circle docs]) (new-platform) - deCONZ cover support ([@Kane610] - [#16759]) ([cover docs]) ([deconz docs]) ([cover.deconz docs]) (new-platform) - GeoJSON platform ([@exxamalte] - [#16610]) ([geo_location docs]) (new-platform) - Add linky sensor ([@tiste] - [#16468]) ([sensor.linky docs]) (new-platform) @@ -47,6 +47,20 @@ Experiencing issues introduced by this release? Please report them in our [issue - Netdata configuration change: Allows multiple elements per group ([@reefab] - [#16656]) ([sensor.netdata docs]) (breaking change) - Refactored units and icons for the Dyson sensors ([@glpatcern] - [#14550]) ([sensor.dyson docs]) (breaking change) +## {% linkable_title Beta Fixes %} + +- Don't warn but info when on dev mode ([@balloob] - [#16831]) ([updater docs]) (beta fix) +- Bump zm-py to 0.0.3 ([@rohankapoorcom] - [#16835]) ([zoneminder docs]) (beta fix) +- Support old tradfri config format ([@balloob] - [#16841]) ([tradfri docs]) (beta fix) +- Allow MQTT discovery ([@balloob] - [#16842]) ([mqtt docs]) (beta fix) +- Add unique ID and device info to Nest camera ([@balloob] - [#16846]) ([camera.nest docs]) (beta fix) +- Device Registry Support for iOS Sensors ([@cgarwood] - [#16862]) ([sensor.ios docs]) (beta fix) +- Fix MQTT discovery ([@balloob] - [#16864]) ([mqtt docs]) (beta fix) +- Make ring sync again ([@balloob] - [#16866]) ([camera.ring docs]) (beta fix) +- Add unique_id to Nest Sensors ([@cgarwood] - [#16869]) ([binary_sensor.nest docs]) ([sensor.nest docs]) (beta fix) +- Prevent discovered Tradfri while already configured ([@balloob] - [#16891]) ([tradfri docs]) (beta fix) +- Handle exception handling websocket command ([@balloob] - [#16927]) ([websocket_api docs]) (beta fix) + ## {% linkable_title All changes %} - Upgrade wakeonlan to 1.1.6 ([@fabaff] - [#16512]) ([wake_on_lan docs]) ([media_player.panasonic_viera docs]) ([media_player.samsungtv docs]) ([switch.wake_on_lan docs]) @@ -63,7 +77,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update fan.zha platform. ([@Adminiuga] - [#16551]) ([fan.zha docs]) - Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) - Konnected component feature updates ([@heythisisnate] - [#16479]) ([konnected docs]) -- Add config entry to iOS ([@balloob] - [#16580]) ([ios docs]) ([notify docs]) ([sensor.ios docs]) +- Add config entry to iOS ([@balloob] - [#16580]) ([ios docs]) ([notify docs]) - Switchmate ([@Danielhiversen] - [#16395]) ([switch.switchmate docs]) - Update pyhomematic to 0.1.48 ([@danielperna84] - [#16588]) ([homematic docs]) - Add configure_reporting() method to zha component ([@Adminiuga] - [#16487]) ([zha docs]) ([binary_sensor.zha docs]) ([sensor.zha docs]) @@ -135,9 +149,9 @@ Experiencing issues introduced by this release? Please report them in our [issue - deCONZ add via_hub attribute for device registry ([@Kane610] - [#16760]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) ([switch.deconz docs]) - Upgrade pysonos to 0.0.2 ([@amelchio] - [#16761]) - Fix faulty color temp crashing google ([@balloob] - [#16758]) ([google_assistant docs]) -- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) ([mailbox.demo docs]) (new-platform) +- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) (new-platform) - Implement support for complex templates in script delays ([@rohankapoorcom] - [#16442]) -- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi docs]) ([camera.logi docs]) ([sensor.logi docs]) (new-platform) +- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi_circle docs]) ([camera.logi_circle docs]) ([sensor.logi_circle docs]) (new-platform) - Zha switch schedule update state ([@Adminiuga] - [#16621]) ([switch.zha docs]) - Add Carbon Monoxide HomeKit Sensor ([@cdce8p] - [#16664]) ([homekit docs]) - Add unique_id to mqtt camera ([@bieniu] - [#16569]) ([camera.mqtt docs]) @@ -171,6 +185,17 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add Python 3.7 classifier ([@scop] - [#16645]) - Allow soundtouch to play https content too ([@robin13] - [#16713]) ([media_player.soundtouch docs]) - Fix some unhandled exceptions due to missing null checks ([@OverloadUT] - [#16812]) ([cover.isy994 docs]) ([light.isy994 docs]) +- Don't warn but info when on dev mode ([@balloob] - [#16831]) ([updater docs]) (beta fix) +- Bump zm-py to 0.0.3 ([@rohankapoorcom] - [#16835]) ([zoneminder docs]) (beta fix) +- Support old tradfri config format ([@balloob] - [#16841]) ([tradfri docs]) (beta fix) +- Allow MQTT discovery ([@balloob] - [#16842]) ([mqtt docs]) (beta fix) +- Add unique ID and device info to Nest camera ([@balloob] - [#16846]) ([camera.nest docs]) (beta fix) +- Device Registry Support for iOS Sensors ([@cgarwood] - [#16862]) ([sensor.ios docs]) (beta fix) +- Fix MQTT discovery ([@balloob] - [#16864]) ([mqtt docs]) (beta fix) +- Make ring sync again ([@balloob] - [#16866]) ([camera.ring docs]) (beta fix) +- Add unique_id to Nest Sensors ([@cgarwood] - [#16869]) ([binary_sensor.nest docs]) ([sensor.nest docs]) (beta fix) +- Prevent discovered Tradfri while already configured ([@balloob] - [#16891]) ([tradfri docs]) (beta fix) +- Handle exception handling websocket command ([@balloob] - [#16927]) ([websocket_api docs]) (beta fix) [#14484]: https://github.com/home-assistant/home-assistant/pull/14484 [#14550]: https://github.com/home-assistant/home-assistant/pull/14550 @@ -294,6 +319,17 @@ Experiencing issues introduced by this release? Please report them in our [issue [#16806]: https://github.com/home-assistant/home-assistant/pull/16806 [#16809]: https://github.com/home-assistant/home-assistant/pull/16809 [#16812]: https://github.com/home-assistant/home-assistant/pull/16812 +[#16831]: https://github.com/home-assistant/home-assistant/pull/16831 +[#16835]: https://github.com/home-assistant/home-assistant/pull/16835 +[#16841]: https://github.com/home-assistant/home-assistant/pull/16841 +[#16842]: https://github.com/home-assistant/home-assistant/pull/16842 +[#16846]: https://github.com/home-assistant/home-assistant/pull/16846 +[#16862]: https://github.com/home-assistant/home-assistant/pull/16862 +[#16864]: https://github.com/home-assistant/home-assistant/pull/16864 +[#16866]: https://github.com/home-assistant/home-assistant/pull/16866 +[#16869]: https://github.com/home-assistant/home-assistant/pull/16869 +[#16891]: https://github.com/home-assistant/home-assistant/pull/16891 +[#16927]: https://github.com/home-assistant/home-assistant/pull/16927 [@Adminiuga]: https://github.com/Adminiuga [@Cereal2nd]: https://github.com/Cereal2nd [@Danielhiversen]: https://github.com/Danielhiversen @@ -355,6 +391,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [asterisk_mbox docs]: /components/asterisk_mbox/ [binary_sensor.deconz docs]: /components/binary_sensor.deconz/ [binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ +[binary_sensor.nest docs]: /components/binary_sensor.nest/ [binary_sensor.rest docs]: /components/binary_sensor.rest/ [binary_sensor.spc docs]: /components/binary_sensor.spc/ [binary_sensor.wirelesstag docs]: /components/binary_sensor.wirelesstag/ @@ -362,9 +399,11 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.zha docs]: /components/binary_sensor.zha/ [bmw_connected_drive docs]: /components/bmw_connected_drive/ [camera.axis docs]: /components/camera.axis/ -[camera.logi docs]: /components/camera.logi/ +[camera.logi_circle docs]: /components/camera.logi_circle/ [camera.mjpeg docs]: /components/camera.mjpeg/ [camera.mqtt docs]: /components/camera.mqtt/ +[camera.nest docs]: /components/camera.nest/ +[camera.ring docs]: /components/camera.ring/ [camera.zoneminder docs]: /components/camera.zoneminder/ [climate.econet docs]: /components/climate.econet/ [climate.opentherm_gw docs]: /components/climate.opentherm_gw/ @@ -398,11 +437,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [light.yeelight docs]: /components/light.yeelight/ [light.zha docs]: /components/light.zha/ [light.zwave docs]: /components/light.zwave/ -[logi docs]: /components/logi/ +[logi_circle docs]: /components/logi_circle/ [mailbox docs]: /components/mailbox/ [mailbox.asterisk_cdr docs]: /components/mailbox.asterisk_cdr/ [mailbox.asterisk_mbox docs]: /components/mailbox.asterisk_mbox/ -[mailbox.demo docs]: /components/mailbox.demo/ [media_extractor docs]: /components/media_extractor/ [media_player.cast docs]: /components/media_player.cast/ [media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ @@ -427,7 +465,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.ios docs]: /components/sensor.ios/ [sensor.jewish_calendar docs]: /components/sensor.jewish_calendar/ [sensor.linky docs]: /components/sensor.linky/ -[sensor.logi docs]: /components/sensor.logi/ +[sensor.logi_circle docs]: /components/sensor.logi_circle/ +[sensor.nest docs]: /components/sensor.nest/ [sensor.netdata docs]: /components/sensor.netdata/ [sensor.netgear_lte docs]: /components/sensor.netgear_lte/ [sensor.qnap docs]: /components/sensor.qnap/ @@ -457,6 +496,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.wirelesstag docs]: /components/switch.wirelesstag/ [switch.zha docs]: /components/switch.zha/ [tahoma docs]: /components/tahoma/ +[tradfri docs]: /components/tradfri/ +[updater docs]: /components/updater/ [vacuum.ecovacs docs]: /components/vacuum.ecovacs/ [vacuum.neato docs]: /components/vacuum.neato/ [velbus docs]: /components/velbus/ @@ -466,4 +507,4 @@ Experiencing issues introduced by this release? Please report them in our [issue [wirelesstag docs]: /components/wirelesstag/ [xiaomi_aqara docs]: /components/xiaomi_aqara/ [zha docs]: /components/zha/ -[zoneminder docs]: /components/zoneminder/ \ No newline at end of file +[zoneminder docs]: /components/zoneminder/ From 9e2abeaa5e9871e38bed3118ed6c70f33b04d9f7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Sep 2018 15:22:08 +0200 Subject: [PATCH 41/44] add ios sensor stub --- source/_components/sensor.ios.markdown | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/_components/sensor.ios.markdown b/source/_components/sensor.ios.markdown index e69de29bb2d..a1fce7f74f8 100644 --- a/source/_components/sensor.ios.markdown +++ b/source/_components/sensor.ios.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "iOS" +description: "Instructions on how to use the iOS sensors with Home Assistant." +date: 2018-04-06 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple.png +ha_category: Sensor +featured: false +ha_release: 0.31 +ha_iot_class: push +--- + +The `ios` component is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. From 4a1d7645967893c4cfd42cd991f1e7fea8c468b3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Sep 2018 15:39:09 +0200 Subject: [PATCH 42/44] Fix jewish sensor props --- .../_components/sensor.jewish_calendar.markdown | 5 ++--- source/_posts/2018-10-01-release-79.markdown | 15 +++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/sensor.jewish_calendar.markdown index c9f6f8c7ec6..42a4c53ad8b 100644 --- a/source/_components/sensor.jewish_calendar.markdown +++ b/source/_components/sensor.jewish_calendar.markdown @@ -7,10 +7,9 @@ sidebar: true comments: false sharing: true footer: true -logo: home-assistant.png ha_category: Calendar -ha_iot_class: "Local Push" -ha_release: "0.80" +ha_iot_class: "Local Poll" +ha_release: "0.79" --- The Jewish Calendar (`jewish_calendar`) sensor platform displays a variety of information related to the Jewish Calendar as a variety of sensors. diff --git a/source/_posts/2018-10-01-release-79.markdown b/source/_posts/2018-10-01-release-79.markdown index 6ba4a93806b..2fd547d7de9 100644 --- a/source/_posts/2018-10-01-release-79.markdown +++ b/source/_posts/2018-10-01-release-79.markdown @@ -13,19 +13,18 @@ og_image: /images/blog/2018-10-release-0.79/components.png + + Config entries for iOS, MQTT, Tradfri. Show devices in frontend (config -> integrations) ## {% linkable_title New Platforms %} -- Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) - Add Huawei LTE router platform, device tracker, and sensor ([@scop] - [#16498]) ([device_tracker docs]) ([huawei_lte docs]) ([sensor.huawei_lte docs]) (new-platform) -- Add websocket list APIs for the registries ([@balloob] - [#16597]) ([config docs]) (new-platform) - New EDP re:dy component ([@abmantis] - [#16426]) ([edp_redy docs]) ([sensor.edp_redy docs]) ([switch.edp_redy docs]) (new-platform) - Jewish calendar sensor ([@tsvi] - [#16393]) ([sensor.jewish_calendar docs]) (new-platform) - Added support for Starling Bank ([@Dullage] - [#16522]) ([sensor.starlingbank docs]) (new-platform) -- Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) (new-platform) - Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) (new-platform) - Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi_circle docs]) ([camera.logi_circle docs]) ([sensor.logi_circle docs]) (new-platform) - deCONZ cover support ([@Kane610] - [#16759]) ([cover docs]) ([deconz docs]) ([cover.deconz docs]) (new-platform) @@ -44,8 +43,8 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Netdata configuration change: Allows multiple elements per group ([@reefab] - [#16656]) ([sensor.netdata docs]) (breaking change) -- Refactored units and icons for the Dyson sensors ([@glpatcern] - [#14550]) ([sensor.dyson docs]) (breaking change) +- Netdata configuration change: Allows multiple elements per group. Specify the `data_group` as part of the sensor description. See docs for details. ([@reefab] - [#16656]) ([sensor.netdata docs]) (breaking change) +- The Dyson sensor Air Quality Index is now named AQI following Dyson's mobile app ([@glpatcern] - [#14550]) ([sensor.dyson docs]) (breaking change) ## {% linkable_title Beta Fixes %} @@ -75,7 +74,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrade pytest to 3.8.0 and pytest-timeout to 1.3.2 ([@scop] - [#16489]) - Refactor zha/async_device_initialized(). ([@Adminiuga] - [#16485]) ([zha docs]) - Update fan.zha platform. ([@Adminiuga] - [#16551]) ([fan.zha docs]) -- Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) +- Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) - Konnected component feature updates ([@heythisisnate] - [#16479]) ([konnected docs]) - Add config entry to iOS ([@balloob] - [#16580]) ([ios docs]) ([notify docs]) - Switchmate ([@Danielhiversen] - [#16395]) ([switch.switchmate docs]) @@ -89,7 +88,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add Huawei LTE router platform, device tracker, and sensor ([@scop] - [#16498]) ([device_tracker docs]) ([huawei_lte docs]) ([sensor.huawei_lte docs]) (new-platform) - Changing z-wave brightness calculation to respect 0x01 and 0x02 byte values ([@Harvtronix] - [#16420]) ([light.zwave docs]) - Add myself to CODEOWNERS for upcloud ([@scop] - [#16599]) -- Add websocket list APIs for the registries ([@balloob] - [#16597]) ([config docs]) (new-platform) +- Add websocket list APIs for the registries ([@balloob] - [#16597]) ([config docs]) - MQTT config entry ([@balloob] - [#16594]) ([hangouts docs]) ([homematicip_cloud docs]) ([mqtt docs]) - Upgrade python-twitch-client to 0.6.0 ([@fabaff] - [#16602]) ([sensor.twitch docs]) - Improve precision of timer ticks ([@amelchio] - [#16598]) @@ -135,7 +134,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrading librouteros version ([@kunago] - [#16718]) ([device_tracker docs]) - Add unique_id to mqtt_json light ([@nikolaykasyanov] - [#16721]) - On-demand update of swiss public transport sensor ([@vikramgorla] - [#16723]) ([sensor.swiss_public_transport docs]) -- Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) (new-platform) +- Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) - Met.no weather platform ([@Danielhiversen] - [#16582]) - Upgrade keyring to 15.1.0 ([@fabaff] - [#16734]) - Avoid calling yr update every second for a minute ones every hour ([@Danielhiversen] - [#16731]) ([sensor.yr docs]) From 1c6375a79b3f23457973fa088a2ff94e9c11bbf4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Sep 2018 16:31:52 +0200 Subject: [PATCH 43/44] Update blog post --- source/_posts/2018-10-01-release-79.markdown | 41 ++++++++++++++---- .../blog/2018-09-release-0.79/components.png | Bin 0 -> 56232 bytes .../2018-09-release-0.79/config_entry.png | Bin 0 -> 12596 bytes .../2018-09-release-0.79/integrations.png | Bin 0 -> 8830 bytes .../images/blog/2018-09-release-0.79/mqtt.png | Bin 0 -> 25293 bytes 5 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 source/images/blog/2018-09-release-0.79/components.png create mode 100644 source/images/blog/2018-09-release-0.79/config_entry.png create mode 100644 source/images/blog/2018-09-release-0.79/integrations.png create mode 100644 source/images/blog/2018-09-release-0.79/mqtt.png diff --git a/source/_posts/2018-10-01-release-79.markdown b/source/_posts/2018-10-01-release-79.markdown index 2fd547d7de9..c8f28022ed0 100644 --- a/source/_posts/2018-10-01-release-79.markdown +++ b/source/_posts/2018-10-01-release-79.markdown @@ -1,23 +1,48 @@ --- layout: post -title: "0.79: TBD - UPDATE DATE" -description: "TBD" -date: 2018-09-24 00:01:00 -date_formatted: "October 1, 2018" +title: "0.79: Device Registry, Logi Circle, Huawei LTE routers, GeoJSON" +description: "Home Assistant is now able to show the devices and entities that belong to an integration." +date: 2018-09-27 00:01:00 +date_formatted: "September 28, 2018" author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes -og_image: /images/blog/2018-10-release-0.79/components.png +og_image: /images/blog/2018-09-release-0.79/components.png --- - +

+In case you missed it two weeks ago, check [our plans for the future](/blog/2018/09/17/thinking-big/). +

+ +It's time for another great release and we're introducing a brand new feature: device registry. This allows integrations to tell Home Assistant not only about entities, but also which devices the entities represent. It also allows integrations to tell Home Assistant how a device is connected to Home Assistant. For example, a Hue light bulb is connected to Home Assistant via the Hue hub. -Config entries for iOS, MQTT, Tradfri. +

+Screenshot showing several configured integrations +Screenshot showing several configured integrations in the configuration panel. +

-Show devices in frontend (config -> integrations) +Adding devices to the mix allows us to do a lot of cool things. It allows us to group entities and show how they relate to one another. It will also allow us to inform the user if data leaves the home network and shows the firmware version that the device is running on. + +

+Screenshot showing the devices of a config entry +Screenshot showing the devices of the iOS integration. +

+ +Devices can only be added by integrations that are configured via the integrations panel in the config panel. So we've also been expanding the integrations that support that. This release brings support to iOS, MQTT and Tradfri. + +

+Screenshot showing how to configure MQTT via UI +Screenshot showing how to configure MQTT via UI +

+ +And this is not all! There is so much more. In an effort to make the quality of an integration more clear, we've added an [Integration Quality Scale](/docs/quality_scale/). With this scale we'll be able to clearly communicate to the user how good an integration is and it gives developers a list on how to improve it. Expect these levels to pop up in the integration list soon. + +And did you think we forgot about auth? We did not. [@awarecan] has added a new multi-factor auth module that will send you a one-time authentication code to finish your login, **with a notification service of your choice**. PushBullet, Hangouts, iOS app, some obscure custom notification service using a shell script? It's possible. + +Oh, and yes, there is also some cool new integrations. Support has been added for Logi Circle camera's, GeoJSON events and even a bank. More below 👇 ## {% linkable_title New Platforms %} diff --git a/source/images/blog/2018-09-release-0.79/components.png b/source/images/blog/2018-09-release-0.79/components.png new file mode 100644 index 0000000000000000000000000000000000000000..4ad4b7ba30f7c4fb52733b81cbb892bbb6dfcc75 GIT binary patch literal 56232 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 z%0A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

_ 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 Y(QL=4P>F{Eq5m+nK>BJmDla1c8#Q+sYXATM literal 0 HcmV?d00001 diff --git a/source/images/blog/2018-09-release-0.79/mqtt.png b/source/images/blog/2018-09-release-0.79/mqtt.png new file mode 100644 index 0000000000000000000000000000000000000000..098339fcc8fe1885247e091d26a026d366e17ebd GIT binary patch literal 25293 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 R__hSbGj%<+S{3`~{{ckNR=EHG literal 0 HcmV?d00001 From 94b2859718fbce062c698b348fcee20831a5d38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 26 Sep 2018 06:48:26 +0200 Subject: [PATCH 44/44] Update sensor.tibber.markdown --- source/_components/sensor.tibber.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/sensor.tibber.markdown b/source/_components/sensor.tibber.markdown index 3e71d8fc2a5..7e022d81368 100644 --- a/source/_components/sensor.tibber.markdown +++ b/source/_components/sensor.tibber.markdown @@ -14,6 +14,7 @@ ha_iot_class: "Cloud Polling" --- The `tibber` sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer. +If you have a Tibber Pulse it will also show the electricity consumption in real time. To add Tibber to your installation, add the following to your `configuration.yaml` file:

m|A!7=raJ$DngMvD77E zPEiqkEyIRHzo0bt+;rZ`#qYj*)?07yIHWl#4h;nY9TP@Yth}uD$ZZskmYIf5;3z!T z3oG{@S3V^eR1>vFj^`CSfiYdKlRL}uJkxj4hmx`t2WG<_WhNl z^HQWG3+fZs-aY6dHKIfgI(jJS+ss)u3u`YLyS%ox>xMrpK3@uyl#V<&{7G)u^y$+R zGw=K7jI^Tck-{K}<|nO`iQ}=;ti&Hk4jmBXXF1VOOryDnj2k(s`j1r!{a^U{7y1EN zmXQ{16s%etn1n=m{-gIS{l}oBaxA{AyU|Pchg*L3#jhWJWlAb(mWQj75DUgWnm^4H z7EEUgaEHE+4+d(T*ZuMNOJqk5`1cas{1I>Du)sY&A@I+#(g9yRgZFT?{`LOW!1Hv$ zKTvnV_`ESbpsC^*J7x!hO8K@{R?%_SMaL5D&bj8#FW$X&V`86_X-oUwQ&0ZS zFdQv|Fk&ia#BgQqFw^&ZN(lS#?jDYXF954pnjbVk{bWqwg7$#&?BRX^QbZ2xA~h3n zDkwghQ!>DOc&IGB6)7$Knu4x4V{!}l;{2QLt^3`Uc4w^YSDZa6qieKFCV#q!BG4>M zj&N|VZ~2p_uIv;Rq;scn`Vj#G)IQjiJnFUlBhZ75NxnK}{ zBtsm2C;;~(AO4;%9OTViCM}2S`FVGOhbu44d(VXR4#Ukaix=V-JCJ~2=fU^##yv|L z%B#?M`RCjzem1|t_;}~}sT)hD)7PnBE zi^VA<%Fg4s7*IT7(!x9n@pHpDu?vHcb+!_6!+4o>_XOS;X zb2qqnST@hz8?G$$-4DAdu$uzADX^OYyD6}n0=p@&n*zHju$uzADe!+rf&T{?JKR?y S#|jPr0000 literal 0 HcmV?d00001 From 32591926e219692478dab61bdc3fbd5f9119178d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 24 Sep 2018 12:22:41 +0200 Subject: [PATCH 34/44] Add initial release notes 79 --- _config.yml | 8 +- source/_posts/2018-10-01-release-79.markdown | 465 +++++++++++++++++++ 2 files changed, 469 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2018-10-01-release-79.markdown diff --git a/_config.yml b/_config.yml index ad7f9d183c9..5ec7d88be7f 100644 --- a/_config.yml +++ b/_config.yml @@ -141,14 +141,14 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 78 -current_patch_version: 3 -date_released: 2018-09-22 +current_minor_version: 80 +current_patch_version: 0 +date_released: 2018-09-24 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0783---september-22" +patch_version_notes: "" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-10-01-release-79.markdown b/source/_posts/2018-10-01-release-79.markdown new file mode 100644 index 00000000000..6f0b25b32f8 --- /dev/null +++ b/source/_posts/2018-10-01-release-79.markdown @@ -0,0 +1,465 @@ +--- +layout: post +title: "0.79: TBD - UPDATE DATE" +description: "TBD" +date: 2018-09-24 00:01:00 +date_formatted: "October 1, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-10-release-0.79/components.png +--- + + + +## {% linkable_title New Platforms %} + +- Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) +- Add Huawei LTE router platform, device tracker, and sensor ([@scop] - [#16498]) ([device_tracker docs]) ([huawei_lte docs]) ([sensor.huawei_lte docs]) (new-platform) +- Add websocket list APIs for the registries ([@balloob] - [#16597]) ([config docs]) (new-platform) +- New EDP re:dy component ([@abmantis] - [#16426]) ([edp_redy docs]) ([sensor.edp_redy docs]) ([switch.edp_redy docs]) (new-platform) +- Jewish calendar sensor ([@tsvi] - [#16393]) ([sensor.jewish_calendar docs]) (new-platform) +- Added support for Starling Bank ([@Dullage] - [#16522]) ([sensor.starlingbank docs]) (new-platform) +- Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) (new-platform) +- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) ([mailbox.demo docs]) (new-platform) +- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi docs]) ([camera.logi docs]) ([sensor.logi docs]) (new-platform) +- deCONZ cover support ([@Kane610] - [#16759]) ([cover docs]) ([deconz docs]) ([cover.deconz docs]) (new-platform) +- GeoJSON platform ([@exxamalte] - [#16610]) ([geo_location docs]) (new-platform) +- Add linky sensor ([@tiste] - [#16468]) ([sensor.linky docs]) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Netdata configuration change: Allows multiple elements per group ([@reefab] - [#16656]) ([sensor.netdata docs]) (breaking change) +- Refactored units and icons for the Dyson sensors ([@glpatcern] - [#14550]) ([sensor.dyson docs]) (breaking change) + +## {% linkable_title All changes %} + +- Upgrade wakeonlan to 1.1.6 ([@fabaff] - [#16512]) ([wake_on_lan docs]) ([media_player.panasonic_viera docs]) ([media_player.samsungtv docs]) ([switch.wake_on_lan docs]) +- Make the Qnap sensor more resilient if server is not reachable ([@mrosseel] - [#16445]) ([sensor.qnap docs]) +- Update PyRMVtransport version ([@cgtobi] - [#16547]) ([sensor.rmvtransport docs]) +- Isort preparations ([@scop] - [#16555]) ([apple_tv docs]) ([geo_location docs]) ([google_assistant docs]) ([rachio docs]) ([media_player.cast docs]) ([media_player.webostv docs]) +- Store notifications in component. Add ws endpoint for fetching. ([@jeradM] - [#16503]) ([http docs]) ([persistent_notification docs]) +- Fixes an OpenUV bug with the scan interval ([@bachya] - [#16570]) ([openuv docs]) +- Bump pyeconet ([@w1ll1am23] - [#16571]) ([climate.econet docs]) +- yr: use async syntax ([@Danielhiversen] - [#16563]) ([sensor.yr docs]) +- Notifications for Android TV: Add fontsize and sending images ([@danielperna84] - [#16565]) ([notify docs]) +- Upgrade pytest to 3.8.0 and pytest-timeout to 1.3.2 ([@scop] - [#16489]) +- Refactor zha/async_device_initialized(). ([@Adminiuga] - [#16485]) ([zha docs]) +- Update fan.zha platform. ([@Adminiuga] - [#16551]) ([fan.zha docs]) +- Hangouts help "page" and little bugfix ([@hobbypunk90] - [#16464]) ([hangouts docs]) (new-platform) +- Konnected component feature updates ([@heythisisnate] - [#16479]) ([konnected docs]) +- Add config entry to iOS ([@balloob] - [#16580]) ([ios docs]) ([notify docs]) ([sensor.ios docs]) +- Switchmate ([@Danielhiversen] - [#16395]) ([switch.switchmate docs]) +- Update pyhomematic to 0.1.48 ([@danielperna84] - [#16588]) ([homematic docs]) +- Add configure_reporting() method to zha component ([@Adminiuga] - [#16487]) ([zha docs]) ([binary_sensor.zha docs]) ([sensor.zha docs]) +- Allow only_cache parameter in zha.safe_read() ([@Adminiuga] - [#16553]) ([zha docs]) +- Update tibber lib version ([@Danielhiversen] - [#16590]) ([sensor.tibber docs]) +- xiaomi lib 0.10.0 ([@Danielhiversen] - [#16591]) ([xiaomi_aqara docs]) +- Support for the Quirky Nimbus ([@w1ll1am23] - [#16520]) ([wink docs]) ([climate.wink docs]) +- Multiple tag managers for Wireless Sensor Tags. ([@sergeymaysak] - [#16353]) ([wirelesstag docs]) ([binary_sensor.wirelesstag docs]) ([sensor.wirelesstag docs]) ([switch.wirelesstag docs]) +- Add Huawei LTE router platform, device tracker, and sensor ([@scop] - [#16498]) ([device_tracker docs]) ([huawei_lte docs]) ([sensor.huawei_lte docs]) (new-platform) +- Changing z-wave brightness calculation to respect 0x01 and 0x02 byte values ([@Harvtronix] - [#16420]) ([light.zwave docs]) +- Add myself to CODEOWNERS for upcloud ([@scop] - [#16599]) +- Add websocket list APIs for the registries ([@balloob] - [#16597]) ([config docs]) (new-platform) +- MQTT config entry ([@balloob] - [#16594]) ([hangouts docs]) ([homematicip_cloud docs]) ([mqtt docs]) +- Upgrade python-twitch-client to 0.6.0 ([@fabaff] - [#16602]) ([sensor.twitch docs]) +- Improve precision of timer ticks ([@amelchio] - [#16598]) +- Switch components.sensor.zha to await syntax. ([@Adminiuga] - [#16619]) ([sensor.zha docs]) +- Adding support for RTDSContactSensor and RTDSMotionSensor in Tahoma … (RTS Alarms sensors and contacts for Somfy Protexiom alarms) ([@christopheBfr] - [#16609]) ([tahoma docs]) ([sensor.tahoma docs]) +- fix bug where momentary switch with activation low does not reset ([@heythisisnate] - [#16603]) ([switch.konnected docs]) +- Extracting zoneminder to a new library ([@rohankapoorcom] - [#16527]) ([zoneminder docs]) ([camera.zoneminder docs]) +- Add @rohankapoorcom to CODEOWNERS for the zoneminder platform ([@rohankapoorcom] - [#16627]) +- Small huawei_lte improvements ([@scop] - [#16626]) ([huawei_lte docs]) ([sensor.huawei_lte docs]) +- Upgrade pwmled to 1.3.0 ([@soldag] - [#16624]) ([light.rpi_gpio_pwm docs]) +- Clean up MjpegCamera by removing unnused hass object in __init__ ([@rohankapoorcom] - [#16628]) ([camera.axis docs]) ([camera.mjpeg docs]) ([camera.zoneminder docs]) +- Update developer doc links to developers.home-assistant.io ([@scop] - [#16622]) ([websocket_api docs]) +- Add valid_window=1 to TOTP verify ([@awarecan] - [#16625]) +- Add new devices to HomematicIP Cloud ([@mxworm] - [#16636]) ([binary_sensor.homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) +- New EDP re:dy component ([@abmantis] - [#16426]) ([edp_redy docs]) ([sensor.edp_redy docs]) ([switch.edp_redy docs]) (new-platform) +- Upgrade Switchmate lib ([@Danielhiversen] - [#16637]) ([switch.switchmate docs]) +- Update pyhomematic to 0.1.49 ([@danielperna84] - [#16649]) ([homematic docs]) +- Upgrade holidays to 0.9.7 ([@fabaff] - [#16651]) ([binary_sensor.workday docs]) +- Fix link to docs ([@fabaff] - [#16652]) ([vacuum.ecovacs docs]) +- Log raw result of configure_reporting() command. ([@Adminiuga] - [#16655]) ([zha docs]) +- Rework timer delays ([@amelchio] - [#16650]) +- Add config entries to connection class ([@balloob] - [#16618]) +- Add zha device entity ([@damarco] - [#14579]) ([zha docs]) +- Clean up device update, add via-hub ([@balloob] - [#16659]) +- Jewish calendar sensor ([@tsvi] - [#16393]) ([sensor.jewish_calendar docs]) (new-platform) +- Fixes an AirVisual bug where response data is missing ([@bachya] - [#16673]) ([sensor.airvisual docs]) +- Suppress traceback and log error ([@fabaff] - [#16669]) ([sensor.scrape docs]) +- Fix Ecovacs vacuums showing "None" for name ([@OverloadUT] - [#16654]) ([ecovacs docs]) ([vacuum.ecovacs docs]) +- Upgrade paho-mqtt to 1.4.0 ([@fabaff] - [#16688]) ([mqtt docs]) ([shiftr docs]) +- Streamline log messages ([@gwww] - [#16243]) +- Added velbus counter sensors, updated to py-velbus 2.0.20 ([@Cereal2nd] - [#16683]) ([velbus docs]) ([sensor.velbus docs]) +- Added support for Starling Bank ([@Dullage] - [#16522]) ([sensor.starlingbank docs]) (new-platform) +- Netdata configuration change: Allows multiple elements per group ([@reefab] - [#16656]) ([sensor.netdata docs]) (breaking change) +- Upgrade mypy to 0.630 ([@scop] - [#16674]) +- Use one regex for Hass.io URL check ([@pvizeli] - [#16710]) ([hassio docs]) +- Remove usage of "run_until_complete" ([@smurfix] - [#16617]) +- More isort preparations ([@scop] - [#16633]) +- Use posargs in tox lint env ([@scop] - [#16646]) +- Make pylint report non-LF linefeeds per the style guidelines ([@scop] - [#16601]) +- Config flow tradfri ([@balloob] - [#16665]) +- MyQ Open State Fix ([@geekofweek] - [#16681]) ([cover.myq docs]) +- Save disabled_by in entity registry ([@cgarwood] - [#16699]) +- Upgrading librouteros version ([@kunago] - [#16718]) ([device_tracker docs]) +- Add unique_id to mqtt_json light ([@nikolaykasyanov] - [#16721]) +- On-demand update of swiss public transport sensor ([@vikramgorla] - [#16723]) ([sensor.swiss_public_transport docs]) +- Upgrade youtube_dl to 2018.09.18 ([@fabaff] - [#16729]) ([media_extractor docs]) (new-platform) +- Met.no weather platform ([@Danielhiversen] - [#16582]) +- Upgrade keyring to 15.1.0 ([@fabaff] - [#16734]) +- Avoid calling yr update every second for a minute ones every hour ([@Danielhiversen] - [#16731]) ([sensor.yr docs]) +- Upgrade shodan to 1.10.2 ([@fabaff] - [#16736]) ([sensor.shodan docs]) +- Add subscription info endpoint ([@balloob] - [#16727]) ([cloud docs]) ([websocket_api docs]) +- Small cleanup for slack ([@pvizeli] - [#16743]) ([notify docs]) +- light.zha: Catch exceptions for all commands. ([@Adminiuga] - [#16752]) ([light.zha docs]) +- Changed save_on_change to default to False ([@zoe1337] - [#16744]) ([light.yeelight docs]) +- Add option to disable specific integrations ([@balloob] - [#16757]) ([alexa docs]) ([cloud docs]) ([google_assistant docs]) +- Use pysonos for Sonos media player ([@amelchio] - [#16753]) ([sonos docs]) ([media_player.sonos docs]) +- deCONZ add via_hub attribute for device registry ([@Kane610] - [#16760]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) ([switch.deconz docs]) +- Upgrade pysonos to 0.0.2 ([@amelchio] - [#16761]) +- Fix faulty color temp crashing google ([@balloob] - [#16758]) ([google_assistant docs]) +- Add Call Data Log platform. Mailboxes no longer require media ([@PhracturedBlue] - [#16579]) ([asterisk_mbox docs]) ([mailbox docs]) ([mailbox.asterisk_cdr docs]) ([mailbox.asterisk_mbox docs]) ([mailbox.demo docs]) (new-platform) +- Implement support for complex templates in script delays ([@rohankapoorcom] - [#16442]) +- Add Logi Circle component, camera and sensor platform ([@evanjd] - [#16540]) ([logi docs]) ([camera.logi docs]) ([sensor.logi docs]) (new-platform) +- Zha switch schedule update state ([@Adminiuga] - [#16621]) ([switch.zha docs]) +- Add Carbon Monoxide HomeKit Sensor ([@cdce8p] - [#16664]) ([homekit docs]) +- Add unique_id to mqtt camera ([@bieniu] - [#16569]) ([camera.mqtt docs]) +- Add tradfri device info ([@balloob] - [#16768]) +- Make rest sensor and binary sensor more efficient ([@exxamalte] - [#14484]) ([binary_sensor.rest docs]) ([sensor.rest docs]) +- Refactored units and icons for the Dyson sensors ([@glpatcern] - [#14550]) ([sensor.dyson docs]) (breaking change) +- Add confirmation to Cast/Sonos/iOS config entries ([@balloob] - [#16769]) +- deCONZ cover support ([@Kane610] - [#16759]) ([cover docs]) ([deconz docs]) ([cover.deconz docs]) (new-platform) +- GeoJSON platform ([@exxamalte] - [#16610]) ([geo_location docs]) (new-platform) +- Upgrade restrictedpython to 4.0b5 ([@fabaff] - [#16779]) ([python_script docs]) +- Upgrade bimmer_connected to 0.5.2 ([@gerard33] - [#16780]) ([bmw_connected_drive docs]) +- Fix Windows loop ([@balloob] - [#16737]) +- Fix return to base logic for neato ([@dshokouhi] - [#16776]) ([vacuum.neato docs]) +- Update Tibber lib ([@Danielhiversen] - [#16795]) +- Bump pybotvac to 0.0.10 ([@dshokouhi] - [#16799]) ([neato docs]) +- Bump zm-py up to 0.0.2 ([@rohankapoorcom] - [#16800]) ([zoneminder docs]) +- Bump sucks (Ecovacs) lib to 0.9.3 ([@OverloadUT] - [#16803]) ([ecovacs docs]) ([vacuum.ecovacs docs]) +- Upgrade zeroconf to 0.21.3 ([@tadly] - [#16789]) +- Add Tuya cover state ([@huangyupeng] - [#16709]) ([cover.tuya docs]) +- Add configurable host for bbox routers ([@isonet] - [#16778]) +- Set botvac state when offline ([@dshokouhi] - [#16805]) ([vacuum.neato docs]) +- Handle netgear_lte connection errors ([@amelchio] - [#16806]) ([netgear_lte docs]) ([notify docs]) ([sensor.netgear_lte docs]) +- Improve opentherm_gw state detection ([@mvn23] - [#16809]) ([climate.opentherm_gw docs]) +- Rework chromecast fix ([@awarecan] - [#16804]) ([media_player.cast docs]) +- Add linky sensor ([@tiste] - [#16468]) ([sensor.linky docs]) (new-platform) +- Use pyspcwebgw for SPC component ([@mbrrg] - [#16214]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) +- Remove discovered MQTT Switch device when discovery topic is cleared ([@emontnemery] - [#16605]) ([mqtt docs]) ([switch.mqtt docs]) +- Allow split component definitions in packages ([@thomasloven] - [#16177]) +- Add Notify MFA module ([@awarecan] - [#16314]) +- Broadlink service name ([@Danielhiversen] - [#16345]) ([switch.broadlink docs]) +- Add Python 3.7 classifier ([@scop] - [#16645]) +- Allow soundtouch to play https content too ([@robin13] - [#16713]) ([media_player.soundtouch docs]) +- Fix some unhandled exceptions due to missing null checks ([@OverloadUT] - [#16812]) ([cover.isy994 docs]) ([light.isy994 docs]) + +[#14484]: https://github.com/home-assistant/home-assistant/pull/14484 +[#14550]: https://github.com/home-assistant/home-assistant/pull/14550 +[#14579]: https://github.com/home-assistant/home-assistant/pull/14579 +[#16177]: https://github.com/home-assistant/home-assistant/pull/16177 +[#16214]: https://github.com/home-assistant/home-assistant/pull/16214 +[#16243]: https://github.com/home-assistant/home-assistant/pull/16243 +[#16314]: https://github.com/home-assistant/home-assistant/pull/16314 +[#16345]: https://github.com/home-assistant/home-assistant/pull/16345 +[#16353]: https://github.com/home-assistant/home-assistant/pull/16353 +[#16393]: https://github.com/home-assistant/home-assistant/pull/16393 +[#16395]: https://github.com/home-assistant/home-assistant/pull/16395 +[#16420]: https://github.com/home-assistant/home-assistant/pull/16420 +[#16426]: https://github.com/home-assistant/home-assistant/pull/16426 +[#16442]: https://github.com/home-assistant/home-assistant/pull/16442 +[#16445]: https://github.com/home-assistant/home-assistant/pull/16445 +[#16464]: https://github.com/home-assistant/home-assistant/pull/16464 +[#16468]: https://github.com/home-assistant/home-assistant/pull/16468 +[#16479]: https://github.com/home-assistant/home-assistant/pull/16479 +[#16485]: https://github.com/home-assistant/home-assistant/pull/16485 +[#16487]: https://github.com/home-assistant/home-assistant/pull/16487 +[#16489]: https://github.com/home-assistant/home-assistant/pull/16489 +[#16498]: https://github.com/home-assistant/home-assistant/pull/16498 +[#16503]: https://github.com/home-assistant/home-assistant/pull/16503 +[#16512]: https://github.com/home-assistant/home-assistant/pull/16512 +[#16520]: https://github.com/home-assistant/home-assistant/pull/16520 +[#16522]: https://github.com/home-assistant/home-assistant/pull/16522 +[#16527]: https://github.com/home-assistant/home-assistant/pull/16527 +[#16540]: https://github.com/home-assistant/home-assistant/pull/16540 +[#16547]: https://github.com/home-assistant/home-assistant/pull/16547 +[#16551]: https://github.com/home-assistant/home-assistant/pull/16551 +[#16553]: https://github.com/home-assistant/home-assistant/pull/16553 +[#16555]: https://github.com/home-assistant/home-assistant/pull/16555 +[#16563]: https://github.com/home-assistant/home-assistant/pull/16563 +[#16565]: https://github.com/home-assistant/home-assistant/pull/16565 +[#16569]: https://github.com/home-assistant/home-assistant/pull/16569 +[#16570]: https://github.com/home-assistant/home-assistant/pull/16570 +[#16571]: https://github.com/home-assistant/home-assistant/pull/16571 +[#16579]: https://github.com/home-assistant/home-assistant/pull/16579 +[#16580]: https://github.com/home-assistant/home-assistant/pull/16580 +[#16582]: https://github.com/home-assistant/home-assistant/pull/16582 +[#16588]: https://github.com/home-assistant/home-assistant/pull/16588 +[#16590]: https://github.com/home-assistant/home-assistant/pull/16590 +[#16591]: https://github.com/home-assistant/home-assistant/pull/16591 +[#16594]: https://github.com/home-assistant/home-assistant/pull/16594 +[#16597]: https://github.com/home-assistant/home-assistant/pull/16597 +[#16598]: https://github.com/home-assistant/home-assistant/pull/16598 +[#16599]: https://github.com/home-assistant/home-assistant/pull/16599 +[#16601]: https://github.com/home-assistant/home-assistant/pull/16601 +[#16602]: https://github.com/home-assistant/home-assistant/pull/16602 +[#16603]: https://github.com/home-assistant/home-assistant/pull/16603 +[#16605]: https://github.com/home-assistant/home-assistant/pull/16605 +[#16609]: https://github.com/home-assistant/home-assistant/pull/16609 +[#16610]: https://github.com/home-assistant/home-assistant/pull/16610 +[#16617]: https://github.com/home-assistant/home-assistant/pull/16617 +[#16618]: https://github.com/home-assistant/home-assistant/pull/16618 +[#16619]: https://github.com/home-assistant/home-assistant/pull/16619 +[#16621]: https://github.com/home-assistant/home-assistant/pull/16621 +[#16622]: https://github.com/home-assistant/home-assistant/pull/16622 +[#16624]: https://github.com/home-assistant/home-assistant/pull/16624 +[#16625]: https://github.com/home-assistant/home-assistant/pull/16625 +[#16626]: https://github.com/home-assistant/home-assistant/pull/16626 +[#16627]: https://github.com/home-assistant/home-assistant/pull/16627 +[#16628]: https://github.com/home-assistant/home-assistant/pull/16628 +[#16633]: https://github.com/home-assistant/home-assistant/pull/16633 +[#16636]: https://github.com/home-assistant/home-assistant/pull/16636 +[#16637]: https://github.com/home-assistant/home-assistant/pull/16637 +[#16645]: https://github.com/home-assistant/home-assistant/pull/16645 +[#16646]: https://github.com/home-assistant/home-assistant/pull/16646 +[#16649]: https://github.com/home-assistant/home-assistant/pull/16649 +[#16650]: https://github.com/home-assistant/home-assistant/pull/16650 +[#16651]: https://github.com/home-assistant/home-assistant/pull/16651 +[#16652]: https://github.com/home-assistant/home-assistant/pull/16652 +[#16654]: https://github.com/home-assistant/home-assistant/pull/16654 +[#16655]: https://github.com/home-assistant/home-assistant/pull/16655 +[#16656]: https://github.com/home-assistant/home-assistant/pull/16656 +[#16659]: https://github.com/home-assistant/home-assistant/pull/16659 +[#16664]: https://github.com/home-assistant/home-assistant/pull/16664 +[#16665]: https://github.com/home-assistant/home-assistant/pull/16665 +[#16669]: https://github.com/home-assistant/home-assistant/pull/16669 +[#16673]: https://github.com/home-assistant/home-assistant/pull/16673 +[#16674]: https://github.com/home-assistant/home-assistant/pull/16674 +[#16681]: https://github.com/home-assistant/home-assistant/pull/16681 +[#16683]: https://github.com/home-assistant/home-assistant/pull/16683 +[#16688]: https://github.com/home-assistant/home-assistant/pull/16688 +[#16699]: https://github.com/home-assistant/home-assistant/pull/16699 +[#16709]: https://github.com/home-assistant/home-assistant/pull/16709 +[#16710]: https://github.com/home-assistant/home-assistant/pull/16710 +[#16713]: https://github.com/home-assistant/home-assistant/pull/16713 +[#16718]: https://github.com/home-assistant/home-assistant/pull/16718 +[#16721]: https://github.com/home-assistant/home-assistant/pull/16721 +[#16723]: https://github.com/home-assistant/home-assistant/pull/16723 +[#16727]: https://github.com/home-assistant/home-assistant/pull/16727 +[#16729]: https://github.com/home-assistant/home-assistant/pull/16729 +[#16731]: https://github.com/home-assistant/home-assistant/pull/16731 +[#16734]: https://github.com/home-assistant/home-assistant/pull/16734 +[#16736]: https://github.com/home-assistant/home-assistant/pull/16736 +[#16737]: https://github.com/home-assistant/home-assistant/pull/16737 +[#16743]: https://github.com/home-assistant/home-assistant/pull/16743 +[#16744]: https://github.com/home-assistant/home-assistant/pull/16744 +[#16752]: https://github.com/home-assistant/home-assistant/pull/16752 +[#16753]: https://github.com/home-assistant/home-assistant/pull/16753 +[#16757]: https://github.com/home-assistant/home-assistant/pull/16757 +[#16758]: https://github.com/home-assistant/home-assistant/pull/16758 +[#16759]: https://github.com/home-assistant/home-assistant/pull/16759 +[#16760]: https://github.com/home-assistant/home-assistant/pull/16760 +[#16761]: https://github.com/home-assistant/home-assistant/pull/16761 +[#16768]: https://github.com/home-assistant/home-assistant/pull/16768 +[#16769]: https://github.com/home-assistant/home-assistant/pull/16769 +[#16776]: https://github.com/home-assistant/home-assistant/pull/16776 +[#16778]: https://github.com/home-assistant/home-assistant/pull/16778 +[#16779]: https://github.com/home-assistant/home-assistant/pull/16779 +[#16780]: https://github.com/home-assistant/home-assistant/pull/16780 +[#16789]: https://github.com/home-assistant/home-assistant/pull/16789 +[#16795]: https://github.com/home-assistant/home-assistant/pull/16795 +[#16799]: https://github.com/home-assistant/home-assistant/pull/16799 +[#16800]: https://github.com/home-assistant/home-assistant/pull/16800 +[#16803]: https://github.com/home-assistant/home-assistant/pull/16803 +[#16804]: https://github.com/home-assistant/home-assistant/pull/16804 +[#16805]: https://github.com/home-assistant/home-assistant/pull/16805 +[#16806]: https://github.com/home-assistant/home-assistant/pull/16806 +[#16809]: https://github.com/home-assistant/home-assistant/pull/16809 +[#16812]: https://github.com/home-assistant/home-assistant/pull/16812 +[@Adminiuga]: https://github.com/Adminiuga +[@Cereal2nd]: https://github.com/Cereal2nd +[@Danielhiversen]: https://github.com/Danielhiversen +[@Dullage]: https://github.com/Dullage +[@Harvtronix]: https://github.com/Harvtronix +[@Kane610]: https://github.com/Kane610 +[@OverloadUT]: https://github.com/OverloadUT +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@abmantis]: https://github.com/abmantis +[@amelchio]: https://github.com/amelchio +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bieniu]: https://github.com/bieniu +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@christopheBfr]: https://github.com/christopheBfr +[@damarco]: https://github.com/damarco +[@danielperna84]: https://github.com/danielperna84 +[@dshokouhi]: https://github.com/dshokouhi +[@emontnemery]: https://github.com/emontnemery +[@evanjd]: https://github.com/evanjd +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@geekofweek]: https://github.com/geekofweek +[@gerard33]: https://github.com/gerard33 +[@glpatcern]: https://github.com/glpatcern +[@gwww]: https://github.com/gwww +[@heythisisnate]: https://github.com/heythisisnate +[@hobbypunk90]: https://github.com/hobbypunk90 +[@huangyupeng]: https://github.com/huangyupeng +[@isonet]: https://github.com/isonet +[@jeradM]: https://github.com/jeradM +[@kunago]: https://github.com/kunago +[@mbrrg]: https://github.com/mbrrg +[@mrosseel]: https://github.com/mrosseel +[@mvn23]: https://github.com/mvn23 +[@mxworm]: https://github.com/mxworm +[@nikolaykasyanov]: https://github.com/nikolaykasyanov +[@pvizeli]: https://github.com/pvizeli +[@reefab]: https://github.com/reefab +[@robin13]: https://github.com/robin13 +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@scop]: https://github.com/scop +[@sergeymaysak]: https://github.com/sergeymaysak +[@smurfix]: https://github.com/smurfix +[@soldag]: https://github.com/soldag +[@tadly]: https://github.com/tadly +[@thomasloven]: https://github.com/thomasloven +[@tiste]: https://github.com/tiste +[@tsvi]: https://github.com/tsvi +[@vikramgorla]: https://github.com/vikramgorla +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zoe1337]: https://github.com/zoe1337 +[alarm_control_panel.spc docs]: /components/alarm_control_panel.spc/ +[alexa docs]: /components/alexa/ +[apple_tv docs]: /components/apple_tv/ +[asterisk_mbox docs]: /components/asterisk_mbox/ +[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ +[binary_sensor.homematicip_cloud docs]: /components/binary_sensor.homematicip_cloud/ +[binary_sensor.rest docs]: /components/binary_sensor.rest/ +[binary_sensor.spc docs]: /components/binary_sensor.spc/ +[binary_sensor.wirelesstag docs]: /components/binary_sensor.wirelesstag/ +[binary_sensor.workday docs]: /components/binary_sensor.workday/ +[binary_sensor.zha docs]: /components/binary_sensor.zha/ +[bmw_connected_drive docs]: /components/bmw_connected_drive/ +[camera.axis docs]: /components/camera.axis/ +[camera.logi docs]: /components/camera.logi/ +[camera.mjpeg docs]: /components/camera.mjpeg/ +[camera.mqtt docs]: /components/camera.mqtt/ +[camera.zoneminder docs]: /components/camera.zoneminder/ +[climate.econet docs]: /components/climate.econet/ +[climate.opentherm_gw docs]: /components/climate.opentherm_gw/ +[climate.wink docs]: /components/climate.wink/ +[cloud docs]: /components/cloud/ +[config docs]: /components/config/ +[cover docs]: /components/cover/ +[cover.deconz docs]: /components/cover.deconz/ +[cover.isy994 docs]: /components/cover.isy994/ +[cover.myq docs]: /components/cover.myq/ +[cover.tuya docs]: /components/cover.tuya/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[ecovacs docs]: /components/ecovacs/ +[edp_redy docs]: /components/edp_redy/ +[fan.zha docs]: /components/fan.zha/ +[geo_location docs]: /components/geo_location/ +[google_assistant docs]: /components/google_assistant/ +[hangouts docs]: /components/hangouts/ +[hassio docs]: /components/hassio/ +[homekit docs]: /components/homekit/ +[homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[http docs]: /components/http/ +[huawei_lte docs]: /components/huawei_lte/ +[ios docs]: /components/ios/ +[konnected docs]: /components/konnected/ +[light.deconz docs]: /components/light.deconz/ +[light.isy994 docs]: /components/light.isy994/ +[light.rpi_gpio_pwm docs]: /components/light.rpi_gpio_pwm/ +[light.yeelight docs]: /components/light.yeelight/ +[light.zha docs]: /components/light.zha/ +[light.zwave docs]: /components/light.zwave/ +[logi docs]: /components/logi/ +[mailbox docs]: /components/mailbox/ +[mailbox.asterisk_cdr docs]: /components/mailbox.asterisk_cdr/ +[mailbox.asterisk_mbox docs]: /components/mailbox.asterisk_mbox/ +[mailbox.demo docs]: /components/mailbox.demo/ +[media_extractor docs]: /components/media_extractor/ +[media_player.cast docs]: /components/media_player.cast/ +[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ +[media_player.samsungtv docs]: /components/media_player.samsungtv/ +[media_player.sonos docs]: /components/media_player.sonos/ +[media_player.soundtouch docs]: /components/media_player.soundtouch/ +[media_player.webostv docs]: /components/media_player.webostv/ +[mqtt docs]: /components/mqtt/ +[neato docs]: /components/neato/ +[netgear_lte docs]: /components/netgear_lte/ +[notify docs]: /components/notify/ +[openuv docs]: /components/openuv/ +[persistent_notification docs]: /components/persistent_notification/ +[python_script docs]: /components/python_script/ +[rachio docs]: /components/rachio/ +[sensor.airvisual docs]: /components/sensor.airvisual/ +[sensor.deconz docs]: /components/sensor.deconz/ +[sensor.dyson docs]: /components/sensor.dyson/ +[sensor.edp_redy docs]: /components/sensor.edp_redy/ +[sensor.homematicip_cloud docs]: /components/sensor.homematicip_cloud/ +[sensor.huawei_lte docs]: /components/sensor.huawei_lte/ +[sensor.ios docs]: /components/sensor.ios/ +[sensor.jewish_calendar docs]: /components/sensor.jewish_calendar/ +[sensor.linky docs]: /components/sensor.linky/ +[sensor.logi docs]: /components/sensor.logi/ +[sensor.netdata docs]: /components/sensor.netdata/ +[sensor.netgear_lte docs]: /components/sensor.netgear_lte/ +[sensor.qnap docs]: /components/sensor.qnap/ +[sensor.rest docs]: /components/sensor.rest/ +[sensor.rmvtransport docs]: /components/sensor.rmvtransport/ +[sensor.scrape docs]: /components/sensor.scrape/ +[sensor.shodan docs]: /components/sensor.shodan/ +[sensor.starlingbank docs]: /components/sensor.starlingbank/ +[sensor.swiss_public_transport docs]: /components/sensor.swiss_public_transport/ +[sensor.tahoma docs]: /components/sensor.tahoma/ +[sensor.tibber docs]: /components/sensor.tibber/ +[sensor.twitch docs]: /components/sensor.twitch/ +[sensor.velbus docs]: /components/sensor.velbus/ +[sensor.wirelesstag docs]: /components/sensor.wirelesstag/ +[sensor.yr docs]: /components/sensor.yr/ +[sensor.zha docs]: /components/sensor.zha/ +[shiftr docs]: /components/shiftr/ +[sonos docs]: /components/sonos/ +[spc docs]: /components/spc/ +[switch.broadlink docs]: /components/switch.broadlink/ +[switch.deconz docs]: /components/switch.deconz/ +[switch.edp_redy docs]: /components/switch.edp_redy/ +[switch.konnected docs]: /components/switch.konnected/ +[switch.mqtt docs]: /components/switch.mqtt/ +[switch.switchmate docs]: /components/switch.switchmate/ +[switch.wake_on_lan docs]: /components/switch.wake_on_lan/ +[switch.wirelesstag docs]: /components/switch.wirelesstag/ +[switch.zha docs]: /components/switch.zha/ +[tahoma docs]: /components/tahoma/ +[vacuum.ecovacs docs]: /components/vacuum.ecovacs/ +[vacuum.neato docs]: /components/vacuum.neato/ +[velbus docs]: /components/velbus/ +[wake_on_lan docs]: /components/wake_on_lan/ +[websocket_api docs]: /components/websocket_api/ +[wink docs]: /components/wink/ +[wirelesstag docs]: /components/wirelesstag/ +[xiaomi_aqara docs]: /components/xiaomi_aqara/ +[zha docs]: /components/zha/ +[zoneminder docs]: /components/zoneminder/ \ No newline at end of file From 6075c2d7db29f3b983164c688b05ecc9d995e44d Mon Sep 17 00:00:00 2001 From: randellhodges Date: Mon, 24 Sep 2018 13:18:57 -0400 Subject: [PATCH 35/44] Add mode to darksky (#6317) * Added mode to darksky * Minor changes --- source/_components/weather.darksky.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/_components/weather.darksky.markdown b/source/_components/weather.darksky.markdown index 6a3b1ad138f..96ef461a9ed 100644 --- a/source/_components/weather.darksky.markdown +++ b/source/_components/weather.darksky.markdown @@ -58,11 +58,15 @@ name: required: false type: string default: Open Sky +mode: + description: "The forecast type. Can be `hourly` or `daily`." + required: false + type: string + default: hourly {% endconfiguration %}