From 9234ca3d016deaf9662d8c4bcdc8771deec69ca4 Mon Sep 17 00:00:00 2001 From: BioSehnsucht Date: Tue, 19 Sep 2017 03:43:22 -0500 Subject: [PATCH 001/152] * Rename input_slider to input_number * Update input_number to optionally display slider, input box, or both * Update references to input_slider in other parts of the documentation --- source/_components/dweet.markdown | 2 +- ..._slider.markdown => input_number.markdown} | 75 +++++++++++-------- source/_components/shell_command.markdown | 6 +- .../dim_and_brighten_lights.markdown | 16 ++-- source/_docs/ecosystem/appdaemon/api.markdown | 10 +-- source/_docs/scripts.markdown | 4 +- source/demo/frontend.html | 4 +- 7 files changed, 66 insertions(+), 51 deletions(-) rename source/_components/{input_slider.markdown => input_number.markdown} (60%) diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown index 5acb5647dcb..fdfab021d8f 100644 --- a/source/_components/dweet.markdown +++ b/source/_components/dweet.markdown @@ -31,7 +31,7 @@ To use the `dweet` component in your installation, add the following to your `co dweet: name: HAExport whitelist: - - input_slider.brightness + - input_number.brightness - input_boolean.notify_home - sensor.weather_temperature - sensor.cpu diff --git a/source/_components/input_slider.markdown b/source/_components/input_number.markdown similarity index 60% rename from source/_components/input_slider.markdown rename to source/_components/input_number.markdown index c58fbbe6a36..047bac36d9e 100644 --- a/source/_components/input_slider.markdown +++ b/source/_components/input_number.markdown @@ -1,8 +1,8 @@ --- layout: page -title: "Input Slider" -description: "Instructions how to integrate the Input Slider component into Home Assistant." -date: 2016-03-15 06:00 +title: "Input Number" +description: "Instructions how to integrate the Input Number component into Home Assistant." +date: 2017-09-19 03:30 sidebar: true comments: false sharing: true @@ -12,40 +12,55 @@ ha_category: Automation ha_release: 0.16 --- -The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the slider generate state events. These state events can be utilized as `automation` triggers as well. +The `input_number` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, a numeric input box, or both. Changes to the slider and/or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. -To enable this input sliders in your installation, add the following lines to your `configuration.yaml`: +To enable this input number in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry -input_slider: +input_number: slider1: - name: Slider 1 + name: Slider initial: 30 min: -20 max: 35 step: 1 + box1: + name: Numeric Input Box + initial: 30 + min: -20 + max: 35 + step: 1 + mode: box + both1: + name: Slider with Numeric Input Box + initial: 30 + min: -20 + max: 35 + step: 1 + mode: both ``` Configuration variables: -- **[alias]** (*Required*): Alias for the slider input. Multiple entries are allowed. - - **min** (*Required*): Minimum value for the slider. - - **max** (*Required*): Maximum value for the slider. - - **name** (*Optional*): Friendly name of the slider input. +- **[alias]** (*Required*): Alias for the input. Multiple entries are allowed. + - **min** (*Required*): Minimum value. + - **max** (*Required*): Maximum value. + - **name** (*Optional*): Friendly name of the input. - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. - **step** (*Optional*): Step value for the slider. Defaults to 1. + - **mode** (*Optional*): Can specify `both`, `box`, or `slider`. Defaults to `slider`. ## {% linkable_title Automation Examples %} -Here's an example of `input_slider` being used as a trigger in an automation. +Here's an example of `input_number` being used as a trigger in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' as a trigger in an automation +# Example configuration.yaml entry using 'input_number' as a trigger in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -58,7 +73,7 @@ automation: - alias: Bedroom Light - Adjust Brightness trigger: platform: state - entity_id: input_slider.bedroom_brightness + entity_id: input_number.bedroom_brightness action: - service: light.turn_on # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable @@ -68,11 +83,11 @@ automation: {% endraw %} ``` -Another code example using `input_slider`, this time being used in an action in an automation. +Another code example using `input_number`, this time being used in an action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation # Define 'input_select' input_select: @@ -87,8 +102,8 @@ input_select: - 'OFF' initial: 'Select' -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -108,19 +123,19 @@ automation: # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. data_template: entity_id: light.bedroom - brightness: '{{ states.input_slider.bedroom_brightness.state | int }}' + brightness: '{{ states.input_number.bedroom_brightness.state | int }}' {% endraw %} ``` -Example of `input_slider` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. +Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: target_temp: name: Target Heater Temperature Slider min: 1 @@ -136,11 +151,11 @@ input_slider: trigger: platform: mqtt topic: "setTemperature" - # entity_id: input_slider.target_temp + # entity_id: input_number.target_temp action: - service: input_slider.select_value + service: input_number.select_value data_template: - entity_id: input_slider.target_temp + entity_id: input_number.target_temp value: '{{ trigger.payload}}' # This automation script runs when the target temperature slider is moved. @@ -148,12 +163,12 @@ input_slider: - alias: Temp slider moved trigger: platform: state - entity_id: input_slider.target_temp + entity_id: input_number.target_temp action: service: mqtt.publish data_template: topic: "setTemperature" retain: true - payload: '{{ states.input_slider.target_temp.state | int }}' + payload: '{{ states.input_number.target_temp.state | int }}' {% endraw %} ``` diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index c7c55e557de..2a50140747c 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -39,11 +39,11 @@ automation: - alias: run_set_ac trigger: platform: state - entity_id: input_slider.ac_temperature + entity_id: input_number.ac_temperature action: service: shell_command.set_ac_to_slider -input_slider: +input_number: ac_temperature: name: A/C Setting initial: 24 @@ -53,6 +53,6 @@ input_slider: {% raw %} shell_command: - set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_slider.ac_temperature.state }}_AUTO' + set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_number.ac_temperature.state }}_AUTO' {% endraw %} ``` diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown index ee3f24ff80c..21fc4f02699 100644 --- a/source/_cookbook/dim_and_brighten_lights.markdown +++ b/source/_cookbook/dim_and_brighten_lights.markdown @@ -78,10 +78,10 @@ automation: There are 2 variables that control the speed of the change for the scripts below. The first is the `step`, small steps create a smooth transition. The second is the delay, larger delays will create a slower transition. -To allow flexibility, an [Input Slider](/components/input_slider/) is used for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). Two additional [Input Sliders](/components/input_slider/) are used to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). +To allow flexibility, an [Input Number](/components/input_number/) is used for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). Two additional [Input Numbers](/components/input_number/) are used to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). ```yaml -input_slider: +input_number: light_step: name: 'Step the lights this much' initial: 20 @@ -116,10 +116,10 @@ script: entity_id: light.YOUR_LIGHT brightness: >- {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} - {% set step = states('input_slider.light_step')|int %} + {% set step = states('input_number.light_step')|int %} {% set next = current + step %} - {% if next > states('input_slider.light_maximum')|int %} - {% set next = states('input_slider.light_maximum')|int %} + {% if next > states('input_number.light_maximum')|int %} + {% set next = states('input_number.light_maximum')|int %} {% endif %} {{ next }}{% endraw %} @@ -142,10 +142,10 @@ script: entity_id: light.YOUR_LIGHT brightness: >- {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} - {% set step = states('input_slider.light_step')|int %} + {% set step = states('input_number.light_step')|int %} {% set next = current - step %} - {% if next < states('input_slider.light_minimum')|int %} - {% set next = states('input_slider.light_minimum')|int %} + {% if next < states('input_number.light_minimum')|int %} + {% set next = states('input_number.light_minimum')|int %} {% endif %} {{ next }}{% endraw %} diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index 5ebe762f1be..65d5375f111 100755 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -1257,7 +1257,7 @@ self.toggle("light.office_1", color_name = "green") ### {% linkable_title select_value() %} -This is a convenience function for the `input_slider.select_value` function. It is able to set the value of an input_slider in Home Assistant. +This is a convenience function for the `input_number.select_value` function. It is able to set the value of an input_number in Home Assistant. #### {% linkable_title Synopsis %} @@ -1273,16 +1273,16 @@ None ##### {% linkable_title entity_id %} -Fully qualified entity_id of the input_slider to be changed, e.g. `input_slider.alarm_hour`. +Fully qualified entity_id of the input_number to be changed, e.g. `input_number.alarm_hour`. ##### {% linkable_title value %} -The new value to set the input slider to. +The new value to set the input number to. #### {% linkable_title Examples %} ```python -self.select_value("input_slider.alarm_hour", 6) +self.select_value("input_number.alarm_hour", 6) ``` ### {% linkable_title select_option() %} @@ -1307,7 +1307,7 @@ Fully qualified entity_id of the input_select to be changed, e.g. `input_select. ##### {% linkable_title value %} -The new value to set the input slider to. +The new value to set the input number to. #### {% linkable_title Examples %} diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 2a6abdd8d5c..3f7106a35a5 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -71,9 +71,9 @@ delay: ``` ```yaml -# Waits however many minutes input_slider.minute_delay is set to +# Waits however many minutes input_number.minute_delay is set to # Valid formats include HH:MM and HH:MM:SS -delay: {% raw %}'00:{{ states.input_slider.minute_delay.state | int }}:00'{% endraw %} +delay: {% raw %}'00:{{ states.input_number.minute_delay.state | int }}:00'{% endraw %} ``` ### {% linkable_title Wait %} diff --git a/source/demo/frontend.html b/source/demo/frontend.html index ca813ce680a..0cb5b148868 100644 --- a/source/demo/frontend.html +++ b/source/demo/frontend.html @@ -1,5 +1,5 @@ \ No newline at end of file +t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e=0;t--){var n=this._instances[t];n.isPlaceholder&&t=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i=0;i--){var h=a[i];void 0!==h&&this._detachAndRemoveInstance(h)}var c=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return c._filterFn(r.getItem(e))})),l.sort(function(e,t){return c._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e From ea3a536de4b257141d0654e0451cc91b3e870aee Mon Sep 17 00:00:00 2001 From: BioSehnsucht Date: Wed, 27 Sep 2017 00:04:04 -0500 Subject: [PATCH 002/152] input_number support either input box or slider mode, but not both --- source/_components/input_number.markdown | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 047bac36d9e..d004c107980 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -12,7 +12,7 @@ ha_category: Automation ha_release: 0.16 --- -The `input_number` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, a numeric input box, or both. Changes to the slider and/or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. +The `input_number` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. To enable this input number in your installation, add the following lines to your `configuration.yaml`: @@ -32,13 +32,6 @@ input_number: max: 35 step: 1 mode: box - both1: - name: Slider with Numeric Input Box - initial: 30 - min: -20 - max: 35 - step: 1 - mode: both ``` Configuration variables: @@ -49,7 +42,7 @@ Configuration variables: - **name** (*Optional*): Friendly name of the input. - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. - **step** (*Optional*): Step value for the slider. Defaults to 1. - - **mode** (*Optional*): Can specify `both`, `box`, or `slider`. Defaults to `slider`. + - **mode** (*Optional*): Can specify `box`, or `slider`. Defaults to `slider`. ## {% linkable_title Automation Examples %} From 461ce5df75035b733c381eae40d0cf11323caf62 Mon Sep 17 00:00:00 2001 From: BioSehnsucht Date: Mon, 2 Oct 2017 02:49:26 -0500 Subject: [PATCH 003/152] input_number : change service from select_value to set_value --- source/_components/input_number.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index d004c107980..eba24e1383a 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -146,7 +146,7 @@ input_number: topic: "setTemperature" # entity_id: input_number.target_temp action: - service: input_number.select_value + service: input_number.set_value data_template: entity_id: input_number.target_temp value: '{{ trigger.payload}}' From d59688811b99cf980352cc5a218d783a1836ec7a Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 6 Oct 2017 08:15:11 +0200 Subject: [PATCH 004/152] Feature/yaml doc (#3534) * Add text on similarities between yaml and dicts - Linewrapped the respective text to a with of 80 chars as well * Adds reference to dicts/Hashtables when expl. YAML - A comparison between dictionary/hastables and YAML is drawn - Linewraps the paragraph to 80 characters * Adds reference to python, indentation is mentioned * Minor changes --- source/_docs/configuration/yaml.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 07c0a8b1176..64c400dda02 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -23,17 +23,17 @@ notify: name: pushbullet ``` -- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). +- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). - A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). -The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. +The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. This is somewhat similar to a Hashtable or more specifically a dictionary in Python. These can be nested as well. -Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. +Note that indentation (just like in Python) is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use [YAMLLint](http://www.yamllint.com/) to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time. +You can use [YAMLLint](http://www.yamllint.com/) to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time. *Please pay attention on not putting in private data, as it is a 3rd-party website not maintained by Home Assistant.* -Text following a **#** are comments and are ignored by the system. +Text following a `#` are comments and are ignored by the system. The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. The other properties (like name) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. @@ -51,7 +51,7 @@ input_select: initial: 0 ``` -The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). +The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). ```yaml sensor: From d00955a3dc78e11df9e7053febea2649393350e4 Mon Sep 17 00:00:00 2001 From: Jeroen ter Heerdt Date: Fri, 6 Oct 2017 08:18:29 +0200 Subject: [PATCH 005/152] Updating alarm_control_panel.egardia.markdown (#3522) Adding extra explanation of the fact that each user and remote generates separate codes that need to be captured. --- source/_components/alarm_control_panel.egardia.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown index af2738bc9f0..c2fea17adb1 100644 --- a/source/_components/alarm_control_panel.egardia.markdown +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -43,7 +43,7 @@ You can change this, however, using the following procedure. This is a more adva 1. Log in into your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. 2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. Also, update the port number 85 or to anything you like. The provided software that you will set up in the next steps runs on port 85 by default. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. -3. On your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. You will need the codes to include in your configuration.yaml. Make sure to change the status of your alarm to all states (disarm, arm, armhome) as well as trigger the alarm in all ways possible to get 100% coverage. **Before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** +3. On your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. You will need the codes to include in your configuration.yaml. Make sure to change the status of your alarm to all states (disarm, arm, armhome) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage. **Before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** 4. Once you have the codes, update your `configuration.yaml`: ```yaml # Example configuration.yaml entry From c646730ecfde63b942e07205d3c8eb4ec9751ed2 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Fri, 6 Oct 2017 11:13:03 +0200 Subject: [PATCH 006/152] Added path-setting and Intertechno information (#3531) * Added path-setting and Intertechno information * Minor change --- source/_components/homematic.markdown | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 823dd35aa36..93cf903eb44 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -14,9 +14,10 @@ featured: false --- -The [Homematic](http://www.homematic.com/) component provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. +The [Homematic](http://www.homematic.com/) component provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. +If you are using Homegear with paired [Intertechno](http://intertechno.at/) devices, uni-directional communication is possible as well. -Device support is available for most of the wired and wireless devices, as well as a few IP devices. If you have a setup with mixed protocols, you have to configure additional hosts with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. +Device support is available for most of the wired and wireless devices, as well as a few IP devices. If you have a setup with mixed protocols, you have to configure additional hosts with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 **and** require you to set the `path` setting to `/groups`. If you want to see if a specific device you have is supported, head over to the [pyhomematic](https://github.com/danielperna84/pyhomematic/tree/master/pyhomematic/devicetypes) repository and browse through the source code. A dictionary with the device identifiers (e.g. HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute. @@ -41,7 +42,7 @@ Configuration variables (global): Configuration variables (host): - **ip** (*Required*): IP address of CCU/Homegear device. -- **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Default is 2001, use 2000 for wired and 2010 for IP. +- **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292. - **callback_ip** (*Optional*): Set this, if Home Assistant is reachable under a different IP from the CCU (NAT, Docker etc.). - **callback_port** (*Optional*): Set this, if Home Assistant is reachable under a different port from the CCU (NAT, Docker etc.). - **resolvenames** (*Optional*): [`metadata`, `json`, `xml`] Try to fetch device names. Defaults to `false` if not specified. @@ -49,6 +50,7 @@ Configuration variables (host): - **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. - **primary** (*Optional*): Set to `true` when using multiple hosts and this host should provide the services and variables. - **variables** (*Optional*): Set to `true` if you want to use CCU2/Homegear variables. Should only be enabled for the primary host. When using a CCU credentials are required. +- **path** (*Optional*): Set to `/groups` when using port 9292. #### Example configuration with multiple protocols and some other options set: @@ -71,6 +73,13 @@ homematic: ip: ip: 127.0.0.1 port: 2010 + groups: + ip: 127.0.0.1 + port: 9292 + resolvenames: json + username: Admin + password: secret + path: /groups ``` ### {% linkable_title The `resolvenames` option %} From 34dad93119171e18dbd21a08b3394a2a829bb7b9 Mon Sep 17 00:00:00 2001 From: Mister Wil <1091741+MisterWil@users.noreply.github.com> Date: Sat, 7 Oct 2017 00:38:47 -0700 Subject: [PATCH 007/152] Added Abode sensor documentation. (#3532) * Added Abode sensor documentation. * Changing release version from 0.55 to 0.56 * It's a sensor and not a panel --- source/_components/abode.markdown | 1 + source/_components/sensor.abode.markdown | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 source/_components/sensor.abode.markdown diff --git a/source/_components/abode.markdown b/source/_components/abode.markdown index 2d3df195cff..3314bcc9038 100644 --- a/source/_components/abode.markdown +++ b/source/_components/abode.markdown @@ -26,6 +26,7 @@ There is currently support for the following device types within Home Assistant: - [Lock](/components/cover.abode/): Reports on `Door Locks` and can be used to lock and unlock the door. - [Light](/components/light.abode/): Reports on `Dimmer` lights and can be used to dim, change color, or turn the light on and off. - [Switch](/components/switch.abode/): Reports on `Power Switch` devices and can be used to turn the power switch on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them. +- [Sensor](/components/sensor.abode/): Reports on `Temperature`, `Humidity`, and `Light` sensors. ## {% linkable_title Configuration %} diff --git a/source/_components/sensor.abode.markdown b/source/_components/sensor.abode.markdown new file mode 100644 index 00000000000..b886d385ab7 --- /dev/null +++ b/source/_components/sensor.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Sensor" +description: "Instructions how to integrate Abode sensors into Home Assistant." +date: 2017-10-05 14:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.56 +ha_category: Sensor +ha_iot_class: "Cloud Push" +--- + +The `abode` sensor platform allows you to monitor your [Abode](https://goabode.com/) sensors. + +This platform supports Abode `Temperature`, `Humidity`, and `Light` sensors. + +The requirement is that you have setup your [Abode hub](/components/abode/). From 429918439026ae78e153f978c90016e4d08a2ac9 Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Sat, 7 Oct 2017 05:05:00 -0400 Subject: [PATCH 008/152] Added documentation to TravisCI platform (#3519) * Added documentation to TravisCI platform * Added repository_names option * Simplified variables names * Update 'ha_release' --- source/_components/sensor.travisci.markdown | 39 +++ source/images/supported_brands/travisci.svg | 309 ++++++++++++++++++++ 2 files changed, 348 insertions(+) create mode 100644 source/_components/sensor.travisci.markdown create mode 100644 source/images/supported_brands/travisci.svg diff --git a/source/_components/sensor.travisci.markdown b/source/_components/sensor.travisci.markdown new file mode 100644 index 00000000000..5609c614a57 --- /dev/null +++ b/source/_components/sensor.travisci.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Travis-CI Sensor" +description: "Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: travisci.svg +ha_category: Sensor +ha_release: "0.56" +ha_iot_class: "Cloud Polling" +--- + +With this sensor platform, you will be able to integrate the test build results reported by [Travis-CI](https://travis-ci.org/) working within Home Assistant. + +To enable this platform, please add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: travisci + github_token: 123456789 +``` + +Configuration variables: + +- **api_key** (*Required*): GitHub [access token](https://github.com/settings/applications) with the following scopes: *read:org*, *user:email*, *repo_deployment*, *repo:status*, *write:repo_hook*. +- **branch** (*Optional*): Determine which default branch should be used by the **state** condition. Defaults to *master*. +- **scan_interval** (*Optional*): How frequently to query for new data. Defaults to 30 seconds. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **last_build_id**: Turn the last build job ID. + - **last_build_duration**: Return the time elapsed in seconds to run the last test job. + - **last_build_finished_at**: Return the timestamp of when the last test job finished. + - **last_build_started_at**: Return the timestamp of when the last test job started. + - **last_build_state**: Return the state from the latest test job/PR. The conditions can be: 'passed', 'failed' or 'started'. + - **state**: Return the build test from the branch specified at by **branch** parameter. +- **repository:** array (*Optional*): Name from the GitHub repositories to be monitored. If not specified, all GitHub repositories linked to Travis-CI will be enabled by default. diff --git a/source/images/supported_brands/travisci.svg b/source/images/supported_brands/travisci.svg new file mode 100644 index 00000000000..338571a7c43 --- /dev/null +++ b/source/images/supported_brands/travisci.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 43e46a9f668ed7d986bdb54b3f6a24d881fe2ae7 Mon Sep 17 00:00:00 2001 From: Vignesh Venkat Date: Sat, 7 Oct 2017 03:28:10 -0700 Subject: [PATCH 009/152] arlo: Documentation for alarm control panel (#3535) * arlo: Documentation for alarm control panel Arlo base station exposed as an alarm control panel component in HA. * Set version to 0.56 --- .../alarm_control_panel.arlo.markdown | 31 +++++++++++++++++++ source/_components/arlo.markdown | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 source/_components/alarm_control_panel.arlo.markdown diff --git a/source/_components/alarm_control_panel.arlo.markdown b/source/_components/alarm_control_panel.arlo.markdown new file mode 100644 index 00000000000..c58bb46d992 --- /dev/null +++ b/source/_components/alarm_control_panel.arlo.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Arlo Control Panel" +description: "Instructions how to setup the Netgear Arlo Base Stations as a control panel within Home Assistant." +date: 2017-10-05 17:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: arlo.png +ha_category: Alarm +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + + +The `arlo` control panel platform allows you to control your [Arlo](https://arlo.netgear.com/) base stations. + +To get your [Arlo](https://arlo.netgear.com/) base stations working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). + +Once you have enabled the [Arlo component](/components/arlo), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: arlo +``` + +Configuration variables: + +- **home_mode_name**: (*Optional*): Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app. diff --git a/source/_components/arlo.markdown b/source/_components/arlo.markdown index 51c6b32693e..479a7713293 100644 --- a/source/_components/arlo.markdown +++ b/source/_components/arlo.markdown @@ -31,7 +31,7 @@ Configuration variables: It is recommended to create a dedicated user on Arlo website to be used within Home Assistant and then share your Arlo cameras. -Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/). +Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/) or [Arlo control panel page](/components/alarm_control_panel.arlo/). The Arlo component also provides a service to enable/disable the motion detection sensor. The example below enables the motion detection every time the Home Assistant service starts. From a69e4f0e4090200f40a372615931ab2455709639 Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 7 Oct 2017 13:12:04 +0200 Subject: [PATCH 010/152] Extend risks in using YAMLLint and alternative (#3543) * Extends reasoning on YAMLLint * Removes obsolete whitespace * Fix whitespace * Adds reference to inclusion of env-vars in YAML * Add links --- source/_docs/configuration/yaml.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 64c400dda02..94d1cef2ae6 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -30,8 +30,8 @@ The basics of YAML syntax are block collections and mappings containing key-valu Note that indentation (just like in Python) is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use [YAMLLint](http://www.yamllint.com/) to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time. -*Please pay attention on not putting in private data, as it is a 3rd-party website not maintained by Home Assistant.* +You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. *Please pay attention on not storing private data (passwords, api-keys, etc.) directly in that file.* +Private data can be stored in a [seperate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. Text following a `#` are comments and are ignored by the system. From 2663d6c0faf22becf794f943fbd9966769201817 Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 7 Oct 2017 16:00:48 +0200 Subject: [PATCH 011/152] Add info box (#3546) * Add text on similarities between yaml and dicts - Linewrapped the respective text to a with of 80 chars as well * Adds reference to dicts/Hashtables when expl. YAML - A comparison between dictionary/hastables and YAML is drawn - Linewraps the paragraph to 80 characters * Adds reference to python, indentation is mentioned * Extends reasoning on YAMLLint * Removes obsolete whitespace * Fix whitespace * Adds reference to inclusion of env-vars in YAML * Add links * Include note into the yaml explanation - The YAMLLint stuff is a little off-topic, when raising the security concerns. It should hence go into an info box. * Minor changes --- source/_docs/configuration/yaml.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 94d1cef2ae6..e6d58184f4d 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -30,8 +30,11 @@ The basics of YAML syntax are block collections and mappings containing key-valu Note that indentation (just like in Python) is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. *Please pay attention on not storing private data (passwords, api-keys, etc.) directly in that file.* -Private data can be stored in a [seperate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. +You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a thrid-party service and is not maintained by the Home Assistant community. + +

+Please pay attention on not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in a [seperate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. +

Text following a `#` are comments and are ignored by the system. From bf9afa45a5b6eea2055f1f77c1e79c43e8ef2005 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Oct 2017 16:41:48 +0200 Subject: [PATCH 012/152] Revert "Add info box (#3546)" (#3547) This reverts commit 2663d6c0faf22becf794f943fbd9966769201817. --- source/_docs/configuration/yaml.markdown | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index e6d58184f4d..94d1cef2ae6 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -30,11 +30,8 @@ The basics of YAML syntax are block collections and mappings containing key-valu Note that indentation (just like in Python) is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a thrid-party service and is not maintained by the Home Assistant community. - -

-Please pay attention on not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in a [seperate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. -

+You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. *Please pay attention on not storing private data (passwords, api-keys, etc.) directly in that file.* +Private data can be stored in a [seperate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. Text following a `#` are comments and are ignored by the system. From f59859881d0024d78b34f291ea7933e3da0f6a7e Mon Sep 17 00:00:00 2001 From: Lukas Barth Date: Sat, 7 Oct 2017 19:33:47 +0200 Subject: [PATCH 013/152] Input datetime (#3390) * First documentation * Add documentation for input_datetime --- source/_components/input_datetime.markdown | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 source/_components/input_datetime.markdown diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown new file mode 100644 index 00000000000..528c3c846c3 --- /dev/null +++ b/source/_components/input_datetime.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "Input Datetime" +description: "Instructions how to integrate the Input Datetime component into Home Assistant." +date: 2017-09-14 16:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: TODO +--- + +The `input_datetime` component allows the user to define date and time values that can be controlled via the frontend and can be used within automations and templates. + +To add three datetime inputs to your installation, one with both date and time, and one with date or time each, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +input_datetime: + both_date_and_time: + name: Input with both date and time + has_date: true + has_time: true + only_date: + name: Input with only date + has_date: true + has_time: false + only_time: + name: Input with only time + has_date: false + has_time: true +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the datetime input. Multiple entries are allowed. + - **name** (*Optional*): Friendly name of the datetime input. + - **has_time** (*Optional*): Set to `true` if this input should have time. Defaults to `false`. + - **has_date** (*Optional*): Set to `true` if this input should have a date. Defaults to `false`. + - **initial** (*Optional*): Set the initial value of this input. Defaults to '1970-01-01 00:00'. + +A datetime input entity's state exports several attributes that can be useful in automations and templates: + +- **has_time**: `true` if this entity has time. +- **has_date**: `true` if this entity has a date. +- **year**, **month**, **day** (Only available if *has_date* is true): The year, month and day of the date. +- **hour**, **minute**, **second** (Only available if *has_time* is true): The hour, minute and second of the time. +- **timestamp**: A timestamp representing the time held in the input. If *has_date* is true, this is the UNIX timestamp of the date / time held by the input. Otherwise (i.e., if only *has_time* is true) the number of seconds since midnight representing the time held by the input. From cdb17accb56b9e8d10c23e8f6f8dfcd16983b84d Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Sat, 7 Oct 2017 16:13:50 -0400 Subject: [PATCH 014/152] Update automatic docs with example vehicle ID (#3548) --- source/_components/device_tracker.automatic.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/device_tracker.automatic.markdown index 630bec936c4..dff0b45fec9 100644 --- a/source/_components/device_tracker.automatic.markdown +++ b/source/_components/device_tracker.automatic.markdown @@ -51,6 +51,8 @@ automation: event_type: automatic_update event_data: type: "ignition:on" + vehicle: + id: "C_1234567890abcdefc" action: - service: light.turn_off ``` From 1e1496bc623521e2a38fdc402faad725103530ba Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Oct 2017 22:21:18 +0200 Subject: [PATCH 015/152] Add ClickSend TTS notify --- .../notify.clicksendaudio.markdown | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 source/_components/notify.clicksendaudio.markdown diff --git a/source/_components/notify.clicksendaudio.markdown b/source/_components/notify.clicksendaudio.markdown new file mode 100644 index 00000000000..66c4a1274ea --- /dev/null +++ b/source/_components/notify.clicksendaudio.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "ClickSend" +description: "Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant." +date: 2017-10-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: clicksend.png +ha_category: Notifications +ha_release: 0.55 +--- + + +The `clicksendaudio` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. + +Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`. + +To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +notify: + - platform: clicksend + name: ClickSend + username: CLICKSEND_USERNAME + api_key: CLICKSEND_API_KEY + recipient: PHONE_NO +``` + +Configuration variables: + +* **name** (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is `ClickSend`. The notifier will bind to the service notify.NOTIFIER_NAME. +* **username** (Required): Your username. +* **api_key** (Required): Your API Key. +* **recipient** (Required): Your phone no. This is where you want to send your notification SMS messages. eg: `09171234567` +* **language** (Optional): The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](http://docs.clicksend.apiary.io/#reference/voice/voice-languages). Default value is 'en-us'. +* **voice** (Optional): The voice that needs to be used to play the message to the recipient. Allowed values are 'female' or 'male'. Default value is 'female'. + +To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). + From 1d04a73327f96eb578c67898a836ebc66cf5600a Mon Sep 17 00:00:00 2001 From: ChristianKuehnel Date: Sun, 8 Oct 2017 23:46:59 +0200 Subject: [PATCH 016/152] Initializing statistics sensor with data from database (#3559) * added documentation for https://github.com/home-assistant/home-assistant/pull/9753 * Fix typo --- source/_components/sensor.statistics.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.statistics.markdown b/source/_components/sensor.statistics.markdown index 45718a93d0e..d37adc192fa 100644 --- a/source/_components/sensor.statistics.markdown +++ b/source/_components/sensor.statistics.markdown @@ -16,11 +16,15 @@ ha_release: "0.30" The `statistics` sensor platform is consuming the state from other sensors. Beside the maximal and the minimal value also the total, the mean, the median, the variance, and the standard deviation are as attributes available. If it's a binary sensor then only the state changes are counted. -It can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation. +If you are running the [recorder](/components/recorder/) component, on startup the data is read from the database. So after a restart of the platform, you will immediately have data available. If you're using the [history](/components/history/) component, this will automatically also start the recoder component on startup. +If you are *not* running the `recorder` component, it can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation. To enable the statistics sensor, add the following lines to your `configuration.yaml`: ```yaml +# enable the recorder component (optional) +recorder: + # Example configuration.yaml entry sensor: - platform: statistics From 4574c08a8b36a333eec47e6d4b7f47c2d99c1d74 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Mon, 9 Oct 2017 07:11:45 +0200 Subject: [PATCH 017/152] Documentation of Xiaomi Smart WiFi Socket and Power Strip component (#3248) * Documentation for Xiaomi Smart WiFi Socket and Smart Power Strip component added. * Section "Retrieving the Access Token" has a central place now. * Spelling & grammar fixed. * Broken link fixed. HA version updated. * Component renamed: switch.xiaomi_plug -> switch.xiaomi_miio. * Update switch.xiaomi_miio.markdown --- .../_components/switch.xiaomi_miio.markdown | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 source/_components/switch.xiaomi_miio.markdown diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown new file mode 100644 index 00000000000..e4375733237 --- /dev/null +++ b/source/_components/switch.xiaomi_miio.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Xiaomi Smart WiFi Socket and Smart Power Strip" +description: "Instructions how to integrate your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip within Home Assistant." +date: 2017-08-26 10:18 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Switch +ha_version: 0.56 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip. + +Currently, the supported features are `on`, `off`. If the device provides the current load, it will be reported. + +Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. + +To add a plug to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entries +switch: + - platform: xiaomi_miio + name: Original Xiaomi Mi Smart WiFi Socket + host: 192.168.130.59 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your plug. +- **token** (*Required*): The API token of your plug. +- **name** (*Optional*): The name of your plug. From dea9e22fde3ba58a25dd28f46f5ec488690d0bf4 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Mon, 9 Oct 2017 11:58:09 -0400 Subject: [PATCH 018/152] Updated for Wink Dome siren/chime support (#3571) --- source/_components/switch.wink.markdown | 145 ++++++++++++++++++++++++ 1 file changed, 145 insertions(+) diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index 41771736f63..a562bb617f3 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -27,5 +27,150 @@ The requirement is that you have setup [Wink](/components/wink/). - Rachio sprinkler controller (No Wink hub required) - iHome smart plug (No Wink hub required) - Wink switch groups (User created groups of switches) +- GoControl siren and strobe +- Dome siren and chime +### {% linkable_title Service `wink_set_siren_auto_shutoff` %} + +You can use the service wink/wink_set_siren_auto_shutoff to set how long the siren will sound before shuting off. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. + +Example: + +```yaml +script: + set_all_sirens_to_one_minute_auto_shutoff: + sequence: + - service: wink.wink_set_siren_auto_shutoff + data: + auto_shutoff: 60 +``` + +

+The following services only work with the Dome siren/chime. +

+ +### {% linkable_title Service `wink_set_chime_volume` %} + +You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `volume` | no | String. One of ["low", "medium", "high"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_chime_volume_to_low_for_all_chimes + sequence: + - service: wink.wink_set_chime_volume + data: + volume: "low" +``` + +### {% linkable_title Service `wink_set_siren_volume` %} + +You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `volume` | no | String. One of ["low", "medium", "high"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_siren_volume_to_low_for_all_sirens + sequence: + - service: wink.wink_set_siren_volume + data: + volume: "low" +``` + +### {% linkable_title Service `wink_enable_chime` %} + +You can use the service wink/wink_enable_chime to set the tone and enable the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + execute_doorbell + sequence: + - service: wink.wink_enable_chime + data: + tone: "doorbell" +``` + +### {% linkable_title Service `wink_set_siren_tone` %} + +You can use the service wink/wink_set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_siren_to_alert: + sequence: + - service: wink.wink_set_siren_tone + data: + tone: "alert" +``` + +### {% linkable_title Service `wink_set_siren_strobe_enabled` %} + +You can use the service wink/wink_set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + disable_siren_strobe: + sequence: + - service: wink.wink_set_siren_strobe_enabled + data: + enabled: False +``` + +### {% linkable_title Service `wink_set_chime_strobe_enabled` %} + +You can use the service wink/wink_set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. + +Example: + +```yaml +script: + disable_chime_strobe: + sequence: + - service: wink.wink_set_chime_strobe_enabled + data: + enabled: False +``` \ No newline at end of file From f1b1ac83d9d4b9a191de338d0c709f50fe751f65 Mon Sep 17 00:00:00 2001 From: Mister Wil <1091741+MisterWil@users.noreply.github.com> Date: Mon, 9 Oct 2017 10:45:55 -0700 Subject: [PATCH 019/152] Added documentation for Skybell (#3511) * Added documentation for Skybell * Changed release version from 0.55 to 0.56 * All the blank lines * Stray tab --- .../binary_sensor.skybell.markdown | 33 +++++++++++++++++ source/_components/camera.skybell.markdown | 24 +++++++++++++ source/_components/light.skybell.markdown | 24 +++++++++++++ source/_components/sensor.skybell.markdown | 31 ++++++++++++++++ source/_components/skybell.markdown | 34 ++++++++++++++++++ source/_components/switch.skybell.markdown | 33 +++++++++++++++++ source/images/supported_brands/skybell.png | Bin 0 -> 22245 bytes 7 files changed, 179 insertions(+) create mode 100644 source/_components/binary_sensor.skybell.markdown create mode 100644 source/_components/camera.skybell.markdown create mode 100644 source/_components/light.skybell.markdown create mode 100644 source/_components/sensor.skybell.markdown create mode 100644 source/_components/skybell.markdown create mode 100644 source/_components/switch.skybell.markdown create mode 100644 source/images/supported_brands/skybell.png diff --git a/source/_components/binary_sensor.skybell.markdown b/source/_components/binary_sensor.skybell.markdown new file mode 100644 index 00000000000..d16766f316d --- /dev/null +++ b/source/_components/binary_sensor.skybell.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Skybell Binary Sensor" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Binary Sensor +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: skybell + monitored_conditions: + - button + - motion +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **button**: Return a boolean value when the doorbell button was pressed. + - **motion**: Return a boolean value when movement was detected by the Skybell doorbell. diff --git a/source/_components/camera.skybell.markdown b/source/_components/camera.skybell.markdown new file mode 100644 index 00000000000..a3ddb379119 --- /dev/null +++ b/source/_components/camera.skybell.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Skybell Camera" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Camera +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) cameras working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: skybell +``` diff --git a/source/_components/light.skybell.markdown b/source/_components/light.skybell.markdown new file mode 100644 index 00000000000..15723eaf076 --- /dev/null +++ b/source/_components/light.skybell.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Skybell Light" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Light +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) LED light working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: skybell +``` diff --git a/source/_components/sensor.skybell.markdown b/source/_components/sensor.skybell.markdown new file mode 100644 index 00000000000..4c9f3b5434c --- /dev/null +++ b/source/_components/sensor.skybell.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Skybell Sensor" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Sensor +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) sensors working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: skybell + monitored_conditions: + - chime_level +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **chime_level**: Return a value between 0-3, indicating no chime, low, medium, and high respectively. diff --git a/source/_components/skybell.markdown b/source/_components/skybell.markdown new file mode 100644 index 00000000000..b160a879231 --- /dev/null +++ b/source/_components/skybell.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Skybell" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Hub +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +The `skybell` implementation allows you to integrate your [Skybell.com](https://skybell.com) doorbells in Home Assistant. + +Currently only the Skybell HD is supported by this platform. + +To enable devices set up with your [Skybell.com](https://skybell.com/) account, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +skybell: + username: you@example.com + password: secret +``` + +Configuration variables: + +- **username** (*Required*): The username for accessing your Skybell account. +- **password** (*Required*): The password for accessing your Skybell account. + +Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation. diff --git a/source/_components/switch.skybell.markdown b/source/_components/switch.skybell.markdown new file mode 100644 index 00000000000..511aa39c1aa --- /dev/null +++ b/source/_components/switch.skybell.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Skybell Switch" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Switch +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) switches working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: skybell + monitored_conditions: + - do_not_disturb + - motion_sensor +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **do_not_disturb**: Control the state of your doorbells indoor chime. + - **motion_sensor**: Control the state of your doorbells motion sensor. diff --git a/source/images/supported_brands/skybell.png b/source/images/supported_brands/skybell.png new file mode 100644 index 0000000000000000000000000000000000000000..98ee75fbc66f544f22eac0d498b6eb17f86ab6ae GIT binary patch literal 22245 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 OCiCky*J@4RiT?w4n2iVk literal 0 HcmV?d00001 From f597f65f0e9b954529f9bd0d00eeb8dff8e3e699 Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 9 Oct 2017 23:12:31 +0200 Subject: [PATCH 020/152] Rflink cover component (#3145) * Markdown for rflink cover * . * Rewritten some parts based on the feedback from Landrash * Rewritten some parts based on the feedback from Landrash ( now saved the file :) ) * Update cover.rflink.markdown * bump version release * Fixed comments from frenck minor spelling & grammar issues * version bump * Update cover.rflink.markdown * version bump didn't made it in 0.54 --- source/_components/cover.rflink.markdown | 99 ++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 source/_components/cover.rflink.markdown diff --git a/source/_components/cover.rflink.markdown b/source/_components/cover.rflink.markdown new file mode 100644 index 00000000000..d7dfab6e5bc --- /dev/null +++ b/source/_components/cover.rflink.markdown @@ -0,0 +1,99 @@ +--- +layout: page +title: "RFLink Cover" +description: "Instructions how to integrate RFLink Somfy RTS Cover into Home Assistant." +date: 2017-08-08 +sidebar: true +comments: false +sharing: true +footer: true +logo: rflink.png +ha_category: Cover +ha_release: 0.55 +--- + +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). + +First, you have to set up your [rflink hub](/components/rflink/). +After configuring the RFLink hub covers will be automatically discovered and added. Except the Somfy RTS devices. + +### {% setting up a Somfy RTS device%} + +You have to add the Somfy RTS manually with the supplied RFlinkLoader (Windows Only) + +Press the Learn button on the original Somfy remote +enter the following code within 3 seconds. Your blinds will go up and down shortly + +```` +10;RTS;02FFFF;0412;3;PAIR; +```` + +Your blinds will go up and down again. This means your Rflink is now paired with your RTS motor. +To check this enter the following code again and see if there is a record. + +```` +10;RTSSHOW; +```` +```` +RTS Record: 0 Address: FFFFFF RC: FFFF +RTS Record: 1 Address: FFFFFF RC: FFFF +RTS Record: 2 Address: FFFFFF RC: FFFF +RTS Record: 3 Address: 02FFFF RC: 0018 +RTS Record: 4 Address: FFFFFF RC: FFFF +RTS Record: 5 Address: FFFFFF RC: FFFF +RTS Record: 6 Address: FFFFFF RC: FFFF +RTS Record: 7 Address: FFFFFF RC: FFFF +RTS Record: 8 Address: FFFFFF RC: FFFF +RTS Record: 9 Address: FFFFFF RC: FFFF +RTS Record: 10 Address: FFFFFF RC: FFFF +RTS Record: 11 Address: FFFFFF RC: FFFF +RTS Record: 12 Address: FFFFFF RC: FFFF +RTS Record: 13 Address: FFFFFF RC: FFFF +RTS Record: 14 Address: FFFFFF RC: FFFF +RTS Record: 15 Address: FFFFFF RC: FFFF +```` + +After configuring the RFLink Somfy RTS you have to add the cover to the configuration like any other RFlink device. + +RFLink cover ID's are composed of: protocol, id, and gateway. For example: `RTS_0100F2_0`. + +Once the ID of a cover is known, it can be used to configure the cover in Home Assistant, for example, to add it to a different group, hide it or set a nice name. + +Assigning a name to a cover: + +```yaml +# Example configuration.yaml entry +- platform: rflink + devices: + RTS_0100F2_0: + name: SunShade + bofumotor_455201_0f: + name: Sovrumsgardin +``` + + +### Configuration variables: + +- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to Home Assistant if detected (default: True). +- **devices** (*Optional*): A list of devices with their name to use in the frontend. +- **device_defaults**: (*Optional*) + - **fire_event** (*Optional*): Set default `fire_event` for Rflink switch devices (see below). + - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below). + +### Device configuration variables: + +- **name** (*Optional*): Name for the device, defaults to Rflink ID. +- **aliases** (*Optional*): Alternative Rflink ID's this device is known by. +- **fire_event** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). +- **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1). +- **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). +- **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). +- **group** (*Optional*): Allow light to respond to group commands (ALLON/ALLOFF). (default: yes) +- **group_aliases** (*Optional*): `aliases` which only respond to group commands. +- **no_group_aliases** (*Optional*): `aliases` which do not respond to group commands. + + +### {% linkable_title Device support %} + +See [device support](/components/rflink/#device-support) + From b2032b2caf1c400095960873ceb07d2274cd577d Mon Sep 17 00:00:00 2001 From: ziotibia81 Date: Mon, 9 Oct 2017 23:51:41 +0200 Subject: [PATCH 021/152] Documentation for modbus timeout PR (#3570) * Documentation for modbus timeout PR * Documentation aligned with the general guidelines. --- source/_components/modbus.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown index ff2a552fc34..f673298d82e 100644 --- a/source/_components/modbus.markdown +++ b/source/_components/modbus.markdown @@ -33,6 +33,7 @@ Configuration variables: - **type** (*Required*): Type of the connection to Modbus. - **host** (*Required*): The IP address of your Modbus device, eg. 192.168.1.1. - **port** (*Required*): The port for the communication. +- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) For a serial connection: @@ -57,6 +58,7 @@ Configuration variables: - **stopbits** (*Required*): The stopbits for the serial connection. - **bytesize** (*Required*): The bytesize for the serial connection. - **parity** (*Required*): The parity for the serial connection. +- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) ### {% linkable_title Services %} From 88ad7b3b3eaadb0617b2f958fec96d0bdc69ec8f Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Mon, 9 Oct 2017 16:52:09 -0600 Subject: [PATCH 022/152] AirVisual documentation updates (#3492) --- source/_components/sensor.airvisual.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_components/sensor.airvisual.markdown b/source/_components/sensor.airvisual.markdown index 76d829f4d88..bedf30c7d17 100644 --- a/source/_components/sensor.airvisual.markdown +++ b/source/_components/sensor.airvisual.markdown @@ -45,6 +45,7 @@ sensor: latitude: 42.81212 longitude: 108.12422 radius: 500 + show_on_map: false ``` Configuration variables: @@ -58,6 +59,8 @@ defined under the `homeassistant` key in `configuration.yaml` will be used defined under the `homeassistant` key in `configuration.yaml` will be used - **radius** (*Optional*): the radius (in meters) around the latitude/longitude to search for the nearest city; defaults to `1000` +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` ## {% linkable_title Configuring the Platform via City/State/Country %} @@ -74,6 +77,7 @@ sensor: city: southend-on-sea state: essex country: uk + show_on_map: false ``` Configuration variables: @@ -84,6 +88,8 @@ Configuration variables: - **city** (*Optional*): the city to monitor - **state** (*Optional*): the state/region to monitor - **country** (*Optional*): the country to monitor +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` To easily determine the proper values for a particular location, use the [AirVisual region directory](https://airvisual.com/world). Once you browse to the particular city you want, From d3ba5fdfccd819e3bfa6950bca1a73dbabf67be8 Mon Sep 17 00:00:00 2001 From: Rob Connolly Date: Tue, 10 Oct 2017 11:54:24 +1300 Subject: [PATCH 023/152] Add documentation for Rocket.Chat notifications. (#3424) * Add documentation for Rocket.Chat notifications. * Update 'ha_release' --- source/_components/notify.rocketchat.markdown | 56 ++++++++++++++++++ source/images/supported_brands/rocketchat.png | Bin 0 -> 3006 bytes 2 files changed, 56 insertions(+) create mode 100644 source/_components/notify.rocketchat.markdown create mode 100644 source/images/supported_brands/rocketchat.png diff --git a/source/_components/notify.rocketchat.markdown b/source/_components/notify.rocketchat.markdown new file mode 100644 index 00000000000..2c014c30546 --- /dev/null +++ b/source/_components/notify.rocketchat.markdown @@ -0,0 +1,56 @@ +--- +layout: page +title: "Rocket.Chat" +description: "Instructions on how to add Rocket.Chat notifications to Home Assistant." +date: 2017-09-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rocketchat.png +ha_category: Notifications +ha_release: 0.56 +--- + + +The `rocketchat` platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. + +To add Rocket.Chat to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: rocketchat + name: NOTIFIER_NAME + url: https://rocketchat.example.com + username: USERNAME + password: PASSWORD + room: my-awesome-room +``` + +- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **url** (*Required*): The URL of your Rocket.Chat instance. +- **username** (*Required*): The Rocket.Chat username. +- **password** (*Required*): The Rocker.Chat password. +- **room** (*Required*): The chat room name to send messages to. + +### {% linkable_title script.yaml example %} + +```yaml +rocketchat_notification: + sequence: + - service: notify.NOTIFIER_NAME + data: + message: "Message to Rocket.Chat from Home Assistant!" + data: + emoji: ":smirk:" +``` + +#### {% linkable_title Message variables %} + +- **message** (*Required*): Message to be displayed. +- **data** (*Optional*): Dictionary containing any of the variables defined in the + [Rocket.Chat docs](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + diff --git a/source/images/supported_brands/rocketchat.png b/source/images/supported_brands/rocketchat.png new file mode 100644 index 0000000000000000000000000000000000000000..912112d2c9794607a75a6b0a76187da730810f8e GIT binary patch literal 3006 zcmb7``8U*$8^zzoHg;o|WkzI_eVJ^TW~`BAtSOOH)*@N*vCW9Fha^hb_iTlxk!6Mm zAzMhuknA!-Of&e_pYT2Bp7Xl*oadM4ocqH~!dRQ}aGu}<0D#B*g0UR{F#WYm0GRnN z{A!#X{$d(q>0t7g9dPCUOCzoxU&10OkFytxN~nGP^k2V@kB_?%dNc7!8?9~oi$D4d z%~tAO?M#08>=!VIabPeQTU%S-Tid4^ne}f=5B0k zdqu6(M_|j>pP8u_j0B_dRK>Sjx&bmJ-CD zWLg}j`38s)?%P!dN<_CU0w&*6(u3p zZ3w;=%CW}3n%Y(5FUrCfF>O#D6KOneik5@=$QIjNOpC2nuBM22+joLnE%RN03fVi> zpMTEyP)kJ~X|&1S%e^CJP;e-@!QEzLSrL{m$2qeVO2@IV$7uSy(_gUsva1ZsEXw20 zTnN*>Xy41zB+CZB1T=Pj8?AdKjX`}Ac!>`+tI}Y_9qL=P80*J?$X1mpP4*t$!eleN z)}~lnCX|>vgFVyaXJIHrPWWMZQNJe*rx?Fn%I1r^-hhT702PcN3tWPN^;SBJF{Hvy zv1Zm2)dUL@R4krS6cC5W$ueyix2j=6{L*)WDFjawT zzxav%tpIR~5*{e(UbrNFz)wlXrK#Yo4-2aCB%w3GOj&q0%J6RvGDUQ%L$nJ-2moKp z&O%vP4Z~B`*Kj>p$h+3sqp*=E`_df#@Wa zWUU>`-MBf>6%yp!U>5FzsENaIEQtgDPE8;Jj;ssh0k_+eF!b9+tgcXR$l3k9x2(vT zKpC9|gxUqRoV@%TvTuSaKespgZ__Y%2)gV+35$Hpjf##w`8_2+{7?KTn7&#P9yOZ+ zn7%@tBuAtIswl{9C)|EBi7{)3s}x&c1J!IY3lN}g>H};jQwp;aK;~qw$i4AGlX6EY z)ZdyaGbxaHHD2R*8}^-Io5ZBbfb46)bgwC|jV0%n7P^g%+98kP){~LumZ9nL-U(lG zOS8h_>0?90c4Flz5h?G_ToM2ZOuUdndvPaeHaWLgTp1&c_+3H-wMKUw1yf8WM7BmC z>%6;r1dD_N5+hkkpc#Tp-DMm- z5N321)+B_}c=$a^gED6vjOTBsM|&DBC}1VE+UPseLrrniWzbvd9i{ZOA=Y?UJ8i!4 zS%J-LjRp)ds0v&E_*}%;koL2ups%I=yknpOFQq6xZ8~Cv{pJe~eK4`+)(QIYv5EfX zw}CVdFkALwG&G8Cd$M40G47ooIjh;&lT9%)(lwEKQzbLEeAnZ$*@8wh#27(2zLzM8r7*yh~}w3@gw#dTrlN`$GUZvT%S06Wj@Irsrhx~K-A?1GMOyPFel zc{&3O*ZcGumHF~2ko)D9XBS{|gl1M$=655D!`d+{XFl{S_jHBu#h0~>@0S_c2Vi_v z%y0lG9sBCmx~zb+9XGQaHd8Yc11|F^RQm+L2A@TEA7nNS6XW5l@og!|^5KHQ8Vod{ zqo;C3&gH>bz3-s>+7k!|F3b6PvPtMkk~oahk?LgEc=|Lc^@{>5d ztbTioVilgQ7h8SKQRz0xu4M{0)-pVEwY$m*5q>y!2Xs|#dYnaYv;8n`r1E-qV(XFmhyNs92j{tWsuez|bM>10{rz=&Tj*$#;h9L}oXYO@NB0zEV3VxbhocH@>x2Ge4_G)p`cSd$C?57xkcR&QXP@(=a15$kUO9&JJTsRXbAE!WPPxuxcJ?I<1sm8W0=W z;2s%ysD}TZ$>Cq%qo1fBeyi(zz)tpkjPlyTgkoigG%}dap^xqD$K9(uAu?SF@~8P{ z=c4#q=kddIPJ_~S|Zy%_RfaQk= zgS-?GaymWVNf%_E!Xznd+?UX!V9BAIZpDut3QV+sm&oH8H6X`*?ypzhFhJuYAww{? vird0+B Date: Tue, 10 Oct 2017 14:08:30 +0200 Subject: [PATCH 024/152] Modbus Sensor: Clarify how to use scan_interval (#3578) * Clarify how to use scan_interval Many forum posts and issues ask how to change the scan_interval for modbus sensor. This patch clarify the configuration parameters. * Fix typos and add example * There are more options --- source/_components/sensor.modbus.markdown | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index 62e5eae058c..b4a59d899db 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -56,3 +56,27 @@ Configuration variables: - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0 - **precision** (*Optional*): Number of valid decimals, default 0 - **data_type** (*Optional*): Response representation (int, float). If float selected, value will be converted to IEEE 754 floating point format. default int + +It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. + +### {% linkable_title Full example %} + +Example a tmeperature sensor with a 10 seconds scan interval: + +```yaml +sensor: +- platform: modbus + scan_interval: 5 + registers: + - name: Room_1 + slave: 10 + register: 0 + register_type: holding + update_interval: 2.5 + unit_of_measurement: °C + count: 1 + scale: 0.1 + offset: 0 + precision: 1 + data_type: int +``` From 35cdff0aef6166f7707930b39337b5e609a927d1 Mon Sep 17 00:00:00 2001 From: Jeroen ter Heerdt Date: Tue, 10 Oct 2017 14:12:03 +0200 Subject: [PATCH 025/152] Updating documentation for Egardia component (#3566) * Updating documentation for Egardia component Python3.4 --> Python3.5 and other textual enhancements. * Use 3.5 everywhere --- .../alarm_control_panel.egardia.markdown | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown index c2fea17adb1..ba1bb74d63d 100644 --- a/source/_components/alarm_control_panel.egardia.markdown +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -61,26 +61,30 @@ alarm_control_panel: triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX ignore: XXXXXXXXXXXXXXXX ``` - Note that for triggered, arm and disarm multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as ignore (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, armhome, triggered) even when system checks occur. -5. Start the `egardiaserver.py` script on boot of your Home Assistant machine, for example by using systemd. To use this method, create a shell script named `egardiaserver.sh` that contains the following: +Note that for triggered, arm and disarm multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as ignore (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, armhome, triggered) even when system checks occur. + +5. Start the `egardiaserver.py` script on boot of your Home Assistant machine, for example by using `systemctl` by `systemd`. To use this method, create a shell script named `egardiaserver.sh` that contains something like the following: + ```bash -source /srv/homeassistant/homeassistant_venv/bin/activate -python3 /srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages/pythonegardia/egardiaserver.py -host [YOURHOST] -password '[YOURPASSWORD]' -ssl True > /tmp/egardiaserver.log 2>&1 +$ source /srv/homeassistant/bin/activate +$ python3 /srv/homeassistant/lib/python3.5/site-packages/pythonegardia/egardiaserver.py -host [YOURHOST] -password '[YOURPASSWORD]' -ssl True > /tmp/egardiaserver.log 2>&1 ``` Mark it as executable (`$ chmod +x`) and run `sudo nano /lib/systemd/system/egardiaserver.service`. Enter the following into the `egardiaserver.service` file: + ```bash [Unit] Description=Egardia Server Service [Service] -ExecStart=/srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages/pythonegardia/egardiaserver.sh +ExecStart=/bin/bash /srv/homeassistant/homeassistant_venv/lib/python3.5/site-packages/pythonegardia/egardiaserver.sh StandardOutput=journal+console [Install] WantedBy=multi-user.target Alias=egardiaserver.service ``` + Save and then run `sudo systemctl enable egardiaserver.service` and `sudo systemctl start egardiaserver.service`. 6. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. From 92e9877c0e74349b514aebc0df96a539e13fae5e Mon Sep 17 00:00:00 2001 From: Andrej Friesen Date: Wed, 11 Oct 2017 08:36:01 +0200 Subject: [PATCH 026/152] Add Information to Push Notifications component (#3502) * Changed to ordered list. * Add information for HASSIO domain verifying HASSIO Users need to place the domain verification file from google to a specific location. Add information about the "www" directory and how to open it in he browser. --- source/_components/notify.html5.markdown | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 8232edd00f8..e1387f8f10c 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -33,24 +33,33 @@ Configuration variables: ### {% linkable_title Getting ready for Chrome %} -- Create new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). -- Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain. -- After that, go to [https://console.firebase.google.com](https://console.firebase.google.com) and select import Google project, select the project you created. -- Then, click the cogwheel on top left and select "Project settings". -- Select 'Cloud Messaging' tab, listed beneath Project Credentials will be your 152 character 'Server Key' and 12 digit ID 'Sender ID'. +1. Create new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). +2. Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain. +3. After that, go to [https://console.firebase.google.com](https://console.firebase.google.com) and select import Google project, select the project you created. +4. Then, click the cogwheel on top left and select "Project settings". +5. Select 'Cloud Messaging' tab, listed beneath Project Credentials will be your 152 character 'Server Key' and 12 digit ID 'Sender ID'. + +#### {% linkable_title Verify your domain with Hass.io %} + +1. For verifying your domain you need to download a file in step 2. +2. Create a dictionary named "www" in you Hass.io configuration dictionary. +3. Place the file (something like this: google*.html) in the "www" directory. +4. You can open it by going to **https://yourdomain/local/exact_file_name.html** +5. Proceed with step 3. ### {% linkable_title Requirements %} The `html5` platform can only function if all of the following requirements are met: (On Hass.io these requirements are already met.) -* You are using Chrome and/or Firefox on any desktop platform, ChromeOS, or Android. +* You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. * Your Home Assistant instance is exposed to the world. * If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. * `pywebpush` must be installed. `libffi-dev`, `libpython-dev`, and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). * You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). * You are willing to accept the notification permission in your browser. + ### {% linkable_title Setting up %} Assuming you have already added the platform to your configuration: @@ -62,6 +71,7 @@ Assuming you have already added the platform to your configuration: 5. Assuming you accept, that's all there is to it! 6. (Optional, but highly recommended!) Open the `html5_push_registrations.conf` file in your configuration directory. You will see a new entry for the browser you just added. Rename it from `unnamed device` to a name of your choice, which will make it easier to identify later. _Do not change anything else in this file!_ You need to restart Home Assistant after making any changes to the file. + ### {% linkable_title Usage %} The `html5` platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload. From 619a2c3a377bf27ba453b66081987c64e495fc76 Mon Sep 17 00:00:00 2001 From: ziotibia81 Date: Wed, 11 Oct 2017 11:55:16 +0200 Subject: [PATCH 027/152] Modbus binary sensor scan_interval clarify. (#3585) Alignment documentation along the same lines as modbus sensor. --- .../_components/binary_sensor.modbus.markdown | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown index 6013a3cf4d7..55450b908ea 100644 --- a/source/_components/binary_sensor.modbus.markdown +++ b/source/_components/binary_sensor.modbus.markdown @@ -36,3 +36,22 @@ Configuration variables: - **name** (*Required*): Name of the sensor. - **slave** (*Required*): The number of the slave (Optional for TCP and UDP Modbus). - **coil** (*Required*): Coil number. + +It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. + +### {% linkable_title Full example %} + +Example a sensor with a 10 seconds scan interval: + +```yaml +binary_sensor: + - platform: modbus + scan_interval: 10 + coils: + - name: Sensor1 + slave: 1 + coil: 100 + - name: Sensor2 + slave: 1 + coil: 110 +``` From 33e9ea48665f8d5ed6d65245baaf12f34668eb96 Mon Sep 17 00:00:00 2001 From: ziotibia81 Date: Wed, 11 Oct 2017 11:56:04 +0200 Subject: [PATCH 028/152] Fixed minors typing errors. (#3586) --- source/_components/sensor.modbus.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index b4a59d899db..fd3b7157560 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -61,12 +61,12 @@ It's possible to change the default 30 seconds scan interval for the sensor upda ### {% linkable_title Full example %} -Example a tmeperature sensor with a 10 seconds scan interval: +Example a temperature sensor with a 10 seconds scan interval: ```yaml sensor: - platform: modbus - scan_interval: 5 + scan_interval: 10 registers: - name: Room_1 slave: 10 From 1c9e3f66c90ec51f88082110d573603f112ee077 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Thu, 12 Oct 2017 11:21:34 -0400 Subject: [PATCH 029/152] Added component page for map (#3588) --- source/_components/map.markdown | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 source/_components/map.markdown diff --git a/source/_components/map.markdown b/source/_components/map.markdown new file mode 100755 index 00000000000..6cf4f7aa36a --- /dev/null +++ b/source/_components/map.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Map" +description: "Offers a map to show tracked devices." +date: 2017-10-11 10:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +--- + +This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/components/device_tracker/) documentation. + +```yaml +# Example configuration.yaml entry +map: +``` \ No newline at end of file From 843a97d1babf09993488a18491e1c1beb0a95df8 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Thu, 12 Oct 2017 11:27:18 -0400 Subject: [PATCH 030/152] Add image attribute to html5 notify (#3596) --- source/_components/notify.html5.markdown | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index e1387f8f10c..eb0bb0b9ddc 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -103,7 +103,7 @@ Chrome supports notification actions, which are configurable buttons that arrive #### {% linkable_title Data %} -Any parameters that you pass in the notify payload that aren't valid for use in the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`) will be sent back to you in the [callback events](#automating-notification-events). +Any parameters that you pass in the notify payload that aren't valid for use in the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`) will be sent back to you in the [callback events](#automating-notification-events). ```json { @@ -193,13 +193,13 @@ During the lifespan of a single push notification, Home Assistant will emit a fe Common event payload parameters are: -| Parameter | Description | -|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `action` | The `action` key that you set when sending the notification of the action clicked. Only appears in the `clicked` event. | -| `data` | The data dictionary you originally passed in the notify payload, minus any parameters that were added to the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`). | -| `tag` | The unique identifier of the notification. Can be overridden when sending a notification to allow for replacing existing notifications. | -| `target` | The target that this notification callback describes. | -| `type` | The type of event callback received. Can be `received`, `clicked` or `closed`. | +| Parameter | Description | +|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `action` | The `action` key that you set when sending the notification of the action clicked. Only appears in the `clicked` event. | +| `data` | The data dictionary you originally passed in the notify payload, minus any parameters that were added to the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`). | +| `tag` | The unique identifier of the notification. Can be overridden when sending a notification to allow for replacing existing notifications. | +| `target` | The target that this notification callback describes. | +| `type` | The type of event callback received. Can be `received`, `clicked` or `closed`. | You can use the `target` parameter to write automations against a single `target`. For more granularity, use `action` and `target` together to write automations which will do specific things based on what target clicked an action. From eaed54a051b75d9bf32cb8019c63ec5acbe0741f Mon Sep 17 00:00:00 2001 From: David Lloyd Date: Fri, 13 Oct 2017 16:03:41 +1100 Subject: [PATCH 031/152] =?UTF-8?q?Added=20markdown=20and=20image=20files?= =?UTF-8?q?=20for=20notify=20clickatell=20SMS=20message=20plat=E2=80=A6=20?= =?UTF-8?q?(#3569)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added markdown and image files for notify clickatell SMS message platform * Update notify.clickatell.markdown --- source/_components/notify.clickatell.markdown | 46 ++++++++++++++++++ source/images/supported_brands/clickatell.png | Bin 0 -> 22491 bytes 2 files changed, 46 insertions(+) create mode 100644 source/_components/notify.clickatell.markdown create mode 100644 source/images/supported_brands/clickatell.png diff --git a/source/_components/notify.clickatell.markdown b/source/_components/notify.clickatell.markdown new file mode 100644 index 00000000000..52a1a7ba03a --- /dev/null +++ b/source/_components/notify.clickatell.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Clikatell SMS" +description: "Instructions on how to add Clickatell notifications to Home Assistant." +date: 2017-10-09 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: clickatell.png +ha_category: Notifications +ha_release: 0.56 +--- + + +The `clickatell` platform uses [Clickatell](https://clickatell.com) to deliver SMS notifications from Home Assistant. + +### Get your Clickatell API Credentials +Go to your [Clickatell SMS Platform Portal](https://portal.clickatell.com/#/) section and create a new SMS integration. There are three screens of information required to creater an integration. Please ensure the following: + +1. Give the new Integration an identification name +2. ensure it is set for 'production' use +3. select 'HTTP' as your API type +4. Ensure that the you select for the messaging type to be 'one way messaging' +5. Be aware of the international number format option as this impacts the structure of the phone numbers you provide +6. Once you have completed entering your details an API key is generated. Copy the API key + +### Configuration +To add Clickatell to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +notify: + - platform: clickatell + name: USER_DEFINED_NAME + api_key: CLICKATELL_API_KEY + recipient: PHONE_NO +``` + +Configuration variables: + +* **name** (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is `Clickatell`. The notifier will bind to the service notify.NOTIFIER_NAME. +* **api_key** (Required): Your `API Key`. +* **recipient** (Required): Your phone no. This is where you want to send your notification SMS messages. eg: `61444333444` + + +To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). diff --git a/source/images/supported_brands/clickatell.png b/source/images/supported_brands/clickatell.png new file mode 100644 index 0000000000000000000000000000000000000000..cacd25657674e8c1a058b088175ea4a6eda78a05 GIT binary patch literal 22491 zcmd?QbyQp3w>H|h4nt>A1z4zMldDfhB&9zs?n%QA$Dzey^q?k{hJi(TilhSzdPqBQt(AOTD3fi)d0!0u+wz$c#p4&Q)O@^)sHKnx@Krq!epry6F7&WpLPEBPE5Tn-RQ|455 zlmuE?%XvBjH9b|d%soNoLI7$BaVk*{;Xed+K(HB=hn=mxi?D|n^}q27|2hAsnS+|@ z-&DXLG3tLArKhY$CF$S{q~c@eXEW#G5u_3jV&~!$66EG(rQ+t~;^*KL;^5+Cu{g(@Nj{iw(@AB_q z`V%k?4>Ly&E_Tj;T>1}1W##{SRXe-?)OG=D0ROkW|3_jMEr=tKLj&mI;OcDtXW%So z{^`n5Skf7226k}Pa&WNyk0`2HIe;BptQ;JvBqjfengA7}uC+bD!QF-F-!RI`!t(Ym zU^9DjpuChA^&b{?YiocopX6t0UO@pq9!^PVE-q<-FGAdsLXuyEzQ{;%@$z%?{RdXc z!Q9mjXb=7mEZ~1*`Ts}kKj~oS_@`$nptH3b5Fq31U`O?DZVOxg&$jUVk9_}*1^myp z@cxfjjz7k5{4==!Ww8IF=}!jzbNZjD`{&|6lOJgRC*z&}r1mN19Pr5#Ek${$&srV} zhncT(jHGA!#tuQ&vHC(*3CZu zGY|jnP{z^!XF`4&|LdQ_=U4y8=j8v$x8Q$d0M0-1weUZZYWE-cch0jv@?UrVJM3R~ z{|~VLO8Q@6|CRLr0{ic_{0sKqZTT1Mzmonxa^e5Kp8uUg^X8u+{{KA0|1W3Bube!X zzK98W0vBZe)5aSbu~@uDdF-=<;~F)V=>B&xKBnzrS;*vQGs-HUCEn9o&lr-o^iUuD zAbMrI)Np#MX%i8DQ0xfidW3GQh&w^nzLc5V)DoqT`y2FJIO*hDb`b>WSVXQ<{Y*POM)mH0*3?XLX#N>r-aNXg#;2ukm@dOsT1BZYpb zY=XO~)=7IGAtMJeVsU@%{&b9Io~e)xr-K}%tSqfv_L}9a`yT(=ryi{xy_1X#Hdae= zHuS|=^*L|+t~hSk@0`)wG#8r@+?0_%wui4$D>$;o+ekTT$E3pIOgdssqS9rgm7hNK zL4}f}qZ(0+(Ou0Z@%k2ZFq%Q{s8b(8S^7H!R9^PU&D{?n1nb{(QxS0TY{x)&QWecS z^OHE9{3f62*~VQY`P2{X)G{g7_@wSvi`+1+ipWc>1+<`X`blG%lQ5&>Q;o+*%mDk; zeru4*qT_?@S8m0r$sGf5elmM1`mdrnA+eEFvEfD0b*c7=P_yb6MdX5Z!`8|wLn1UZ z0Bjb}c*HO7PAKx^z~ye<{O%?NKa(yqHv?w}%v)4ZBbG`?QQ~p6G4Jq8V2$?Smc1S0 z?5o)CU!?0ED`+BrGN0&hd@#q;s^_zDn}V4KK5hcf$+3Rbw7e}C(9?vpE z%A_#fu3hgd8Et*&1*0#=yLdjq3PpM?2Wp{rw>%%Om#^HDQ3tq7?P>e(tY9g1Rl70( zbt#58PYT*6X}Wr#L#W@->L_r`GeTm7YaI0a1_?(E}dLs*8dGVf{e=JA3D9P8i9X9mkJ49Sq$(^>S+`0QAC(GtN*Ua+tPQG8?pgU^Yk zHdR-~`a9QUD9*0P-1zP9P70vhvNSM3O^5NhNEvT)eczn(ikZyK4 zcKM`~`9)m@Ef`sVad#bmSCBmIpxiN#VUW9fkspd^$a-G-QQ6Dz#bjZGzVT#dUg^GQ zY>(-9LG7YxCb2N}GzA6U2ey5)=tcHpfr&-sjr*lBsAaf+Zt<_IYqcBDgBH=n(eDjT z<^1K*_($e>9Goz$U%V6D?@vt^Nbua93_x5S-8!3ZV9BO%H3&@t;QU&}n=ar?=9%(E zvLJb%wTp_bX7REPG3r|8au;{VjnXwBKvyyL>8APC->Fky!9R0$mGKHPud+9a--J0Y zcTvVz{Y}yk$mCgX+2lvU81MkBfwj69pA5Qoj)y6HeR7QxAH6I~2A4>LCsQ<*)x`!b zhK!3{Q%-<9xm}wd-X3Zj_jKOYTS&bFh4xx5Nj9%iRi^cxYKwm=gnyDI3zw2_*q%ei z+EF?XL4ROFkvjbE6%f=}LxkQ)oJilgGO=^{QdoZCOL$2m1*wwo+}99Ftui533W!lm zNG81tIIPl>znPB6O;%sS`5#%j(&$5r(bWm7=@N-6xyr@0OYX;D6~8hO5iPs# zzoyT=g1_SW8LYf@fYy z)OQwJ9cauvMmFT*%|5%{BH}^5{TTTWWmoL+EH``L!n`_u)L5cofxq$_)=!(MrdiK| z=Q3XkoT@P4@OV>+0g@y}OPpX>O}L;mJ|E-(BQd)=qv*H|*xHXbriusK)s)O>=6fXfGC{&Gho z%`oY}DnVO;e(hSN&eDF=k7|05+dptv4UH>aRIh-a#mG1F+H-fq_2`x9Oal=)#~I=v z1Q8&>`a$c$Xt`^2O*+8BCeCI$IxqWCD%u={Rd!h@zBJKamjcHS;&y_~YX`3Xj3oAc z1BZ8DJEUhbKGvt2ri)45V8T}`^C)%d`JN0SXxGuJry!dlD z=eX_c!PQUvNE%@8!!Mi&o=&)40easgoUdnU^~Su%(^Nm0wNq#92q@6lA;c=5-F63A znUHyc<&=mRo5M{*w58bZIK2vz*;kInu8~oK@?&SO@WLP@sqa*T1?|RelT1d?eMzVL zuwC>TIM22-&%U=9uJJojc(BNsdfx5GT_YpiC>?8Fq!V&TtT~*J%QrY)1L(8HwX-i~ z(sU@8VrsJrJHhn&xvKPG#3l{LYOaGTp-}LdBew%*!A8DT{hb;H#ml$u9B)o$& zP8z;ABu}I{pMJQ{AGPCb$#_>#xK7YcTyuE|JYyDHZMA;BT%`Jq(g$M0q5RfRK$VG1 zUQn#dfli_7a~IpqAy3jh6vHYogi6lzd&oF^>y9~x0=vwBf7eer9E1zDENhNBB1oz*88YM=sLb| zm+G;XOe}Vhe8GP1X+}m`_8?C-UQt)$xpG%EHe94ZT=RDr>nl$)wrACPeWzutFK(Uy z^~?1}#)%4~=jEmK*}%lcnnlCtkdz(ebr z?+6g`JEXe>zWOMb;D^Z=Dr>RVd0&s%aqEZR-d$(3u2Jvba%NttmC}*S*aAuhF|-d5 zCnucxc1JBqI=nAmb6x; zWn=OS*-@L73uYclFaK;djIgr2+z;YetaH~AciYAm`dHdidWOlS?(`yJ2PwLY%fNr?K8z;MB_EREUZiSy`gWqAk20 ziCqow$k8svAHiGx(LX)_+>{#d@E{p%%E6$xGNJY1Nm$4_{O}jknQHZ~19*I<)ZQ2% zy}V||xV`UpLiM!8@^?iK#Lx@-KDCE?*Gp83O~yoJ2IVk9`F=9;dBp=RZssd{>kUTx ze9VjGWg~kPzu!-~x13!;gUME%`jm}z2>HCW6l=xKt7+fZb&p&Tjnb&kA^U=Va!WYt zbW2MC7iNL;Rb;v1Ur`><1`lusOZu(yLQ$00MInLFM;vP!zGA$LyW2D%9vx#Hn_I7S zLtbNtPm2iO9{O9XT3V3I)_StgiGxbhz4++sl=#^k;?HB-+=zQCV)ED2lD{Yp{TQe! zsw^Q-c*L5@&K%s%&dOjN#O%Nu4}?6uC^{TuHlgMv^mA<$AY#9=5c*bs!z)hIi|(nD zNYMz4dD5xQHusYrF+w}XF|ISK2m<8hmaIe6u36y7)sx#OQf2&|yJq{MXf#Z6t3?ukL9Mhk)GTkEaxg=W{&T2Vu&lHX{y^5Qmo?uE0v8q``>*BaY! zexuyuKzLH|(PaT))P}me{PvptqT)Aw-dhQ!XKxD<_zX%N5+)>7Tbb1qaH$3$Oq;Qf zbsuml8M`Mbu3y6+z8}_g)EXHAM|Hx(hZ;?$lAP%9DJt;SkI1_nwp+XM@;DV{&NZgC zU5-MeA|qObl+TX`9%GH2^(>1)bL*P0-=rt8U3jbDZ)br6vK6cDT@J)8{pPLsB-Z#z z?U<96W*|gr%;jZ|Oy~`npRbzqIY%!pRY7ZwY{D0G93C%O9S|gZIhDnxn047SZxO+ox6W%K z_DRf!QLH#dz*V=Bd*N|0F6SW46^T>-eA(iP+Wb>L7crsCc;UXVi@osu2>Z_bjeNJZ z{u{xWa)FB|zyv;Zr?)04{{B9L`j`PmG4Gs)s)%vE`l+JIYS^ijlsEf2d_F?EJ`Hf} zf|%Ww+VvCk=@6laNQnD^SO+WybP;AMfPMokup5Q*R!Pv#;<%}qoI_C*Lx{nr`17l4 z?^dAYnvNVu5qU)UW1L-SQ|kw5O>P63v|gE4ksSp}R)!NgcYS4qXnt=(Zl5|O#bx~h z*3f5;25Vh0SG8SCyg?0@b?UO`#$0U)r%vw=G9oT$2LFElnHW`_FXUtq_4)#K?3H@# z=}zpt+PP=}S|Lt0geAL-@0aUpZSDttX4qX=sw$xA7ExG(Rv^?iViong*e>4MWwgfj zI_k4{Zq9J4ieCK5LT77}XbO%Gz=c-rs~v?PH0Hcp)-M0K^A>O@A3e~p2=X+dv>SD% zxnOX?W{S;RN>Cf`J7tP?nTu;0-(KLYci(4~^l3IKQT57p)#M?LB2mjbzIZZYEp`wr zcJl291$p)3p0@@As>kHOcAZ!5H_CziNUG2!VGoPwJi2nbF~Vc4ajsl|Q2qNNQJ;Q{ zPQ{UrFOxP2d0dW(U-qHr8&j-|D?dS8)lDymW+vi}q6n2SZrpLZBJ7Cuu6*^x$t`!k zYx$;J*6`wK2t+KNSO^J+=HhBBm3l3lmo>wTEEA7!smVT1a)&e6Ik@sG*BZPh^4b zr&h#6vJPOR$_`;=MTL^b zXub^Z@v9g%PrSUaC>L!MIk9Jt;M}c5*uEz|ewO>~M(R0p;LXD5+*Z`_+E&ChkgunW ze>nqT>Yl~-CP#ee0>8P$zelz0L=3X3>XD7?hcudA^5H6w2y_q0Reuc;IKQ6s$MEYc ziAdn0x@RgW2od)BeWO(Bu&bZVvp|b^8h|EGe&s`#E$MZEV3KE`fDbS$Gh}=Ol@9~^i`#*s$``3To4pK;_i^Y`fV9;L-zzOj zlnvAz3tpL2_+3|JyCi2}j~vD{@P$K0X>vr4(F|%`f|UK{R7<|eogiU7MY^X=G361m ze8Cnu&aDmQGW7~K@p77rFV-k=D=vkc5w6UmnOVT6g%`dVE7o7_*|y?^g3*uw^!1B| zqp7jCG_|tMVD$!TzqwAxwbcGNR#A63*ASw z1$(wIKkbfFrZ68c4IuSpy37&sTWwiqeifnnIS2N1aJ{Y)(ZOWF!P_^W=QkQZh!)J( z;ooa>GwbH(#@bJyw;*}bw5NY3{&)%zxU(@iyHklnS1YY;xCxk|^f>%R>3J&Qxpb0g z6%Q**XGJDX5yUU%12{mLy-|1Li7ze1KAKgO&6|k?-8!XE_Ip#-==3cr_e*fmHe;o= zV{RklN;Cy4D3QFoH^k*7HpK$jf1GUbo(TgCQa@&&x9ZSK!J1nJam30d*11y~SEYYW zx7H~hBX|QW(k@-y$qLl&Lc@own8UMqq^1Urw-dhsx@>=7v1#DydW|tVZnL7Qix>-e3MEyDt|RQv&VD!$}^U z6rCjp(4HE^{$Uvo?x!!yJXQbp*eSyC-sEb?dn8ZY;U#x`KTQ-1R4F0o#IuxxsK=G7 zR}4;%?%5(`2ERK2=1J7Ci78d41bs$Ybud;Rc)MVs$XEESp^A^?EUSN3p8nq_;4A&C zq=wPqG8_XH*k_g!V$G1>qNY(dbyg zBWnh4j3d8N?6AiCfV~Kg7-6&aqEe8+I>+()YScyfVK(mq&)DH#A@eaNoX27qSAoB^b+CMz-1OoS&~g`XRXcxMwXUyHm@FI>Qi(VG5ij>mHmx^BaNW4pVK`%3#LKAfCdnZyuRD~g zVg@^@B(BV)EW#`wPJf+9fwnbE>%9f)zp=;n1@gaz-qp>TW`&b3BvONzD-HLPi(rG! z-fU%J?a(h;&*f)0bM|ovBN|=9EfbVBYi_zq`E7gn2p=y!Q_G%b)kjsbpYtM94tu@7 zwrXYRf;x|z3&r756J2eL1mQ?UQ&Z*!qMJzf^y*3uoT-%J3PFhtRsl4ysD!3b8=hO? z0vGT@M5IBL$QE?v=~dJTCN*w&?L#t=kO?lMk9Onyc%{ju{U+N3b-(Z z<+K^is0-R*TPs5kcT?f8Ws`gKGdk+Ha5lRXF+qXm`H^Xa(DVOTQq! z&UOwYH@EaD$<_Z#=C*vfv*&ymmRRUEUNT zfmDE-+etO#EHEa2RI1PldTl=dVc%etoE|;|z2HIJaxN$tE4J?V%8<7#Hn=3mN1+$(rIPnZ?u&R;*M zKnVMUzB7zzgf?eF7x7(Oy?y4&Y=$j#k=6_qZ@;WBlC0p1W$b5)NO=KyU0=N2F6j}k z4S`5xIS_YSccP4ah;=0Kxo|diH9)~xqj+O!CZ=Nxs}gGvcsv2inP zQV;yZw{PT3kG3G;srM5uXLv6LiHirn<)OM7;`9%DDdQW9raIe$2k_#?7KFw_E@|)mVuir zK}qvQu{HF>kteF0^{}SUbNYio9uYk9v6-#HWbpSjpL5KF+Ekdh=5Mh*$2$Gg`;B6Z z&!r$F!#e>lA%kxx#Fk+mC;0Ad@>|1l#mi*eCEbi8=6qMoP0Dv{Gl6xv?ui3=t1Q@a;U55qBtapbIcfRknI0P?9 zEn5W~lSH7?FtAUottnsg#7KWkzWkhYZr1dTJ5rxJxPmUjh(4l^=+V$Gmf~Fi{IX08 z-)ObXMs6-UpStE*veF`x#QZ<)rd567%-!nZ&2>1X)3;|bxH)!cov#AuMYB2_iAM`+sbniE`Rp1c8rdpE-Qy| zYo7F0ELqoEB8>s!vN5^aGa%MVa_h0SXOHBfXv&>#nGQ4n3ftQ z?lKjVNo$9TQT|nJo|*Ku{+t;Xst==TZONM`isY&|Pd3G%WF!so3wiC=mT8C7gsi44 zLv1cn`i4X=d4#WdDzu`oe+thPN5OCbm6vlhnSW-*c4W#iz zP*|RIs#VecJOkvS7ejnS zv92A|Em7qSUW5WH7oBE%NRAK_M>i@G+Q(Ux^q$!iR2KkYVRKUwWZJ^bd%;`FPYA%$ z98&Dv8jubUGpJrg*(>yMcWivWnc-S~4+zSkQJ(O~%(hPLu?eia|8XegFO3V(TP!`t zQr01!xWAF&$ycVEW_;(&g_)E`QfGb4&NGzBda#hJJRCH_c>NnqT=UxV^D7-gmC;)x zU*J80@G0)E(qkh_Y)>u~WBt;ETWySXT(K^YCs|w1BI|A=tEN6m@5M@Z-_L?f&E9u0 zq1WpM3QVbg1EFA?&yul_P28<>2*Yl8>1gq`pNUvD%7FykyO_~W50$BR!rJkJ4`1Jb^B8CjiU+N~N{@)kTC@yqfp?{OwH+J` zQr(8`htK857|_$JE<}s;54Ct7jkv|uNj{HhEQ}ZYTxwgg@+?1b72gjiwY%2o4|$LD zU0#Z+^S|MVxVhb_UD@!&n7{hcc?1~U)6zUlTLgSLW**utR9zxnWO>dUy`6D_#r;{e zWDncrhgO|{{@(Q-*r|+_M|^e@=o_ZlNM3%M6~y-wMt*Sfy8z(e(N{j9DK`Y zfD2%*#dGEWuzPa{BHua`EuvI73VPCBN|X~)c=kLR-=jaRjxXR?VxIF)PW5$l=u;p^uszcIYaQQxHGvTD->9VmA0 z+ksL>x>1$S2Tt7;o2}k>JzAvc?#;tx8`RW)N~)HGUydu-mCyr({X=zceR?fbNX(g| z(v7`Z(V~6D~${I=_>Fp`q?>*?#70{d4f2-k&(oX)>#{npTV-9^gqOEM#?VVzkpjA9@Gya8(2O}P z7r~cK9_~ey(NR^D6+cN+0Q(e=Z}(ia?M!Iwy{+uZPQ;F0Kb?XRjg1SJfl9xmCFy6t>Va4;Z!^w9i{Y))*t-lufDy`4toFIpq>P` z{k?(1iCsbvgN|y`k*4>tDo`ji6!Ni^w_kMH!3!ajH2h&{TO~Mxp+iBgs9Y`nJ#Oyg zwE1F^Bn@V8{iOk!cBgCl-20ZlC2sLjOGH=%qlcw{Dln`d(M76GXim(Ii%v6&hdC;h^eHKLgvenVUDC@mq! zfE%qnS8-{-#KLWXLOYk_iT91vh92)lcC??W!DHNg$v^z? z9hQS&lW1IujDX6QG2p7t86~HMw7Xb zY>C{>_e9N{(VE!8dbBKA<^}{ZEwPoSWOJ_OSsS@ms63|QJ?DkHV0M*N0xn|b8y6

4F{2)_rVU%0X~Ggm2%scWKHr z78}<0p&8c1ZP+!G=q1rf^07-pR8L^W_3mbHMfu%Ik(5vpMTUvHPHd@V_+lFVAweJK zD?grwM~2f9kb)`KOI*yb=0!^@QXLIE$W1$XvEX`$F?^JP>akOqp zRT)~NT{6W3E@p{qCLW~L9a}y=f_S=>3LUWtm`*)RRo?l$Q@q#Vo>FTVJ()BZB1nFf zABr=ggXe48U29VDL)SE48mn-Kr7QU6xk9bm-Pb9X)w1wWvT)-grh5-&%WKYEA)`jB(|*7Z4i~*;5f-p#VGdasAF@e&5IOZi*AzKc`x8j*%0C^Ul7^lgD(yQ7wJ;Nz1 zv`30p(&8gUmUF`({IQ3>XTRIbzFLnl`M8L3qmtUO_|4Tt_%Rh}U6EWrv?^2N&o+&r z+gd8JVO%}^by{X}ph^V%lYl(Kcm4LSSVSfXi#|#989q|dx)H{Tg4M+)T(q^t3P2ff z#;5yACr0o{pwfNVn>GsPGW$~|$XcJ2A(Y$^lV{7T7hN@i)fDrQx$pM6xY5>?%Bx}h3d~KO^ zg6G4-u9Ueb_J^(Zu}k~o(mU@=@-jP{D$kwzg?>+BAKqS7Ql(f4SG$!e%S)}3=7w@gYtgdq zFvGGK9y-cqt6#e&EF_JYed!V6V|i|xCZ_MzI(M3Am6unv(bJm!J+hf-&doC3qrOzZ z;(FraQK073NCpMHh`O>ED7itN>_$m!CA3B7C_xj#r2Du7whg{_ZQA`F+4}I2(96X_ zlKR~w1tV%LTh*K_@>}nScdEd0C;j~P*|&^Lb+&|)Tp8UdO-9i( zxkTey3;qw8GyyTIM$Aa9eOagc1Of#3@51A=6Xy<(xR z^xgF*4=(8dP;4W!vpNkt&g~>r)xk-a-rHzKzJ@uS+a_R*v>7 zPa=6{&6?ZWf>u|V$T$D|e4kXs=OZrsVM<0%VOz4$G-1HOjXxmY z^+4=AXB!YRCQ~FXq!tZ782lj>a<(VxUykdrFVAQp!f~Jf%K=clDKz?)T?z>=AX%d7 zE8UT4G@wzUwlA=o+eE|H=6-5q)xoij90hz%?{+l@xm`@8Nl5mIG6vSHb(Vciww;ug zQEq?!0SD&tivaAXO3S{gl-zI6M!C3s3P;(G)UJlF@}^$;dV+xz7c?F}%c5RYmyD%zPG3#^*UE@t?;CFo z5)`K<@M8eoyQ*KzUlsE7ikhdhNz$pZC*PCs4XrU1j?Aj?8EwhcI)-N|Qtw&Ak(rB= zcP288-tQs8%%GLPN(2C*#hZp}Ok&R>OL@-B&aLN161j3``>;V}*+eXGBMO(>y>E2= zv-+iGz*fkb?!BDvJr2p_3*DwiC!@%Ah>3e5-=uci;XkN!ZYG0jrg}#I)S6&Hl(pBw zX^%3yMBisp&Uf@8FMI15X)7K0KBc3w~eRR^b$xd{e6+TFKo( zzicpsY1fg6P&(iKrUEJ;Qzhr-UARJ3kV@d|F&T|+6!|91|ESDj!lS$UU8W~suV+_C za}XqO-Sn<2Adxj0Cdp!>%pPx?k#9PY8dZYYC&#Grz%q>3aBFYy`7&!?-@umGsaCp- zwBmTUmS30_ePdNI54I7E54ULV!)Ph|2djJ4 zhfImPeHJ$^Tjda>g#qu($_?s_-)#655c+(^a8NQaPE!!Ky(RjtNdd^ zMcSRMqOAFzJKcSPitE@_zisOzMn)=~`L|RXIm4S#?~$=tt={}HB%K~XpAUUkAx^9W zpuPcp@%(byPipyYSVaBt@9gie1a9(~n-P|nfw=U61`+s-gF8E_oNvb_+IeoRwk={s zj-i9l(2?-KCCCL=`ttQ0hjZKmMFjH(mhgJoK+F7)mJCsngSvH8z@%j7SW8PB^rD-7 zYhB~mHa4BI6vjcvV6H=AcKQs(@ZE0V zC)YIB8G*dkH$|y?-xlqP)YRQdsAA~J!f{D9V-H4nb+-}1xac=qjhoo)v@XErB}MaI zYDKa|ct6G0-?%ogtuTg3EQmmfD`$}&&X4@m&@ z7=7{1bp(US3d=s(RAx~2S?jjo_p=_)Yj*$x zq`4+(YG&7B@Na)dGWe>7Jg~-Njs9Gn`_k8}dz|gvvZ>=s(F2Mrd2A0-{%V=Pu-BQL zePk3wVkqX=@8m=41EB#aRvS2ZSK6gs2{V|;O`oebFJZ{Y+}n6*3T_;Pyf}W=G@EI)44}lhKlUi0{>%1!;N#|M?O*v0 z7yR+o`j2DEb{Rc_aZJ|02h6=96gKo_^GcYlZe+TKF{li5LvuG)yQ11{B~HH%fm&tb z(&0pdOOtl{oMPRlK~K#nsHfKT{646&x68V*Cdh~g8 zk{}%b_yBE@FVkaNFO3MH%5>G(h~?9amC6*wFLcF}HYE3nFa7IcD>_ZVdO_KJdF>yS zXBLSik2R0?tBxn)}!) zr(z^@>_~`c07&lR&W9KboiqcxDAJu@2H%(x-(MBu;IrCB6=enRN$WKWLw{o`-HYX| zDT-{IR^k!j?m5=l*ivq|L`^G|c5nuHB=W zs-){F9D___n_^!do1AIW@^~ls^6in{36U_h%#J;e}lB0j2M?MT+>T$kb)7EM~ znL3X*gLq#_oIEW0eqx8MLei+FP<;b!z zbqdDUs0{P@TjylCmuIT?Ccb(`*2%Y$cs}@8!c<+8urDgKTI{eu7xm)qVb#n9nvBUM z+|l#+S889Tsr#H8-Ww)H$vewZmG5lG=W=ZW5>vm(O;;GR*1R}VkrQF;!|h5^bQ}Tz z&166iKUcTKDLv(hTg{WyO z3~R8$ha`c4Q6$$QNe@d(>|X^gxK1?44Lw3v{0&5c$Kc8?3)3~KzMe^ zc?5nBW4OKV#R~~hU!RsYjS4+%FiO*?v4=Fm9+(kLSn84i%q90_S>tE*5T ze4&{*X4yHQS85nTjm3>IWt`y)cwzEol(6j6z^RVYyI9ghwc?PLLo}=JqsQQ#Zr055 z%H6!M64=5;d^Fr2Boc#i2#`F|8p>icfI&j3$shs3(w?X1%%B$ zWl4K=PrcY>l8F7vPIL z+~Z&mlct~Dpe3dtb@;-Umb86G+6z4zWhRP1<6ANfDLId!(3AX+PvN8Xj? zM{CPIM2yCx4gEXA6^?S;_K%Si}U8C=UpNmo(9&Vb`(KKSq?r!L9 zo;&pJ0^;p8OltR`Biq!Rp;TeQR_B&vA4ekH-?FWNi*Dq@I-*6s*n&+{Xng`VULr)e z1L2gtH`!_i5INBM+=wFL*n;17s?&vMYUsQYKU`n_v(ubFzirQp{5~cJ307+)BWK6& zV0B##|AD)XCO>X9vCId*LhGKcNGK=nKq_Jy+?2D2_w!js$rU4rb{OZ9N+ye)kYcAZ z?^4a+_)s%^-M^e(l+L=CKq@b7ZJE{l<;PsvGMn^5&sl(*`mY9qOV1qX@uDYyUCO=8 z=_W82Jn<`|@o8=#SFR|0SZ>3)q%JXm?H7xF%#>E)WVP~_fuD?RSFvs{$NO}K>p*1* zZr2;sjPHP7Aos8H_UdwXC*2lE*7nkpYZ4@Zo?4B`NcjHN96Edq;4QABMYW;l*sNtJ zi1-%Cv+^DP;Jk&KO0!&itnZo(iSi}GnKfyC1H~#-YD!l)$aC?z_vg9W=W*&Bo8Osr zoLxMj1T}NN74)Y z;E_sAQzOZ5b;fKXp?OhXLf^7nd@OLlx9I_oHq@5XYfE_~A#{CvmGqkXl;vm+ScgHM zc}{M^9Jc<@b%`lim3R)kO=X@8@A@R*c<>X9Dri0k=) zU=!6{7wU2Q@(klDbbo(&Rh2jAmCg5E7n8+T-)9xd zGK8K!`TKMD>^uCcCu+4zZ!f?ItF1{GudNj2#pN_ZkPmE-S9uWR_Y{}>31?G}_nPM+ z+h6ob!XJrG?agDnYX>MN+`LBfvZRGtP-%&~7s)beva%iLlnOS)JGTUcnBh8)=T8ls zX6(}*W;xRycGUI{ng4m`KF7w+X#ZE5`gT&?JK9pp|JBWTb~V9tYuJW}fQU#{K~O|R zi6T8fR0OFJ5CI7U#YcMYHBmu2B8b$4NR5DibR;40(4>VHiV%{}Lhqr4K=R@`zu^6L z&iMhe*4}H~Gqdm6v#%1hL13*s_qfjaNr9}xi!p1tE9&{&)%z{}gL-iT-i`f)`OKx? zeLr?F`gRkpJJmoHZ_S&~Q&@Xxfz4>Gy97N9?DdT}in|QAa57q1%&*TNrC7@iry5%q zUJV@-pFd(2h|k6uDt@)GE*!gU7-~4mFAws(e=J?KyX76*27+2Ii@rXEQHWWsMjrn+_~qQW{Mc+krhN1)-W7d0Xt^9j$9ujBw7=;_tk6!Q zgsk@M+K<=K3W6S8x{ILLHtn(pyNHn1mtMRajCekBerZGFZ{or>>HqjKYu90xrezx= zgu=w9>3{jAbuD;Ak&$ev+R};Y*kbM~r zvaNEpc)NUJ%sV1}J_~4?D@>@fKNGX3MGSttFO?$kq5c&VvM|tkRY)N_ z<(#Umh??iFefs{?nSFOH^r-0$sR!ENXwxfyG`Rn2B9MAGxnAHH{?T!&s&HV^r<+6G zHAIE<4tKhcx!kv1DhZgn?a=KQ6FX6Y8$My-OBY=fG5xl)b7Fg&Y97XEOKQj@TjB}4 z&EIO!amm6YJ%*@yT%ctJMu>eA>3=BE-4;3joHtzaQ~0^H95tSR_}SnAFaQKhw8cIM zQ)8VA+-=ZsnEX(k&u?`U&$q9gLiI=)nYDgLwh>;@{1RHAPot0#wbVPH1G0iMQ_&Pq zkhT;ZFWs@7G!}NXtDnkrhcRuQZS!7Z*kjae%h(U^b6-gYaA3naG=qtj?W!(2QRZC* zLL0-?+_>cdGgh(xL5xzA9RRtO6mzvZRXr>-*#G5UgaOx`H?64tpXvSQ#f?w?422qe zDMVrTlC%`G&tzO7aaX4s5Z5-27ys;(5b)C^aS}xWd+K^x`*Yc`2(t~jT&V+S1dj6v zL%}6b3^6`!{JPN`F1|7WS>C(9;kK%{f96&H~>rU)?TiTpB5JyOoz^=&_mT*9mL9GggG>nJEB8VjQt;p z{*74fp5=M{rF9Uyd-{A(VCZ4z9t!1Nm$=+?Zn;jPGyPHcn z?;o3%U4Xzxjpr}2A2YXX|D{rl&JE6Mg#>Hr$NImj7w*vFa9Cd>9 zPV(%T2fD^NEqR|9BxW=EXL~9$Rp%vu+COSK8gx4AW%4$ffVch?*;zjdBs7g%>F^T) zY`Nmr?871*Fg3w`i7qsO+~Q3Y-vH>$mQn)?Hy0V%rz5mw3NG~s3?*Cy|4v`g&6?BB zf~133l5l{_H>XqT)@cMf0xHXRzW4}60!_+?BoHWjif)@YYB000^wQ}?BFa-GzBj)@ zHBP@k=i%lQEwkC@G8(O1-ei=P4qbz@Fh*mkbAe zh4)64%vEOD>94ddc#>`TVWb2C{(vbCBmD_!0HE3Z88u4vlRa>d)UcL5-r41K?&X88 zgp88Qg3H{F1wY}hH7($Z*JriP;8_FYqlr`9R+t3ZZ(P7>BL(hr zf&~D(K@yDMQ(~ybQbCgfy}UPr{RmsHeMR(Z#JTCMx8RIFy<28{&Yhfrc?9wC5_xJ~`;pg%0ACy{zLY@SzKO3Q{ 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 D34k=p literal 0 HcmV?d00001 From 1aed4959b370220d484999d863d4ef4c921ba65c Mon Sep 17 00:00:00 2001 From: Martin Treml Date: Fri, 13 Oct 2017 09:02:52 +0200 Subject: [PATCH 032/152] Add namecheap component (#3589) * Add namecheap component * Update namecheapdns.markdown --- source/_components/namecheapdns.markdown | 47 +++++++++++++++++++ source/images/supported_brands/namecheap.png | Bin 0 -> 1418 bytes 2 files changed, 47 insertions(+) create mode 100644 source/_components/namecheapdns.markdown create mode 100644 source/images/supported_brands/namecheap.png diff --git a/source/_components/namecheapdns.markdown b/source/_components/namecheapdns.markdown new file mode 100644 index 00000000000..5b82024bf14 --- /dev/null +++ b/source/_components/namecheapdns.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "NamecheapDNS" +description: "Keep your namecheap dynamic DNS up to date" +date: 2017-10-11 20:16 +sidebar: true +comments: false +sharing: true +footer: true +logo: namecheap.png +ha_category: Utility +featured: false +ha_release: 0.56 +--- + +With the namecheapDNS component you can automatically update your dynamic DNS entry. + +

+Namecheap only supports IPv4 adresses to update. +

+ +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +namecheapdns: + host: @ + domain: example.com + access_token: 0123_Dynamic_DNS_Password +``` + +{% configuration %} + host: + description: The host part or "subdomain" part you want to update (If you want your domain leave the @ sign) + required: true + type: string + domain: + description: Your namecheap TLD (example.com). + required: true + type: string + access_token: + description: The namecheap "Dynamic DNS Password" you can find under the "Advanced DNS" Tab + required: true + type: string +{% endconfiguration %} + +See the [How do I set up a Host for Dynamic DNS?](https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns) for further instructions diff --git a/source/images/supported_brands/namecheap.png b/source/images/supported_brands/namecheap.png new file mode 100644 index 0000000000000000000000000000000000000000..d700d390ad876aeadf27d6f90c100183c05e7f43 GIT binary patch literal 1418 zcmV;51$Fv~P)%00gE|h7A~uAsiu1cUwcww)_5XxHE$f>BGdG^rWHm?oXG~TMXpc;&#Ag^90(CANMI;*ZOQfJZ+~F(An32)s~6u zpS68JCUg}G#OG{_H^FKSY;^-)Wd?u}(6ESE zf)(xCOMILnHldn~8dLAzj0qiTdnoRev|$`x`6n9*gXDB#T+ni)8eGxG%26FeC_(E~ zu#~nmri^Ru_AvTdo7M<7ayjUM;jTU=@55hz7yDB##kwuP7Rt9n=WyS(?fVSJs(g9!jh%M8F z`|(j>{g5tY+wp@lv!268$~-piCOOml$ZqCerpnx?*k!f3gcsk>KwJlCj?QWG1$k_; zrU}<9n?hO-$JuZGneua>~{) zmlZa_T=1?fsL5w54BIf~JdEN%+k&{SE97QUuCgU&;*&WxH*ao`>VVCkHybyZ+S}eS zTWy2}(b^WpT^wD zI)OKA6}A;YDQT|fP45y~`=U0=dmygw3GT5rR-|?y@)TJkJe*SzM~Uvrz$S&KqZXNh zkOquU_#O#F#&N$4o-9**k1j}_1D#0V!IDOR*R;(5ENY`vfw;aWx{7To#1^b{p|*8# zhXc^HY};(%MLDCQdiCM@1B5*TTV>&PRIkH*0bI3dw(!@oTN literal 0 HcmV?d00001 From 098e7014d47bd75878207b2470a366bb44dcd66d Mon Sep 17 00:00:00 2001 From: Kevin Fronczak Date: Fri, 13 Oct 2017 22:51:51 -0400 Subject: [PATCH 033/152] Added new conditions to netdata sensor (#3613) --- source/_components/sensor.netdata.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/sensor.netdata.markdown b/source/_components/sensor.netdata.markdown index 3673431d176..70df53e9c53 100644 --- a/source/_components/sensor.netdata.markdown +++ b/source/_components/sensor.netdata.markdown @@ -44,3 +44,12 @@ Configuration variables: - 'ipv4_in': Amount of inbound IPv4 packets per second - 'ipv4_out': Amount of outbound IPv4 packets per second - 'disk_free': Free disk space + - 'cpu_iowait': CPU spent spent waiting for IO operations + - 'cpu_user': CPU time spent executing user tasks + - 'cpu_system': CPU time spent executing system tasks + - 'cpu_softirq': CPU time spent servicing soft interrupts + - 'cpu_guest': CPU time spent on guest tasks (such as VMs) + - 'uptime': Time (in seconds) since last boot + - 'packets_received': Amount of packets received + - 'packets_sent': Amount of packets sent + - 'connections': Total active connections From af29529a0644ee7b261a035f009667ac51c98ee2 Mon Sep 17 00:00:00 2001 From: Jeroen ter Heerdt Date: Sat, 14 Oct 2017 15:12:13 +0200 Subject: [PATCH 034/152] Changing clicksendaudio component name to clicksend_tts (#3617) * Changing clicksendaudio component name to clicksend_tts * Add redirect --- ...icksendaudio.markdown => notify.clicksend_tts.markdown} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename source/_components/{notify.clicksendaudio.markdown => notify.clicksend_tts.markdown} (87%) diff --git a/source/_components/notify.clicksendaudio.markdown b/source/_components/notify.clicksend_tts.markdown similarity index 87% rename from source/_components/notify.clicksendaudio.markdown rename to source/_components/notify.clicksend_tts.markdown index 66c4a1274ea..6f27d61ce51 100644 --- a/source/_components/notify.clicksendaudio.markdown +++ b/source/_components/notify.clicksend_tts.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "ClickSend" +title: "ClickSend text-to-speech" description: "Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant." date: 2017-10-04 00:00 sidebar: true @@ -10,10 +10,11 @@ footer: true logo: clicksend.png ha_category: Notifications ha_release: 0.55 +redirect_from: /components/notify.clicksendaudio/ --- -The `clicksendaudio` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. +The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`. @@ -21,7 +22,7 @@ To add ClickSend to your installation, add the following to your Home Assistant ```yaml notify: - - platform: clicksend + - platform: clicksend_tts name: ClickSend username: CLICKSEND_USERNAME api_key: CLICKSEND_API_KEY From 9a1e3d1658c9c00e90fc157f3d15fe9a407c2bce Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 14 Oct 2017 15:58:03 +0200 Subject: [PATCH 035/152] Add serial sensor docs --- source/_components/sensor.serial.markdown | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/_components/sensor.serial.markdown diff --git a/source/_components/sensor.serial.markdown b/source/_components/sensor.serial.markdown new file mode 100644 index 00000000000..d03daed3906 --- /dev/null +++ b/source/_components/sensor.serial.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Serial Sensor" +description: "Instructions how to integrate data from serial connected sensors into Home Assistant." +date: 2017-10-13 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. + +To check what kind of data is arriving at your serial port, use a command-line tool like `minicom` or `picocom` on Linux, on a macOS you can use `screen` or on Windows `putty`. + +```bash +$ sudo minicom -D /dev/ttyACM0 +``` + +To setup a serial sensor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: serial + port: /dev/ttyACM0 +``` + +{% configuration %} + port: + description: Local serial port where the sensor is connected and access is granted. + required: true + type: string + name: + description: Friendly name to use for the frontend. Default to "Serial sensor". + required: false + type: string +{% endconfiguration %} + + +## {% linkable_title `value_template` for Template sensor %} + +### {% linkable_title TMP36 %} + +{% raw %} +```yaml +"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}" +``` +{% endraw %} + + From dfb11dbd9d68f11bad8cd55ccb2e849126272f3d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 14 Oct 2017 15:59:45 +0200 Subject: [PATCH 036/152] Revert "Add serial sensor docs" This reverts commit 9a1e3d1658c9c00e90fc157f3d15fe9a407c2bce. --- source/_components/sensor.serial.markdown | 55 ----------------------- 1 file changed, 55 deletions(-) delete mode 100644 source/_components/sensor.serial.markdown diff --git a/source/_components/sensor.serial.markdown b/source/_components/sensor.serial.markdown deleted file mode 100644 index d03daed3906..00000000000 --- a/source/_components/sensor.serial.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Serial Sensor" -description: "Instructions how to integrate data from serial connected sensors into Home Assistant." -date: 2017-10-13 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_release: 0.56 -ha_iot_class: "Local Polling" ---- - -The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. - -To check what kind of data is arriving at your serial port, use a command-line tool like `minicom` or `picocom` on Linux, on a macOS you can use `screen` or on Windows `putty`. - -```bash -$ sudo minicom -D /dev/ttyACM0 -``` - -To setup a serial sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: serial - port: /dev/ttyACM0 -``` - -{% configuration %} - port: - description: Local serial port where the sensor is connected and access is granted. - required: true - type: string - name: - description: Friendly name to use for the frontend. Default to "Serial sensor". - required: false - type: string -{% endconfiguration %} - - -## {% linkable_title `value_template` for Template sensor %} - -### {% linkable_title TMP36 %} - -{% raw %} -```yaml -"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}" -``` -{% endraw %} - - From 051997c9b84f2c74abd45968f6dce1323fdb98e0 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Sat, 14 Oct 2017 11:25:33 -0400 Subject: [PATCH 037/152] Add print friendly style overrides (#3621) --- sass/custom/_print.scss | 39 +++++++++++++++++++++++++++++++++ sass/screen.scss | 1 + source/_includes/site/head.html | 2 +- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 sass/custom/_print.scss diff --git a/sass/custom/_print.scss b/sass/custom/_print.scss new file mode 100644 index 00000000000..fcf30d87d15 --- /dev/null +++ b/sass/custom/_print.scss @@ -0,0 +1,39 @@ +@media print { + + /* General Overrides */ + header div.grid__item nav { + display: none; + } + aside#sidebar { + display: none; + } + .grid__item { + display: block; + width: 100%; + } + + /* Components List */ + div.filter-button-group { + display: none; + } + .hass-option-cards.show-items { + display: block; + } + .hass-option-cards.show-items a.option-card { + display: block; + opacity: 1; + width: 100%; + height: auto; + min-height: 80px; + margin-bottom: 8px; + } + .hass-option-cards.show-items a.option-card .img-container { + float: left; + width: 33%; + text-align: center; + } + .hass-option-cards.show-items a.option-card div.title { + height: 1.5em; + margin-top: 8px; + } +} \ No newline at end of file diff --git a/sass/screen.scss b/sass/screen.scss index 5fed2c748de..78c73c19af2 100644 --- a/sass/screen.scss +++ b/sass/screen.scss @@ -2,3 +2,4 @@ @import 'custom/paulus'; @import 'custom/component_page'; @import 'custom/syntax'; +@import 'custom/print'; \ No newline at end of file diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index 0c2a76007fc..b78976a342a 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -32,7 +32,7 @@ - + From 018890a3b89031d50aa13becfc3922a11c2f623a Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 14 Oct 2017 18:16:28 +0100 Subject: [PATCH 038/152] Rewriting the Z-Wave documentation (#3467) * Z-Wave documents refactoring * Continuing to update documentation for Z-Wave * Wakeup correction Note that it only applies to devices that can be battery powered (for example, my Aeotec sensor is USB powered, but as it supports Wake the option is shown) * Polling impact notes Example of what the impact of polling can be * Fix object_id to entity_id --- source/_docs/z-wave.markdown | 249 +------------------ source/_docs/z-wave/adding.markdown | 36 +++ source/_docs/z-wave/control-panel.markdown | 106 ++++++++ source/_docs/z-wave/controllers.markdown | 24 +- source/_docs/z-wave/device-specific.markdown | 58 +++-- source/_docs/z-wave/devices.markdown | 74 ++++++ source/_docs/z-wave/entities.markdown | 179 +++++++++++++ source/_docs/z-wave/events.markdown | 106 ++++++++ source/_docs/z-wave/installation.markdown | 159 ++++++++++++ source/_docs/z-wave/query-stage.markdown | 32 +++ source/_docs/z-wave/services.markdown | 59 +++++ source/_docs/z-wave/settings.markdown | 31 --- 12 files changed, 812 insertions(+), 301 deletions(-) create mode 100644 source/_docs/z-wave/adding.markdown create mode 100644 source/_docs/z-wave/control-panel.markdown create mode 100644 source/_docs/z-wave/devices.markdown create mode 100644 source/_docs/z-wave/entities.markdown create mode 100644 source/_docs/z-wave/events.markdown create mode 100644 source/_docs/z-wave/installation.markdown create mode 100644 source/_docs/z-wave/query-stage.markdown create mode 100644 source/_docs/z-wave/services.markdown delete mode 100644 source/_docs/z-wave/settings.markdown diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 2e756036358..f6f4dd7b5d5 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -1,8 +1,8 @@ --- layout: page title: "Z-Wave" -description: "Instructions how to integrate your existing Z-Wave within Home Assistant." -date: 2016-02-27 19:59 +description: "Using Z-Wave with Home Assistant." +date: 2017-09-21 10:59 sidebar: true comments: false sharing: true @@ -10,249 +10,24 @@ footer: true redirect_from: /getting-started/z-wave/ --- -[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host. +[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](/docs/z-wave/controllers/)) to be plugged into the host. There is currently support for climate, covers, lights, locks, sensors, switches, and thermostats. All will be picked up automatically after configuring this platform. -Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks. +Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks. -### {% linkable_title Installation %} +## {% linkable_title What is Z-Wave %} -As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. +Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. -There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): +There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. -```bash -$ sudo apt-get install libudev-dev -``` +The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits. -### {% linkable_title Configuration %} +## {% linkable_title What do you need to use Z-Wave %} -```yaml -# Example configuration.yaml entry -zwave: - usb_path: /dev/ttyUSB0 -``` +There are 2 basic things you'll need to use Z-Wave, a Z-Wave [controller](/docs/z-wave/controllers/) and one or more [devices](/docs/z-wave/devices/). -Configuration variables: +### {% linkable_title Regional differences %} -- **usb_path** (*Optional*): The port where your device is connected to your Home Assistant host. -- **network_key** (*Optional*): The 16-byte network key in the form `"0x01,0x02..."` used in order to connect securely to compatible devices. -- **config_path** (*Optional*): The path to the Python OpenZWave configuration files. Defaults to the 'config' that is installed by python-openzwave -- **autoheal** (*Optional*): Allows disabling auto Z-Wave heal at midnight. Defaults to True. -- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. -- **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format: - - **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. - - **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. - - **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False. - - **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds. - - **invert_openclose_buttons** (*Optional*): Inverts function of the open and close buttons for the cover domain. Defaults to `False`. -- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to `False`. -- **new_entity_ids** (*Optional*): Switch to new entity_id generation. Defaults to `True`. - -To find the path of your Z-Wave USB stick or module, run: - -```bash -$ ls /dev/ttyUSB* -``` - -Or, if there is no result, try to find detailed USB connection info with: -```bash -$ dmesg | grep USB -``` - -Or, on some other systems (such as Raspberry Pi), use: - -```bash -$ ls /dev/ttyACM* - -# If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with: -$ sudo usermod -a -G dialout homeassistant -``` - -Or, on some other systems (such as Pine 64), use: - -```bash -$ ls /dev/ttyS* -``` - -Or, on macOS, use: - -```bash -$ ls /dev/cu.usbmodem* -``` - -

-Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). -

- -

-After installing and configuring Z-Wave, Home Assistant will try to install required Python Z-Wave libraries during startup (if they are not already installed). This process might take anywhere between 5 to 25 minutes depending upon various factors. Please be patient, and let it run! This happens only once and the subsequent restarts will have no impact in performance. -

- -### {% linkable_title Adding Devices %} - -To add a Z-Wave device to your system, go to the Z-Wave panel in the Home Assistant frontend and click the Add Node button in the Z-Wave Network Management card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device. - -

-Some Z-Wave controllers, like Aeotec ZW090 Z-Stick Gen5, have ability to add devices to the network using their own contol buttons. This method should be avoided as it is prone to errors. Devices added to the Z-Wave network using this method may not function well. -

- -### {% linkable_title Adding Security Devices %} - -Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. - -An easy script to generate a random key: -```bash -cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -``` - -### {% linkable_title Battery Powered Devices %} - -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. - -### {% linkable_title Events %} - -#### {% linkable_title zwave.network_complete %} - -Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network. - -```yaml - - alias: Z-Wave network is complete - trigger: - platform: event - event_type: zwave.network_complete -``` - -#### {% linkable_title zwave.network_ready %} - -Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake. - -```yaml - - alias: Z-Wave network is ready - trigger: - platform: event - event_type: zwave.network_ready -``` - -#### {% linkable_title zwave.network_start %} - -Home Assistant will trigger an event when the Z-Wave network is set up to be started. - -```yaml - - alias: Z-Wave network is starting - trigger: - platform: event - event_type: zwave.network_start -``` - -#### {% linkable_title zwave.network_stop %} - -Home Assistant will trigger an event when the Z-Wave network is stopping. - -```yaml - - alias: Z-Wave network is stopping - trigger: - platform: event - event_type: zwave.network_stop -``` - -#### {% linkable_title zwave.node_event %} -Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations. - -Example: - -```yaml - - alias: Minimote Button Pressed - trigger: - platform: event - event_type: zwave.node_event - event_data: - entity_id: zwave.aeon_labs_minimote_1 - basic_level: 255 -``` - -The *object_id* and *basic_level* of all triggered events can be seen in the console output. - -#### {% linkable_title zwave.scene_activated %} - -Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch): - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: Turn on Desk light - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller_8 - scene_id: 11 -``` - -Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button: - -```yaml -# Example configuration.yaml automation entry -automation - - alias: 'Dining room dimmer - double tap up' - trigger: - - event_type: zwave.scene_activated - platform: event - event_data: - entity_id: zwave.dining_room_cans - scene_id: 1 - scene_data: 3 -``` - -The *object_id* and *scene_id* of all triggered events can be seen in the console output. - -For more information on HomeSeer devices and similar devices, please see the [device specific page](https://home-assistant.io/docs/z-wave/device-specific/#homeseer-switches). - -### {% linkable_title Services %} - -The `zwave` component exposes multiple services to help maintain the network. - -| Service | Description | -| ------- | ----------- | -| add_node | Put the Z-Wave controller in inclusion mode. Allows one to add a new device to the Z-Wave network.| -| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows one to add a new device with secure communications to the Z-Wave network. | -| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | -| change_association | Add or remove an association in the Z-Wave network | -| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | -| print_config_parameter | Prints Z-Wave node's config parameter value to the log. | -| print_node | Print all state of Z-Wave node. | -| refresh_entity| Refresh Z-Wave entity by refreshing dependent values.| -| refresh_node| Refresh Z-Wave node. | -| remove_node | Put the Z-Wave controller in exclusion mode. Allows one to remove a device from the Z-Wave network.| -| rename_node | Sets a node's name. Requires a `node_id` and `name` field. | -| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. | -| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail.| -| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.| -| reset_node_meters | Reset a node's meter values. Only works if the node supports this. | -| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). | -| set_poll_intensity | Lets the user set the polling intensity of a value. Changes the polling intensity without the need of a restart. This does not persist over restarts. To keep the setting over restarts, use the Z-Wave entity-card to set the config also. -| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.| -| start_network | Starts the Z-Wave network.| -| stop_network | Stops the Z-Wave network.| -| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead."| - -The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. If you're having issues with your Z-Wave network, try disabling this automation. - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: soft reset at 2:30am - trigger: - platform: time - at: '2:30:00' - action: - service: zwave.soft_reset - - - alias: heal at 2:31am - trigger: - platform: time - at: '2:31:00' - action: - service: zwave.heal_network -``` +There are 12 different regions for Z-Wave devices, which relates to the frequency the devices use. There is overlap between the regions, but you should ensure that you buy devices for your region. Wikipedia has a list of the [frequencies used](https://en.wikipedia.org/wiki/Z-Wave#Radio_frequencies). \ No newline at end of file diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown new file mode 100644 index 00000000000..0ad7011a7cd --- /dev/null +++ b/source/_docs/z-wave/adding.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Z-Wave Devices - Adding and Removing" +description: "How to add and remove Z-Wave devices." +date: 2016-02-27 19:59 +sidebar: true +comments: false +sharing: true +footer: true +--- + +To add (include) a Z-Wave [device](/docs/z-wave/devices/) to your system, go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend and click the **Add Node** button in the *Z-Wave Network Management* card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device. + +

+Don't use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports. +

+ +When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible. + +## {% linkable_title Adding Security Devices %} + +Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. + +An easy script to generate a random key: +```bash +cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +``` + +

+Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. +

+ +## {% linkable_title Removing Devices %} + +To remove (exclude) a Z-Wave device from your system, go to the Z-Wave control panel in the Home Assistant frontend and click the **Remove Node** button in the *Z-Wave Network Management* card. This will place the controller in exclusion mode, after which you should activate your device to be excluded by following the instructions provided with the device. + diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown new file mode 100644 index 00000000000..0da748237b1 --- /dev/null +++ b/source/_docs/z-wave/control-panel.markdown @@ -0,0 +1,106 @@ +--- +layout: page +title: "Z-Wave Control Panel" +description: "How to use the Z-Wave control panel." +date: 2017-09-21 12:49 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /getting-started/z-wave-panel/ +--- + +## {% linkable_title Z-Wave Network Management %} + +Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices from your network. + +* **Add Node** puts the controller into inclusion mode, so you can include (add) a device to your Z-Wave network +* **Add Node Secure** puts the controller into secure inclusion mode (this requires that you've created a [security key](/docs/z-wave/adding#sdding-security-devices)) +* **Remove Node** puts the controller into exclusion mdoe, so you can exclude (remove) a device. Note that you can exclude a non-secure device that's been added to another network +* **Cancel Command** cancels any of the above + +* **Heal Network** tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. +* **Start Network** starts the Z-Wave network +* **Stop Network** stops the Z-Wave network +* **Soft Reset** tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command, and may cause the Z-Wave network to hang. +* **Test Network** tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead". + +## {% linkable_title Z-Wave Node Management %} + +* **Refresh Node** refreshes the information on the node and its entities. If used on a battery powered device, the device will first need to wake for this to work. +* **Remove Failed Node** will remove a failed node from the network. The node needs to be on the controller's Failed Node List (marked as `is_failed: true`), otherwise this command will fail. +* **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. +* **Print Node** prints all state of Z-Wave node to the console log + +* **Rename Node** sets a node's name + +

+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. +

+ +#### {% linkable_title Entities of this node %} + +This is a dropdown where you can select all the entities of this node. Once selected you can then use: + +* **Refresh Entity** to refresh just that entity's values +* **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc) + +Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network. + +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 +* **new_entity_id** In 0.47, Home Assistant introduced a new naming convention for entities, this shows the new naming convention +* **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 +* **old_entity_id** If `new_entity_ids: false` has been configured, then this is the entity_id that will be used. Support for this will be removed in the future +* **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 %} + +Allows you to rename the entities of the node. For example, maybe for the sensor `front_door`, you want to rename the value `seismic_intensity` to `shake`. The `entity_id` for that sensor will then change from `sensor.front_door_seismic_intensity` to `sensor.front_door_shake`. + +### {% linkable_title Node group associations %} + +Where the device supports the *Association* command class, this will allow you to associate the device with another. OpenZWave will automatically associate the device with the controller, to provide instant updates when the device doesn't support the *Hail* command class. + +You can use this to enable one device to directly control another. This is primarily useful for remote controls that operate lights or switches, or where you want to have multiple devices operate as one. + +There may be multiple groups, that are used for different purposes. The manual of your device will explain what each group is for. + +### {% linkable_title Node config options %} + +You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered. + +Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. + +## {% linkable_title OZW Log %} + +Select **Refresh** to display the log if you need it to check activities. diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 76831a22993..cb09d7c25f9 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -7,23 +7,23 @@ sidebar: true comments: false sharing: true footer: true -redirect_from: /getting-started/z-wave-controllers/ --- -Z-Wave is a popular home automation protocol that is not always straightforward to setup. This page will try to help you make sense of it all. - -

-Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expedite this process. -

- ## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %} +You need to have a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) installed. + | Device | Works on Linux | Works on Windows | Works on OSX | |-------------------------|----------------|------------------|--------------| +| Aeotec Z-Stick | ✓ | | | | Aeotec Z-Stick Series 2 | ✓ | | | | Aeotec Z-Stick Series 5 | ✓ | | ✓ | | Pine64 Z-Wave Module | ✓ | | | | Razberry GPIO Module | ✓ | | | +| Seluxit ViaSens 100 | | | | +| Sigma Designs UZB Stick | | | | +| Tricklestar | | | | +| Vision USB Stick | | | | | ZWave.me UZB1 | ✓ | | | ## {% linkable_title Stick Alternatives %} @@ -32,3 +32,13 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support - [Vera](/components/vera/) - [Wink](/components/wink/) + +## {% linkable_title Controller Notes } + +### {% linkable_title Aoetec Stick } + +By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick) + +### {% linkable_title Razberry Board } + +You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board) diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index 0b6ef4ee261..a73ffd58e32 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Z-Wave Device Specific Settings" -description: "Extended instructions how to setup Z-Wave." +description: "Notes for specific Z-Wave devices." date: 2016-03-24 08:49 -0700 sidebar: true comments: false @@ -10,43 +10,50 @@ footer: true redirect_from: /getting-started/z-wave-device-specific/ --- -## {% linkable_title Motion or alarm sensors %} +## {% linkable_title Device Categories %} + +### {% linkable_title Motion or alarm sensors %} In order for Home Assistant to recognize the sensor properly, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`. These devices will either show as a binary sensor or a sensor called `Alarm xxxx` and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual. -As of version 0.30 you can set the settings of a Z-Wave device through the dev_service page of Home Assistant with the service: `zwave/set_config_parameter`. +You can set the settings of the Z-Wave device through the Z-Wave control panel. -The following parameters can be entered: -- **node_id** (*Required*): The node_id of the device that you are going to set a parameter to. -- **parameter** (*Required*): The index number of the parameter to be set. Refer to device manual or zwcfg_[home_id].xml -- **value** (*Required*): The value to set the parameter to. Refer to device manual or zwcfg_[home_id].xml -- **size** (*Optional*): The size of the value. It is normally not needed to specify this parameter, but in some cases it's needed. Check OZW.log for details on this. +### {% linkable_title Locks and other secure devices %} -You should check OZW.log to see if your new setting has been set. +These devices require a network key to be set for the Z-Wave network before they are paired, using the **Add Node Secure** option. -Example entry in dev-service, setting binary reports for an Aeotec Multisensor 6: +Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection. +### {% linkable_title Specific Devices %} -```yaml -# Example entry in dev-service -{ -"node_id": 42, -"parameter": 5, -"value": 2 -} +### {% linkable_title Aeotec Z-Stick %} + +It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off. + +Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected. + +Turn off "Disco lights": + +```bash +$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00 ``` -## {% linkable_title Locks and other secure devices %} +Turn on "Disco lights": -These devices require a network key to be set for the Z-Wave network before they are paired. This key is set in OpenZWave's `options.xml` which is located in OpenZWave's directory. This should also be the same directory as `config_path:` in your `configuration.yaml`. If it's not, make sure you have the same values in all the files you are using. -The option is commented out by default in `options.xml` and is a default key. Make your own unique key. The key is in Hexadecimals. -It is best to pair these devices in OpenZWave Control Panel or another Z-Wave tool that can show you logs while pairing. Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory. -You should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection. If you use OpenZWave Control Panel to pair, test the device before you save the configuration. -Make sure you copy the newly saved `zwcfg_[home_id].xml`into your Home Assistant configuration directory. +```bash +$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00 +``` +### {% linkable_title Razberry Board %} -##### {% linkable_title Aeon Minimote %} +You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`, then rebooting: + +``` +dtoverlay=pi3-disable-bt +``` + +### {% linkable_title Aeon Minimote %} Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. @@ -124,8 +131,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl scene_id: 8 ``` - -##### {% linkable_title HomeSeer Switches %} +### {% linkable_title HomeSeer Switches %} For the HomeSeer devices specifically, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown new file mode 100644 index 00000000000..13d2966b4f4 --- /dev/null +++ b/source/_docs/z-wave/devices.markdown @@ -0,0 +1,74 @@ +--- +layout: page +title: "Z-Wave Devices" +description: "What you need to know about Z-Wave devices." +date: 2017-09-21 11:49 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /getting-started/z-wave-devices/ +--- + +## {% linkable_title Devices, Nodes, Entities, what? %} + +The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices: + +* [Controllers](/docs/z-wave/controllers) - all Z-Wave networks need to have one of these, though some may have two (a primary and a secondary) +* Sensors - devices that tell you about the environment, these could be flood sensors, motion sensors, temperature sensors and so on +* Actors or actuators - devices that change their environment, for example light switches, dimmers, thermostats (many of these will also have a sensor function) + +Many sensors and actors can directly control other devices through a capability called *association*, without the use of an automation, these are known as *routing slaves*. This will be a very simple control, such as turning a light on when a motion sensor is activated, and off when it stops detecting motion. + +The *node* is the presence of the device on the Z-Wave mesh. Once you've added a device to Home Assistant, the node is represented by an `entity_id` that starts with `zwave`. + +The *entity* is an individual component of the node. It may be a sensor that you read from, or a control that you operate. For any node, there will be at least one entity (for the node itself) and if it exposes any controls or sensors there will be at least one entity per control or sensor. The [entities](/docs/z-wave/entities) that are created depend on the Command Class the device supports. + +## {% linkable_title Z-Wave, Plus, Security 2 %} + +There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible. + +### {% linkable_title Z-Wave Plus %} + +The key improvements are: + +* Improved battery life (50% increase) +* Improved range (50% increase) if all your devices are Z-Wave Plus +* Higher bandwidth and improved noise immunity if all your devices are Z-Wave Plus +* Improved self-healing and fault tolerance + +### {% linkable_title Z-Wave Security 2 %} + +From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (September 2017) OpenZWave does not support the S2 framework. + +## {% linkable_title Device power %} + +Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time. + +Battery powered devices spend most of their time asleep, unable to relay traffic, to be queried, or receive changes. Changes sent while a device is asleep will be queued and sent the next time the device wakes. Details of the default wake interval, and how to manually wake the device (if supported) will be detailed in the devices's manual. Some battery powered devices (primarily locks and thermostats) support beaming (the *Beam* command class) that allows them to be remotely woken. This does require that all devices in the network responsible for relaying the commands between the controller and the device also support beaming. + +

+The Z-Wave capability *routing* doesn't mean the device routes traffic, it actually means that it's able to control other devices. You'll see this capability on most remotes and switches. +

+ +## {% linkable_title Instant Status %} + +Older designs of Z-Wave devices may not support *Instant Status* (the *Hail* command class), because of a patent that was held by Lutron Electronics. Some manufacturers paid to use it, others didn't and so those devices may not report on changes. That patent expired in 2016, so new designs should support this. + +As long as your device lists Hail or Association in its Controlled Command Classes, then you'll get instant status updates. Devices that list Central Scene in their Controlled Command Classes in theory will also work this way, once OpenZWave supports the Central Scene class. You can check your device on the [Z-Wave alliance](https://products.z-wavealliance.org/) site, looking at the **Command Classes** link, then at the **Controlled Command Classes** section. + +## {% linkable_title Polling %} + +Where a device doesn't send updates on status changes to the controller, you can work around this by using a thing called Polling. That causes the controller to ask the device to provide an update on all its sensors and states. This will cause a lot of traffic on the network, and if you poll too many devices too quickly, you can effectively break your Z-Wave network. Polling should only be used where there is no other choice, and you should use as large a polling interval as possible. Ideally you should replace the device. + +For example, with `polling_interval=60000` (which is the default) if you have 10 devices that are being polled, if a device can receive and acknowledge the poll within one second, then it will take 10 seconds to complete the polling list, which leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that's available for normal traffic. + +## {% linkable_title Central Scene support %} + +The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches). + +## {% linkable_title Is my device supported %} + +You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave github](https://github.com/OpenZWave/open-zwave/tree/master/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months. + +Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed. diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown new file mode 100644 index 00000000000..0d48e989d66 --- /dev/null +++ b/source/_docs/z-wave/entities.markdown @@ -0,0 +1,179 @@ +--- +layout: page +title: "Z-Wave Entity Naming" +description: "A summary of common entity names." +date: 2017-09-21 10:59 +sidebar: true +comments: false +sharing: true +footer: true +--- + +

+This is a work in progress, based upon reports in the forum, the author's own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here, or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS). +

+ +## {% linkable_title Binary Sensor %} + +Devices that support the Binary Sensor command class will create one (or more) entities starting with `binary_sensor`. For example, if the node is `door_sensor` then the binary sensor entity will be `binary_sensor.door_sensor`. + +These will normally be `on` when the sensor is active, otherwise they will be `off`. Some devices use `on` for closed, and some use `on` for open, and some devices allow you to change how they report. + +## {% linkable_title Alarm %} + +This is for a single purpose sensor, multi sensors are explained under Multi Sensor. + +Devices (usually sensors) that support the Alarm command class will create entities starting with `sensor`, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector `lounge` will have an entity `sensor.lounge_smoke`, and possibly also `sensor.lounge_alarm_type` and `sensor.lounge_alarm_level`. If the device creates a `binary_sensor` entity, it is recommended to use that rather then the `sensor` entity. + +### {% linkable_title Alarm Type %} + +- **alarm_type**: Reports the type of the sensor + - **0**: General purpose + - **1**: Smoke sensor + - **2**: Carbon Monoxide (CO) sensor + - **3**: Carbon Dioxide (CO2) sensor + - **4**: Heat sensor + - **5**: Water leak sensor + - **6**: Access control + +### {% linkable_title Alarm Level %} + +The meaning of the `alarm_level` entity depends on the nature of the alarm sensor + +#### {% linkable_title Smoke, CO, and CO2 %} + + - **1**: Detection - will include a Node Location Report + - **2**: Detection (unknown location) + - **254**: Unknown event + +#### {% linkable_title Heat %} + + - **1**: Overheat detected - will include a Node Location Report + - **2**: Overheat detected (unknown location) + - **3**: Rapid temperature rise - will include a Node Location Report + - **4**: Rapid temperature rise (unknown location) + - **5**: Underheat detection - will include a Node Location Report + - **6**: Underheat detection (unknown location) + - **254**: Unknown event + +#### {% linkable_title Water leak %} + + - **1**: Water leak detected - will include a Node Location Report + - **2**: Water leak detected (unknown location) + - **3**: Water level dropped - will include a Node Location Report + - **4**: Water level dropped (unknown location) + - **254**: Unknown event + +#### {% linkable_title Access control %} + + - **1**: Manual lock + - **2**: Manual unlock + - **3**: RF lock + - **4**: RF unlock + - **5**: Keypad lock - will include the User Identifier of the User Code Report + - **6**: Keypad unlock - will include the User Identifier of the User Code Report + - **254**: Unknown event + +#### {% linkable_title Burglar %} + + - **1**: Intrusion - will include a Node Location Report + - **2**: Intrusion (unknown location) + - **3**: Tampering (case opened) + - **4**: Tampering (invalid code) + - **5**: Glass break - will include a Node Location Report + - **6**: Glass break (invalid code) + - **254**: Unknown event + +#### {% linkable_title Power Management %} + + - **1**: Power applied + - **2**: AC disconnected + - **3**: AC re-connected + - **4**: Surge detection + - **5**: Voltage drop or drift + - **254**: Unknown event + +#### {% linkable_title System Alarm %} + + - **1**: System hardware failure + - **2**: System software failure + - **254**: Unknown event + +#### {% linkable_title Emergency Alarm %} + + - **1**: Contact Police + - **2**: Contact Fire Service + - **3**: Contact Medical Service + - **254**: Unknown event + +#### {% linkable_title Alarm Clock %} + + - **1**: Wake up + - **254**: Unknown event + +### {% linkable_title Access Control %} + +- **access_control**: These *may* vary between brands + - **22**: Open + - **23**: Closed + - **254**: Deep sleep + - **255**: Case open + +If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: + +``` +sensor: + - platform: template + sensors: + YOUR_SENSOR: + sensor_class: opening + friendly_name: "Friendly name here" + value_template: >- + {%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%} + open + {%- else -%} + closed + {%- endif -%} +``` + +### {% linkable_title Burglar %} + +- **burglar**: These *may* vary between brands + - **0**: Not active + - **2**: Smoke (?) + - **3**: Tamper + - **8**: Motion + - **22**: Open + - **23**: Closed + - **254**: Deep sleep + - **255**: Case open + +If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: + +``` +sensor: + - platform: template + sensors: + YOUR_SENSOR: + sensor_class: motion + friendly_name: "Friendly name here" + value_template: >- + {%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%} + on + {%- else -%} + off + {%- endif -%} +``` + +### {% linkable_title Source Node ID %} + +- **sourcenodeid**: Reports the sensor that generated the alarm - this is only valid for Zensor Net based devices + +## {% linkable_title Multisensor %} + +Multi sensor devices will create a number of entities, one for each sensor, potentially a `binary_sensor` entity, and probably also `alarm_type` and `alarm_level` entities. + +These are all generally self explanatory, however it's worth noting: + +- **ultraviolet** sensors will usually report zero indoors, as UVB is blocked by glass +- **luminance** sensors should report in [Lux](https://en.wikipedia.org/wiki/Lux) diff --git a/source/_docs/z-wave/events.markdown b/source/_docs/z-wave/events.markdown new file mode 100644 index 00000000000..c3b63a1282f --- /dev/null +++ b/source/_docs/z-wave/events.markdown @@ -0,0 +1,106 @@ +--- +layout: page +title: "Z-Wave Events" +description: "Events generated by the Z-Wave component." +date: 2017-09-21 10:59 +sidebar: true +comments: false +sharing: true +footer: true +--- + +## {% linkable_title zwave.network_complete %} + +Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network. + +```yaml + - alias: Z-Wave network is complete + trigger: + platform: event + event_type: zwave.network_complete +``` + +## {% linkable_title zwave.network_ready %} + +Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake. + +```yaml + - alias: Z-Wave network is ready + trigger: + platform: event + event_type: zwave.network_ready +``` + +## {% linkable_title zwave.network_start %} + +Home Assistant will trigger an event when the Z-Wave network is set up to be started. + +```yaml + - alias: Z-Wave network is starting + trigger: + platform: event + event_type: zwave.network_start +``` + +## {% linkable_title zwave.network_stop %} + +Home Assistant will trigger an event when the Z-Wave network is stopping. + +```yaml + - alias: Z-Wave network is stopping + trigger: + platform: event + event_type: zwave.network_stop +``` + +## {% linkable_title zwave.node_event %} +Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations. + +Example: + +```yaml + - alias: Minimote Button Pressed + trigger: + platform: event + event_type: zwave.node_event + event_data: + entity_id: zwave.aeon_labs_minimote + basic_level: 255 +``` + +The *entity_id* and *basic_level* of all triggered events can be seen in the console output. + +## {% linkable_title zwave.scene_activated %} + +Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch): + +```yaml +# Example configuration.yaml automation entry +automation: + - alias: Turn on Desk light + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller + scene_id: 11 +``` + +Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button: + +```yaml +# Example configuration.yaml automation entry +automation + - alias: 'Dining room dimmer - double tap up' + trigger: + - event_type: zwave.scene_activated + platform: event + event_data: + entity_id: zwave.dining_room_cans + scene_id: 1 + scene_data: 3 +``` + +The *entity_id* and *scene_id* of all triggered events can be seen in the console output. + +For more information on HomeSeer devices and similar devices, please see the [device specific page](/docs/z-wave/device-specific/#homeseer-switches). diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown new file mode 100644 index 00000000000..c90787f7294 --- /dev/null +++ b/source/_docs/z-wave/installation.markdown @@ -0,0 +1,159 @@ +--- +layout: page +title: "Z-Wave" +description: "Installation of the Z-Wave component." +date: 2017-09-21 10:00 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /getting-started/z-wave-installation/ +--- + +As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. This also introduced the integrated Z-Wave control panel, removing the need for the OpenZWave control panel. + +There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): + +```bash +$ sudo apt-get install libudev-dev +``` + +

+The installation of python-openzwave can take half an hour or more on a Raspbery Pi. +

+ +## {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +zwave: + usb_path: /dev/ttyUSB0 +``` + +{% configuration zwave %} +usb_path: + description: The port where your device is connected to your Home Assistant host. + required: false + type: string + default: /zwaveusbstick +network_key: + description: The 16-byte network key in the form `"0x01, 0x02..."` used in order to connect securely to compatible devices. + required: false + type: string + default: None +config_path: + description: The path to the Python OpenZWave configuration files. + required: false + type: string + default: the 'config' that is installed by python-openzwave +autoheal: + description: Allows disabling auto Z-Wave heal at midnight. + required: false + type: boolean + default: True +polling_interval: + description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. + required: false + type: integer + default: 60000 +debug: + description: Print verbose z-wave info to log. + required: false + type: boolean + default: False +new_entity_ids: + description: Switch to new entity_id generation. + required: false + type: boolean + default: True +device_config: + description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. + required: false + type: string, list + keys: + ignored: + description: Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. + required: false + type: boolean + default: False + polling_intensity: + description: Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. + required: false + type: integer + default: 0 + refresh_value: + description: Enable refreshing of the node value. Only the light component uses this. + required: false + type: boolean + default: False + delay: + description: Specify the delay for refreshing of node value. Only the light component uses this. + required: false + type: integer + default: 2 + invert_openclose_buttons: + description: Inverts function of the open and close buttons for the cover domain. + required: false + type: boolean + default: False +{% endconfiguration %} + +### {% linkable_title Finding the controller path on Linux %} + +To find the path of your Z-Wave USB stick or module, connect it to your system and run: + +```bash +$ ls -ltr /dev/tty*|tail -n 1 +``` + +That will give you a line that looks something like this: + +```bash +crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0 +``` + +Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like `/dev/ttyAMA0` or `/dev/ttyACM0`). The number will be zero for the first device connected, and higher numbers for later devices. + +Or, if there is no result, try to find detailed USB connection info with: + +```bash +$ dmesg | grep USB +``` + +If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with: + +```bash +$ sudo usermod -a -G dialout homeassistant +``` + +

+The output from `ls -ltr` above contains the following information +The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`. +

+ +#### {% linkable_title Creating a Persistent Device Path } + +Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). + +### {% linkable_title Finding the controller path on macOS %} + +On macOS you can find the USB stick with: + +```bash +$ ls /dev/cu.usbmodem* +``` + +### {% linkable_title Network Key %} + +Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. + +An easy script to generate a random key: +```bash +cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +``` + +Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. + +## {% linkable_title First Run %} + +Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may speed up this process. diff --git a/source/_docs/z-wave/query-stage.markdown b/source/_docs/z-wave/query-stage.markdown new file mode 100644 index 00000000000..2037963e455 --- /dev/null +++ b/source/_docs/z-wave/query-stage.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Z-Wave Query Stage" +description: "What are the Query Stages." +date: 2017-09-21 11:49 +sidebar: true +comments: false +sharing: true +footer: true +--- + +| Stage | Description | +|------------------------|--------------------------------------------------------------------| +| None | Query process hasn't started for this node | +| ProtocolInfo | Retrieve protocol information | +| Probe | Ping device to see if alive | +| WakeUp | Start wake up process if a sleeping node | +| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us | +| NodeInfo | Retrieve info about supported, controlled command classes | +| NodePlusInfo | Retrieve ZWave+ info and update device classes | +| SecurityReport | Retrieve a list of Command Classes that require Security | +| ManufacturerSpecific2 | Retrieve manufacturer name and product ids | +| Versions | Retrieve version information | +| Instances | Retrieve information about multiple command class instances | +| Static | Retrieve static information (doesn't change) | +| CacheLoad | Ping a device upon restarting with cached config for the device | +| Associations | Retrieve information about associations | +| Neighbors | Retrieve node neighbor list | +| Session | Retrieve session information (changes infrequently) | +| Dynamic | Retrieve dynamic information (changes frequently) | +| Configuration | Retrieve configurable parameter information (only done on request) | +| Complete | Query process is completed for this node | diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown new file mode 100644 index 00000000000..84ff12b01f1 --- /dev/null +++ b/source/_docs/z-wave/services.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Z-Wave Services" +description: "Services exposed by the Z-Wave component." +date: 2017-09-21 10:59 +sidebar: true +comments: false +sharing: true +footer: true +--- + +The `zwave` component exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel. + +| Service | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. | +| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. | +| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | +| change_association | Add or remove an association in the Z-Wave network | +| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | +| print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. | +| print_node | Print all states of Z-Wave node. | +| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. | +| refresh_node | Refresh the Z-Wave node. | +| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. | +| rename_node | Sets a node's name. Requires a `node_id` and `name` field. | +| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. | +| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. | +| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. | +| reset_node_meters | Reset a node's meter values. Only works if the node supports this. | +| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). | +| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. | +| start_network | Starts the Z-Wave network. | +| stop_network | Stops the Z-Wave network. | +| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." | + +The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation. + +

+Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. +

+ +```yaml +# Example configuration.yaml automation entry +automation: + - alias: test at 2:30am + trigger: + platform: time + at: '2:30:00' + action: + service: zwave.test_network + + - alias: heal at 2:32am + trigger: + platform: time + at: '2:32:00' + action: + service: zwave.heal_network +``` diff --git a/source/_docs/z-wave/settings.markdown b/source/_docs/z-wave/settings.markdown deleted file mode 100644 index fecba91fd50..00000000000 --- a/source/_docs/z-wave/settings.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Z-Wave Settings" -description: "Extended instructions how to setup Z-Wave." -date: 2016-03-24 08:49 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/z-wave-settings/ ---- - -You may wish to modify the Z-Wave settings in your `ozw*.xml` file (stored in the `.homeassistant` configuration directory), or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image. - -The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the `.homeassistant` configuration directory acts as a settings/values cache for the Z-Wave network, so modifying it directly won't change the network values. The [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel) writes values directly to the network and will provide you with an updated `.xml` file to overwrite in your `.homeassistant` configuration directory. This is the most foolproof way to make modifications to your Z-Wave devices. - -It's totally normal for your Z-Wave stick (Aeon Aeotec Z-Stick Gen5 for example) to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off. - -Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected. - -Turn off "Disco lights": - -```bash -$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00 -``` - -Turn on "Disco lights": - -```bash -$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00 -``` From 347f0913ab796b0505c6628ab09c147a080223b2 Mon Sep 17 00:00:00 2001 From: Kevin Fronczak Date: Sat, 14 Oct 2017 13:37:06 -0400 Subject: [PATCH 039/152] Docs for uptime sensor (#3614) * Docs for uptime sensor * Update platform name --- source/_components/sensor.uptime.markdown | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 source/_components/sensor.uptime.markdown diff --git a/source/_components/sensor.uptime.markdown b/source/_components/sensor.uptime.markdown new file mode 100644 index 00000000000..5aa633d57a9 --- /dev/null +++ b/source/_components/sensor.uptime.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Uptime Sensor" +description: "Instructions how to integrate an uptime sensor into Home Assistant." +date: 2017-10-13 10:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Pushing" +logo: home-assistant.png +ha_release: 0.56 +--- + + +The `uptime` sensor platform displays the time since the last Home Assistant restart. + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: uptime +``` + +Configuration variables: + +- **name** (*Optional*): Name of the sensor. Defaults to `Uptime`. +- **unit_of_measurement** (*Optional*): Units for uptime measurement in either `days` or `hours`. Defaults to `days`. From 3c022b75d1bb2daab267e251dc145a53cb6f6a06 Mon Sep 17 00:00:00 2001 From: Ryan Bahm Date: Sat, 14 Oct 2017 11:46:06 -0700 Subject: [PATCH 040/152] Add UV Index documentation (#3610) Added support for UV Index condition. --- source/_components/sensor.darksky.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index 98360737dc6..ee366dfa66e 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -66,6 +66,7 @@ Configuration variables: - **apparent_temperature_max**: Today's expected apparent high temperature. - **apparent_temperature_min**: Today's expected apparent low temperature. - **precip_intensity_max**: Today's expected maximum intensity of precipitation. + - **uv_index**: The current UV index. - **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, and `uk2`. `auto` will let Dark Sky decide the unit system based on location. - **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: From 789ba6b4ba321981afccb876db0dc6a9a47dda27 Mon Sep 17 00:00:00 2001 From: Lewis Juggins Date: Sun, 15 Oct 2017 21:43:41 +0100 Subject: [PATCH 041/152] Update tradfri installation instructions (#3558) * Update tradfri installation instructions * Update tradfri.markdown * Remove installation, no longer needed --- source/_components/tradfri.markdown | 38 +---------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index c899718cbfb..8926ddfeb3b 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -14,44 +14,8 @@ ha_iot_class: "Local Polling" ha_release: 0.43 --- -The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network. +The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network. -For this to work, you need to install a modified lib-coap library. - -

-This component does **not** work on Windows, as the modified lib-coap doesn't exists for Windows. -

-

-If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. -

- -Linux: - -```bash -$ sudo apt-get install libtool -$ sudo apt-get install autoconf - -$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git -$ cd libcoap -$ ./autogen.sh -$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr" -$ make -$ sudo make install -``` - -macOS: - -```bash -$ brew install libtool -$ brew install autoconf -$ brew install automake -$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git -$ cd libcoap -$ ./autogen.sh -$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr" -$ make -$ make install -``` You will be prompted to configure the gateway through the Home Assistant interface, Enter the security key when prompted and click configure

From 6f4cbdb72bfe9d6b72618a41876b4d0111ef24fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Mon, 16 Oct 2017 07:56:38 +0200 Subject: [PATCH 042/152] Update binary_sensor.xiaomi_aqara.markdown --- source/_components/binary_sensor.xiaomi_aqara.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown index d8a24ca727a..a6eb4e95d8e 100644 --- a/source/_components/binary_sensor.xiaomi_aqara.markdown +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -183,7 +183,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl #### {% linkable_title Xiaomi Cube %} -Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. +Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. The component stores the last action as the attribute `last_action`. ```yaml - alias: Cube event flip90 From ea3b8e3b39e402a220231fa82f54a7247ae7181e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Mon, 16 Oct 2017 23:02:24 +0200 Subject: [PATCH 043/152] Fix travis build (#3644) * Update controllers.markdown * Update installation.markdown --- source/_docs/z-wave/controllers.markdown | 6 +++--- source/_docs/z-wave/installation.markdown | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index cb09d7c25f9..65f02db7875 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -33,12 +33,12 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support - [Vera](/components/vera/) - [Wink](/components/wink/) -## {% linkable_title Controller Notes } +## {% linkable_title Controller Notes %} -### {% linkable_title Aoetec Stick } +### {% linkable_title Aoetec Stick %} By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick) -### {% linkable_title Razberry Board } +### {% linkable_title Razberry Board %} You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index c90787f7294..2f14bfacacc 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -131,7 +131,7 @@ The output from `ls -ltr` above contains the following information The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`.

-#### {% linkable_title Creating a Persistent Device Path } +#### {% linkable_title Creating a Persistent Device Path %} Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). From cb27970390d06a79087e254f61551b635c0a9dc0 Mon Sep 17 00:00:00 2001 From: Sergey Isachenko Date: Tue, 17 Oct 2017 09:58:04 +0300 Subject: [PATCH 044/152] Refreshing Tesla markdown. (#3404) * Hass Markdown for Tesla component. * Markdown fixed. Tesla logo added * Spelling fixed. * Fixes again * Changes as @MartinHjelmare requested. * Typo fix * Markdown for Tesla switch * Updated tesla.markdown * Fix of the copy/paste error --- source/_components/lock.tesla.markdown | 2 +- source/_components/switch.tesla.markdown | 20 ++++++++++++++++++++ source/_components/tesla.markdown | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 source/_components/switch.tesla.markdown diff --git a/source/_components/lock.tesla.markdown b/source/_components/lock.tesla.markdown index 402627d3778..9708ea52205 100644 --- a/source/_components/lock.tesla.markdown +++ b/source/_components/lock.tesla.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: tesla.png ha_category: Lock -ha_iot_class: "Coud Push" +ha_iot_class: "Cloud Push" ha_release: 0.53 --- diff --git a/source/_components/switch.tesla.markdown b/source/_components/switch.tesla.markdown new file mode 100644 index 00000000000..a8c63ede4ec --- /dev/null +++ b/source/_components/switch.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Switch" +description: "Instructions on how to integrate Tesla charging switch into Home Assistant." +date: 2017-09-19 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Switch +ha_iot_class: "Cloud Push" +ha_release: 0.54 +--- + +The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) charger (enable/disable charging) from within Home Assistant. + +The switch platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown index 9e86043ab5a..4cc5dbd85d3 100644 --- a/source/_components/tesla.markdown +++ b/source/_components/tesla.markdown @@ -22,6 +22,7 @@ This component provides the following platforms: - Device tracker - to track location of your car - Lock - Door lock. Enables you to control Tesla's door lock - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. + - Switch - Charger switch. Allow you to start/stop charging. To use Tesla in your installation, add the following to your `configuration.yaml` file: From 819b0169707c459d080788f2dae0abbb2261c754 Mon Sep 17 00:00:00 2001 From: Joe Lu Date: Tue, 17 Oct 2017 00:26:15 -0700 Subject: [PATCH 045/152] Added armed_night to manual_mqtt alarm doc (#3340) * Added armed_night to manual_mqtt alarm doc Code change PR: https://github.com/home-assistant/home-assistant/pull/9358 * Update alarm_control_panel.manual_mqtt.markdown * Made small grammar corrections --- .../alarm_control_panel.manual_mqtt.markdown | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown index 263cac0fb41..bf5ba5bdcc7 100644 --- a/source/_components/alarm_control_panel.manual_mqtt.markdown +++ b/source/_components/alarm_control_panel.manual_mqtt.markdown @@ -21,12 +21,14 @@ The component will accept the following commands from your Alarm Panel via the ` - `DISARM` - `ARM_HOME` - `ARM_AWAY` +- `ARM_NIGHT` When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`: - 'disarmed' - 'armed_home' - 'armed_away' +- 'armed_night' - 'pending' - 'triggered' @@ -47,6 +49,8 @@ All configuration variables from the base manual alarm platform are available: - **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds. - **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds. - **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. +- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings + - **pending_time**: State specific pending time override. Additionally, the following MQTT configuration variables are also available: @@ -56,6 +60,23 @@ Additionally, the following MQTT configuration variables are also available: - **payload_disarm** (*Optional*): The payload to disarm this Alarm Panel. Default is "DISARM". - **payload_arm_home** (*Optional*): The payload to set armed-home mode on this Alarm Panel. Default is "ARM_HOME". - **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY". +- **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT". + +In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds. + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: manual_mqtt + state_topic: home/alarm + command_topic: home/alarm/set + pending_time: 30 + armed_home: + pending_time: 0 + triggered: + pending_time: 20 + trigger_time: 4 +``` ## {% linkable_title Examples %} @@ -70,11 +91,13 @@ To change the state of the alarm, publish one of the following messages to the ` - `DISARM` - `ARM_HOME` - `ARM_AWAY` + - `ARM_NIGHT` To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes: - `disarmed` - `armed_home` - `armed_away` + - `armed_night` - `pending` - `triggered` From ed905b370b58bd6c9553b41268fa2db0517c551d Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Tue, 17 Oct 2017 14:24:02 -0600 Subject: [PATCH 046/152] Adds documentation for the Yi Home Camera platform (#3580) * Adding docs * Various tweaks * Fixed typos --- source/_components/camera.yi.markdown | 96 ++++++++++++++++++++++++++ source/images/supported_brands/yi.png | Bin 0 -> 14464 bytes 2 files changed, 96 insertions(+) create mode 100644 source/_components/camera.yi.markdown create mode 100644 source/images/supported_brands/yi.png diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown new file mode 100644 index 00000000000..d00a131ef8f --- /dev/null +++ b/source/_components/camera.yi.markdown @@ -0,0 +1,96 @@ +--- +layout: page +title: "Yi Home Camera" +description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." +date: 2017-10-10 13:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: yi.png +ha_category: Camera +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `yi` camera platform allows you to utilize Yi Home Cameras within Home +Assistant. Specifically, this platform supports the line of Yi Home Cameras +that are based on the Hi3518e Chipset; these include: + +* Yi Home 17CN +* Yi 1080p Home +* Yi Dome +* Yi 1080p Dome + +To successfully implement this platform, the Home Assistant host should be +capable of multiple simultaneous reads; for every concurrent Home Assistant +user, a connection will be made to the camera every 10 seconds. +This should normally not be a problem. + +## {% linkable_title Preparing the Device %} + +### {% linkable_title Installing Alternative Firmware %} + +In order to integrate the camera with Home Assitant, it is necessary to install +a custom firmware on the device. Instructions for doing so can be found via the +[yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3). + +Once installed, please ensure that you have enabled FTP and Telnet on your +device. + +

+Some alternative Yi firmwares enable an experimental RTSP server, which will +allow you to connect to your camera via other Home Assistant camera platforms. +However, this RTSP server disables the ability to use the supremely-useful Yi +Home app. In order to maintain both Home Assistant compatibility _and_ the native +app, this platform retrieves videos via FTP. +

+ +### {% linkable_title Changing the FTP Password %} + +Once the custom firmware is installed, a password must be added to the FTP +server. To do so: + +1. Telnet into your camera: `telnet `. +2. Enter `root` as the username and `` as the password. +3. Type `passwd` and hit ``. +4. Enter your new password twice. +5. Log out of Telnet. + +## {% linkable_title Configuring the Platform %} + +To enable the platform, add the following lines to your +`configuration.yaml` file: + +```yaml +camera: + - platform: yi + host: '192.168.1.100' + password: my_password_123 +``` + +Configuration variables: + +- **host** (*Required*): the IP address or hostname of the camera +- **password** (*Required*): the password to the FTP server on the camera (from above) +- **username** (*Optional*): the user that can access the FTP server (default: `root`) +- **name** (*Optional*): a human-friendly name for the camera +- **ffmpeg_arguments** (*Optional*): extra options to pass to `ffmpeg` (e.g. image quality or video filter options) + +## {% linkable_title Image quality %} + +Any option supported by the `ffmpeg` client can be utilized via the +`ffmpeg_arguments` configuration parameter. + +One particularly useful adjustment deals with video size. Since Yi videos are +fairly large (especially on the 1080p cameras), the following configuration will +bring them down to a manageable size: + +```yaml +camera: + - platform: yi + name: My Camera + host: '192.168.1.100' + password: my_password_123 + ffmpeg_arguments: '-vf scale=800:450' +``` diff --git a/source/images/supported_brands/yi.png b/source/images/supported_brands/yi.png new file mode 100644 index 0000000000000000000000000000000000000000..c7029bea791057072ecf11e5afa957b3d77d59bc GIT binary patch literal 14464 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 JE5tts{0~>Ac1ZvL literal 0 HcmV?d00001 From 62bdb6f8fbc5d109b805d5e55716d2f9d189c52c Mon Sep 17 00:00:00 2001 From: mclem Date: Tue, 17 Oct 2017 22:45:37 +0200 Subject: [PATCH 047/152] Add transmission sensor: number of active torrents (#3655) --- source/_components/sensor.transmission.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown index b5b80b9d387..4e540968339 100644 --- a/source/_components/sensor.transmission.markdown +++ b/source/_components/sensor.transmission.markdown @@ -27,6 +27,7 @@ sensor: - 'current_status' - 'download_speed' - 'upload_speed' + - 'active_torrents' ``` Configuration variables: @@ -40,6 +41,7 @@ Configuration variables: - **current_status**: The status of your Transmission daemon. - **download_speed**: The current download speed. - **upload_speed**: The current upload speed. + - **active_torrents**: The current number of active torrents. To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed. From 06a0287769f45afc195ab7769503c3f1cc35fee3 Mon Sep 17 00:00:00 2001 From: Ludovic Date: Wed, 18 Oct 2017 08:51:22 +0200 Subject: [PATCH 048/152] Update doc for notify.xmpp (#3664) * Update doc for notify.xmpp Add new optional variable. * Small grammar changes * Removed extra space --- source/_components/notify.xmpp.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index 5dc17dfaaeb..db062932d04 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -35,6 +35,7 @@ Configuration variables: - **recipient** (*Required*): The Jabber ID (JID) that will receive the messages. - **tls** (*Optional*): Allow to disable TLS. Defaults to `true`. - **verify** (*Optional*): Allow disabling SSL certificate validity check (e.g., self-signed certificate). Defaults to `true`. +- **room** (*Optional*): Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the sender. All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender. From 8c69841de2d5326a08af794d389d72da20ee3b7f Mon Sep 17 00:00:00 2001 From: Iain Matchett Date: Wed, 18 Oct 2017 20:37:31 +0100 Subject: [PATCH 049/152] Couple of typos (#3670) * couple of typos * Update 2017-10-07-release-55.markdown --- source/_posts/2017-10-07-release-55.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown index d571aa158fc..ab043259912 100644 --- a/source/_posts/2017-10-07-release-55.markdown +++ b/source/_posts/2017-10-07-release-55.markdown @@ -16,10 +16,10 @@ og_image: /images/blog/2017-10-0.55/components.png Beside the improved Wink support which was contributed by [@w1ll1am23], ships this release a wide variety of new components and platforms. The `input_slider` components has received a makeover by [@BioSehnsucht] and is now [`input_number`][input_number docs]. [@tinloaf] added a feature that allows you to enter dates: [`input_datetime`][input_datetime docs]. Both will help you to improve your automation rules. ## {% linkable_title DuckDNS %} -Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for no Hass.io users to get a similar feature. +Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for non Hass.io users to get a similar feature. ## {% linkable_title Recorder %} -The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allow to handle this task when needed. +The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allows you to handle this task when needed. ## {% linkable_title Owntracks %} [Owntracks](http://owntracks.org/) is an easy way to track your devices. For some times we have the device tracker which depends on [MQTT][device_tracker.owntracks docs] but thanks to a new feature in Owntracks we can now offer support for HTTP. The [new platform][device_tracker.owntracks_http docs] doesn't require a MQTT broker but sends messages directly as HTTP requests to Home Assistant. From 2fae62a3eefee4b058227bcd3e5ba05410c0caae Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 18 Oct 2017 21:44:22 +0200 Subject: [PATCH 050/152] Add serial sensor docs (#3619) --- source/_components/sensor.serial.markdown | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/_components/sensor.serial.markdown diff --git a/source/_components/sensor.serial.markdown b/source/_components/sensor.serial.markdown new file mode 100644 index 00000000000..d03daed3906 --- /dev/null +++ b/source/_components/sensor.serial.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Serial Sensor" +description: "Instructions how to integrate data from serial connected sensors into Home Assistant." +date: 2017-10-13 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. + +To check what kind of data is arriving at your serial port, use a command-line tool like `minicom` or `picocom` on Linux, on a macOS you can use `screen` or on Windows `putty`. + +```bash +$ sudo minicom -D /dev/ttyACM0 +``` + +To setup a serial sensor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: serial + port: /dev/ttyACM0 +``` + +{% configuration %} + port: + description: Local serial port where the sensor is connected and access is granted. + required: true + type: string + name: + description: Friendly name to use for the frontend. Default to "Serial sensor". + required: false + type: string +{% endconfiguration %} + + +## {% linkable_title `value_template` for Template sensor %} + +### {% linkable_title TMP36 %} + +{% raw %} +```yaml +"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}" +``` +{% endraw %} + + From 938c68367836213cf4c1834a6b0f72261c74301f Mon Sep 17 00:00:00 2001 From: Iain Matchett Date: Wed, 18 Oct 2017 20:53:29 +0100 Subject: [PATCH 051/152] Update 2017-10-06-deprecating-python-3.4-support.markdown (#3669) Really persnickety update to remove an erroneous space --- .../_posts/2017-10-06-deprecating-python-3.4-support.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown b/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown index 25aa7a169b8..8d9364a1438 100644 --- a/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown +++ b/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown @@ -26,6 +26,6 @@ If you're running Hassbian it's recommended that you make a backup of your confi If you're on Windows, you're fine as our minimum version for Windows has been 3.5 for a while now. #### Other Debian based systems -If you're running a Debian based system , follow [these instructions][dist-upgrade] to upgrade. +If you're running a Debian based system, follow [these instructions][dist-upgrade] to upgrade. [dist-upgrade]: https://linuxconfig.org/raspbian-gnu-linux-upgrade-from-jessie-to-raspbian-stretch-9 From 889934d15019eeeec93e53411ffe1c56c6437b73 Mon Sep 17 00:00:00 2001 From: Phil Kates Date: Wed, 18 Oct 2017 12:56:58 -0700 Subject: [PATCH 052/152] Add google_assistant component (#3657) * Add google_assistant component * Be more explict about config keys and replaced strings * Fix typo and minor language change * Some minor spelling & grammar fixes --- source/_components/google_assistant.markdown | 102 ++++++++++++++++++ .../supported_brands/google-assistant.png | Bin 0 -> 6935 bytes 2 files changed, 102 insertions(+) create mode 100644 source/_components/google_assistant.markdown create mode 100644 source/images/supported_brands/google-assistant.png diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown new file mode 100644 index 00000000000..583466f4129 --- /dev/null +++ b/source/_components/google_assistant.markdown @@ -0,0 +1,102 @@ +--- +layout: page +title: "Google Assistant" +description: "Setup for Google Assistant integration" +date: 2017-10-17 12:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: google-assistant.png +ha_category: Voice +featured: true +ha_release: 0.56 +--- + +# Google Assistant Docs +The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. + +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +google_assistant: + project_id: someproject-2d0b8 + client_id: [long URL safe random string] + access_token: [a different long URL safe random string] + exposed_domains: + - switch + - light + - group +``` + +*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. + +*Configuration Variables:* +* *expose_by_default* (Optional): Expose devices in all supported domains by default. +* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) +* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. +* *access_token* (Required): Another different long random URL safe string. +* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. + +You can also customize your devices similar to other components by adding keys to entities: + +```yaml +homeassistant: + customize: + master_bedroom_light: + google_assistant: true + google_assistant_name: bedroom light + bedroom_blinds: + aliases: + - bedroom shades + - bedroom covers +``` + +*Entity Customization Keys:* +* *google_assistant*: True exposes entity, false will hide it +* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. +* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. + +### {% linkable_title Setup %} + +1. Install the [gactions CLI](https://developers.google.com/actions/tools/gactions-cli) (you'll use this later) +2. Create a new file named `project.json` and replace the `[YOUR HOME ASSISTANT URL]` below with the URL you use to access Home Assistant. + Note: This must be an HTTPS URL to work. + +```json +{ + "actions": [{ + "name": "actions.devices", + "deviceControl": { + }, + "fulfillment": { + "conversationName": "automation" + } + }], + "conversations": { + "automation" : + { + "name": "automation", + "url": "https://[YOUR HOME ASSISTANT URL]/api/google_assistant" + } + } +} +``` + +3. Create a new project in the [developer console](https://console.actions.google.com/). + 1. Add/Import project + 2. Go to Build under the Actions SDK box + 3. Copy the command that looks like: + `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in. It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` Go there. +5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. +6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. + 1. Grant type: `Implicit` + 2. Client ID: Should be the same as `client_id` from your hass config above + 3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth` + 4. Configure your client. Add scopes for `email` and `name` + 5. Testing instructions: doesn't matter since you won't submit this app +7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window. +8. Open the Google Assistant app and go into `Settings > Home Control` +9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices. diff --git a/source/images/supported_brands/google-assistant.png b/source/images/supported_brands/google-assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..16a47ab4884ebc86c5d66c0aaf43cb77998df553 GIT binary patch literal 6935 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 literal 0 HcmV?d00001 From 2964e9ae54392a1acc4ffda37d2e29483a2cb736 Mon Sep 17 00:00:00 2001 From: PeteBa Date: Wed, 18 Oct 2017 21:25:42 +0100 Subject: [PATCH 053/152] Update away state to not_home (#3648) --- source/_components/sensor.mqtt_room.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown index 4e6446cc5d3..598dafefb16 100644 --- a/source/_components/sensor.mqtt_room.markdown +++ b/source/_components/sensor.mqtt_room.markdown @@ -35,7 +35,7 @@ Configuration variables: - **name** (*Optional*): The name of the sensor. - **state_topic** (*Optional*): The topic that contains all subtopics for the rooms. - **timeout** (*Optional*): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed. -- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `away` if there were no updates. `0` disables the check and is the default. +- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `not_home` if there were no updates. `0` disables the check and is the default. Example JSON that should be published to the room topics: From 1f54839f0cc1298653f7bce9c69ed7b224ac78fd Mon Sep 17 00:00:00 2001 From: rbflurry Date: Wed, 18 Oct 2017 16:34:46 -0400 Subject: [PATCH 054/152] Update device_tracker.unifi.markdown (#3353) * Update device_tracker.unifi.markdown For https://github.com/home-assistant/home-assistant/pull/8998 * Update device_tracker.unifi.markdown * Update device_tracker.unifi.markdown * Update device_tracker.unifi.markdown * Removed API configuration parameter from the documentation * Some minor spelling & grammar fixes --- source/_components/device_tracker.unifi.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown index f70e877e401..af017915885 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -33,5 +33,6 @@ Configuration variables: - **password** (*Required*): The password for your given admin account. - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard). - **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem". +- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From e42a0fb9564762dd031e3fa77eb3bd402cfdb044 Mon Sep 17 00:00:00 2001 From: Egor Tsinko Date: Wed, 18 Oct 2017 14:39:45 -0600 Subject: [PATCH 055/152] added documentation for monoprice platform (#3495) * added monoprice page * updated markdown * updated markdown * renamed mp-logo.svg to monoprice.svg updated ha_release to 0.55 * fixed some typos * switched logo from white to black * updated release * Grammar; Added missing determiner --- .../media_player.monoprice.markdown | 49 ++++++++ source/images/supported_brands/monoprice.svg | 105 ++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 source/_components/media_player.monoprice.markdown create mode 100644 source/images/supported_brands/monoprice.svg diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/media_player.monoprice.markdown new file mode 100644 index 00000000000..7487e75b1e8 --- /dev/null +++ b/source/_components/media_player.monoprice.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Monoprice 6-Zone Amplifier" +description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant." +date: 2017-10-02 11:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: monoprice.svg +ha_category: Media Player +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection. + +To add a Monoprice device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: monoprice + port: /dev/ttyUSB0 + zones: + 11: + name: Main Bedroom + 12: + name: Living Room + 13: + name: Kitchen + 14: + name: Bathroom + 15: + name: Dining Room + 16: + name: Guest Bedroom + sources: + 1: + name: Sonos + 5: + name: Chromecast +``` + +Configuration variables: + +- **port** (*Required*): The serial port to which Monoprice amplifier is connected +- **zones** (*Required*): This is the list of zones available. Valid zones are 11,12,13,14,15,16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21,22,23,24,25,26 for the second device and 31,32,33,34,35,36 for the third device. Each zone must have a name assigned to it. +- **sources** (*Required*): The list of sources available. Valid source numbers are 1,2,3,4,5,6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it. diff --git a/source/images/supported_brands/monoprice.svg b/source/images/supported_brands/monoprice.svg new file mode 100644 index 00000000000..c65cabf1877 --- /dev/null +++ b/source/images/supported_brands/monoprice.svg @@ -0,0 +1,105 @@ + + + +image/svg+xml \ No newline at end of file From ed90bce4a6baa94d3abaac1503bdf1326a7b83a6 Mon Sep 17 00:00:00 2001 From: Hugo Dupras Date: Wed, 18 Oct 2017 22:56:51 +0200 Subject: [PATCH 056/152] Netatmo Binary sensor: timeout and offset are the same thing (#3609) Signed-off-by: Hugo D. (jabesq) --- source/_components/binary_sensor.netatmo.markdown | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/_components/binary_sensor.netatmo.markdown b/source/_components/binary_sensor.netatmo.markdown index 92717748bc1..57d01bbd088 100644 --- a/source/_components/binary_sensor.netatmo.markdown +++ b/source/_components/binary_sensor.netatmo.markdown @@ -27,8 +27,7 @@ If you want to select a specific sensor, set discovery to False for [netatmo](/c binary_sensor: platform: netatmo home: home_name - timeout: 15 - offset: 90 + timeout: 90 cameras: - camera_name1 welcome_sensors: @@ -45,8 +44,7 @@ binary_sensor: Configuration variables: - **home** (*Optional*): Will use the cameras of this home only. -- **timeout** (*Optional*): The Welcome binary sensors will reflect the events from the last X minutes. (default: 15) -- **offset** (*Optional*): The Presence binary sensors will stay on for X seconds after detection. (default: 90) +- **timeout** (*Optional*): The Welcome/Presence binary sensors will stay on for X seconds after detection. (default: 90) - **cameras** array (*Optional*): Cameras to use. Multiple entities allowed. - 'camera_name': Name of the camera to display. - **welcome_sensors** array (*Optional*): List of monitored conditions. From e08c9cc6cb8c9930f267942940356b183c82f3c7 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Fri, 20 Oct 2017 01:34:40 -0600 Subject: [PATCH 057/152] Xiaomi Mi Vacuum: various documentation additions and corrections (#3516) * Various documentation additions and corrections * Couple of tiny changes in the Markdown --- .../_components/vacuum.xiaomi_miio.markdown | 145 +++++++++++++----- 1 file changed, 106 insertions(+), 39 deletions(-) diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 0b4f7b5c90c..17f608a4e75 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Xiaomi Mi Robot Vacuum" -description: "Instructions how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant." +description: "Instructions on how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant." date: 2017-05-05 18:11 sidebar: true comments: false @@ -13,16 +13,29 @@ ha_release: 0.51 ha_iot_class: "Local Polling" --- -The `xiaomi miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/). +The `xiaomi miio` vacuum platform allows you to control the state of your +[Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/). -Current supported features are `turn_on`, `pause`, `stop`, `return_to_home`, `turn_off` (stops goes to dock), `locate`, `clean_spot`, `set_fanspeed` and even remote control your robot. +Currently supported features are: -Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. +- `turn_on` +- `pause` +- `stop` +- `return_to_home` +- `turn_off` (stop all activity and return to dock) +- `locate` +- `clean_spot` +- `set_fanspeed` +- remote control of your robot. -To add a vacuum to your installation, add the following to your `configuration.yaml` file: +Please follow [Retrieving the Access Token](/components/vacuum.xiaomi/#retrieving-the-access-token) to retrieve the API token used in +`configuration.yaml`. + +## {% linkable_title Configuring the Platform %} + +To add a vacuum to your installation, add the following to `configuration.yaml`: ```yaml -# Example configuration.yaml entry vacuum: - platform: xiaomi_miio host: 192.168.1.2 @@ -35,77 +48,99 @@ Configuration variables: - **token** (*Required*): The API token of your robot. - **name** (*Optional*): The name of your robot. -### {% linkable_title Platform services %} +## {% linkable_title Platform Services %} -In addition to all [`vacuum` component services](/components/vacuum#component-services) (`turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, `set_fanspeed` and `send_command`), the `xiaomi` platform introduces specific services to access the remote control mode of the botvac. +In addition to [all of the services provided by the `vacuum` component] +]) (`turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, +`set_fanspeed` and `send_command`), the `xiaomi` platform introduces specific +services to access the remote control mode of the robot. These are: -These are: `xiaomi_remote_control_start`, `xiaomi_remote_control_stop`, `xiaomi_remote_control_move` and `xiaomi_remote_control_move_step`. +- `xiaomi_remote_control_start` +- `xiaomi_remote_control_stop` +- `xiaomi_remote_control_move` +- `xiaomi_remote_control_move_step` -#### {% linkable_title Service `vacuum/xiaomi_remote_control_start` %} +### {% linkable_title Service `vacuum/xiaomi_remote_control_start` %} -Start the remote control mode of the vacuum cleaner. You can then move it with `remote_control_move`, when done call `remote_control_stop`. +Start the remote control mode of the robot. You can then move it with +`remote_control_move`; when done, call `remote_control_stop`. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific botvac. Else targets all. | +| `entity_id` | yes | Only act on specific robot; default targets all | -#### {% linkable_title Service `vacuum/xiaomi_remote_control_stop` %} +### {% linkable_title Service `vacuum/xiaomi_remote_control_stop` %} -Exit the remote control mode of the vacuum cleaner. +Exit the remote control mode of the robot. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific botvac. Else targets all. | +| `entity_id` | yes | Only act on specific robot; default targets all | -#### {% linkable_title Service `vacuum/xiaomi_remote_control_move` %} +### {% linkable_title Service `vacuum/xiaomi_remote_control_move` %} -Remote control the vacuum cleaner, make sure you first set it in remote control mode with `remote_control_start`. +Remote control the robot. Please ensure you first set it in remote control +mode with `remote_control_start`. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific botvac. Else targets all. | -| `velocity` | no | Speed, between -0.29 and 0.29. | -| `rotation` | no | Rotation, between -179 degrees and 179 degrees. | -| `duration` | no | Parameter affecting the duration of the movement. | +| `entity_id` | yes | Only act on specific robot; default targets all | +| `velocity` | no | Speed: between -0.29 and 0.29 | +| `rotation` | no | Rotation: between -179 degrees and 179 degrees | +| `duration` | no | The number of seconds that the robot should move for | -#### {% linkable_title Service `vacuum/xiaomi_remote_control_move_step` %} +### {% linkable_title Service `vacuum/xiaomi_remote_control_move_step` %} -Use this call to enter the remote control mode, make one move, and stop and exit the remote control mode. +Enter remote control mode, make one move, stop, and exit remote control mode. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific botvac. Else targets all. | -| `velocity` | no | Speed, between -0.29 and 0.29. | -| `rotation` | no | Rotation, between -179 degrees and 179 degrees. | -| `duration` | no | Parameter affecting the duration of the movement. | +| `entity_id` | yes | Only act on specific robot; default targets all | +| `velocity` | no | Speed: between -0.29 and 0.29. | +| `rotation` | no | Rotation: between -179 degrees and 179 degrees. | +| `duration` | no | The number of seconds that the robot should move for | -### {% linkable_title Attributes %} +## {% linkable_title Attributes %} -In addition to all [`vacuum` component attributes] (`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, `params`), the `xiaomi` platform introduces specific attributes to get information of the botvac. +In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes), +(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and +`params`), the `xiaomi` platform introduces specific attributes. These are: -These are: `cleaning_time`, `do_not_disturb`, `main_brush_left`, `side_brush_left`, `filter_left`, `cleaning_count`, `total_cleaned_area` and `total_cleaning_time`. +- `cleaning_time` +- `do_not_disturb` +- `main_brush_left` +- `side_brush_left` +- `filter_left` +- `cleaning_count` +- `total_cleaned_area` +- `total_cleaning_time` -The following table shows the units of measurement for the single attributes. +The following table shows the units of measurement for each attribute: | Attribute | Unit of measurement | Description | |---------------------------|---------------------|-------------------------------------------------------| | `do_not_disturb` | | DND mode on / off | | `cleaning_time` | minutes | Last / actual cleaning time in minutes | -| `cleaned_area` | square meter | Last / actual cleaned area in square meter | +| `cleaned_area` | square meter | Last / actual cleaned area in square meters | | `main_brush_left` | hours | Hours left until a change of the main brush is needed | | `side_brush_left` | hours | Hours left until a change of the side brush is needed | | `filter_left` | hours | Hours left until a change of the filter is needed | -| `cleaning_count` | | Number of total cleaning passage | -| `total_cleaned_area` | square meter | Total cleaned area in square meter | +| `cleaning_count` | | Number of total cleaning cycles | +| `total_cleaned_area` | square meter | Total cleaned area in square meters | | `total_cleaning_time` | minutes | Total cleaning time in minutes | -### {% linkable_title Retrieving the Access Token %} +## {% linkable_title Retrieving the Access Token %}

-This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum and Xiaomi Philips Light. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars) which can be obtained easily via a hidden menu item at the Mi-Home app. +This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot +Vacuum and Xiaomi Philips Lights. The Xiaomi Gateway uses another security +method and requires a `key` (16 alphanumeric chars), which can be obtained +easily via a hidden menu item at the Mi-Home app.

+#### {% linkable_title Windows and Android %} + Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. @@ -123,8 +158,6 @@ $ source /srv/homeassistant/bin/activate To fetch the token follow these instructions depending on your mobile phone platform. -#### {% linkable_title Windows and Android %} - 1. Configure the robot with the Mi-Home app. 2. Enable developer mode and USB debugging on the Android phone and plug it into the computer. 3. Get and install the [ADB tool for Windows](https://developer.android.com/studio/releases/platform-tools.html). @@ -152,10 +185,44 @@ $ java.exe -jar ../android-backup-extractor/abe.jar unpack backup.ab backup.tar #### {% linkable_title Linux and Android (rooted!) %} -1. Configure the light with the Mi-Home app. +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. + +Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. + +```bash +$ sudo apt-get install libffi-dev libssl-dev +``` + +If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +``` + +To fetch the token follow these instructions depending on your mobile phone platform. + +1. Configure the robot with the Mi-Home app. 2. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer. 3. Get ADB f.e. `apt-get install android-tools-adb` 4. `adb devices` should list your device 5. `adb root` (does work for development builds only: ones with `ro.debuggable=1`) 6. `adb shell` 7. `echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db` returns a list of all registered devices including IP address and token. + +#### {% linkable_title iOS %} + +1. Configure the robot with the Mi-Home app. +2. Using iTunes, create an unencrypted backup of your iPhone. +3. Install [iBackup Viewer](Get ADB f.e. `apt-get install android-tools-adb`), open it, and open your backup. +4. Open the "Raw Data" module. +5. Navigate to `com.xiaomi.mihome`. +6. Search for a file that looks like this: `123456789_mihome.sqlite` – note that `_mihome.sqlite` is *not* the correct file. +7. Save this file to your filesystem. +8. Install [DB Browser for SQLite](http://sqlitebrowser.org/). +9. Open DB Browser and load the `.sqlite` file you saved from your backup. +10. Click on the `Execute SQL` tab. +11. Input and run this query: `SELECT ZTOKEN FROM ZDEVICE WHERE ZNAME = "Mi Robot Vacuum"` +12. Copy the returned 32-digit hexadecimal string to your clipboard. +13. Open `Terminal` and execute this command: `echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000` +14. Use the resulting string as your token. From 1a423887ffe48a8810b00779beb57f2288fc4680 Mon Sep 17 00:00:00 2001 From: Ryan McLean Date: Fri, 20 Oct 2017 19:35:18 +0100 Subject: [PATCH 058/152] Updated Docs for plex senor (#3688) --- source/_components/sensor.plex.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.plex.markdown b/source/_components/sensor.plex.markdown index 2a349d74fba..f3dcd7affae 100644 --- a/source/_components/sensor.plex.markdown +++ b/source/_components/sensor.plex.markdown @@ -15,7 +15,9 @@ ha_iot_class: "Local Polling" The `plex` sensor platform will monitor activity on a given [Plex Media Server](https://plex.tv/). It will create a sensor that shows the number of currently watching users as the state. If you click the sensor for more details it will show you who is watching what. -If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored. +If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored. + +If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). If you want to enable the plex sensor, add the following lines to your `configuration.yaml`: @@ -33,4 +35,4 @@ Configuration variables: - **username** (*Optional*): The username for the remote Plex server. - **password** (*Optional*): The password for your given account on the remote Plex server. - **server** (*Optional*): The name of your remote Plex server. - +- **token** (*Optional*): X-Plex-Token of your remote Plex server. From 61f871098fd77b94ba3b92814bac85d26c125c59 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Fri, 20 Oct 2017 14:36:31 -0400 Subject: [PATCH 059/152] Updated Wink siren doc (#3686) --- source/_components/switch.wink.markdown | 146 ----------------------- source/_components/wink.markdown | 150 ++++++++++++++++++++++++ 2 files changed, 150 insertions(+), 146 deletions(-) diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index a562bb617f3..085aba3a382 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -27,150 +27,4 @@ The requirement is that you have setup [Wink](/components/wink/). - Rachio sprinkler controller (No Wink hub required) - iHome smart plug (No Wink hub required) - Wink switch groups (User created groups of switches) -- GoControl siren and strobe -- Dome siren and chime - -### {% linkable_title Service `wink_set_siren_auto_shutoff` %} - -You can use the service wink/wink_set_siren_auto_shutoff to set how long the siren will sound before shuting off. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. - -Example: - -```yaml -script: - set_all_sirens_to_one_minute_auto_shutoff: - sequence: - - service: wink.wink_set_siren_auto_shutoff - data: - auto_shutoff: 60 -``` - -

-The following services only work with the Dome siren/chime. -

- -### {% linkable_title Service `wink_set_chime_volume` %} - -You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `volume` | no | String. One of ["low", "medium", "high"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. - -Example: - -```yaml -script: - set_chime_volume_to_low_for_all_chimes - sequence: - - service: wink.wink_set_chime_volume - data: - volume: "low" -``` - -### {% linkable_title Service `wink_set_siren_volume` %} - -You can use the service wink/wink_set_chime_volume to set the volume for the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `volume` | no | String. One of ["low", "medium", "high"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. - -Example: - -```yaml -script: - set_siren_volume_to_low_for_all_sirens - sequence: - - service: wink.wink_set_siren_volume - data: - volume: "low" -``` - -### {% linkable_title Service `wink_enable_chime` %} - -You can use the service wink/wink_enable_chime to set the tone and enable the chime on your Dome siren/chime. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. - -Example: - -```yaml -script: - execute_doorbell - sequence: - - service: wink.wink_enable_chime - data: - tone: "doorbell" -``` - -### {% linkable_title Service `wink_set_siren_tone` %} - -You can use the service wink/wink_set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. - -Example: - -```yaml -script: - set_siren_to_alert: - sequence: - - service: wink.wink_set_siren_tone - data: - tone: "alert" -``` - -### {% linkable_title Service `wink_set_siren_strobe_enabled` %} - -You can use the service wink/wink_set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean. True or False. -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. - -Example: - -```yaml -script: - disable_siren_strobe: - sequence: - - service: wink.wink_set_siren_strobe_enabled - data: - enabled: False -``` - -### {% linkable_title Service `wink_set_chime_strobe_enabled` %} - -You can use the service wink/wink_set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean. True or False. -| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. - -Example: - -```yaml -script: - disable_chime_strobe: - sequence: - - service: wink.wink_set_chime_strobe_enabled - data: - enabled: False -``` \ No newline at end of file diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index 130ab6b20b4..e726f6cc2f6 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -145,3 +145,153 @@ Home Assistant entity_ids for Wink devices are based on the Wink device's name. The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).

+ +### Custom Wink devices and their services + +- GoControl siren and strobe +- Dome siren/chime/strobe + + +### {% linkable_title Service `set_siren_auto_shutoff` %} + +You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shuting off. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. + +Example: + +```yaml +script: + set_all_sirens_to_one_minute_auto_shutoff: + sequence: + - service: wink.set_siren_auto_shutoff + data: + auto_shutoff: 60 +``` + +

+The following services only work with the Dome siren/chime. +

+ +### {% linkable_title Service `set_chime_volume` %} + +You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `volume` | no | String. One of ["low", "medium", "high"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_chime_volume_to_low_for_all_chimes + sequence: + - service: wink.set_chime_volume + data: + volume: "low" +``` + +### {% linkable_title Service `set_siren_volume` %} + +You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `volume` | no | String. One of ["low", "medium", "high"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_siren_volume_to_low_for_all_sirens + sequence: + - service: wink.set_siren_volume + data: + volume: "low" +``` + +### {% linkable_title Service `enable_chime` %} + +You can use the service wink/enable_chime to set the tone and enable the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + execute_doorbell + sequence: + - service: wink.enable_chime + data: + tone: "doorbell" +``` + +### {% linkable_title Service `set_siren_tone` %} + +You can use the service wink/set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_siren_to_alert: + sequence: + - service: wink.set_siren_tone + data: + tone: "alert" +``` + +### {% linkable_title Service `set_siren_strobe_enabled` %} + +You can use the service wink/set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + disable_siren_strobe: + sequence: + - service: wink.set_siren_strobe_enabled + data: + enabled: False +``` + +### {% linkable_title Service `set_chime_strobe_enabled` %} + +You can use the service wink/set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. + +Example: + +```yaml +script: + disable_chime_strobe: + sequence: + - service: wink.set_chime_strobe_enabled + data: + enabled: False +``` From a5b868f69b81dd418cc1a9d6f026c00979f5fd1f Mon Sep 17 00:00:00 2001 From: Julius Mittenzwei Date: Fri, 20 Oct 2017 21:14:17 +0200 Subject: [PATCH 060/152] Updated documentation for knx component. (#3685) * Updated documentation for knx component. Added option for configurable state updater. * Minor changes --- source/_components/knx.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index fed2791d74d..0143b2302e8 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -76,10 +76,10 @@ knx: fire_event_filter: ["1/0/*", "6/2,3,4-6/*"] ``` -* **fire_event** (Optional) if set to True, platform will write all received KNX messages to event bus -* **fire_event_filter** If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HASS event bus. - +* **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus +* **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HASS event bus. +* **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour. Service ------- @@ -92,8 +92,8 @@ Service: send Service Data: {"address": "1/0/15", "payload": 0} ``` -* **address** : KNX group address -* **payload** : payload, either an integer or an array of integers +* **address**: KNX group address +* **payload**: Payload, either an integer or an array of integers From 795b5956175617aa7ba4ecd4721cf12d99b2b6fc Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 10 Oct 2017 08:57:20 +0200 Subject: [PATCH 061/152] Fix host entry --- source/_components/device_tracker.owntracks_http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown index 830883a8800..0895af69c1d 100644 --- a/source/_components/device_tracker.owntracks_http.markdown +++ b/source/_components/device_tracker.owntracks_http.markdown @@ -30,7 +30,7 @@ For configuration options and usage instructions, read the documentation for the Open OwnTracks and go to Connection preferences: - Mode: Private HTTP - - Host: /api/owntracks// + - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] - Identification: turn authentication on, username `homeassistant` and password is your API password that you use to login to Home Assistant. Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. From cc3e2aa40f7d77361bf1db64d62cceccf284e0eb Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 10 Oct 2017 09:07:35 +0200 Subject: [PATCH 062/152] UPdate formatting --- source/_components/device_tracker.owntracks_http.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown index 0895af69c1d..7e91746e55a 100644 --- a/source/_components/device_tracker.owntracks_http.markdown +++ b/source/_components/device_tracker.owntracks_http.markdown @@ -29,8 +29,8 @@ For configuration options and usage instructions, read the documentation for the Open OwnTracks and go to Connection preferences: - - Mode: Private HTTP + - Mode: Select **Private HTTP** - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] - - Identification: turn authentication on, username `homeassistant` and password is your API password that you use to login to Home Assistant. + - Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant. Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. From fde676a77bbb2b483a52ec3d11bd1a48a8bad7ce Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Oct 2017 10:12:56 +0200 Subject: [PATCH 063/152] Update configurator.markdown --- source/_addons/configurator.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown index f15c9b197ae..f2b2d3df19f 100644 --- a/source/_addons/configurator.markdown +++ b/source/_addons/configurator.markdown @@ -39,8 +39,6 @@ Screenshot of the HASS Configurator. ```json { - "homeassistant_api": "http://homeassistant:8123/api", - "homeassistant_password": "", "username": "admin", "password": "secret", "certfile": "fullchain.pem", @@ -52,8 +50,6 @@ Screenshot of the HASS Configurator. } ``` -- **homeassistant_api** (*Optional*): The configurator fetches some data from your running Home Assistant instance. If the API is not available through the default URL, modify this variable to fix this. -- **homeassistant_password** (*Optional*): If you plan on using API functions, you have to set your API password. Calling services of Home Assistant is prohibited without authentication. - **username** (*Optional*): Set a username to access your configuration is protected. - **password** (*Required*): Set a password for access. - **ssl** (*Optional*): Enable or Disable SSL for the editor. From 2bf79f1ceb083cd07b3616400f0377335d6ec00e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Oct 2017 11:32:59 +0200 Subject: [PATCH 064/152] Update duckdns.markdown --- source/_addons/duckdns.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index 07a262fad63..8e89ad9eb59 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -37,6 +37,9 @@ Use the following configuration in Home Assistant to use the generated certifica ```yaml http: + base_url: https://my-domain.duckdns.org:8123 ssl_certificate: /ssl/fullchain.pem ssl_key: /ssl/privkey.pem ``` + +If you use a other port as `8123` or a SSL proxy, change the port number. From e8957635a9110d406c380e049546ef6664b38e69 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Oct 2017 11:36:06 +0200 Subject: [PATCH 065/152] Update lets_encrypt.markdown --- source/_addons/lets_encrypt.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 976fbf43325..98d33c86e03 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -36,6 +36,9 @@ Use the following configuration in Home Assistant to use the generated certifica ```yaml http: + base_url: https://my-domain.tld:8123 ssl_certificate: /ssl/fullchain.pem ssl_key: /ssl/privkey.pem ``` + +If you use a other port as `8123` or a SSL proxy, change the port number. From 2faf1a118c8447288ba6641f7301e5b00307b588 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Wed, 11 Oct 2017 07:22:47 +0100 Subject: [PATCH 066/152] Update MQTT broker docs for clarity (#3573) * Update MQTT broker docs for clarity Adding words to note that the reason a "run your own" broker is the most private is because the embedded broker doesn't support TLS/SSL. Also updating to use the new configuration tags. * Update to reference hbmqtt supporting TLS --- source/_docs/mqtt/broker.markdown | 68 +++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index f2a2a90eec1..375639661da 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -17,13 +17,13 @@ The MQTT component needs you to run an MQTT broker for Home Assistant to connect Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Assistant connects to it. Embedded broker default configuration: -| Setting | Value | -| ------- | ----- | -| Host | localhost -| Port | 1883 -| Protocol | 3.1.1 -| User | homeassistant -| Password | Your API [password](/components/http/) +| Setting | Value | +| -------------- | ----- | +| Host | localhost +| Port | 1883 +| Protocol | 3.1.1 +| User | homeassistant +| Password | Your API [password](/components/http/) | Websocket port | 8080 ```yaml @@ -51,7 +51,7 @@ mqtt: ### {% linkable_title Run your own %} -This is the most private option but requires a bit more work. There are multiple free and open-source brokers to pick from: eg. [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). +Along with the embedded broker this is the most private option, but it requires a bit more work. There are multiple free and open-source brokers to pick from: eg. [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). ```yaml # Example configuration.yaml entry @@ -61,16 +61,48 @@ mqtt: Configuration variables: -- **broker** (*Optional*): The IP address or hostname of your MQTT broker, e.g. 192.168.1.32. -- **port** (*Optional*): The network port to connect to. Default is 1883. -- **client_id** (*Optional*): The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one. -- **keepalive** (*Optional*): The time in seconds between sending keep alive messages for this client. Default is 60. -- **username** (*Optional*): The username to use with your MQTT broker. -- **password** (*Optional*): The corresponding password for the username to use with your MQTT broker. -- **protocol** (*Optional*): Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1. -- **certificate** (*Optional*): Path to the certificate file, eg. `/home/user/.homeassistant/server.crt`. -- **tls_insecure** (*Optional*): Set the verification of the server hostname in the server certificate. -- **tls_version** (*Optional*): TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`. +{% configuration %} +broker: + required: false + description: The IP address or hostname of your MQTT broker, e.g. 192.168.1.32. + type: string +port: + required: false + description: The network port to connect to. Default is 1883. + type: int +client_id: + required: false + description: The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one. + type: string +keepalive: + required: false + description: The time in seconds between sending keep alive messages for this client. Default is 60. + type: int +username: + required: false + description: The username to use with your MQTT broker. + type: string +password: + required: false + description: The corresponding password for the username to use with your MQTT broker. + type: string +protocol: + required: false + description: Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1. + type: string +certificate: + required: false + description: Path to the certificate file, eg. `/home/user/.homeassistant/server.crt`. + type: string +tls_insecure: + required: false + description: Set the verification of the server hostname in the server certificate. + type: boolean +tls_version: + required: false + description: TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`. + type: string +{% endconfiguration %}

There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Specify `protocol: 3.1` in your MQTT configuration to work around this issue. From 8c8d93a1e4bf07daf0b3c88c7427aaeb4fb51d2c Mon Sep 17 00:00:00 2001 From: jodur Date: Wed, 11 Oct 2017 08:30:32 +0200 Subject: [PATCH 067/152] Update fail2ban.markdown (#3503) Please update this reference according to the last additions made in the original topic :https://community.home-assistant.io/t/is-there-a-log-file-for-invalid-logins-blocking-hackers/2892/16 --- source/_cookbook/fail2ban.markdown | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index 8eed73efb0c..505fad6272d 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -20,7 +20,7 @@ Then make sure logging is enabled in your `configuration.yaml` file for your Hom logger: default: critical logs: - homeassistant.components.http: warning + homeassistant.components.http.ban: warning ``` Next we will be creating these three files : @@ -43,12 +43,9 @@ Contents of `/etc/fail2ban/filter.d/hass.local`: before = common.conf [Definition] -failregex = ^%(__prefix_line)s.*Login attempt or request with an invalid password from .*$ +failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from .*$ ignoreregex = - -[Init] -datepattern = ^%%y-%%m-%%d %%H:%%M:%%S ``` Contents of `/etc/fail2ban/jail.local` (Note that you'll need to change the `logpath` to match your logfile which will be different from the path listed.): @@ -58,7 +55,7 @@ Contents of `/etc/fail2ban/jail.local` (Note that you'll need to change the `log enabled = true filter = hass action = iptables-allports[name=HASS] -logpath = /opt/hass-prod-cfg/home-assistant.log +logpath = /home/homeassistant/.homeassistant/home-assistant.log maxretry = 5 ``` From e91032b93b607e2625532931e44f991eb4f9c3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 11 Oct 2017 09:06:44 +0200 Subject: [PATCH 068/152] Update xiaomi_aqara.markdown --- source/_components/xiaomi_aqara.markdown | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index 37919505bb2..b9c9392b79d 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -88,12 +88,12 @@ xiaomi_aqara: {% configuration %} mac: - description: The MAC of your gateway. *Optional if only using one gateway.* - required: true + description: The MAC address of your gateway. *Optional if only using one gateway.* + required: false type: string key: description: The key of your gateway. *Optional if only using sensors and/or binary sensors.* - required: true + required: false type: string discovery_retry: description: Number of times that Home Assistant should try to reconnect to the gateway. @@ -105,6 +105,10 @@ xiaomi_aqara: required: false type: string default: any + host: + description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. + required: false + type: string {% endconfiguration %} ### {% linkable_title Services %} From 8e89191466dc91443fd3470912c7f782b8a60b52 Mon Sep 17 00:00:00 2001 From: Tsvi Mostovicz Date: Wed, 11 Oct 2017 13:03:36 +0300 Subject: [PATCH 069/152] device_tracker.mqtt configuration.yaml is wrong (#3583) The topic to be looked up must be in quotes for the example to work. --- source/_components/device_tracker.mqtt.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index 2b1bd0d519a..d60b895c50e 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -22,8 +22,8 @@ To use this device tracker in your installation, add the following to your `conf device_tracker: - platform: mqtt devices: - paulus_oneplus: /location/paulus - annetherese_n4: /location/annetherese + paulus_oneplus: 'location/paulus' + annetherese_n4: 'location/annetherese' ``` Configuration variables: From 8fc24b81e721e5a4ecc7038c3dc0f33a2eedcc3c Mon Sep 17 00:00:00 2001 From: Albatross Date: Wed, 11 Oct 2017 06:52:45 -0400 Subject: [PATCH 070/152] Typo Fix: Alexa Documentation (#3582) --- source/_components/alexa.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index d97bf68ae1b..179fb4076c1 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -101,7 +101,7 @@ This means that we can now ask Alexa things like: When activated, the Alexa component will have Home Assistant's native intent support handle the incoming intents. If you want to run actions based on intents, use the [`intent_script`](/components/intent_script) component. -To enable Alex add the following entry to your `configuration.yaml` file: +To enable Alexa add the following entry to your `configuration.yaml` file: ```yaml alexa: From 88d1c2a30b67f2d7f7c87c45472c4e6e8df8f76a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 11 Oct 2017 12:52:01 +0200 Subject: [PATCH 071/152] Fix Liquid error introduced with #3573 --- source/_docs/mqtt/broker.markdown | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 375639661da..a5f9e9ba70c 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -19,12 +19,13 @@ Home Assistant contains an embedded MQTT broker. If no broker configuration is g | Setting | Value | | -------------- | ----- | -| Host | localhost -| Port | 1883 -| Protocol | 3.1.1 -| User | homeassistant -| Password | Your API [password](/components/http/) -| Websocket port | 8080 +| Host | localhost | +| Port | 1883 | +| Protocol | 3.1.1 | +| User | homeassistant | +| Password | Your API [password](/components/http/) | +| Websocket port | 8080 | + ```yaml # Example configuration.yaml entry @@ -59,8 +60,6 @@ mqtt: broker: 192.168.1.100 ``` -Configuration variables: - {% configuration %} broker: required: false @@ -88,7 +87,7 @@ password: type: string protocol: required: false - description: Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1. + description: "Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1." type: string certificate: required: false @@ -100,7 +99,7 @@ tls_insecure: type: boolean tls_version: required: false - description: TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`. + description: "TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`." type: string {% endconfiguration %} From 7a0c5f2f96121ff713945af16175b5e6c91ba437 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 12 Oct 2017 10:59:22 +0200 Subject: [PATCH 072/152] Update file name --- source/_docs/ecosystem/tor.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/tor.markdown b/source/_docs/ecosystem/tor.markdown index c5fd98dc0eb..6d87b5f08b4 100644 --- a/source/_docs/ecosystem/tor.markdown +++ b/source/_docs/ecosystem/tor.markdown @@ -88,7 +88,7 @@ Add the authentication cookie to your `torrc` client configuration on your lapto HidServAuth abcdef1234567890.onion ABCDEF1122334455667789 ``` -For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: `/Browser/TorBrowser/Data/Tor/torrc-defaults` +For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: `/Browser/TorBrowser/Data/Tor/torrc` Once you have added the entry, restart the browser, and then browse to the "dot onion" site address to connect to your Home Assistant instance. From 79c80c162b4b24edfb92effca1691c1be9506eb5 Mon Sep 17 00:00:00 2001 From: dnaphreak Date: Thu, 12 Oct 2017 11:23:21 -0400 Subject: [PATCH 073/152] minor change to make instructions clear (#3590) * minor change to make instructions clear change to make it clear there are two ways to install pyvizio rather than two steps. * Add blank lines before code --- source/_components/media_player.vizio.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown index 989d37113d7..ae68385e13a 100644 --- a/source/_components/media_player.vizio.markdown +++ b/source/_components/media_player.vizio.markdown @@ -20,10 +20,15 @@ The `vizio` component will allow you to control [SmartCast](https://www.vizio.co Before adding your TV to Home Assistant you'll need to pair it manually. To do so follow these steps: -Install the command-line tool using pip (or you can choose to download it manually): +Install the command-line tool using `pip` (or you can choose to download it manually): ```bash $ pip3 install git+https://github.com/vkorn/pyvizio.git@master +``` + +or + +```bash $ pip3 install -I . ``` From d0123121fea5bdda80bff4564af7b2852864a4a0 Mon Sep 17 00:00:00 2001 From: Phil Hawthorne Date: Fri, 13 Oct 2017 02:24:33 +1100 Subject: [PATCH 074/152] Update 055 breaking changes for recorder (#3591) The recorder component introduces some breaking changes. Expanding those in the breaking changes section so people don't get caught out --- source/_posts/2017-10-07-release-55.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown index ab043259912..2d21382943a 100644 --- a/source/_posts/2017-10-07-release-55.markdown +++ b/source/_posts/2017-10-07-release-55.markdown @@ -58,7 +58,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - New Wink services: pair new device, rename, delete and add new lock key code. All device attributes that are multi-words are now separated by "_" and no longer " ". ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change) - TP-Link Switch: Attribute names now uses underscores and unnecessary capitalization was removed. ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change) - Renamed `input_slider` to `input_number` which has now a numeric text box option. ([@BioSehnsucht] - [#9494]) ([demo docs]) ([input_number docs]) (breaking change) -- Recorder: Add new purge service and interval. ([@milanvo] - [#9523]) ([recorder docs]) (breaking change) +- Recorder: Add new purge service and interval. The recorder component no longer accepts a `purge_days` parameter. If you are using `purge_days` you must use `purge_interval` and `purge_keep_days`. ([@milanvo] - [#9523]) ([recorder docs]) (breaking change) - OpenCV image processing: Typo in classifier was fixed. ([@arsaboo] - [#9697]) ([image_processing.opencv docs]) (breaking change) - Tradfri Lights: Async support with resource observation. ([@lwis] - [#7815]) ([tradfri docs]) ([light.tradfri docs]) (breaking change) From f6b19dc1b78c82475768028680a7b46b95bf7f1d Mon Sep 17 00:00:00 2001 From: c727 Date: Thu, 12 Oct 2017 17:25:09 +0200 Subject: [PATCH 075/152] fix example for custom state cards (#3592) * change to state-card-my-custom-light * .html --- .../developers/frontend_creating_custom_ui.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown index 8303acbbb1b..51678f01cbb 100644 --- a/source/developers/frontend_creating_custom_ui.markdown +++ b/source/developers/frontend_creating_custom_ui.markdown @@ -13,15 +13,15 @@ If you would like to use your own [State card](/developers/frontend_add_card/) w Put the element source file and its dependencies in `www/custom_ui/` directory under your Home Assistant [configuration](/docs/configuration/) directory. -For example if creating a state card for the `light` domain named `my_custom_light_card` put `my_custom_light_card.html` in `www/custom_ui/`. +For example if creating a state card for the `light` domain named `state-card-my-custom-light` put `state-card-my-custom-light.html` in `www/custom_ui/`. -That file should implement `` tag with Polymer. +That file should implement `` tag with Polymer. -In `my_custom_light_card.html` you should use `` to import all the dependencies **not** used by Home Assistant's UI. +In `state-card-my-custom-light.html` you should use `` to import all the dependencies **not** used by Home Assistant's UI. Do not import any dependencies used by the Home Assistant UI. Importing those will work in `development: 1` mode, but will fail in production mode. -1) In the `customize:` section of the `configuration.yaml` file put `custom_ui_state_card: `. +1) In the `customize:` section of the `configuration.yaml` file put `custom_ui_state_card: state-card-my-custom-light`. 2) In the `frontend` section use `extra_html_url` to specify the URL to load. For example: @@ -29,11 +29,11 @@ For example: homeassistant: customize: light.bedroom: - custom_ui_state_card: my_custom_light_card + custom_ui_state_card: state-card-my-custom-light frontend: extra_html_url: - - /local/custom_ui/my_custom_light_card.html + - /local/custom_ui/state-card-my-custom-light.html ``` For more possibilities, see the [Custom UI section](/cookbook/#user-interface) on our Examples page. From 13b6bce743d27a1953ad65bd7ca6ef3243c16388 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 12 Oct 2017 22:50:42 +0200 Subject: [PATCH 076/152] Create cec_scan.markdown --- source/_addons/cec_scan.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 source/_addons/cec_scan.markdown diff --git a/source/_addons/cec_scan.markdown b/source/_addons/cec_scan.markdown new file mode 100644 index 00000000000..4c048eff157 --- /dev/null +++ b/source/_addons/cec_scan.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "CEC Scanner" +description: "Scan HDMI CEC devices." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Help you to discover the HDMI CEC address. Start the add-on and look into log to see all connected device on HDMI. From 2a95c1562220701e370356637e9f6284dd392986 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 13 Oct 2017 08:42:12 +0300 Subject: [PATCH 077/152] Update custom_ui_by_andrey-git.markdown --- source/_cookbook/custom_ui_by_andrey-git.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/custom_ui_by_andrey-git.markdown b/source/_cookbook/custom_ui_by_andrey-git.markdown index cea9eeae1a2..5b593d3250c 100644 --- a/source/_cookbook/custom_ui_by_andrey-git.markdown +++ b/source/_cookbook/custom_ui_by_andrey-git.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Custom UI light state-card by andrey-git" +title: "Custom UI state-card by andrey-git" description: "" date: 2017-02-04 10:45 sidebar: true From 5b7928504488aae63c02b3fe100c7302729f7913 Mon Sep 17 00:00:00 2001 From: james-fry Date: Fri, 13 Oct 2017 09:46:46 +0100 Subject: [PATCH 078/152] Update xiaomi_aqara.markdown Added mention of multicast requirement --- source/_components/xiaomi_aqara.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index b9c9392b79d..dcfad4c8041 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -168,6 +168,7 @@ and stops the sound when the button is pressed once. That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall. - Make sure you have [enabled LAN access](https://community.home-assistant.io/t/beta-xiaomi-gateway-integration/8213/1832). - Turn off the firewall on the system where Home Assistant is running. +- Ensure your router supports multicast as this is a requirement of the Xiaomi GW - Try to leave the MAC address `mac:` blank. - Try to set `discovery_retry: 10`. - Try to disable and then enable LAN access. From bfbe694b052b8b9532a712e5d179ae3b547fa1c5 Mon Sep 17 00:00:00 2001 From: Eleftherios Chamakiotis Date: Fri, 13 Oct 2017 13:12:32 +0300 Subject: [PATCH 079/152] Update alarmdecoder.markdown (#3603) Corrected configuration variable baud, as the schema expects 'baudrate' instead of 'baud' --- source/_components/alarmdecoder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alarmdecoder.markdown b/source/_components/alarmdecoder.markdown index b3b54f2959f..82beb4b5e62 100644 --- a/source/_components/alarmdecoder.markdown +++ b/source/_components/alarmdecoder.markdown @@ -50,6 +50,6 @@ Configuration variables: - **host** (*Optional*): The IP address of the AlarmDecoder device on your home network, if using socket type. Default: `localhost` - **port** (*Optional*): The port of the AlarmDecoder device on your home network, if using socket type. Default: `10000` - **path** (*Optional*): The path of the AlarmDecoder device, if using socket type. Default: `/dev/ttyUSB0` -- **baud** (*Optional*): The baud rate of the AlarmDecoder device, if using serial type. Default: `115200` +- **baudrate** (*Optional*): The baud rate of the AlarmDecoder device, if using serial type. Default: `115200` - **panel_display** (*Optional*): Create a sensor called sensor.alarm_display to match the Alarm Keypad display. Default: `off` - **zones** (*Optional*): AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/components/binary_sensor.alarmdecoder/) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.* From a35cfbfd70807fb4fd3ca4dd9e7a5cda0fd74b62 Mon Sep 17 00:00:00 2001 From: Johan van der Kuijl Date: Fri, 13 Oct 2017 12:13:16 +0200 Subject: [PATCH 080/152] Small typo fix (#3602) callack => callback --- source/_docs/ecosystem/appdaemon.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index 1ee29133933..f8f86bdff42 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -55,7 +55,7 @@ This is also fairly easy to achieve with Home Assistant automations, but we are ## Motion Light -Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callack function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: +Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python import homeassistant.appapi as appapi From 25d91e807dce1d860fbd44dfcbd26926f4d75331 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Fri, 13 Oct 2017 06:18:23 -0400 Subject: [PATCH 081/152] Update config panel docs (#3493) Removed information on groups panel as it's disabled. Added information on new panels that have been added. --- source/_components/config.markdown | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/source/_components/config.markdown b/source/_components/config.markdown index 7490d3e4064..514840e7f73 100644 --- a/source/_components/config.markdown +++ b/source/_components/config.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Config" -description: "Instructions how to setup the configuration panel Home Assistant." +description: "Instructions how to setup the configuration panel for Home Assistant." date: 2017-02-24 20:00 sidebar: true comments: false @@ -21,16 +21,7 @@ To enable the configuration panel, add the following to your `configuration.yaml config: ``` -### {% linkable_title Group & Views %} - -The **Groups & Views** sections allows you to re-arrange your [groups](/components/group/). Also, you can edit the group's setting and switch between "view" and "group". - -

- -

- - -### {% linkable_title Server Management %} +### {% linkable_title General %} This section enables you to control Home Assistant from within Home Assistant. Check your configuration, reload the core, groups, and automation, and the Home Assistant process itself. With a single mouse click. @@ -38,4 +29,18 @@ This section enables you to control Home Assistant from within Home Assistant. C

+### {% linkable_title Customization %} +This section enables you to customize entities within Home Assistant. Use this to set friendly names, change icons, hide entities, and modify other attributes. + +### {% linkable_title Automation %} + +This section enables you to create and modify automations from within Home Assistant, without needing to write out the yaml code. + +### {% linkable_title Script %} + +Similar to the automation editor, this section enables you to create and modify scripts from within Home Assistant, without needing to write out the yaml code. + +### {% linkable_title Z-Wave %} + +This section enables you to control your Z-Wave network and devices from within Home Assistant. You can add and remove devices, as well as change device specific configuration variables. From c4ed0c919bd05d96fca577d5e0d676efc4eb893d Mon Sep 17 00:00:00 2001 From: Phill Price Date: Fri, 13 Oct 2017 11:19:57 +0100 Subject: [PATCH 082/152] Add Hass.io log location (#3599) To aid debugging Hass.io logs --- source/_components/logger.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index e04e44511b0..70168cf440b 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -68,8 +68,16 @@ data: homeassistant.components.media_player.yamaha: debug ``` -The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. If you are a Hassbian user you can use the example below: +The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. + +If you are a Hassbian user you can use the example below: ```bash $ tail -f /home/homeassistant/.homeassistant/home-assistant.log ``` + +If you are a Hass.io user you can use the example below, whenlogged in through the ssh addon: + +```bash +$ tail -f /config/home-assistant.log +``` From 9069c5a827795e47ec113419de0fe41a3b789a54 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 13 Oct 2017 14:16:52 +0200 Subject: [PATCH 083/152] Update mosquitto.markdown --- source/_addons/mosquitto.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index ad2fef0f620..7db04f10c51 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -46,5 +46,5 @@ To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own) add the follow ```yaml # Example configuration.yaml entry mqtt: - broker: 172.17.0.1 + broker: core-mqtt ``` From 4d7eabcc826227e7c157d84502d25cebf0a59b2b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 13 Oct 2017 22:08:44 +0200 Subject: [PATCH 084/152] Update mosquitto.markdown --- source/_addons/mosquitto.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index 7db04f10c51..f944dc7989c 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -46,5 +46,5 @@ To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own) add the follow ```yaml # Example configuration.yaml entry mqtt: - broker: core-mqtt + broker: core-mosquitto ``` From 826c207c7917b89d5cdc40a5e5165919d8e6f37a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 14 Oct 2017 00:39:39 +0200 Subject: [PATCH 085/152] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index 2ba863e77b6..13909e7bbd6 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -131,7 +131,7 @@ The config for an add-on is stored in `config.json`. ### {% linkable_title Options / Schema %} -The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start. Only non-nested arrays and dictionaries are supported. +The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start. Only nested arrays and dictionaries are supported with a deep of two size. If you want make a option optional, put `?` to the end of data type. ```json { @@ -158,7 +158,8 @@ The `schema` looks like `options` but describes how we should validate the user "random": ["match(^\w*$)"], "link": "url", "size": "int(5,20)", - "count": "float" + "count": "float", + "not_need": "str?" } ``` From 358b119e98a37c9ab6e4709965f2b0415c43ddbe Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 14 Oct 2017 00:40:56 +0200 Subject: [PATCH 086/152] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index 13909e7bbd6..7ce40cd18bd 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -131,7 +131,7 @@ The config for an add-on is stored in `config.json`. ### {% linkable_title Options / Schema %} -The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start. Only nested arrays and dictionaries are supported with a deep of two size. If you want make a option optional, put `?` to the end of data type. +The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start, and it show it inside default values. Only nested arrays and dictionaries are supported with a deep of two size. If you want make a option optional, put `?` to the end of data type, otherwise it will be a required value. ```json { From 64ea1704bded82ab7d3b87bf5cd75056b63478b4 Mon Sep 17 00:00:00 2001 From: Mitchell Cash Date: Sat, 14 Oct 2017 14:49:16 +1000 Subject: [PATCH 087/152] Add Groups definition to glossary (#3616) --- source/_data/glossary.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index a0edf13014e..39245d7ef25 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -14,4 +14,5 @@ description: "Often used abbreviation for Home Assistant." - topic: Discovery description: The automatic setup of zeroconf/mDNS and uPnP devices after they are discovered. - +- topic: Groups + description: "Groups are a way to organize your entities into a group." From 4632b921571501eb6ae13741d5db427e926eb22c Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Sat, 14 Oct 2017 06:50:51 +0200 Subject: [PATCH 088/152] Xiaomi light description updated. (#3607) --- source/_components/light.xiaomi_aqara.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.xiaomi_aqara.markdown b/source/_components/light.xiaomi_aqara.markdown index 561cf132c29..25e01ba22c7 100644 --- a/source/_components/light.xiaomi_aqara.markdown +++ b/source/_components/light.xiaomi_aqara.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Local Push" --- -The `xiaomi aqara` light platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) lights. +The `xiaomi aqara` light platform allows you to control the internal light of the xiaomi gateway. The component will be loaded automatically and provides a device called `light.gateway_light_28ffffffffff`. The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). From beb9e48a454975847b4bce3bb5f10b58bf729b0c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 13 Oct 2017 23:40:08 -0700 Subject: [PATCH 089/152] Update lets_encrypt.markdown --- source/_addons/lets_encrypt.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 98d33c86e03..31fdd13f3b8 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -7,13 +7,17 @@ sidebar: true comments: false sharing: true footer: true -featured: true +featured: false --- +

+You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support. +

+ Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration.

-This add-on need port 80/443 to verify the certificate request, please stop all add-ons that also use these ports, or you may not be able to start this add-on. +This add-on uses ports 80/443 to verify the certificate request. You will need to stop all other add-ons that also use these ports.

```json @@ -42,3 +46,5 @@ http: ``` If you use a other port as `8123` or a SSL proxy, change the port number. + +[DuckDNS add-on]: /addons/duckdns/ From 737c5d6ccc36b07e9d381d69ce16ccdb2a6af705 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 13 Oct 2017 23:41:13 -0700 Subject: [PATCH 090/152] Update duckdns.markdown --- source/_addons/duckdns.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index 8e89ad9eb59..9667c91e725 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -1,7 +1,7 @@ --- layout: page title: "DuckDNS" -description: "Automatically update your Duck DNS IP address." +description: "Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt." date: 2017-04-30 13:28 sidebar: true comments: false From e3ab5eea073c6c122e97de8d176260a28253db3a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 14 Oct 2017 00:18:27 -0700 Subject: [PATCH 091/152] Update lets_encrypt.markdown --- source/_docs/ecosystem/certificates/lets_encrypt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index c248bec61d7..ad7963fae69 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -9,6 +9,10 @@ sharing: true footer: true --- +

+If you are using Hass.io, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) to automatically maintain a subdomain including HTTPS certificates via Let's Encrypt. +

+

Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page.

From c4f23a2fdb4e93691e11898c7bd1641990712617 Mon Sep 17 00:00:00 2001 From: Fredrik Fjeld Date: Sat, 14 Oct 2017 14:54:22 +0200 Subject: [PATCH 092/152] Added quote marks around target phone number. (#3618) The notification will not work if the target phone number is not quoted. --- source/_components/notify.facebook.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown index 1d76436a13e..209fe6c827d 100644 --- a/source/_components/notify.facebook.markdown +++ b/source/_components/notify.facebook.markdown @@ -46,8 +46,8 @@ automation: data: message: 'Good Evening' target: - - +919413017584 - - +919784516314 + - '+919413017584' + - '+919784516314' ``` You can also send messages to users that do not have stored their phone number with Facebook, but this requires a bit more work. The Messenger platform uses page specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specifc ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID: From 2473bd8ea972eef9aceb899a5638a017e6b1d2cd Mon Sep 17 00:00:00 2001 From: Max Rumpf Date: Sat, 14 Oct 2017 17:28:42 +0200 Subject: [PATCH 093/152] Decrease size of search bar and remove outline (#3611) This ensures that the close button stays in the first line, and doesn't get pushed below the search icon. --- sass/custom/_paulus.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 9e7e2c3cac7..d1345929eea 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -23,13 +23,14 @@ $primary-color: #049cdb; float: right; .algolia-autocomplete { - width: calc(100% - 58px); + width: calc(100% - 64px); margin: 0 10px; } input { border: 0; width: 100%; + outline: none; } } } From 4fe51623cf42e608dd0d7bab616da7c048d8ba53 Mon Sep 17 00:00:00 2001 From: Boced66 Date: Sat, 14 Oct 2017 17:42:40 +0200 Subject: [PATCH 094/152] Device tracker GpsLogger : Change the device name (#3606) Explain how to change the device name in the URL --- source/_components/device_tracker.gpslogger.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown index d0f92db962b..9259d8f702c 100644 --- a/source/_components/device_tracker.gpslogger.markdown +++ b/source/_components/device_tracker.gpslogger.markdown @@ -29,7 +29,9 @@ To configure GPSLogger, you must set up the app to send a `GET` request to your ```yaml http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT ``` -. Make sure to include the API password if you have configured a password in Home Assistant (add `&api_password=` to the end of the URL). Configure that options under "General Options": +Make sure to include the API password if you have configured a password in Home Assistant (add `&api_password=` to the end of the URL). +You can change your device name by editing "%SER" in this URL (e.g.: &device=user_devicename) +Configure that options under "General Options": - Start on boot: yes - Start on app launch: yes @@ -43,6 +45,7 @@ Set the URL under "General Options -> Logging details": http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT ``` (be sure you include API password (`&api_password=`) if needed, or you can also use HTTP Basic authentication `http://:@/api/gpslogger...`) +(You can change your device name by editing "%SER" in this URL (e.g.: &device=user_devicename)) - Log to OpenGTS Server: no - Log to Plain Text: no - Log to NMEA: no From 1ca04aa223ea551b66d10ecfcfb65db9a0e965af Mon Sep 17 00:00:00 2001 From: jurafxp Date: Sat, 14 Oct 2017 22:35:35 +0200 Subject: [PATCH 095/152] Working Apache config for websockets (#3623) --- source/_docs/ecosystem/apache.markdown | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/_docs/ecosystem/apache.markdown b/source/_docs/ecosystem/apache.markdown index d8ec1aac020..ae0c1925114 100644 --- a/source/_docs/ecosystem/apache.markdown +++ b/source/_docs/ecosystem/apache.markdown @@ -32,13 +32,19 @@ To be able to access to your Home Assistant instance by using https://home.examp ```text - ProxyPreserveHost On - ProxyRequests Off ServerName home.example.org - ProxyPass /api/websocket ws://localhost:8123/api/websocket - ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket + ProxyPreserveHost On + ProxyRequests off ProxyPass / http://localhost:8123/ ProxyPassReverse / http://localhost:8123/ + ProxyPass /api/websocket ws://localhost:8123/api/websocket + ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket + + RewriteEngine on + RewriteCond %{HTTP:Upgrade} =websocket [NC] + RewriteRule /(.*) ws://localhost:8123/$1 [P,L] + RewriteCond %{HTTP:Upgrade} !=websocket [NC] + RewriteRule /(.*) http://localhost:8123/$1 [P,L] ``` From 2cf2c0f0e8c47f58cd5ab9f69c62ad108a81eecd Mon Sep 17 00:00:00 2001 From: Phill Price Date: Sat, 14 Oct 2017 22:43:06 +0100 Subject: [PATCH 096/152] Remove flux_led option from discovery (#3624) fails to load configuration with this option in. --- source/_components/discovery.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index c133e9a7125..726da20c46c 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -27,7 +27,6 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * DirecTV * Apple TV * Yeelight Sunflower Bulb - * Flux Led/MagicLight * Linn / Openhome * Denon Network Receivers * Bose Soundtouch speakers @@ -59,7 +58,6 @@ Valid values for ignore are: * `bose_soundtouch`: Bose Soundtouch speakers * `denonavr`: Denon Network Receivers * `directv`: DirecTV - * `flux_led`: Flux Led/MagicLight * `frontier_silicon` * `google_cast`: Google Chromecast * `harmony`: Harmony Hub From e5f3f6a10b654dc07503553594c537e3ec12248a Mon Sep 17 00:00:00 2001 From: moskovskiy82 Date: Sun, 15 Oct 2017 10:34:07 +0300 Subject: [PATCH 097/152] Update input_datetime.markdown (#3629) * Update input_datetime.markdown As the frontend is not merged the documentation is very misleading * Make it a note --- source/_components/input_datetime.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown index f9351f09848..0ae8cae833c 100644 --- a/source/_components/input_datetime.markdown +++ b/source/_components/input_datetime.markdown @@ -12,6 +12,10 @@ ha_category: Automation ha_release: 0.55 --- +

+This component is a work in progress. The frontend is not yet implemented. +

+ The `input_datetime` component allows the user to define date and time values that can be controlled via the frontend and can be used within automations and templates. To add three datetime inputs to your installation, one with both date and time, and one with date or time each, add the following lines to your `configuration.yaml`: From 8c93c0b6c5db72d3a9fbe6abe9b0ad82ef1b6213 Mon Sep 17 00:00:00 2001 From: DanielXYZ2000 Date: Sun, 15 Oct 2017 09:39:11 +0200 Subject: [PATCH 098/152] Add Link and fix config (#3628) Add the example html and fix the config (who instead of hello) --- source/_components/panel_custom.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 1ed44576e58..49775f28557 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -18,7 +18,7 @@ The `panel_custom` support allows you to add additional panels to your Home Assi To enable customized panels in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for https://github.com/home-assistant/example-custom-config/blob/master/panels/hello_world.html panel_custom: - name: todomvc sidebar_title: TodoMVC @@ -26,7 +26,7 @@ panel_custom: url_path: my-todomvc webcomponent_path: /home/hass/hello.html config: - hello: world + who: world ``` Configuration variables: From 21a74288e116a4289d33830299bbcf5194dcf0c2 Mon Sep 17 00:00:00 2001 From: DrewSK Date: Sun, 15 Oct 2017 02:40:37 -0500 Subject: [PATCH 099/152] Update glossary.yml (#3627) * Update glossary.yml Added automation, trigger, and template. Adjusted the groups entry to not utilize the term in the definition. * Remove white space --- source/_data/glossary.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 39245d7ef25..e18d05c02e5 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -15,4 +15,10 @@ - topic: Discovery description: The automatic setup of zeroconf/mDNS and uPnP devices after they are discovered. - topic: Groups - description: "Groups are a way to organize your entities into a group." + description: "Groups are a way to organize your entities into a single unit." +- topic: Automation + description: "Capability to call a service based on a simple or complex trigger. Automation allows a condition such as sunset to cause an event, such as a light turning on." +- topic: Trigger + description: "Values or conditions of a platform that are defined to cause an automation to run." +- topic: Template + description: "An automation definition can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." From 8079dc6741720c5306462c26ef18a00f1e219f1e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 15 Oct 2017 15:49:34 +0200 Subject: [PATCH 100/152] Update addon_communication.markdown --- source/developers/hassio/addon_communication.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/hassio/addon_communication.markdown b/source/developers/hassio/addon_communication.markdown index 7dd40ca0091..d7bee9d5162 100644 --- a/source/developers/hassio/addon_communication.markdown +++ b/source/developers/hassio/addon_communication.markdown @@ -14,7 +14,7 @@ It exists diferent ways to communication between add-ons or home-assistant insid ## {% linkable_title Network %} -We use a internal network. That allow to speak with every add-on or from Home-Assistant to add-on by name or alias. Only the a add-on they run on Host network are a bit limited. They can speak with all internal add-ons over there name but all other add-on can't speak with the add-on name to this add-on, but alias work wheel. So use the name/alias to communicate inside Hass.io +We use a internal network. That allow to speak with every add-on or from Home-Assistant to add-on by name or alias. Only the a add-on they run on Host network are a bit limited. They can speak with all internal add-ons over there name but all other add-on can't speak with the add-on name to this add-on, but alias work wheel. So use the name/alias to communicate inside Hass.io. The name have format `{REPO}-{SLUG}` i.e. `local-xy` or `3283fh-myaddon`. i.e. use `hassio` to speak with internal API. From 18d12c6191dc334e56382cf14c1d04915a47c9d2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 15 Oct 2017 15:56:01 +0200 Subject: [PATCH 101/152] Update lets_encrypt.markdown --- source/_addons/lets_encrypt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 31fdd13f3b8..8917e007bf4 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -17,7 +17,7 @@ You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration.

-This add-on uses ports 80/443 to verify the certificate request. You will need to stop all other add-ons that also use these ports. +This add-on uses ports 80/443 to verify the certificate request. You will need to stop all other add-ons that also use these ports. If you don't need a port (like with https you don't need port 80) you can remove this from network config.

```json From 1e526ab43b6d4f18f2b2c1e209a30897bb1acf8e Mon Sep 17 00:00:00 2001 From: mortenmathiasen Date: Sun, 15 Oct 2017 21:33:06 +0200 Subject: [PATCH 102/152] Make the example work as is (#3630) The HVAC component will not appear without valid initial values sent from the sketch. Initial default values added to avoid the problem. --- source/_components/climate.mysensors.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/climate.mysensors.markdown b/source/_components/climate.mysensors.markdown index c629b0083fc..a61fae33f90 100644 --- a/source/_components/climate.mysensors.markdown +++ b/source/_components/climate.mysensors.markdown @@ -98,6 +98,8 @@ MyMessage msgHVACSetPointC(CHILD_ID_HVAC, V_HVAC_SETPOINT_COOL); MyMessage msgHVACSpeed(CHILD_ID_HVAC, V_HVAC_SPEED); MyMessage msgHVACFlowState(CHILD_ID_HVAC, V_HVAC_FLOW_STATE); +bool initialValueSent = false; + void presentation() { sendSketchInfo("Heatpump", "2.1"); present(CHILD_ID_HVAC, S_HVAC, "Thermostat"); @@ -108,6 +110,13 @@ void setup() { void loop() { // put your main code here, to run repeatedly: + if (!initialValueSent) { + send(msgHVACSetPointC.set(20)); + send(msgHVACSpeed.set("Auto")); + send(msgHVACFlowState.set("Off")); + + initialValueSent = true; + } } void receive(const MyMessage &message) { From f8092f49c02251d6a92bdd43d84940cb034627ba Mon Sep 17 00:00:00 2001 From: Florian Klien Date: Sun, 15 Oct 2017 21:34:07 +0200 Subject: [PATCH 103/152] xiaomi gateway setup tip (#3636) Initializing the Xiaomi Home app with the OnePlus 3 failed. Trying the Nexus 5 helped. --- source/_components/xiaomi_aqara.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index dcfad4c8041..cb138708016 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -158,6 +158,10 @@ and stops the sound when the button is pressed once. ## {% linkable_title Troubleshooting %} +### {% linkable_title Initial setup problem %} + +If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5. + ### {% linkable_title Connection problem %} ```bash From eaeb3fa161d2cb7799c36fbc5916b59a8abd36a6 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 15 Oct 2017 20:38:42 +0100 Subject: [PATCH 104/152] Added reference to previous name (#3637) --- source/_components/input_number.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 3a5202960ba..4ebbe8ce681 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -13,6 +13,10 @@ ha_release: 0.16 redirect_from: /components/input_slider/ --- +

+Before version 0.55 this component was known as `input_slider` and did not have the `mode` configuration option. +

+ The `input_number` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. To enable this input number in your installation, add the following lines to your `configuration.yaml`: From f5b48715a6f76ab03b158af4ad9a83fd3128170f Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 15 Oct 2017 20:45:33 +0100 Subject: [PATCH 105/152] Adding warning to the top Adding warning about GHome not working for new users --- source/_components/emulated_hue.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index a78b478dba4..b6dfa32c7e5 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -13,6 +13,10 @@ ha_release: 0.27 ha_iot_class: "Local Push" --- +

+At this time `emulated_hue` doesn't appear to be working for new Google Home users. +

+ The `emulated_hue` component provides a virtual Philips Hue bridge, written entirely in software, that allows services that work with the Hue API to interact with Home Assistant entities. The driving use case behind this functionality is to allow Home Assistant to work with an Amazon Echo or Google Home with no set up cost outside of configuration changes. The virtual bridge has the ability to turn entities on or off, or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness. From c0c7d9ea4a42b6f8d437840cdaa9385360585b39 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Oct 2017 22:32:45 +0200 Subject: [PATCH 106/152] Update 'now()' and 'utcnow()' (#3625) * Update 'now()' and 'utcnow()' * Add note --- source/_docs/configuration/templating.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 50fb0abf4ca..c02fbb7f2a2 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -69,7 +69,9 @@ Home Assistant adds extensions to allow templates to access all of the current s - `is_state('device_tracker.paulus', 'home')` will test if the given entity is specified state. - `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity is specified state. - `now()` will be rendered as current time in your time zone. + - For specific values: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` - `utcnow()` will be rendered as UTC time. + - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. - `as_timestamp()` will convert datetime object or string to UNIX timestamp - `distance()` will measure the distance in meters between home, entity, coordinates. - `closest()` will find the closest entity. @@ -89,6 +91,10 @@ Home Assistant adds extensions to allow templates to access all of the current s If your template uses an `entity_id` that begins with a number (example: `states.device_tracker.2008_gmc`) you must use a bracket syntax to avoid errors caused by rendering the `entity_id` improperly. In the example given, the correct syntax for the device tracker would be: `states.device_tracker['2008_gmc']`

+

+Rendering templates with time is dangerous as updates only trigger templates in sensors based on entity state changes. +

+ ## {% linkable_title Home Assistant template extensions %} In templates, besides the normal [state object methods and properties](/topics/state_object/), there are also some extra things available: From 4ae163cd4ddcd4f8e39289e6d384bab7ac258ea7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Oct 2017 22:45:48 +0200 Subject: [PATCH 107/152] Template blog post (#3626) * Add a blog post templating and times/dates * Update date --- .../2017-10-14-templating-date-time.markdown | 38 ++++++++++++++++++ .../images/blog/2017-10-template/social.png | Bin 0 -> 69415 bytes 2 files changed, 38 insertions(+) create mode 100644 source/_posts/2017-10-14-templating-date-time.markdown create mode 100644 source/images/blog/2017-10-template/social.png diff --git a/source/_posts/2017-10-14-templating-date-time.markdown b/source/_posts/2017-10-14-templating-date-time.markdown new file mode 100644 index 00000000000..1af3ecff8bc --- /dev/null +++ b/source/_posts/2017-10-14-templating-date-time.markdown @@ -0,0 +1,38 @@ +--- +layout: post +title: "Templates, dates and times" +description: "Using templates for seconds and years in Home Assistant." +date: 2017-10-15 08:00:00 +0200 +date_formatted: "October 15, 2017" +author: Fabian Affolter +comments: true +categories: Community +og_image: /images/blog/2017-10-template/social.png +--- + +This [Pull Request](https://github.com/home-assistant/home-assistant/pull/9868) shows in a clear way what happens if the documentation is not as good as it should be. In short, it's about [Templating](/docs/configuration/templating/) and how people start to think about creative ways to solve it if it's not documented. Let's assume that we want the current year. There are a couple of options available to do that: + +- Query [JSON Test](http://date.jsontest.com/) with a [`rest` sensor](/components/sensor.rest/) and a `value_template:`. +- Use a [`time_date` sensor ](/components/sensor.time_date/) and a template {% raw %}`{{ strptime(states('sensor.date'), '%Y-%m-%d').year }}`{% endraw %}. +- Write a script in language X and use it with the [`command` sensor](/components/sensor.command_line/) or use `date +"%Y"` as a `command:`. + + + +We want it simpler, right? [Templating](/docs/configuration/templating/) offers `now()` and `utcnow()`. We will stick with `now()` in this blog post but it applies to `utcnow()` as well. Our documentation said: + +
+ `now()` will be rendered as current time in your time zone. +
+ +Hmmm, ...OK, that's a start. How to get the year? {% raw %}`{{ now() }}`{% endraw %} gives you `2017-10-14 20:27:23.700401+02:00` which is far more than we are looking for. As an user you don't want to dive into the code but there would you find the solution. You will get a [Python `datetime` object](https://docs.python.org/3.6/library/datetime.html#datetime.datetime) from {% raw %}`{{ now() }}`{% endraw %}. This means that you can access more than you think in a template: + +- For the time: `now().microsecond`, `now().second`, `now().minute` and `now().hour` +- For the date: `now().day`, `now().month` and `now().year` +- Misc: `now().weekday()` and `now().isoweekday()` + +For the year it would be: {% raw %}`{{ now().year }}`{% endraw %}. I guess that there are rare use cases for `now().resolution`, `now().min` and `now().max` too. + +[Hacktoberfest](/blog/2017/09/29/hacktoberfest/) is still running. Working on the documentation is pretty easy. If you know a nice [trick](/cookbook/), want to help improving the page of a platform or just fix typo then please do. Our [Website/Documentation section](/developers/documentation/) contains some requirements which are defined in the [Documentation Standards](/developers/documentation/standards/) and the "[Create a page](/developers/documentation/create_page/)" documentation for other useful details. + +Thanks to [Egor Tsinko](https://github.com/etsinko) for bringing this issue to our attention. + diff --git a/source/images/blog/2017-10-template/social.png b/source/images/blog/2017-10-template/social.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2c58b001570337abb07d6ab4ad8769123a1b32 GIT binary patch literal 69415 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%0Ap; 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 WIdYkq`=5Y-=hX{knNn%PkN*evw5weJ literal 0 HcmV?d00001 From 1514bc90d18f54150715eb05e38fb40eb0ab1823 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Oct 2017 22:46:26 +0200 Subject: [PATCH 108/152] Add screenshots and update the outdated instructions (#3622) --- .../device_tracker.gpslogger.markdown | 71 +++++++++++------- .../components/gpslogger/custom-url.png | Bin 0 -> 89274 bytes .../components/gpslogger/logging-details.png | Bin 0 -> 100062 bytes .../components/gpslogger/performance.png | Bin 0 -> 104174 bytes .../images/components/gpslogger/settings.png | Bin 0 -> 99023 bytes 5 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 source/images/components/gpslogger/custom-url.png create mode 100644 source/images/components/gpslogger/logging-details.png create mode 100644 source/images/components/gpslogger/performance.png create mode 100644 source/images/components/gpslogger/settings.png diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown index 9259d8f702c..6b6a439cdee 100644 --- a/source/_components/device_tracker.gpslogger.markdown +++ b/source/_components/device_tracker.gpslogger.markdown @@ -11,7 +11,7 @@ ha_category: Presence Detection ha_release: 0.34 --- -This platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `GET` request to update GPS coordinates. This can be configured with Home Assistant to update your location. +The `gpslogger` device tracker platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `GET` request to update GPS coordinates. This can be configured with Home Assistant to update your location. To integrate GPSLogger in Home Assistant, add the following section to your `configuration.yaml` file: @@ -23,37 +23,52 @@ device_tracker: ## {% linkable_title Setup on your smartphone %} -- [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) +Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. -To configure GPSLogger, you must set up the app to send a `GET` request to your Home Assistant server at -```yaml -http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT +After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. + +

+ + GPSLogger Settings +

+ +Go to **Logging details** and disable **Log to GPX**. **Log to KML**, and **Log to NMEA**. Enable **Log to custom URL**. + +

+ + Logging Details +

+ +Right after enabling, the app will take you to the **Log to custom URL** settings. + +

+ + Log to custom URL details +

+ +The relevant endpoint is: `/api/gpslogger` + +```text +http://[IP address Home Assistant]:[Port]/api/gpslogger? + latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC + &battery=%BATT&speed=%SPD&direction=%DIR + &altitude=%ALT&provider=%PROV&activity=%ACT ``` -Make sure to include the API password if you have configured a password in Home Assistant (add `&api_password=` to the end of the URL). -You can change your device name by editing "%SER" in this URL (e.g.: &device=user_devicename) -Configure that options under "General Options": -- Start on boot: yes -- Start on app launch: yes +Add the above URL after you modified it with your settings into the **URL** field. Remove the line breaks as they are only there to make the URL readable here. -Set the URL under "General Options -> Logging details": +- It's HIGHLY recommended to use SSL/TLS. +- Use the domain that Home Assistant is available on the internet or the public IP address. Can be a local IP address if you are using a VPN setup. +- Only remove `[Port]` if your Home Assistant instance is using port 80. Otherwise set it to 8123. +- Click on **Parameters** in the app and you will see all available parameters for the URL. For Home Assistant only the above URL will work. +- Make sure to include your [API password](/components/http/) if you have configured a password. Add `&api_password=[Your pasword]` to the end of the URL. +- You can change the name of your device name by replacing `&device=%SER` with `&device=[Devicename]`. -- Log to GPX: no -- Log to KML: no -- Log to custom URL: yes and set -```yaml -http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT -``` -(be sure you include API password (`&api_password=`) if needed, or you can also use HTTP Basic authentication `http://:@/api/gpslogger...`) -(You can change your device name by editing "%SER" in this URL (e.g.: &device=user_devicename)) -- Log to OpenGTS Server: no -- Log to Plain Text: no -- Log to NMEA: no +If your battery drains fast then you can tune the performence of GPSLogger under **Performance** -> **Location providers** -You should also tune GPSLogger performance to save your battery under "General Options -> Logging details -> Performance -> Location providers": +

+ + Performance +

-- GPS: no -- Network: no -- Passive: yes - -A request can be forced from the app to test if everything is working fine. A succesfull request will update `known_devices.yaml` with device serial number. +A request can be forced from the app to test if everything is working fine. A succesful request will update the `known_devices.yaml` file with the device's serial number. diff --git a/source/images/components/gpslogger/custom-url.png b/source/images/components/gpslogger/custom-url.png new file mode 100644 index 0000000000000000000000000000000000000000..13a20ecd2c550739a74b36cb290dbbfbfdeca428 GIT binary patch literal 89274 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𝔩z^`Xk=_<+AWBNL)xt1YUW* z)zee{Yl{+Sl7LEi-6yL$!M4{E+Ae(hQzm-!17fKa_%7pK$-mFh4a9Q>;Z+wil*APK zD@6^DgN?e-Cx&Ql*|g8>@W1^Aap<@K>73ekoEg5Ie8ro8@%4o%T^ zDg--OwhauTW~_|4N$70kF=f}D@PkmI`RnHw1x?SGI*ltd%DR`fKb4P?_8TRpK)3{k zf+01O4!BpS&sd{`v%(fbVpq*YaBT}2=IHJmnsLzqv{i82idoeVc$KuKN3tl-gC1D5 zNZ$gKzgcx}oRNl%{HrZB55_Dy842utrTnu4*)n9Rn|)N((0_AG1h7J$a`kiX-#Rjy z5hs#iUYHp2G5wqP$(8D`!1G&01k;yDPG)#i(LRzj7rsjN>BJB3*Ww8?^ zNKvptY`?yJtf2R8d7!HpA_&?hlL^H}wQH{tnYa)yuvMzuLb~;0sPyhzg32ZGm|-#w zD&QE$5*$MdPA~oj7oL^BCq$qa3f8Hvmkcl4n~7G-V(X{f0>)!{^Qhr+?RyBiKxHEY z$N{Kx)Zbq(Dxqh$Zu$x4SzpOlb^Hy^?oDIdH2--V_Dm6>=-dAM{t0&0tbGZz@kT%o zUkL}ca5n+g6-sh#)q#R%-mgJXX7L;qgG>Qkb4By++)1pcG=ujmsB6{JwTUmPcBSXx z)XH(hsKAY=z`1zdy-yflaXy98pfxX!xo!Z*(vT7vcKuxPw5yG#K#)Z@iZlbWpF7k- z5DRUeUA(|(PipR*IR^QkO4FSqV0c2Eizg4|<>t=kkL=&Ocd?60vW@qg82iFgr&#b4 zd|X)Z0jEw)SRlADRH$OAyhklGD4%S$zwLQ?i|a2!9kNj8!LSLu=Lt#CT+ICkF>rc2 zuZEO1tdg|GFGuau2LJFX5;gvZB+>pz{)Z#<-;yIV|N1}Yc)b7rSEwy5UfuR>_-VK+ S;Gj5{3+67G6F+<9j{gNSa<{Dj literal 0 HcmV?d00001 diff --git a/source/images/components/gpslogger/logging-details.png b/source/images/components/gpslogger/logging-details.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5e3c84599fb8b0a838c58312989d59dd5ddc8a GIT binary patch literal 100062 zcmeFZ1ydbC*ENbma00<4Sa1!l!3hxDT>`-^xF!(XLI~~-!9#F&cXtl%?)o*)`@H|) zR(Z7=bs@wd*lB<)>Oe)JA3-YUSKRD0h98ERpKheL%KmIm#UifvOX&XYaF!3vyzwZ3V z`?$I0$irr z`9Ei)7ff13{(IUs>i^=KW9kRKhl*2Bb&4B(R7Vi?kA?bnHEgR}(&#^bCuv@#-JJB_ zyHuc!$KVmCz#3P1t)yHFqXaRMTv*G_E_YJmO444izZi61Y&Ph~@CT!jB2SRF`D*eoD)uNiNvv;@0KD!VD4b z9q8-)su2Hyv05luGJ9;bs6)zO_pXE&g_lB9?Brl#9}AlRxBP~6|RZ3HL8CHB|aJ1Hh)ZT@S>=(HHS>7`dd2Y>AZ!R$*Js% z3*O0T?qLr^N_IxLcstd3@8_DUgTQ#*K#Z$HDO0t}f5$VE(~-hne_gvXzk}1<*9VfS znzWLtmJd%cP3ZfWL*1wIU(q)=Ka;aDd-S72R8zb9|5&CpIbDVz@%zPomkteU3n=2g z5!o=-U#cTXEbQZ2s{Z?jknCV#M3OQnn#z>r)~?jU9=vcf7WoM?>|IAh#i>IIk1N*7 zgFWhYscuiXOh7`fy>zGXqjc0(HM*0NGykJzEHv`NT7*W1D(zcG$J$I36qtv{pEax~ z8VtvSw{LqQy6$i9+)PBXA<`ri z6iF)jjs$5-ntnFaU5W^^%XDf8v_Iox0zL%5R9&Lslcgub+OLDFRnVG1d)(dSdqX

=LdXAH2OWi3lP?lWRy`+d_Q{QVk6tK(UAHT@uu!fFCJKN+;85*}m!On=I?|6%PO(&(RN`-tL|CW-IV0|6i+~PPP{#aPA z78>ePiB07hen`bwuiPg|Nz2!3*_4?l=VErxP~9}dzP930Ka8xsjOX!g1q21kY2TBe zydVFGgNH(9$KrH#F?f5u@kSPxVzj&5*517L=&cL$!qZ2{{$WH)ILGH4Dhg_HbfY#A z#i&SQ^Us~8QFEsG1-$}-G9~bTBlA0UcMFUcf_u*6j5mmVmXjAD9|5%hzX)e^-yU!&ZDw=!9*8gU#hT z&^qL61kW7Vv9NI0POxC}$UBahh@e}y(0}Yc9(wDNNCgt{Ax6a!R3(DZ4*&g`s;ld* zA|$A{ob}Pc>H0D=zXn6l8@8bMkED&a|5Gz1Jtz9_xZMRLsH}F;)2+0nO1@v&Ip*-l z=U?-!O=7i6$O^|NW}=RkeZ&I;c8=rmi74Gx3d$7)TAV3m)Jt01#<97gS{-WaO}H5K zen(6VoMUC7axCPLl5}kn#ok=q&;>aKpW~Ss?PghbN=mFQDO_jX88r=E4}DbVn!fB( zytyTOY;LH*FnG2{y|yIf*}N=wBJDS=_VwvCWe>YAr&e_~Tac3avHnGPdHrY4)4-FR zL)F<)_;sb#fJ*O3U((fMKSSwSGFhZfQv~~m@1LwR$OU<^NR`)nKV(m3H5bAMDWs%b zjs>67ul5f0`L&N=K#g*<1~&zvo4ARax-|6J2(RMVHKGQjli~RIfMnA?H=vRFVA?aV zv)#ankuhct1*Ki0Zm$|tWiySxtiXtCBBJcqR?$mx)kx7HT5i&z9o%J{(&DK1oN|Cx zvh1_#F8(7>&V6C@Ew#QcL~GGkF=*pP6Fg0LMAZ6-ftP>CD>RUL7daObhKBzcA!_za z|LhopbT5kq9X7KwOb!R$t0K^rJ3kT@i9uqK1AOMC^yTxKNg~sDgN~Mk9-C9J9I3h` zO|GXS{3aBW7Wfr)X1*oWBV@ld`{N=L9wDNviwg2NR>29k=Tq6yVq{Xihu7&LR!w?6 z`vRo9QX$@OZq2$f%s#4Rz$5Fe9h)&l$LaDH10(U=q$`sf56|qkzHGQ(au)=t>6q9^ zN9?@ki`NT14G!ii2#&q4-s~kMeYw1xRaXvgf1rNz;eiS|ClJNVW07DFtcYr zxZ0IkNMFD5?+SSE19!8q)u%2BEU;8hyQ9)NYI@{(n^q31p`~OV*6WH9Wd;~Q%yv*x z&idw{mI>6LLH$g^7v4sDocn&vc94_FzpSr+W7l%CuQlgtX)Mrb%;sXPiGua*EY!*+ zVgnQiH=~7j$?a$z!W3E-bWrbN+9~tw&=gIGs)I)het=HQyXity#^S%gf(UTAp1kB=Ycw;rVe zg22qY`iqzIVQZH++hpmlPlV8-+wANQkU&6YF*IGK08#dVImYO`UhU=@LpXVA=5rpT zTlL;WwH4A^?fRqnJ2~Pd^d`D+^-eHr7^M5Aljol{et@NN2#(HlS)hzyXlQaQ^SKt} zFLY3PS=5tQZb|mn{)HN67bDU4&>@;I26lEnuwN(1Vp@AT&Z|oe{6`I`n}xir=kG%z z!prMse-^$Pf{RQO!ibRc=Qdajz=}mqKYB)of<>pGa7-JV{M^=J3QEST=MG{e!$z#y z6s@43yPETLTs|WLNlfaY4m#1El|ru(T~4`#vGu>Xg71kxi0VzSkh#rXcWPQ*ch;JF z)gFH{>^UsnT`MiOgd6MxYgv?7 zWF!GW5ueQNXUi?A#VOc)c-*^^`ui+(0(8bekPeu(1hqXlT}Ut0a&x z&=H`dJ6~ICHz3y>&&+aWSuDd7Q$!;{$lFfNFTX!$e=xE3f`RoHi+a`!75^zD6AG5f zS{4QAry)$}QK36wOq_ymJ4$TI!Ye({L4yu_-8EJhpThv#B#` z{a9`N;C1OuSD(i=$VNjsb!750nA*+K`TLU?q=V(U5)&X}-lgha#$hdGwOSz~7}{jt z$Ceg?T!ogywrgxT8tT!Z8ft7ig&(h?(D|o#1Bn5`iK;P}7c8ke$4%ePjukLl`>^{e z+hi<&$elNFw!V3m91O_BCwI&DcZGrTkc%rE-yv~tfCQ6ssR#Y8H|Rv5aI}kQE?`-hB6&2R5 zt;l`jd-uTbuyOk(LNqeVv`!s1GCwSA&<~r0>7Sp9Q863wrVk(+-nE(gwaZ1`!2!D# zm?A$WJ9#R()PYB(&yNYYaT} zpDR6_a6m?m?c(^#^^wXr=Ur#E{qE}>-$i0?i8Ck zXX)w5I4J#|uZCH_WwUjp6s(7S=*Mh{M3iu!(pvWg<8*g>b9~cHywk-A>bn)woOdsi zB2Ll0(sV`P2LqeeSfU!pR!XHD8T zrs1}hr&F;?7R1t=lFETIE7~~2?JYF0n4n)$X+O*7xMm!AsVV=Uo1Fnzc>|K5;9w-E zzvGMwpLpFaI{#fepX|H}Q_=giW=z~X-(?*{ywv1bw5EwjE3J^?6|2XhMD%iLp6iK*Ol{fPLzhtzkjORqbKVt?jHEAXZ|p-Eq;ngZ_ zIRWiDvFxeUt4G30ZU$D~SPEVtbmN#eA37G2daPaW~32SzjT$HU5=*UVTfbGY@Ac%$6x4>xuY_EP_2Im>P`X_;o{i?KiP^ z=Rd^R6NQ!m)CIA|-7qxbbM`u`qa$O?l8uW?%g)H!nmC>0W_eBMg{z*GkclxyCwPb4 zoD9H1eTz?D3O#@?#0(QZIk8_>iFz-6BuA||w}o8q;o)#Ku7<-jROQitnfsbth8p<{ zH`~q-iqjdbz|K|zOt_>feRzQ?u0I_G1%<1j1=X4yau;Wfvt~*j`-J=vAQ;l&Vb$&i zk;uGG6HcgNks#n7Evc{i2l{YQ^2j&Fojd$W7;MmaoO%v=3q|Xz|9$>L&6T{sKRU4x zv{l__0Y_hj?3k!awg^X$gF79pp!{=#zzz{I0d)GB9fgT+-N z6YM}q$qS8AF~8q_HK`Hg_kh0M`QE!Fv#eXx{_WnGT@Uk*HX`r+n4ZEswlotIgU39w zKVq$sz-)9wP^Mg@6bcUq-4hT;AO3oDhb&RqShkN{1pqy z;2L-Qs0r{HuV}}tjgpFn9Y;wA7C;?3jD~y@KReXp#3B<2;EDH17A31^wf}ZQR02?6 zG5Mp&1)9Y$WKL=x8vah3cGeb)PD~1KOp(hj?*LR5FwkgxqV;m>;BAvyXgPg1&Plrt zW4I>o$GdMGI?PgT(yZDxnwMi(cc^*QK|u*oq_4dHwTJH7%)BZ6b}<&PS{YwjZurbN zp#RenheKm(T8o6O(&CW5SSzjUnU|9d{rRpZ3eJGWAjW5I6g58(4uMu~8Bt{>grkJo zg0Oz@4VyyC+;v9gSbz1qc%dt2_yNo}q=5!a*W}t;1(?y2*=#ZyA;H1A-;KU=e_7TD z7K8*E^+v~=c=_t}W-1q1d&#r^AS#}QHk4Em1kCA+z@IMCdcU$ta-c^D`#zdh+Gp1_ z!5(`(@GjrFu>jm@d_I{EGUe|y<{sgvE4>3jr`clI*!Y+bpcpys^uMp{n}Z-2>gTt| z9jA1>n^=4#EkW2ty(XL9e@=~!v*zfRfovDC9Fzs%UR#pEKmiyTo%jpR(6K6F007R1`qt4CR@J>RUS5O<$uOnq6~LVEunBN2uVbI2Q8bRXJ%k!Z zrO|aPIguh{68h{-Guumtf5yfMSY`7xerhlAml_}*hfKba;w0(A1~ULOBg#K6%@$0o zXdKpw$|cD{WhNGXdadi+YmiGwQjsuT1p+!Q{5U4B+vtP+x&nV7o^dir3u7-?afU}r z;j=dc`SAi)ifLO$y&ZMz!+1Qf-(77H~Ge&)+!qVz(|mxYeuWFxSLGLsN-etPKQo|snv z+R@W(s&L&wh|h*9uQq?Z;?Ei+z#YxaExIzZX>7EO-$3C~(Y*CF;zB?SvOjA#Z3s=8 z%dRUSk^RfQx_*d8W_QeM(QtbDD!f1qj93x_U_EA4#31u4dekqLKALLpG|o(N4&I*s z!*QG?vQ4RT>dL_FzA()h)N75#Boee*DMHPE8g!!5Rsnj9kgyv*NN}@Frj)9dRUKp| z&1_BI@Nn>1H{JP-98aD3WEuF|Gfikt`@b%%?n1r;L9kOiFgX=*g;e+zl=P=?Da*Cb zUm6NaNaBfW<><7kt(79jkZDu`h@kB6jN#k45%uRkc3%%(jbl z`OkCe3V3)%muFty_`j25LY{B86&Ops56xZwkQoltbAFw7xg26L`^bxh75!dKT`d`& zSP8K2@Q5@Q8X-0=!svG@yiVky3<)m5yk zI37SO=J!7Mb$cB#fbx1Kiu2~Nh2KF?)@(NSW zI@wdR7g`?c@^3)V!^FmlT>cLIxI;vqH$nWV15L#u3<^I>=QE0-_=L6Ma;m-dj^pE3SS5gDo;qOybc znGQZ|4?5R>9P;aNfxe7{g6^kYBw-~*W4q)@>|x3xEg?F%aqbQThW#k!f8z%q!y~w~ z`2cGg+PXFdO@N_v-oT>GoerD`1i{Bgd?KP3&7c{xR9;S;r@B}t!h40JVp2Ahy9^o@ z9gq5T2oReI0N2%CB*nq}2GoHN-{+I};lpP;fq%c^MgPJKDmY=yujyzVEpPtt8VhSo zclYS9lIN2|q2lV0V8dyU!j(LMBP}eB+ijfNUIUOE5ZqvmFUAfgx& z?;ac@CP6)02f{I+K&4HeRSW~AIs^zd`J9ejvdm&1$7D9PKCgkE0>0%eME_6>C~*7v zIO0DLD0zi&rx3aX&}{T;=FRV*4fVrXwcfqssCCGfvA>^>l_hi5tK!l3`OZ>}y}>d# z9+d$7&MI#ZVZuV`nrsr%I>w%j^(2dDy1u(ck)2`k(S>i=peeFDuG;;c(EiOEnizKv zhecpA4%d0{D;dL*tm+Kv8B&6COGw0r+_Id1hk9&V?vf^gF0f)py#j05v<9 zyc!BGAdWd^ba(F~69 zctXYSi~)7&2D*fI z1RNBS>dkIG4$^T=TW(pS4pATAnzqyL>gBJN#jc_@3P8^II2Ow5z5JCc;U&loN zZE8esk675d0w&R-?`{e`yS?LNTDC#S=ayc3o*xsefZVXk=+|UlPMN(zH|?^>hU8{$wp{};57`U4#3v?Ai|yGX!WVb% z;{2^Jrt!x|GYYg!ofiLkBj6wV{bn~RO)R6YeDY?8w()Y@ z_TiM}o|TU)@-l!yQDDde@4LJGL&A~J zoC~iwb@g&VOACm)#qwH~wpKmg$6Y|ZgD*Q+M9*#aoiEDWX-6|;&+xPwInqMob%F#k zcmVSE_05dZ&l=6=1`zNE^AEr0YTQ`?D z`_JXggIBnQr1jxWXZ%XMyw>cmVx8a7W*6s|3#CfuIS*%QpdXQoaRLL2b8>mb^~%6( zStU)rq|cqio~M#zD+>w}>IXa`i~FU-OPQc2lCm9y_cb81*45kj z*Te5}B_K=}65N}sNz`S8k;!mzgyZq`$rwPCM;?@I!r*Pj-k121FkHQ2bcX3BRGn znnS1BnM)MC^-MZ4uG%GAiTFFRZv$EW-#_yO-9O$>O>@=`-sYhy8t&h5{u~e(TU`F0 zoj;-_Xa`zH7nI?08g+euilTDMiADO}UAyYpnv#9t@mfPgPv`N^sl^8s5VTxBs8|ur zH`GHzH7_qCo%jlTYG|rlFpbm$>c8m`1<*P_MG9#P@vzXSJnLH@?{#~odxwOC^f6q$ zXle~)El7ppq5pE+;NTH5it^*hE+&3Q|H^r;!PQn>EOshfS4qbC!BvvaW6WMM($Ox8 zzXcuS@Eb_ormbx0)LjzmT_nlmSh8DF=ayixJzoc5oUBEDk`4v{0iloFu6az!%jcwg zpiu-gwHSH77Pc2mupXj2dHZ*0$P*|PzGMxRWo7{M$`0p^zP6pDHTzU;)K)BG5-W(>sEg(jS1&_o1MzKE^MJ9=An3Png6h8Q|2 z(@SLs4K-o`?JMy>qCk+o6-~%@WIly*-}$V}&+W4J=r%giJ$Tb-Xf%54M+*J^80smI zdvtf`c?WP=N~oI7O7P^5zU`{FbkJW|3^s!vI6eair1;^RNU}@4t{`^BZ0!h_5xcR8 zeXrZ(ud=9--}e{ioXrtM;bv<%v07(ml?z*XwV4ybJi#xjx2y0{&{e5zfs_=9GNU>Q zQ!~F$Xn+LB8JiIxQ9P_(yDVvdbZKEU2CN#5=coDwlhw|KEGq>ZI#?39>O>{8Ms$nj zw#Nxd!P!NwYu2Dy!mOe~4lERmx=EIB-KsB~z!QUn3*}>yHVsPZ5g?q#Y+8O=z>I@& zP{8({$jiI2;$TdMU~f!`Sn#WS%O}Y8{f)OpW^*Wn_IF}n`k+A6z z@=&<1$mlw5i@0aY#l<&pE%%8I>&Fc|>b-{fN9)!24_@&C&N3ECLM_3-6iC$K+NzuZ zstJFSjl4mzed5=_@oNShgUUjEh0Jq5NFXcd%V!rN33@-)I+x8;N7}qFKAbbz89Rbh z{=iEdMkXE0**VUVq7T!+qCiOvIX!CwT%^|NajRI!4ER>28Ap1OHg7dGYGL%bexoZU z71tLMEoD#4j$5h*iPa!Sagx8QaZoRjj7R0+AVm9@P+YdUyW7YeZN#ZL?P@<5^f2#d zdULzaB1T~NtXu`uL>^7;z;lh#b7yi2iW*0tI~SMdT`G2-s;H!pIN}Eq^+N^By%E=| zg#^=~Uj<5E(F=MHm#P_<$$~66caE2oW?Xo~z^a8ktR*275NXs5DpjnKgX9;StEvFd zy;?j#g=!t`MT$&sYQ^|Mqg74YLyPkVI44d640MF>Q15F3Gn1*YGRYMYgpP{Pid4-l zZMgTN2ud?3&o4UtHsIR4`vnBCj1=uGK(WBs(=+)V%v;!&sT^f&EDBpF?gyH5;uO&; zeAS^+@ZUMKO9oWkooN7^a!jOo@bWGPt_^@CX9avUdRs>^o9~)&Vi5*#c*DdgB=zNS zr}3DBKz>aO(*QJ=y6vkNMRbPw?(1UxIK&9`Fp#()SLd7iK?`&eB6_Ql@zunevG*%7xs6F?k@8pg!Ow>ZiRB<9Xq{Oq;d z%5mI75?VpMBggHT@8f@^s@`WQX{nhwTtwN1{@gw5(s$$qGzf_$(MvtfmlKWK#cqzr zPU>4Ri>@usDp+Vr`VK=9kv8z3(_&OGnRT0txMWPcymX)K4D8Me5d$fqx>0RqRR**T z8HdPxJlONjWwRXX$hFu4bFcca1g~>V}9R0(o-ke2P&C2N{pLbH}y&oGN*A}}N0Z1hd`x^od!c5qgwXRU8K+@ z9j7WT!Taz{rGx}Q9aDuQefK1$Jd z9PfqWDk>aw>wQpwW}{ifhzH;yk`g`n`9+FD?P>XcJPXuMC%brGwQXGWAdZzQCB1s) zza{sibCs#O2+9a4{g4VjzVb8Z#{I&~>Qfog38>Ft3xc@#`6#G9>SY^das~Q$TA&qz{Y7`pjgt@! z818&CtT%@7}VKL_PAZ`Ue2oO=CBa0QpcMd_M6V058}GvALKXJ z!D}!u1+h9u4Anlbo*H8qSKtfJSHCKX+uY5Ee9n8fp3ic`PR}~Ouwv&V@YQBGE~EtX zd>;a0#CCID)A^jWSMvB=!IY{kOSl@4b$1_-kplL=N*+tmx`JWx@f7gg4=WajyZb$O zD^IH@4A4V|hs@_$e3mzm)>X{NRKcjq_%dUFVn7rE``6^oC*z{#@6eN+)vFIv`vrwo zZpKzN!QvE{SYr=P8UIkRj55ts=z!@3P71MJyVqzy8b_>t>hp{1rt+sro(jc}_6RWC zm4*0M>`U>?8!wb`$udz@PY+#|p*R6IfK%|x7h|EwMW7dI8Wd0b0uDW|v!NR1uZ@R# zOD{$WF_C3s-CDD{+D$O~Kqo~-7B&EjV*L^?tpoI$-^ROVnOl@TH9S5BU7B^#e9XXR zilq>w9?S9dTsV4UVy!bL%u=Ng;#0PF?gPy(AdF{Y)zvn>A$RyU8rgyg)XquKb``4C}>kXcfXg1qEVx)rHD)3g~lMtD-LPG)1 zC1#7;`WxB@FLFO5kbzC~+Rn5*8-YpC>*2DEAb>{nNL{!U_?IfYJ`SfaVen@rw%#&u z!)?pV$>yrByWPSQv$Q}dU|@XC&!=GF$Hp=u{~6qMhecAaO<(^EdMVxwwK8gYVm-qt z+(}t5P}}sSI&#fDJv~YQFi9jvduo<&lZ?%yB!nrC*M z1fNJ>pGrN>li95N_`vtA3e+r6C+PvBFV2rv@) zL$KaNrtpR7TpyjYz+jCDOap_2uuwhL^CajPlHlu8a-y)AlU#ukB{CxRU z3bERP>-B=uSBL$$ruYh%b>6;aDDObc_5QCK%Ji5Y0( z%KC-3Vjn_k4jiJmdHLkbe6OLOo+M@K=P&2rnC|WnM@Pp4`#rB64zC2wIS75uLH96A zE1%(NXP7|-aIT*NpC{_?%Jy&g964iwrA7Rcp8r(!1?ZXM6Zr$nGA-=GB_%(wzXB5q z@Zq`uIpxaYP)p4^WGk^grrX z^L&}_`3l)XL##+ zYvAZTWLpKzjsF}qJ^ynRaC(vS#qRZ=!_o8q;+xYr=;_G$N%m;;SKry$q=~SGp8&oyoZpj^_qyGSlQUVKhg|~P`wtR8Yhf60;ZGO!^h|I zc)x|GbYY*+y*o3mUqm-UzE4Cq?w(qUR}D>w4yV(CT%gGk9cI*OM6Q z)JJ8~GYkbt0?|CCRfWsGcGj}N|>ymr(1DiG`!;ri;1~-S2y{ZXBc=0>(*}_ z=z)~nF2zi(SDXwPQqhMf&>8BTXT$ug&~P~7#DXvzs{zd{h*L>lJUWsv6p-A+pc&}fZ^9McJPoZ zIzX!X42wWKVaUal>z1notayYGxS+Q@M51>yl)qwVXnr&1J?kU>nVFIfT{%SD-qTTz ziYO%bmBr##bVPdmkz#II<7L zBje(uLvMOn!xjkV`RpNEdjENhUTU`0@?F{2hBn&Bth|n5c(xCB6LzEXb7&QsIV=J) z;-CAL5YZA6Mn6zg2xOF27Y0O#%U7{7VFiR$GTJt%x{uhvp#SGeX#y!(?C?7Ixxrl& z9Ij3f1K}s+lGLS`Djs}W%rTs#d47k7an7)X`Ff9&rCpT&9mie-;x?mzrU_+W{{)%` z(a&J(vt8GovGK8hTrCt*CR5(Xq(C!bK4;PX# z+U^evp^kxuQq9iZIoK5w(?NXq&g@zD`ubE-_cQ*3cO!`EF@DzIt0N(&t1I3r65UN6 zVy1VDa9HFrV9x~*G_rin@iCHhGD%5H_>qy+5Z;0pL332Hr+ailICv|P88xC{>wpv0 z^MZ8BoC9CIaCCeuV!D*HhM%m%4+bme#J{Wt?{iujc!iZm!0&Dv9f%d@XYaXMM-U-x zGQjBGCi|`)6GbJ@Mvd^+UuED}x9C}KF15po)elmC2wp^#g52K~O64DCc687KPt?z*g zkCdwl(!XT+JFP5X>O_G8E8E-w*YUk_H0B$0GM0hufz}hGy`%;E&0+79ddIK*CLUk6 z&3+&t;J3Iy`}ox;M1*zwKJJoMuK3B{cvi{Hln`{=bExkvzMsn&Ll zLPL4M`(Qw|K_j>Ipkg4yL5agLoQ`ifgTbo8XUA`@?yHEFj*RH6Hw`;|;ug-R&zvhU zQ1En@&UG_dCoIs8lHo6>X@N-uXpB`Gy~;w}E;ZGf;J z&QtHlPo0r#u{=(D0%18InX|1X_|&#p&|Of4Aft6BkJyM>ix=o!gJxpupGD%&?|Rl1 z49KeYWeUI!tQuFFwqF+;7DClH)C`U)lEnIibyW$CK(He6oyVzZtL{8vobQ@fazgdd0FxrJTihn zgXa2)Bl`|Tu;_fR*WOPYO~SMq94;HrJUX%eT00q>_ahKS)Zj&z3XMSOT4<=2<6mSw z&~2%<@$V`mIIkixO(VUT3mchTdUbvAb1k-n8l4vxtn-I_4c9pmTYLmqt24Z{o`v+J z3Hx@fZ6W5}UKqPIZ za!^%4ZNyBA8=vxD@p1Ve%p~E;PvN?8ydTlxZPc*Z=-R+Xl1A#bKKCg&3bpc9Xdz6) z_|$KMK)8AZH7K#6-+@QlOgY7n>5UHj-Mz8O*f>odiGf!={wpQO`}rVofpg&^QsqLu zZ0TaH*yIScx;c3}6*3lHpQ|-=IQScW>-5(l_$=1C{t4xn@sBA(@*i8j?uQl2qa>GJ zbZR#Kb0>KY2D@6dPQ~SwDonLQ)r$h8KkF*uK;`HDT<|ot>ieA<@ziFd%FU5&XOE;^ zg8S6G{8Gq0gjo`4^p~okpMl>~PHUExoeD{zWH9+mQ))81z|KPKd6c!2g6+Y(35x`m zeLb?Fh$QHJcw|I&MF}h@G5{F(r$=!cw~MYGTQ%W|>YLGDk@8wNn?HD&_x!uT$6@SG zI&)d_hBeZT!p*cXvy{$JlAyChghOXiD) z+keiNtFE3HS=sp*0K!E12)p)_PRXku()^wIvuM4MmycwtQ7ColJf}t6U_WInUEyei zkmhR{VVKV&#E$xc2=S!kwFDzmsU_6;U%C@FM;8*ryuMx5iP8pkEI8XNoq6rKKS#<< z4(NN>lDlc%**~mt64RA^&@gBj;|dWE|FtPw?mZ;aww=MCZBa`x;APzdF7{LUhm^qu zI_g>&Wxk@%V|CZL4}eb_rg_6RJOG(#p=nD_X5ZY+68uhUF|Hm0gg&y0;dHWJAS`ts zO4z`fML#48on-2Hc--^y@(UL-0`X--PxgbuPP%Ef=;=lSsc`7#0zLLOTyKJ>Ct_Mzwb6kW0h z-|?q+8gnlmI=5ucNs&TxcT*6WUkzQ04-p8S8v~y+7?=ky#$~fl%c5SsTfbKO=`;JG zKIcG1)ABo(_ixfkgdo4m8|@wP zR_Qq?_mmzM46d@Pilk1SrqG6NZbsQ2hENt5s|!^rL~JGLBlT+cl#d&_P=3MH=r!q> z;Myk4`>qjZb%?^jR>GgMfgKf<^^9zQ2{d>ZTiVaEGj;tIrwEK6#8wW0OCufUeU9qt zGJmJOkwYnuUrDr zmdfnfX;w%o`MsQC*AqS&knvOE+v4+my^Nd6<)#$dPHp6C7D z%6z%0wPA0L>Q|s2k52phz+5KaM725j+D0dKC+KXzZvluQNGb?tQH0=G;S~mvBKw*X za7O@bsRp!VOirE~YiKhi#$v6Xi32-8_HS_@ZqSH6@QJ^1Jz78NK**u#)Lv|6q#-dN z6Si_#X#XeP_ULkP0XdnIHp??}R%`6D;TT@j(^UrVwSg7N$F8|qiro#0D~)7 zx01i!6-CdYQ4!5KiG`e5#ZD}*gvfHk!A6dLfCq?lu#{rJGz|&mb@Q1UWGi(SqoH~| z;_xL|NapjxXEykLuuoR>j<_9-1SK5q4yBCNX;^d!&FTl=MYVLLvhH|XG*960O09n? zOp%*7(&UW&znC}NVB-_{_g!14)phExbtCg43_Z!o(V^J!HdgV^>osI27prj5rBe|Uphxfa^@U7zU#yPuC;(|3>L;W%H?WKJj*qxrO=XbJ2b(ZFGO9r}T8Y9lr&IEk?f%YDRblhD+-oTlE5vbZrl>XP zV0M;ybDKSp<5o;U?bP>M^JCMFaCc)fjqPE^i~)&r4r(EVPP%9u(#Ky3FIktGoofGUBU*V!$7(U~H)m-6&2 zE;{zqL{PmWa$@o_6o4#1B-NNo7faH{ddUFr@PL6uU;hbvvvs3o&PjNnsbh%ixbw6$ zw-DreZ!MfO-vAmhj)|I%I!{8&et;)>9xmHiX+#;eLbh#$xR-lmnQO};)AaMJf{KWP z8j>*%X*vE{obg`p9`g9X{wUk=95B6!Z}GL72kr-~QU%DqplcPwUzOM891Lgxk|4c8 z#Uv)*D1Bj~S9?sw{X;Zd0YjMVtgR8X70L1|_@^4>Y3R$nbF?McL^6|hCX zkU2LnMW~W=Lq7q(tmmmr_D?bJlMOW^Ev9dkCxg#p-;DXOS$@!Bd`)cRj$A466&kwM z;qSy>I&|v1JjIUMp0)iBwGAL{^&J%$MvOWwdLUn@fBcrAQlx(%zE6DX>T?*{-la9$ zXi3oSzx9m#)|b}{#z;gar%Ot~T_;2{ykOK&JOIIDvmF(v?-|t<@H59#SqEp%fFwSY zgXaI==$nsT<1xfTm`ui_Mde&`5gNUQaMQ*wVM#$I399>I!R^rXyr4n536fE6W zU3KZ$X0qlgR>(jpMn&+Jsq9nqK#sP=`1=I|()}$b-ACHyl^ZJ08cP~oBDVk}^mVi0 z*7r4A$HoHcJEzUlt$!1bngiJJIrMKN0N{#)`EumvN8!frg2~gvyTL?Y!d=fgucn;` zy7%&myuLmZcl{L09-{yx$oD?`5K!a~*<-a+MxfsZvkCedwNV0H& zF`FhWbs#?S)vxpA*Y>pIsYI$$U0W3HF{XJWK~Y0kCDUJE;)%5pN=_JEeS8#NO@DrX z2N5@?HZU-(jA}<}?JbDWwa;c+`!z{LIek!7(cN%L&@p`v_oN6`X`CSU7?h%y`_y z-E76LZ3n84^ivvq7BZt;uZ=p2h4VSxQKF;qX=)$UFU1}<@7aM^qqQ`$v-6O^rM@uh zH{Xp5w$UjQvtzIS#3YHFJy9%5&*cM>6#q1CMrkey_pvY(K;>Xj^u|r8T}-I?#ojEC z+05XPPEGB-bu@()YYz|?gMmF*wo8b;z37O8L1*CPFD{{g+zjVf5eF?G5}#*~lmu|J zAqPxEc4&*JV0{BQ&DPZihzjJjhc2H;o;EwY6%IVN!GCRMCU<@He`5Lrm;ku_w-YJO z7RKn{u34qVUoU^%CK^h8(CagMb^=Xfab{2^^9}4#@z$xF;4)EPnyf(Ehufq?Nzw(yXPZ*qv6h zL6Sb!&_X>)WxnITH&y({3TJU^dp+XdH(Wk(&(J*v+)6g!Oaqk@OM8pK=qOma1bP35 zy|;{tvTfUj5mZnK8zn^)1f{!G6hvB5Qly8JZbWfVkx;t3Q@RmRP>_z19J+??o^LYP#|+38j%-#N>tf&`c&#&Iz9yj^S7mo;#cMBa zY~k+9uOvXw4+$U}Uw$)?{dMARO;tExEvcwES!o*Yyc*8FnxAu??(%z6%$31Xtbnt16GEpqY!bgkoc?U3Pkl>Wif{iw zp};<#hI*cV#jmb`p~33ag(UK!2y|)vKMEwrF*W9JC0hS!hyI0{XKYvfR~O32_%U)W zM^OQ9WPd1_@!k=0e!N=8%&tp$@6X+fA68rXFYX?=D7uouv%6Rgovw~xbPSucb%vJO zp_g}gm}z74o5hg8-;#uyKdL}}N)80Q?i73r4ol8Zq?}Q-c=Q2yVZ!3y_g94GHN$HO zB-~&5$ur7H<=w;MW+#n%40p&$&#p8Modc=WatozMD~|!B$xY^R71$47cO(jvzsdgk%_6$c#;5T1ty>JgZx!Q@$J&Quqbx%_zwF>#*S`tbw@2|{g@lA= z?dw{)!reP(f!8JNRaDCy{@g_=vgLwm%EOBO;~OoseL;ae8PWn<^Pja20*=3i*j0=5)p?B=Q(~^^ zIIP6x;wz^2sia?iM&+|~U#vSY$cSZkF7^4DY+>4}E-$Dvu;|a6X^M(q)wg#SRoi}b zl7QeEQ<(xobEUz{E15sJoCn{b8I0b>-fU>!Dkm}fDv#gmIM_gQb(5XC485h<(sch%>h-|S(g^_q$?WN9^ zqOEMpqMPYYjnd_z36Ap^Lo?Ab3B{1!82U>(2wQd_b{cQf3E!%u6 zfW{?W*zt*FNfAwdfph7Dl)jf;Y7uhXQ|Hhuxcg<~Q?Vqx#!r@mGp*x9%zwPz=uMG* z8kS(J35&hgr!n`=+f!>vJhr94%P4B@PR{XUKXr-c%7f{dgwL2+mF6EOm)hF9nsRG> zrrW~@9asOJAzKL1n|2bu^<(~6J0FvtTRUjKn+etr<E6^d0-q=E$s5ALhp z%@I;_DO1Ij8Jq9#p3C;|{L^`2q3_5fZ=gsLdsHZE`bMhbdT&MsdmQIeLqBz_esdjT zv#OFuxI{Do!Fk(Wfhj=^|3<9NW2TT9J#Lm;Q<=j$(;O@Jx_%$>a7W4Ysbf#G^2Er0 zBumLS8Z4*WH!A)<-iu4f@Aj0a%^yrB;ObJQ;xT&NM0)-F_R4SK>lR_o>6!h;J0`Pc zBV}<_MvK1|6cw)eqqmpxl04l7o=27ccija{mipdNlJ@Ko9jI5!>3ou(M3Z$_7|3H> zQSTbFG$;#tkIHrQC--io84}CWiab-XxU-QhsB4`!P?geT>_j7YF9@S;we((7yM*Z! zUzm`#3B_~kpXD)ph0Yx)$&|>sJM!1XhLu`x>F}M(XPchv!|}enPwzOd>WF326?W{c zxvt{SmPR@MXW*imU~Exj+tW`$Ii*pFtxMw0w1fl%*>%LpBnxgEOnn)ZA0=o`X!(OD z9aq~?pYKHSeP658%fG+hZc=sNAg4}QVR`;4M^Jwe{pWnP(8-}zbw5$%0*Z*Ck;E+u zdWp31a4%&m6~BGEDjheg-%pqRdRH_dTTPvI<_Cp41*$PnOnyJ^c2hG8e^Y;UU`o;Y z+1lOXZYt^7HGQ7cTaHSQCky>TmHoDjvm53E(JQ6(XeI*!f)eMGGzOWtIaay?4Y8`! zx%@qiyKCMe7{;ml7VCXYOK!Mg4%Kl7J{N7hl}i8R9d$3-ez)l>7y&2 z6AnHKS1$9L;k8@69#xeo1!kP{-(|(< zIG;ulp1o=*lVaI{+cIB^z%GOoU^a+J2?z)Sn@ELFbhuQXMPoMOT6t_ zd|RcXX3vM5R^<7L)l?iyxBrTFIz_#vcEOhYxwBinxD^ZzZQC(UbF{X#Gi@tKt#dWc zSmLIx_MK)TX~nsD0rAeyA+82_v)eAAU%mYGj^Xw#Tx2x%^fCm%=1cH9zf(wofccSF*7@eQ9TMG;G zAw-lmCdD$cF5PcPY{%x#i0!WrMLQfT$zSKwfy(q7Rod&;=rCmzUx)pweVw|jWzt+z zCE|N=n%hhpg=1Idc$LHVJ6p@6rGxwjaM#Tn>sx!y+9lT7{gqe&*)5^GyPsl;{~Lye z3d`nVhZ8YXb}cTtq9&=&LPXT7b9<)yA^$gjYhdT^x1W(gDUk)g$T)j;YjMb*FH^B9 zJ*fV^DGOWF_OcuYB?BhC8$Aqj;CYtO|t zX8fq^^f+|+%}Y*iFF(&1uMndvAfKYa?1*e5WrNIm`y|1AcY~_wdi)cL$St;-r+fl4 z3e`#)iq%SA+WQtWllRVc4*qOzGIPO;FGLMKr@eIPGQ8(YRQrhL)rdhyR{SR?I??3A zJPz6!&2Og-$sX>{@z*$Q z9n0wWpD1dWO|wu+aB!Rty`}9C8p~b|(ci*$r#C(BfGV#^N|$VDNY=BvD$BkZ972DM zO0}l!s;6x$R9(s*2~}p4Zj4|x zrtI8R$8EEF_3{~+?MiX0UH2=92nZGesc6WQTphv`>-O0@ClB%OsKq~9-S`q3rZIOw z>%Msu7(V0|JKW<~_xxi}fO7K>UzEPY(Cg!KTK`Rbck)@Yj`3J^mGo+mf%B#2PV&-7 zE6ltbvCK$c`C5D0D{sw(kRXwbVa)7?xBZp*;ZEByJ%(X|=)aK+L`J2mBdJZ3TML>z z0SjGP+izFkO+yKmuE%}ie`C+kjF*p*yE#m-kSLpR>u8%&z+5RIeoM<6X<432n$})% zeutK92Ms$iLQr}Wk4XfnWTx-GwI#}o`}wk;cEcn`F-Z03Ai%zn?#wuIae9_>P%la! z>pZ3TXo(ohJWWDC@cOh~h#u$Gx*yAFg0`jb9Cl15!_jS-vdlXH^jw;8B2JwRu_1Q7 zoHcfSyMiO4J9hH4JjsK~w5&7=wPi+WEiHF%nn>)5vq-~j^OAbn5|}wfC|pZpN%5ne zdH%-)n#sdSKZ^d*MVh7G?aB|jogkM&h zOYy9CdiAlo$?IpO|MxM`DHP-cZSC`R7KZ(Lj=0#|<+zX>&wcv9T%rNDwWBoFJL1%@ z{`VzG1PMw=%7;<{p1VV5exj=)%)-J@r#HkRs-4|Y_q;$r;^5)7o9MjF|E|7)T>0S+ z{q^3<_x-84#zX_C`IU&=c2rSz%~TdALPcU*gu*i9MRw+MvCmGW^d1TD!}piq#*jbve;8iA z^6ziw*Z$A{VjTPTe+VuFy@tSsKaWHS$^ZT3|Naoc|L;p6r;yPj&Gm2jUq6u|`@b9U ze`E3gb2@emhKqk1T2ePLNjK1oVAlBeKE-d>@k z#Fb+7da~7W99G8~v?3IrKJET=oyVb-t=z0L@d255IIhK#KL_rEiq|X{O+lYeZC&x8 z)@>`>X>W1SQrCIJk(HgD|Bv_7XK4p`;eHGHGRuMF7@NB1aM?nAj+)gs?6sTE$eEC2 z3J7Fky-#~juSU~;=1-SDN1bMdt)wvJdyma7>1Y9)_;~l_N|Pat0!$8%X}j6c{+8Qx zmiL>s>wi+hco!C0`I>0o(xK;(_32Dd548}lzN>$M8unz z`s31p9qhQR+1~o}V3}16o%qo^U9dR={wwRdG!Lsui6_czUt#wolzdlV&T z`wxzeR=g?9^?FJzG{jcF5gmU2&-G8zm<1ogLACYY%xKqQlQtC3iRR)C@f;03*V{&3 z9v(GK0n`~XAxv4?<<<*>r8zAvEuj$+8T4Me4=nm~&t!3}?ae0O#{KB~8!04o3OwgA z1qu6GIE^J7pkQNTW7d23dXpsmAY4cb5=32}?Toq?=y~lK2T<{`8Xfu3xji{Y$*%hN z@#7bxMaHeXrtLJkcE4{s4mQKC9l;`yMB#JvkDkVfIL}a?hFiWL0=+EztJl$faExQf z?^I-A1?u+#y1Toxbyfx~3c?!4JN1v(DQmX}E!JH`eK4b*JG#0qKg6l-n72>ij3TnfNkaupsACgQ#o_LnrPcle+-|UIRMR=-S zByg-M#!ZU{93XLU5H(zXcJ@5>dlHU&rw$S#BQy06Cn(*HwlI=X7g~P*K4Y#v<-9ZE z?ALoy$Yu3KTy($3{(Q#%KCVD=dosz7ZsPU7Oqn7Pe9c<3(JmrvJNDXObn17=78ZYm zHL#iu6j|=<%~B!TAg2{hRg^d?c`n}k&4*~~uVD}iD{Bj<_u9lyHFlfgfz7eE6lhYO zgMMur^V#;ezB1NTLiy{p8$ z=b^PzqvPt>10+CO{`^rjFi2u$WrdI;c3c`%qttUr%CDF>o0gjTd~bu-qT$@aoTQDP)4UCdG;X;Z zaE&WjZ-`phA+ucq?_o7ibeq$rIgqx^%~H>8KCR`~FOt1j2!d?8J^XGEzS9}&X*zeu zak44E?O>_A^hE<j1;|%E2c757rKHgDp4-nyoQABlO3Xg< zTmDUy!0&bVV48#Iv5BuIw=nvchPT8PIx{2ASUx%CTeo_tY*Qyak4}ZMczuRe)TOXVS(&P5t}8`yM(v8io};F<$@2er0Ty~?V6h4uAyTPZCLpOX zP+vo%qp2cyeq2)Y-Bc@rCyetx-ixJyhdQq`;^?I&$8_lwy0Gg}nvb6Q5?@<_ggy>a zP|(A%n5B}j`HL}VZYIWt{JK>#)4;$$)p8ZC#AR&))ks!9G4WDt;}1_2#ITyG>Z9vu z^Nx5i^gJw^uIqFd+29P+>$Fk}43$^(-QiW@s|_u!trj}7**W>$X%Tv;NDU>WMCJq! zZqB3c=QzwT`MPLhs5u$>P=5d2-C$M=W)tdw})cXkI{mz&1u6l0gLSK#}Qud+3GhmO1C`6Sq7>rLq#%;d|$R<3C zS5(`0?|DbG$CAW8V&8HQAt571Zr# z+u7R_ZSe5$Y*k~A6ukFZ^-&%L83|s(Q|Tg1Oi}{Fwr}&Rmxak_1UWgqd(!3IX5*Yo z?53Z(io&}xU*%tzC8s+wgn(v{e;n_9>?)riUaJ;nAh^E1PTB*#^yBWNBV3tbqsn3a z8P08fetv(N!#k^)-dmItq@#tbjQD4;k!o66D9vNoth3kokdkdB@t5S-+ZNu@J<8~- z=0c5pP_yA*scELWOd(k#V%jIJhxMiuN}57XRvjFn&-GT9pQH`Av82q+q&{G zG}+$d$Nr@9H`McWvUafE`ViorVJoHPJ?X(p3|w5w-UmZiUW4zx!PCtF)ReofhilD} zD5;WWZc=Gi*Gd|4KLb6rHj$fcAFtdc?O_U$31L>u@2M&uw)0od(=sNJA*UD5ZSjJ>U8N2>`dY)G!Mg!V@?rYj$`NbV zTD>Sarbfl-qZ^9^@~R8t0Rp3)A1*PIZa~22v)cT*iyN)2Mrtd9PSAS=wcA>yxI>&i zp4*q;iv!kkNA0?`D!=#fp&Nz8V1ElIO_(&^s zHHFxwQo!^J?kI;9_z(`M6^NPpL*xRtPDOuFU6us7cm%hVT~nij^j;R0&#lv6dgeoi zmcrqyd6Fx47KDNVp*V#~9rm!$(9GOix#{U?z!*ME>kXbxy_ch3zb4|dtsY_EV?9kq zl{#cyou`1?!C@37_I@jpB8}xT_n&l!eEx=LJ`2)~(-d?xMP80x+rx{>Vnkz?uD;ju98iFGF7X+BKbfajE6iyFEsvoUu1l2;HOQnRUj8~-8Qo_5^W&8&Kp~A< zvry-v^%sd|vrzcF!D( zn(N}%W>sZnPlI}X(&tZZyy9kb^)+s3`wVwrf}d+;isQL&v14h~i-SW;CpWDpR* za9WiQk@b8QkCv7VHK>5!hq6VgwzzQ7HZ?WXtUFbvuTBp-5L}hd4BIZUBD%FaQay-) zoqTC%7#19y7#eyxfJW#UfQ4t4mX>cv1w=%&IqDDXe!2hr@#9)xmvL*jd4KNnXfDIk z%zz$WlW3@!CLc4gKxFnU6<}~-uucvR4vD`%4p{P&8q3;WAtXQf3Tn@Mb~JDAV>N-e z2Ih}VZUx&q=&cKsl%^yGP@++~riZ(0R1#hur3LkCP1O4U__2vc(VPZv=v=2ho8ar{ zJU5l&#N7KiS3cg&SHd43ksZ0Z)av~s38^w6m+9#{e#7G3_`dh{L{M`I06u_m<@+;3 z>=CliO}~EqY9}1$L&fY%y+m|En#d-*wY3#j8aHM_^(8bk)F?9W!v`)o5gPIq&Oh9_ zLGfblsGa2zpZT}M6lFt`M{g;_J7G7;Hok;}Y$f3L5*DB?*6mK5TN*6AyE+JXd-D%Z z$DH@^theBE2&PAwEu{j7~+YOiPPqx4FFmH`(=;L(-H&uIoZNSq|5XSyDToYJ>)Hg+i*uv2hcT&w#}JK4L}>V z7K=O3f9e5)^wqjM%XA~nnMGK5aCQG+rJkPq86u|Kl$<{1hcc9_o&%^ed&#nn?_*Gq z1}xq5#-0&>4B63pUMUF%>vC0=U&Zj|n?rd*yS{q$%5AlQSTekJrS71&*i^BxMz`8& zzH&Bx(ifW1`3Fh&)o#9e^uU`ZbZW{7P&azF~FaI0nZB?Alg#{H`4aP5ct;V!`D zw)!;mOZN;90UdS2t3fZ{St+PqsjD7zocR-ViCfh2`SU1*!z)lh#9g>}TD7i;gM&lh zB;n^4BknBNQnb6@SjSK=K++ONT)*3n*!wERu}nWuI2t&0RaH~{=)EcwaO{8qp#k#$ ziQzPO_@tPuek}UrsZ*yM7qH*PZU3c}s;X*ls{4hw1~AdLyTF=0OCV%h(B|aT>YX z)NWm6CPSi;MBtE5@ZMF~9C~to8d%i@c-ALufit8+i%ud8#3!V24zLmy>r=ncu1KHu z+!@iBY&(*s_e_@}+o8*93|pN+WA#_f-+cxhzZFa>d@>UbYl zit1x+Jj~3@l)Ao_#s$wO1}O&B4813@-xcJr_LCA*<>ls9<+bLo@B0T>&g_sJaV6}B zmDp6FR-RS*w$yY-cyu%?Abh)(?%{*4?mO1eIlK%ZJ@cETVH7IR4?rckKC?B~#mJdz z>`6*5u7g0eUx%@=G$Xc+WGx*X6t4BH?A3B9(n0D#B2=F}OP2H_p9htoGhIIBp~6K# zw)NKaN84081|aQJ&BnVw>|g53i9nQwI?n?TuoRdT<9h)Bl$f+dqx@b$v9CGa>+t4B zRq8tp7z^7?J$W%`$!{@OVvc+Zsuo1_CO}Os{+PU&2_Ceu?>b0A)zU5`74W1l^HMpe2kG^qToO9}dBH?>U-Knoz}eFzt< zsi|2#H)_-kEC7MM{RcC}{D3{4Dk$)8T6JAM(VP+_u4TdFD<8wp!orgExV5kjsE{Lo z>v<^VHmhaA4s(gv!x@1p;9HI2;W6A}e@iVQW;zl$szt1Jxd9W|N})e`U(5~_>+*9REPBwktH^8oovjXY~m{gJeEj!K3CpnNtxk=xJ} z0P@qg1blj(;sb(2I)%icQvK1A4WGyEDwW7fIeGcM8rO}@-^>ZUe?^mok*NHq*wKoV z4eoph3c^5$Y=Pp38m)0cXb= z7U$BUS(w^D+h-L2s?eyyV@eTBmvj>Oy>hF13Z2@J*JAo zH#hg5CulmXckU=TIFvwWIy9W3G=mPEmrqJP>09EuVL~h7BnQC^t6Vf-`7t0s4KkV+ z+C7L!Z}bsGutW=_hfbZ8l9H0P{?SZJ$Os=T8k6G6#}XT`nK?937f;e;eurL0L_7av zmN2M_ln2^6L88?L=H;r3C}`}@AjJIxxw~}`Iq&=Thk)v@;>>!3>IA7MP__Lu;)X0>nX)eree;Hp{D;(|Zx`@KgARjL{8OmSc&fX zqoI1`MC49M1$K@T8zr)zYUBT?=cuXYl=htz?j17|h5x2a{zN8SV3fKh^>CoXJcQqB zFqKZsEz`6k9x8?Ueua6=D&tkJ6D47S<}qdb!6% zmm)W5Cc)}lG(h);3_r^oC0C?*k6}aW>Ln2C8>qTZTJGTf^XYZk3f(@GzYhtgkW%1Jqbg&trk@20%*gK zCx|*QU}@cD+l(qjwS=X=!Qu8~hie zGm&rH7n!bau)*;O93GbPiqa|O3^0RdNb(!<3&_5J4xZ`)3d~ejQ{gu>Fe^fz!iLHmV6q=l^{-a*fnnSnr8(wva^H#BH;ah z2G)Zt_yEsm&%VIjR+}Y1Q&&%qjEuZWOVuAVNFCt+-=AT?lhxswV8&9iXTl292XGWa zLTy@Vdb-^W{+s_9GMW_#_?i^|F)4<-j#V(NCP8#EAiUb5W1z750o@lOq26#w2blx1 z`e+S19Mfj9=OGRqLx?7je@G6}G^?;s38X=E2liP)xkiB=jW1N?e{=OgmJqO)4%`FQ zy}Ro&u;dgam(H&d0xq-PM%?qiJ~N_^1+-X)pC~G7SX$mAe!=*k!Tf8d7Vi+7QZ3_B zEwEip*;Nvj3J(${bTESou)c0LJu?IQ-tzKmiRQP@U%n&*?Y3X#JMrHK$^c@1@2Wq1 z!6QvfPJ)m}mD$&Ib(bg*il@vM432D5tb2H3VuIJ`*Lm_9rvKTW(E1M_`%r2KWletz zyUcUK52k>iyaD_mOz5Mx<()N!Jb*&=9_ozXYBb3SVq{fHW@8=}KLX(+nh2AEJDgAmfk7uM-UJ1sJ4h(a;4+LyB8n zV$6<|V}enk#mZL=HA{OGDCyVd*n$6 zo8td78Cnh8@m*Hdr%>$M)ZYSdpaX4~QnG=c=U6!TxskCki-d#(rx;Ae*xREUpfsxL z>E*-xi-m~^P59u^tLhPemaukT7oDmt`D0+;5IzgMSmpi&SncG;?Gg}TEp2UT=H^-O zZ)A1?a<@RM`|Q+|8BBzPUDu7mrj=m;#wZ<#Of#XJbi#}$1yrwNG@+RqgC9tU9kVJ> zK%o}HQ#QXpBLw;!;LAWdv1}q@@{n<#DZ;*D0@%IoaYs zvCll{c6A0Nve0&6%0((SJ3EU+7$B;%@7}5-f7PmWD@BG9I_=YT^FKaZ5`Hz|i;RS# zcuY|fKR#^jizp+YMg_+9unxQ)yS6}18s1)^r`Mm|Ie>A3 zOOvJa+B;Fw@|qF03bGV(oIge$90BCM zMR}D>etjrJ>4LCil8a0Px#{Q6pDg0ydhj#Q*4sXjzvZX1C9vv)!7$+3Yms#`(H1C= z3Cb&1ZWj+&?oLXE9rv$|B%<`a_RE9Og;gq$FkN} z*VKptC6=jnTIz-s*D|6Hq!mdQziap2#-nq;)Xs*-3@WfUqK0mm>0j}v_L@L*>J0}1)UtnMo$ zgX7{~Wf+l=<7$aXuPIrnobs-o1pEnj^N-R-3iK>ce)6rWm&$^fSAnQ^LpYXNk5qlD zu^K9yhp585K0$;U$w-rppkk*Iaa>5fn_rQv=4lG!afH#q(m8+?Bsl#>+Y%5r_$(l( z{L#XW*-e48)Fd?ac6K1}Yc2i#%2=qQt{z^uH$yESCtRw$ZHTS&M9%}@Qm3|l(hY$u zbb`RF57FI20A65lYS8te1R^L8ibhG5xDfO*C|M3*g#aZL<}?strwGZvlfmL$ux$Et zJ(}Mt8k(IYKlQ0M>MTHwV4=bc^b*895y1^4<^fI#m@mCOP1c?G;4QD?f-2$~K#2C( z7DwIgL-@wo=LJlVI2cguwQzP2P2h{@iqQAEUJ)tczMUI>?|Cv%ZZV@hBvWBL<`c+J zt5*=tp`VWsBw$a2J9{wVhc)MFtU(s4ukWl@ormiawoCPMb93K%>ShYPj@%@RLjeek zxZ(1i%F6QGi-?cU2ik|*=#ao5;D11#3B4KLWfvb&X5vo3k@f3OC1=ble{i#O{gKt>+4RF1qq+j zr?E`{t7GxxGx!zWoug!hfafeoPQH2Tp7}lK+b}i2#0uGyZcqS80U=PW@(>Cd8RfGK zg}825hUb%QYyU3PQJpvuT^mG2avyuY10K z#r!=;GN^^#EJU(F%oDl}U60$ehJIL=Q=@8r{QTLM74>X2lb@KJ#w_$GOGmA`l4J8k zB8y}oQuBWNxWmt{4jJH6Hv+f^>8P-#t@952vc&NqnZO!@>qy$-@kwDuaL_Eg(Q%9^gxwWq$cO7wRQgX3bp_WAI#`~0i}ei!v6LFX=u!z zp#434PX@{r1~gkxvTjz7(9MPB1B3nSTI!C00!9jPHu zV6Kb%)h_}Of{pA=k*0uBR??ItsJ&ic{b?n=GH7i^&;-X=@u3kaLnB?4J=7S)wZThv zhl2wHDtJsue=k6KP{ib+Ky&@626d|s z+Nax!DcDYu=A|A!d;`!BSF#MLO!`31kDQjY^d^izb75!ve8t+90QI4jl3*1awQOMR zwW=J<6DJ2-j^=z*5)<#cy1J^JrU5zuc!d8Ry$5-&hd5VE8?s_45z2tzV9w&@r4{Hyg2#Krb{HQ3V@-v5^s? z(W{BSI|T1WFUW#zu|g`aCw)k#uP9s@D9$)O!s2V2mgqqNxvP=iJKpG*V|CY*Kc)}V zWccagCRE*Lo%S!Fq-VjFxdODM4Cy^#&u#XIlf4y6n_~}o!)Bv`#ajnMaCiV?*X4LM@#Q4l} z88#tpyAK3Xc(4|f4J%?2KwMsX^N#j(n1HnrUJREW=0yru;J|(+%|&4MhP}j|p^joLE!p1w?Ydu_{JlPx+;gEmzI~WchjvB(qk8H35AQ~dc`JDR! zlL(m1dpc@4Z!PqpO{f7zq>b;Gz>eolth`#?tIn6qXS#ix1(Ni0{8r+=v&?!R2?N)Fix)3KIicj! zV$LBLwEi|Op{Q1ukIXEHpTb-Yssms~z+CF!T7y-*OifKq!sH>YKbFD1GEbq*x`RiM zJ#fG0_pUzAQwMl@f9WDVNMdt!h2sSA31UGxRVg`c#;F>n@M*wbaPT>MU%>`- zs8zmXE4T@&udmLghNH@6hxf4xaCrHoC5353f<8~v1#^V z%QmAmmHpGeNs#spgQO=LvmFI%<|sYAc#!_$P(&duFn&jLc`zm^35+tz)tw*xmyT?1MD)soW`H%M(z>}t? zp_`VIUzI&jS3Smbt<*7H$mGv8@IYKgnR$S^PX(?nSV$!FA#qOW`3DAChjzJuOEn(^ zy8D*`;R>|k9u*3u>_9xt{w9p2^XEOb<@_8Qt265;;xKofL=e0P>l+)|YD+)SyRd7> zv$t56V=8o@z#%aQ9GOk0qEO+1IOJ={@5>}N{+QS&o(A$ndXg5d3ev{e-iJZ{{^xwj zO%U39yEC+4U1=3iF<@i(0_*@g3gR2ISiq79+yjIR3d$zg1m0U!^)erHuk#A`3tiS; zHioDJJOok-Kl^)jBMXM3AV!f4*TD4O6K)UqZ>ipmI+%+vjH7{!gFJ~e1&Cp=!%6)| zxzzgl@^PH^D*(6!w`IexvH!5*k8uNJ3M>Xh3UCCW7Y`usz$en1+ZP;D6)SPH*%NFF zdWr(*eJ}`(Xq|or`>Bv1PU|8D;K`=`s0@LHtTv0Vw_6Z3*WwpJ^#Hn=1AVqgE3as1 z35W>S@GlzJbY!pu5Xt{H>Eh#ba z8>eoBxFnb?@_^r--2Z!rg{2FOK)etjVDkG}xERW!LfUqX>Lv6gv^XnFK9q5<>b>z^ zlD3`YHdqsLCN=u7gL_#xXXQN|0BkIIquSeu!FDvC^G+NtYGlKNja zPa@9561OcB@KH?GM<{(Q-qZeZ&>R_(mI)2&3t6;MnOYjf(E zs|2c7>~<||b}bD5Yf~U32SW}bX$6dL>=E(_9-fe~B^ghcEs!_ijzVMv?kK|XcX&_G zXbAD@qxs%qCHf9)v`uaIr?{t3<4Jto5etv0M(fD8cv-a!T4@ z`ytFBjpqux;Or|nnyj|}l81w;2ybLE3sncdTMaf8vcA-f^>xC&UyNH7*1y;DpIQi- zytQFsG!``UYrMdnYNjhvRs-gDvQ{@3rTqe{4ON=?Q)9%F(4Mieu@M#*r#mSeCVlyX zzrRJViE;p2MV7W8Wobhj7s>*4`3w*#Yr*wq`;szks-?XZ8|qNZSdm43&4-N)Cb7RZHaSBDTJMd}4Io z0pzKkLOBHmg~Wx}0ZVnTn^<^K(TYAYSat4I4_wN&zLQ@$6HO&TC)0q*(QmFN!}A|8ros4;7-h}LD?o@b zx%^-Wnez(|)#AvO~>2Tik~q4Vl-hzD9ZMaq1-CCmq#5*?kj`1flg=SX+lTJkce zJTC?7b!;0>m7ewkPzE6S9PbDi&IW7U%i&d?_z;r#*PDO9kAHxk4l1Jql~y1AwqeC$ z{ngCj&9rR12A#pF8(`~*jg1ZV|7mM|ixsO$Y$JP?b|&9WZM7*lKAydJfJX4Mk*TT0 zNR=a!sM)%+a1OwtKk#u(O6=PN7ffj^;6|%EIkwg&*_RGamRB)6WUT#zyStlQlU=q3 z5hDH2Rr)(uH8>NYGWVJfz_6^>RW%G6DSxUyokT(hWp}frF#x~q!DxDo!UucfAe-U+^mW?(drcK z@!)09#sJ~KduVii$du?Mq2n&IyA;yGAT>S1*0>?_6Y;sjOC^ zto!Rhxcjm1jaXNOY3AOr1O+hk^U7#%!g-49%*WBT2`hR4R{!UVw_(T%fzPdf;gS`HMU4%~jVv^)d-81iXg?m)t<^9Gq>aO*i9h)I&-It&&8VxZn^c6`3dh00h=_&Ky#C{Ak{d;m6yMLn2)b~r zi+aJH=fa^wYGEPgs?osY+BNH%9Gpjf5)c$bA3<0qVkB2PK6mb%nx zT5q|VrKj;tiIvwg0;N89~o7CuBtuG~ckfE*WS%U>J!@&5p@ZU5-HpF>RyL@}4K1St%8)V#l;38ycIWzGUySWEVt7 zgIE9lw+rJ7&(!Mp8*nAPk3-u`dO!zr_ru2NNXfF{_qcR8VUsiA{vm|b5II5M9`FD#U5Ph4QA^}&+q;%;a#4#~8c#25 zsmaL7=4_*ffO3e8&B5FRPRaF7VeyD@5)3-jGXWrKAifhA)6-OB-GdV~uxyTPd>Gz+ z@lSMO!sl(DG?}o12!T#C{uRt{VNF1IH|f4$Da9L`shFFpD0a0|B3rb|uRp`Y@+6Iw zCSWA89yLcN&6pM(Ok5iI;Vp$As);C#+m!iu!90XWe_*wM`IjSzIbeXp!K4J4CXJz+ zC)egc^$hEoxBTM2G;?ouY=$7?>DO_45!qwg) zpxM!aZKdD#4-{j4rVy6%gRrDh5Yy1OZ9=?d#Sa#FfWdxqfD?uw5wgUzUFFV3#5mrU zKS)6FPE_7$puY&mjdZ?zZE6BR`}{6Dc+xZ_v1O@aCZ^-PMkM)smuadVe;FHm3=@m} zz5=hGk7)=JM;Ouz-nE(Vi1wW+-(d4=G{}sm118v0_=?4U&7h#%+ za_cTrAm6(2?DRB2h)hl zWB?T$63V&8O{WBatXmGm-ofD*S>d#R#&U?!tW6R|TD|3qN&!wbu zoh9^n4ZEDMI!)ttV%({kF+IQvH^IGo$&FI|*^fJ0AM9p}MOsAlHjQcno7V#)ghfC- z>anvg_PrNDs_ueZ2u$pj9rwo4Ol9qNSf32THG7VcW3jDhQJs zUluHbBswxYh4xN)dV14k!dp)hd!ixtqw6NCc)p!Nj%oP-ip*|g9!GkpqjtB(+sb#s za1QU!HXNx~_(`eX3r?3rIC93Ypxg&Y`1&jE$hm16@xm$4o{|ThVEBOe(kD$p6iUZa z*j%KQ=b6o~;GqsO9#y-TrPple+AJG~ocNKa9D6-HRnX z5xP!M$OyBi3K=he>KizJya^s%NNoP_Akc;ZQ&NqD0V4$H9mY8=;&tevLM!aK@9>CZ zBo;=okxeBZW?%DbjbmTIxH%Ra6rdTHgH8JIt!D) zM|@YMcORSWZU&DN6@gArQrQMpJ%uo}+|x2k3*0NLYdQtm?p70NHSWpn{HAbH_rlxf zh+{F(%-~CAne|9E2yHR_o<}%+n^%jW$TsqZKU7f(=`YZy-#9vJB?cZSg9R#Hufttm zDoY*~78ypVPn_X691d|LmG4!oE-SIMrG`BDp0PDjZlmA3k_IGv9=zsbz7$ZQyC~u4 zU3By!a0~E0lnF;Zx3bEEnY}#EW$^u^444#xzAP}Jyx}5>9EQ@WHLL;*n7PvaiB_b4 zcVuP90&2OHcsi&ECBwANm;qQ#x7L@Jmq+fq_z;>?5=PHm9vPH+ z;SaFPe^h7T?KPUWLlO?BDo5=&VOqf{Z;z?>_TD@4LJk7pGLn)QCdh}N$d|&1-jJYk za8L^o??4Q?Kq&)~c^90gHm^z%eesPTPp7iz=YvD!3=yzyYG?19oE)UngL6-XeiAwd z4tf>_&Zbel%BTR3Gt$5r%fukvz%brgaf1a$H_FPNLGb|>Hfnzev=-!yPP)H8_$fym zF}iV8IXmDMi)NpIBW+bCEAh^bLZ-&X$VtMcpE|avAK^)744Ebno^+kjd1n0N|#>=w=w8o_)#{XD1Mf}^xv zOn&}k*Ib}5HCse$8dRV;m`yYt6lG<}fTsx3Ed)N(<(erBjThiD`>Tx9~Ld(-U)H{sUnj5XqI=sDH>G z1NG1F|6%VvgR089ZedhZ4A^1oU$8zZva-{+=sYvaG4iccedJQo8ihCsG#pSV;o5#9FzHPClBorl-C_&Dz=K zx2GDCOrO!Rx8CfcK!UFE+N@+MOCRnwH9~`%tK3?K6L+kE?wqL}gB&qV+3nH2dl67xpCJ4&sSi8B3CwbzFYKILTuQs1 zYsFPZ^@W2nsgCx1GNb@9#*N72?Z9*}Ztiu+0+JRJ8_Rd)9{BU?jGm6gf39km23;aT z;7ZXYbiUt0o~nURgFI;q6IbG_=jlTx^CqRVRz{CcHt7sjRJyA_g|#P@iH7kjE41 z$LrqgzvQS8Wa)?d?EZT`Zy5sN8QrJzX3yf0uz8gsarE$EYWyQEHdr|(hq#~;CT{^J z=i48zT)E;k%c7$+B;m)8A5pw{r{6Cl>9MeoGh$>a`o?tH3fC8*VWUE$U$>aXnY%X($LUYIrvf*=M07E ze$fsYpmrqP9ftIYqjdsr2hD#;7idCgBMrXPQd2WFdkIpEJ=_`ID9M2R#@8ACc?m*& z&Hle+R+Nim;{hS5BeK_Qnf|T6cTz!z3L9)QzX}po0~k)z+G9twCI(mJZ{@J~T7J6I`PJ>>X%m z937vGiHq}*F!U>;mvt;b>gUYMvJdJ#^llKkdeJOW8KYyRuA%V&5hRdRoEqJrXg@E? z;uH}PIdDsJ=jnI1z2Y}n>OJ*H_niq5;d#kOf4Nnszna>V5A^2`wA-M){2643x*wOj zv7%A&d0pJ293-jXC;jtKf|TZCVPg--F8=na-iNw}I)6aju^Rpaaa0to~wO#_<- zSM4RZGk?4&CP}L4EB9H9!F5;w+Bx2P00SyL+OZecjfs!9N-E7MZvPC-JO#>}ic@w$ zY?i<3`nGluG6Ho69+!rtrDbviQD}X*#FfEp_XNt{+&zM35KwqQyoQgXYzTj&ZhNFR8+tFk_( zoW^O0+%B~1atkUL@Dol%W^TF;TN06`b07#;L*>YsY}={Gz7ltvnJH;JP)|=8QhZBa zse9;LVtKslAC1k-tP{Dc)R_i80VSat;!PKg-?(Qrx-=y9g)bv9QB}v$feVA6wONVj zGBd3$*8=;`-KaBzh&M8qPrzX1E=qrdK%8@&!g@Li_a8p&#y#OV!phTgSS5+669ORK8I3+;3^7h;7r`Rdr)tQ+Hty#+RA1;8&Z8Uih z*h!7`tLFK(;_TQVyPUp{<`os~jSuY8cJ-HFW5+TW@;E9$hqsmB2HCp$_PYJ|gMu0( z#^>Ar8IR7))W-Tg?&Rd;*=+}2Xm@uv;wGGB;?ce(a-Yi!0Wdv$;?E$ok%J2YXYpkg zByfNKPPD8Si_^=h*2)DxgCrfQJBa(~F6${Q@%50No?cdFEw`+5Z3=g(WAzNnv-1cu z_xaZyzq-gFVOv7>GL3iVVIiRg9h8I!j2;#)qaRSViOuHC4KTAJ68>1bjq9Kn^z3b3 zNoi>f;;BHp>EYpF?L5~UfSAv5>rrmgQvi`EO+I}1 zhUuy~U9si;@Sr%mkZtA?=Y-#xaDPcOyh1}@!^CvRB&B8MKbZc1@6WraZNV{EcjDLDJLOmY@o4++YyF@8TK`9H$>dSSRcLx3 zAlVVe1%L?n@cV5(ys-+%;ZVZtic8iK2#|Hj{NZppwsadJ_+e6l`E#4Y$_pv z%dblt-gnuVp&p=qtfJoqfWl5_v#(@%v}ZQj6ja7Eoufs+Y@wdIyO8bF#3h%}tY#k; z@l`^)Q8SoL??q`|q6`T)=fP%c8!RvJ%l!ZXd)aE7dSfNluEyGJCMcEzxV zxyaFwza)a4x}&|UcqzLBF8h3FXvo1j0p~1?MyQiu{K5^#1p|p=^eeg_C)Ug;CgBlK zgS4nHH*Ey#bVk4ln4*8c0U{r+WS53S!#Uem%v=*b6JBBd`c8*Q`5Si>jbZ4vE4xkz z)~8$7pa(3K<45>8D!q$I^z(oUd0Y)E5E-=Mw9z>BOnVIW#RR~+ zA@ETho%R&W7XVz){+5CWof_^OT3HTpFhkl<@thxRol@yvw@9zL#M%)~S&VjqetOR# zAwMws*wTM&DA)U zhkLEvbpDe4eJU#?GA8B-naUya+!Rt;^P`y{|2*K$L!>o@u&oS#LL`dMzo(I+yil7} zgnxx2l}aBIZ*AO+MP0X8A~SZeu_fx|v7WpsbC9|##>kWe&s{Mxeb2vYFW?A;nWE;^ zb`mWtYjo}Mugrz6Ir|3oT3NfcWU009Tcfa7Wma~oT~A4o3jF;UWl~X1i4e_Hfj^u8 z{q+G+QBl=BrC2fcq=^I4BIv=j7r#07cDrj>KXw9Af5zghL%?KmrziUr?hlIA=ti&` zI16tqRW&eJ!*-~>qazjq>&AM*H39XQXs4q<5ET>qDUTdV?&G!Kiuto=0ZaNbIpx*< z-SvtetHF|HA#_oUr>FX-yAm08V&Go6(;ml{0*Oj52D;W+2^Q% zzLoYK)bC`}ck|0H)MuSY&8tC}xn+;F?gVSVx*R0`PQ@wG;0KYZ05kbrd7Vrw*Og9+~aB3&?ohUodP2aH`n;w3jNl&r+-iiz3EC?bJM z#ZRzX_%d&1 z+#=s4@CT{{Is4tz(-GCKLx*n?O#7RMNLdhcpY0O zBcqo$-q=5s?lzvzu-ShX{x`9(Gg`=Y!=^9&QABsuLWqBAh1R!FfxnV=s=gk|v*ogap5gN4Y5J*Yh^twRZg# z2#tkVh){u+6Bv3+^ zWXMVzM9@=M%rb_4ll(*@A|Kz`POTTG4`&6(0{eBzTx`5y&z`)uC)VTVjAiAGOJTzb zeJ`yqD?2qoR5A2sYqe0)sFuJnJN3O{h21QT z2?H+j&3j*!D}&^~Xh)V2$QZbF;$qDmM1HSTOwgi<2m;UEA|(~L(?Vgj!(7zxn}RRy zL)VfqjHaXS9}A(@)&ijD)&T+OIC`s+B$}LmDG`2K3{X20ydNdE{fo%P=D_l;%sNMy zbu5|Zc*OsB(O5SH+aJDD3(~%`1R1Sz`D>PfR8?i=qlZ$Q61Uduku}nzV)hTx6Gl5S zhvOc-0tJuq44z+$m+vE3Gp)rS*KJT6^JfGtk^>AR&=46|6yW#gWHZIvF2 z#bT8%)puo1Uh{Tz3V1mt#4#e~x{)-g5zy2r|{oPcm%x2dYo(Y(9fBk}f#=66+SFdKY zP9lS9LN@&;02L++RZAnYhw;N zD}_H1mxiFk)jsk>@Jz-WB?$+x4?+!+J%;Ild!bRV;43 zs^#I>8@jk2vBuPLY2_9*Mkfg6=ihj?Pb2pD@p znqq+uVOAIk^rj*c59rau*q9iqV?HGEoT&|Rg}I76w+_CME1WeP-~XbX7o!~loG$## zF}zAUuv4cm-_wc9oSquL^ov~2s*Z*34vV|8{9xjlVW8>&ftT_?@t+w2d zJai7L%E2KG$sA@eC?!X~F%s}KK{G8XG}Qg^qAa*8NWsGRAi8{FaXMKJmRXEVF3|4! zu(@n_e>VA`o%QXf0EG{ve8nNXztSa>Bz{n(*#DVtDD7|P2twl%@|}Tf=5h7(pr2bM zd3gQm$U?fKiTyzbH@{EwC_-hH9lDRt~$7J60 z=(M_?UgNVf<+}d2O=dsp6Da6QLqkSpsBAyO9&Lg><6la_Zd*~&L0LGk*Cc1ui)y=G z@4Y&Y(CTbcTJqs#N#YZ(d1!s&fKJ$*3$+RB8d>S^l?sj?+*avD|dwR1Au(8DH|(7?|HX#1XsT;|dl=1DZ(ip;85O)@sULH9TZmad20GcB9xsy{|QsoeIK}FW#ZsM~&!-X_zy;U*S%#IPN;P zLsm{rN)wAr8WMKcWq6tU_ci(9y_D-cTlD4f_$(`kK-A_4D8up*xu6?Y63YCL8cKD2`GeAE4w!q6GErZ+CuMqNO9$YsV)bFf-fMGuP=N^pXhALEg=I{Ca z_ZCxK@Rh0h*1O!B$|>dW9BT`qjRExD49Qxfn2#E;b3hd!J1DR2sgBo+g_$jdU}z8^ zc`P@WtTH&LYvQQ6dgML;g1rbwK)B*3oevHyK{P^185e?ud#mbx>=N<=tvq%xmoEQ?$;d>TVlK!drI~UX=?Y z*DOZ|PIBU6WW|>sV>p<)Q8ZK=OtqtdeX0~ZMY30ep=_L0jZso3m51rM!*ODxt#D}8 zfcR{xZO;_iUKtr$ZodoGXgfban*%$%UNr5Xf^)CA!LDA<=KdO@$al;CgsNS9eM=_- z+XBKJ&>D)240if(|8p+**vO|Jl7q`5=~8GrL{a2G|NA<{6>f^u9o&~!itkr8+$wL< zDE$KuO8_mknqt z>IMcXZ@qXNc7chJW=W&EWp9w((San!*7 z`U?&p-Hbr1;}AchCCxin$Qshfw+d+ekiqn@0a3lRe^jgrxIJ=u^~g1H)-`%^3-JM) zWY2M^RuqHV&|TC#a^z-`G|F>|+1Yz%_VlS@j~3DW1{p1%K74>FO4pq&#syG@sVy+p ziBhO!j!R!H-rLA zY3o1nT#Gb+#+R_0#;EiXl0qdjY7ROI^|i)cl9CTppPN}bnei0IB$4yrA7};Y>gx3C zo%kw01xfjw;D+>G!S50%1SOvoZ}_fj>74OKGG5Em75j=W!1OG>4%3iT{)xp9GJ;l% zd{aiU_>dzsiN}HMAgwu{Ewj@07WeMENfJh0LR)icL61^w_27p(`SBI{+ozbh2g~## zvY>zg26TYiQ3WEvr|S!s&QiGY+dJ>~BH~E(I(;NZ#>WpKN`gbg0Yd`4cSOg>_w6bQ zKu8pC^T}wms;aI&KFj!xGTWQHkg1`_G5DIpqkj!PrVO9w^m^xygsOlSR*{L;?`9;^ zvnc}{%V@FK;+og|C^~8Tt-N)I(NpF~-(eTi5G*!jo!gz+KVz|aIi+15l||V4LY7$yPmZGd z*6%thHQ6$MPZ1Pe`gk7~5xqgc8;uFAmVu6B2 zdMfK$ym&IB_<@Mb>wKW8UrxgSKuM2UBMxHcBygx$K$=@-`de~j6*E}D?kg(N(rL=f zE$nPLvy=}BfPwUwxSG9Rk_jZna=wdVmztc5SBE1Yo0W$j%Vk#yb`RP#C`aDA$-!r*O6$#CcI(Bzo9lI~nCI%4{&vpIAeW-rbuILF+-2d0 z^RDC9<9Xb@y+vFs%s4k!h?7gvkEJt>H@P+6G2Q{GFz#q_ZNxupcD$tX6*u_=1$~Zi z@XY{3Ol9-0JJbw}Pr97tUIK=YhsV5#xe6+tk}#B0FXZ^o#WoIwH-QelPQjoIL=dW_ zMMYPKDXU!P2Hhs5#cSO^Ry>^%SJ+38^P`{Y67GFOPcH}!UMD-V+O^u&Z&v-&+Z)=O zzi6W6pew>oLO){}3p2EGtIz+C*|2S!_f3xd|K646c9ysk2-`q#U>_#SW`q0#hD#$C zUkQWr0%0B^(8-W3w7Hl%FJECFg?0f+p=+K2O7WbuKomQw1lj6ko|c>nmTW?oUv+`; zza~Xvo4wzzhX5Zj1pEo$lP3ip>et-;rx=INl^SDE+-YkA$8OuFfTW_`g=Z>uCMFm4 zf%VNZyMih(;BNA@ZD-Y!v;=^j zlmqQ*A01a}v$pg9_)+n-PhZTx9z{cX`Bq!=PjJHp1!x|KAUme^sQTg3=4kcf?hCc} z8o$V#0dh|M!Hvf=Zv?HEbA&eUFLfOqbAe_6*e~j%;Zc-(2FNjy9N=>VDFUrw+n1H# z^C6qmB{B{;9KZGFmi6w_u>l@{K#o+q3tSNLX@Uf5ACC$STGo`qFVIVz@dW_I9Y>0W zni`*H!8*@^a!Wx8BD-Ks2(PpdZwp-7Xaud2Bp6&t*~oj9-(>CuUX03C6x>}r9@Vu> znR;md11h2$LLG+62@({f?ZeS7*Z~BXB8giy=!P9ePYJPtJmEm}QQGr6|1XeaUyp8e z=Uud0n%56egOigJ8Fw6RYLntSHWp?uu{5A|rg;Zp@&nEB0W$PbumzEsfqfvk@}_&l z1)_w(o1j@Mw>u`5IuF0LMyL?-o8s87f0%qehA{D9GdA~?y$OFlLS5z5n_5F2BE~^T zyC{1_0+;q%`mV^oY-Zuzz7W<<0y5NGyL3mKL6XsRINFqL$|HyIVdT@%NZhb$ZvA#c zzaBc_k{~Hf1mz#Y!`4FrO zYN;6i!P_N462;7g^K-uMk^UG7<=|*hK{FX7>q`=SfRIKx zH9fuenl;JX1XU!Wq0U4gsvc;AC|@UE9HW-VsS~u#>+e);qkC$gBoO z1Ms$l$2{|Lq+6JrVgav2#l(Ej(ue(Stm7!K6i_(3ii^7Jj^92%P`B2hJr`uoicFdV zL}a^e!hoq41~(zeob6~uwaop4PR8_90=R-Jl5jL~vj1!~`~)bDROw_8E9}z$ra1RU z!%H;+qDnj9+nrjg4OPoAUO&$d%xi`AE%7hjfFvrRhE9JZaJVZ)fN$ql+fr<)u14mi z2=E987n0Mva6m6;?Hu`{hFBK58oe&@;rd+o$>>a8##4gTr!s)Ohc!J_WcUojuZ268 z=yTaMAgVl_4Kr?>Abky&6@k)qbN3ip=$rJBp79JZOK7Ouc~%uor5$FroM zSvZE$rwa%8uDSbh3KMUo4>ryE>Dx)ZC1_w@r4i?F{Ure6C`G2P8^3{Sw~%@EPf*?f z<%0EtmKgc_I~voMA?gWG0qD|UXNY$q{I8A9f*+KzgK0w#!N2(6-=UiCkkNoHq|`%T zI9j-AmkE!rOEUJPsVqzSOQFxZq{@$GOgGGLcLZ^4$Cvr?qU8O1Rq#PU{Z4=kkfR57 zk#^X4NC;wUet7d&$c5g`bpFW37lZAk}aYfpjuU2m15UTDJRFDcCL_b}zILugM$iwB%X|vqM z#!b^qWhe7*7eGAyporPpl z>)?Ocv9d=iTdYy92o!yXXONoY0L5mU+)O+Ie9T@}a?re! z#}y`H$OnpkglEKp4BCZgS7@uPtzB8<+WLBK#o%yHP3fcS4AhcehAkIZmn`iSiHYm# zazX7wth?k{3Tu~oar_pUxF9^Vs}N#Kv~`3N<|9F@%X7>76f6^qoDyR@$ZQ$VU+-8v z_|!82XeI+Qny5#w0Z|B_(#yW6itMo)v$%xk9JN_E+>+P3fb;d51vcr)=M7=XE3Lhsi@4YkDvxE9&i{ zyV&QOaX@1!RsoFgarLs)t`GaZ+!9%LV=C4Q%>_9VEwPqUZgusVn z1><$^GaBEI#$5LRpR@E3O%nP=?P2Os`n1DJYaiJUIY9bg@ z^Fpe}UO+#vFQ%=09#>LSvK}6+JlPm4sl^c294cQPAwMiYa_GK|RXJ33DuO&-v(9qT z8EP7m`E`BDHfkaN<@WpP`OlAFc!O5q#+V}9nkSh?C+r%|m)lmDm=*RFLpaSG) z3vf+T%4ZM&B;`)EA{9Lr(A2>2ec zFwZVj5h-20San~~bQD;N=syBy1Th!IS9vD?@8yeSu8bdjwfEKECw|nW9tBWh6{wbh z;^AL2rx`bH5LvQIEX5H6fLK|Mbj3$SmC?AmM%!Y+5|6clUtV5_1hiN4Jr@OBn{pqJ z$}fC#!tKxOK1v#f2o!WFe;m=JC8`DhdvawVxn@;OJ46QF-Ak-++hSG?QAkpIF!$`H z_xYWfnIEsRR}d!#Poc8=lsa_^fpj7{iYEX2n#!I&q5iZtmxEaKZ+XtM2QmR#kz|tbNL2zsQtQp5jvKX8UDSv8lajrb6 zAZ38QNAV|e(009C(yL-(zUVM?s;44-w+D}GX!_BZr3oB!*Oi>=eS|ZRTOTn%)LUiU zb645|;^1>n)Q*#1v;hKVx;0wDIiya)zz_odN(Bh(9K4S zCL%vj4vEzk?}1^kv0339C;vZmP|zSP1A0t}A>tUC>U+Ay`zZB6C#Hgj3+V{*a^%2D zs02}bvyJD%R*=vd`=5cE+p}TDT%t&0m|xuGPuhoi|3YQeVYqeqSm!3(H+uxO3- z$m@9Qs@M~8I~%{GYsYb-5`-j(A14snZJ!{!O+gH>oF+nt=&3Kr*%() zf-IeSf%vxJ#gkDGniFkD1^D>(Lz_XAWGoSE9Hrc7Xima2*t7f&JHUcm*&Duxc$7GnHYOQJKOmdEMO6yDIl74k7pt75;=Nj87@5 z;brAlp3B53N-np8bEeoh6oJ9<$dVBb17-iB9t$2X5XdLX<(L?ud>p*YIv;VI8SnUf z>Ky^f7rx`e^czddPO-3Agt0A_xRRVo%m(z>(Llhzkf9-)EUZk(Z-!F^yekGT@2F+5 zVh0@nr^s~(EKg;weT<B3ML*{$<*LL?XX5;`Sz~ZjniS9#1O|TL1y4Nf5izreeypn3=%*Bfz>Ya=i9xU z@F!4l)8LSbO!N4cG-Yi6fnP&taG8UJ_5Un{se;AAv5t;9ptCkuqRRp;Rh$gqLZT>aj-F+%CiM;iI;Ij>H$Cw_w zB3U90xJPX2wm%11fIxrso6Jvzb>MD2Lk0M_nx>+WZ9`;w@30emMB-4Wu0ErKOblpB zl(vUOeOgK7>@Br1jAvHzgU}Q2CaB-%Jn!r6KLVFGNuB|vI;hDHM@pdf^~Ky0iA9BO zUhTObgJpE6QT5Q^V(Z+ta`y;>{m<06J zNcgpP%P$G;C2h@Rz4O+1=6bhg*Pj<&D%nztDq#q$#a&;o92hg>pM*o3?(W^Y3nj6& zP=};sOoH{s|MlA-C`n$O%M6phq}a6Xlll3MkCF8*4#Q8X(2}^-4k8bU^}b|T<1f=> z7p1rr*l;@B+t!tTxCBZS<5(xQGf5)qESkq@1{5%EaaNAU=+BgAkAio{*xQEg%TQ;8 zU)semn#uZTp2cG3*_iYqmk?Lqx)THGAeA|IjVpf)L3#9XzyXYbdQ>QR=#5k3z4pc@ z7ZZ|U1Ro5)R>huG0$QP{goHNM|D~UOJ^k93G)tX8zu`a53}YJliW0=9g`W)@FL2&d zSs)G32ajCXSHJ*V{>bh@9jNxEx0`S*W)^+mM|`dZD7@#f>;*jgXAib%ib>u61^xCJ z&T~cmqY6(#nB+`2*nWgBdtwOwjRtlX81!n8S|&Y#&dyk(0` zp!B5|Y+{>^ELyVV#a#K{9okXwgALFghbv}MMcYo;MZB#v6Ncp%Hb?)R7haJrH&PMK zd2q{GpI|afM}D_4!3@aLxr!k)+F`FUo2laMX{|;7R!ons_@1g|TP%I0B4gg1n=L9f zdIN*`Ma=1J4QFi_D4 z7~!N`Hob(QC#u7izG?4Ge&6WC!CB}05o0VAC$D80i#>=J>KK?BEEls6fsV@bqwhf0 z6zFo7vii?1LHjd>+dG=AE$L$crZ=pQagxHiRr_7m5PI>(@r27SvUQdv*pC3sL}7J9 z%fP@O0n&d3(q$=v{`C3v*<@3glgStRw490%w7+q8{e1QyacliI4$JeOpG>CQGdo?o zhw%cM*$Ufp^E+iwtiVfaj`5dv+s9|wx|9b~w(A)J++&nJ!H!JZtphD(4X)?Y_XIH? zwh*7OX5TJY=e}xg)a?zPtLL9=o+LEtjQt>~lkZ*skX=Zs1w!`noZA z*3^uO{JQ;xP5rIAIIfA!^}CKt81Cjs_n2Ra)sMtAg0IM_dSRR6u;;swX5<i}krV0ud!>7iYHq>EW>mWlM=t)ZU*7nKiQlS>%|Z!*4Db_x zF{P_s^Y;4;Y%$)S_2`-hM_8lb>w=}QAeggnzBJsEtVWmr;5-HJHcA5Q6xd; z1l3|DQ)C*C)80TdQjunXDSPO%W}}yOX4zkBbVZ~?k34nXKh|vpi?b8Qjx9akfEE-% zzYnE$T~$Jftq=cZHTIAhd*D^O^fm;KJll5NwI7!OCK#3Z{kr4mqM*YInCdR@vRjd9&5`K1eT_VYM7N(u_bm3)uj0ch-q zc0`>WI|IlcE{@%FZ{A{#Q+8{hdX}%8^JwFd-8EHJkA=)KyMKeSNHb925Evk|aLlZ+ z&umaXVR=|~Thb?A7;(XOBN6ok2#3uaC|#UVVJt_PLdlZb9B~8j{B(Fyc9rXL`OS6L z-!0)legiP7F}B{vk!Js(vF-Ddl_z$c$Pml+SYMowV`wIum?cSoeZt$dWSPqN=Lfh4 z#SV73rA!a5nJ#bLImcb=8t=80oo2TRKYI*(;gYl!W^>)dpYqlNtX92?p5k--9uQ}B z@Xc~4ObwIg2%pf0rYD1VpNo`_ zKHDZL?x3o0Jvb74u~L)#au1V$59u2wgdHxIuE+vndUwOo8JQ!T$7p;qLdSaL5ik}_A=U`)B`>6&*o%89q{b6;#{CQU z$jsb12T%?x6dgxaY>4BcPkxaAYcQUQN6K=nrBkcJ^+Ns|FP4y71C>i{f(zn{YY6y#Oi2PAAbkM5UEO{*NsH1SefhvlFN>z^lb|>K7&z#d0cX)8gnkGu9EGtGGdC{CkeWii z)F?YgMf3fqPbWZbLMpJ~v5o~Q!Wxz;3o)I_T`Jd6T2xS5y&W_!8u$YF!jBPSpGcRk z_|i8RQgU((O@q=KJWQdQe0QxeJ7Z_#TZ?`<9aOgrMi)+KwvtmQf|S_VP&qa_IMYtS z2}ZuXM9Lp)8qH-F-Zw>#>d@X^6FP^a#jI&fv3DxUl}7=y|2I3B$TvrGd~1Fxzmd!W zL$Tu3EA;T;z~*x@oe=5l5TRwA`B zPJ`jCChS?l^-%!i47^^X>K7_|;k#mmEr6HT{uesm#_+~7-evmoJ4fTY!r0nIXpT1)f8YC=YaZ(uSKpE@X)8l9liKHIijExQ6 zzmi}su=MJlc@aN=>2(>=ND7RrO(-{e+irVM@kV_BFidkeXUGR7VG029XGzhw77A}G za)+)B^yi>eq})wk$^~OGeknSpFX5IrHKb`(@*g7@h2%LEz!Hi@m|F1#fvJ4?KC*wl zhxv_0D}UJPqt*r>0V&3^s`mw}747<$!)R%|A3AyrWYHFxDWZ3oy zUiD6MXh6^)bS+7mjBQ3^s*%`tqV(7)s}px379Oh01_SIpFV^`7FKenZLHK49%+MZh z_=EPR!~$lfr8YxiX!kL`zr-tow|$&){s}-FQ2DCm^@4yYQtx>QzNd_=bL6v?{YyF4 zQ8C@Jeq=hyv3XFn>d#bBv)X4anOWBkEz*#TO8m@rY{dcfME&vZ%!6-TG92w|?7g$b zvosrBGK{i>gl@7v+r03~5w^K|pB_m#ymsA!!)xt#wvQ^jlQ?(wuHwEAAHNMdONT$% zwd>q>=TD;_pY(S)AARL$Bt8BBxDw63O3gis!@;AS(dk-Ndma?5WccrP=`T5*`5s<9 z#FOnigckFCX(4NXd_XSpiC z^LTLguF-D+a9TC3tor6!kH07u+QlD+@Wgs19{8c*A1QG_`TJ+@*tDtWSkvq~fq}6g zx32#13*89&FK7HkYdfUvI&Y(T)$U2Mx>>qxA^9Z3jz7a6Ln>&9yLOu+JS~v>9YXY| zg7+xziaEw}n3j4a1|NKum{=CMZ@Cvvmr;>R8Zc2YLoE6zv*Q$w78n5}Kx8zoJ3+3j zgdD5eX{TGo!Cq8jJQ%P`Icm4=_|vcwRHq$=3dcHXDJjKp_;{4}n(xB0z);T`8NW%y zRfwfBzZGbq|)uX+Rnl^6(r z0DnF}?*r(m;nJ#8H!m44cxbCvW4wIvpw-Qt^^f3Sfbk<1IdHt~+xs|n*C;d?r3g9L%1IIIduh4v;C0}-d zuiUm&641b$qjBvx|6zC!WwcJ%NpO2?(I=ieEu#g#g;N4y8=+-FjITsXsYO{4K;#J` zp~Fz7GSl9C)bR{W91!*YVo{BW7>BHwnD))nQ|}IiWRFBC&H)}U;U)7Q5F36*-^OR; zaSCRI?RK#zUp-V9T!lBHGH-8#O*+3gR${ju+l-F~#>26(v3U$5#s7e`X(DOG{d~K@4jE!hR1^eT>faqd~n}B5(DQ%Z2&`rEFrN@z?aP{ z#Y`DW`YAm|5b`|p#0}hY8Z$`Nn=k}3>O5!g7ABLpIwwX5HD_IG63&90Y6vEBG#b@| zQ69|h?J_=6g^H7gaUfgZ8ZpOdR@Jlt9b0VaTN3jPu%!pytm#?iSiEX#V#mqo${2l(@veGw56RTxEvEfjb7tkQyq67`_^VNL+56?Cj0VxAnP z^f?W8x9@6_4~-cU@PGIaEruhI?i~k1o9pS70QB3CphKgmhzS=o;Sv6LoD+}0Y34e5 z!M|tGZm|-c{z8Fdx&6V$P|4EhHOv5Dc{jHZh-5`$qX1@OAZJoTO1Qg!785_xKl1ee zc9iKqAI4?ycv(85`jzu8;Naf-6qN=t_E~#i`Z4LzekwPav{g)U#_RLh_;C(2xsF>3 zY9+1>mkDSoJ`gtpJJ7AAanngL(3f7O- zJ796kMl{cOHk2LT;eF)xz>~~4)Z=U1CX$F2fv!t5h~kKFDEQRzLJ(#wFIu7i6vat* zWoFW#NfH#-UeC3X_Teo*uecwAA_Bv@gw$Tn(C4&8mT~Vrib&w*5Ra8i zZxBV$F+bQs--=0)bAj(#j5P~|NVA*fjlpsVi8J={Gt37-dDwmTsF13&v-ICH+(9{h z%+6|NEow&R~wk z&d0FBy6v8K!F<{3)zR>{i$O=wxdx#%G@nMqZPRtwxP7|{5{HYy*0lR`KI~mog;`jbJ6h0h z3{DSNV{n5_Asz!bsReDw+yca{gQ@TW=EA0kA5^&jaaHc>YGI=Ta>j<=;2i~C4OK@N zJoQcA05PA8BG^TI=|IumSl9wz(3e0VdhRIjmgh}RTBlmpR}a)eDm{cz51wnW?L(C* z*awsldG^~qm9ggr$!A$9jLQYxroSFb2pZHV;?FVbz#r$xOk|&3$idBOg41*ikDt6Z z;UPieFfsW?6^DPOT~|1Cm8PIFzR=z-@Pmf7fxVe>p+lL>CUEYfTIwzfyGl$kKpB~V z&eM3xs3(KQQ=uTQMy{^YKk5pA*B&Y2=!=fL*ypg71lHuZUE$!tE;xrSjNzy*0=0-H z4x-FNDI$j_NCUl*msEi)jaR6Q+8|1k`|@x%@zLfE)d9>48C*c@Mo@z!S|)$f{61Jm z0uYbEag9>th@zr8pb?Bzw;`>9q2>~}w^}^%umiJ?ND%x)uqBlQjqn8jd*zB17_kGJ;ALSSg z^hD|EjfYMZo*Hp+rbgYSHE9%Sar@8lC*)WG)i{Zi$Y_Bk3fjAd03wg-9(Q|iWg zI_FbljU1V1k;5SP^pHOX463=s+FJ+*QV;DX*bZ4NU56AoK+W?K#^I$qjQfm5;V=dp zmLBDshd#qjbI5bg#9pfPn@f@0>XWM|*kRKo#wD5EF{m*O0$gE0`2L)pgM--2vShv` zw3WS+%;Rv~=j6{*xA1W!E+d2aM`XN7=GFt_W5WSYRD7=bhqo4 zyJ=({usYJZYXmk7D4&=BELa6r?S{i((|m?hIto4h%CSpejSk@vb>~g>tRu5IN_;YXUN32&2W0}llpmj#}A}JVRF=KUVSCXV1XI2v*1g6`ht8(;< zZLrn($(}1cNrI5lOhm5b^fc(T4%3h$f^0pGM8FRh?>GS>-h&u2bUtA_uvYX`hKN4s z@sLT%v9A*HuKAM?AwD0>fjiAqQOBptcx*&`Y_ut01)_E#q4~ubEJW?6U>AI7wb=|t z%HGlXtbM;>2{dNMcCqz3I|kcb3%zNmM+$1$_dXOz!6hrFSBTLBqhqLHI;DAv`eo%q#i+)1hRHh+l1$W^AI*Zf;h%tS`i0vdzppgm)-5E7`P=b>* z9`i;xPPB){R4Eu4g(FIYk!aUO2%fKMG%^e4$HuJ2KK&4olSnn!_mBfcLMA$}_8=cd zLt}n-tBxl{O4?#TgnBP5q48@PV9)(oKb!~b=rPgkmXAsiwX)K<<)N z9XRbcAEJV{1p_;+um%*R`ZDePF%}Cxa~La#oZF3Is3ao<@wrU9t<`$o11~QYiuZA; zy3%kHm2E7No-bwDMdfea)Nq1_JqC|rCg1XzN(_J%gf%XGxdgU>X{#ca(2v{)R9bT_ z$8Yc0U5Ug&x`q2TvLTC+USTrT-{zDk|(Adp^0YGwkCNUq})3F!kSAGbE97Q%x ziHvC{98JOJ4Mr%TwK=?+-vNYa*~4OZ@}Xk4@>Lb!`91Km4aZtdjVTvy+YeT7CMFwb zntKmgB)g=o0eZ=!w0BAuH}yoBQ{&+-*S_KHAnc$o@#2m9H3rFTJs%pA%PWk->5L4 zG|bG!H|~M~I3x|fE-3@W7{+wV8*8}!3Dp)fCR1gDDSSum>uA=f5FDaha0d6;PX#=` z?6@5-F%!zz8-_eaTAGlu>=Gy{Dl!MT+PyT`h1&$IkIf zbW?}Lqa9gJhCX{6XDB`nry-5y%U6eKEh$TpwCfB7`A~`Ir}?yFa)jq8@LU>Q znPB}o3~-uk4|D~r#aQpV1kkNsS|C}N7!M}Axz>_lsrSg}iH^MC-uu&9ZfHl)Rj4^i z!^FvMiZWW4%v&jyw(g93P*VeY_WCvtml5I+l<0mZ)zu;+wJ&r+gB<-?i<>5gprpjJ zHP+HZ1_*qIyWnX&j_XJ?SGx_S$NWog31K`Vc=ce~mXRihe4&8Pe@1q1k82e}fb!1P zeJl{l^HPg_!NmT9HQ)OjU7$Tcjg??x#*vSB`D*SuEKlrek9Nc;C(EKNm0bQW7HRUA z5*~6FWd01kn=ZWVw-Q-(l~d(_If~?bUX^A8e>L)rBeEr_5{Rv558+x`1}NpW_zMGo5_f7e=g-aw>^S;BDOKiD>Ca>O`pS!Y zIB;R#OA@T}h;Ttk4c-JP6)S`iXdjdO#B3e(Q z%i3qE45}OvzQInV*;XDWHTk=MNvebUWEOO3!;=qtH{ZB=R3f4++ ztLWe>P*f#Yo(#ZIko??F=aCa#9jOl2!<=)H3+|6DUUuis9VFIqNp~MUeth`fFZ%~O z;dQPedJqVjCn)$MoJT0EaZ$&oJvy@S++^GCUAwTGWkXY(hLFgXjv$jGhYp$CFP%iU zkyG0fZ0bo6Q(6>gQ4PyqiSW(t7dm_T^l$aV*@HBa=i%j{&Q`TMo#@#b?#9$C>{&h! zdoM%1OGOjNvFxpOt0B~V{c1ECk{5rlsZHsk-(>ldzPxEy%F1OQoGp#kD#+o!wyb~e z2@KKe4idQQyj;mg^j;aLpLXyH;Hq}P*~zN^2{%w?d%Gnn0>c|Nd1U!wp`vOv3`$D^ z>x^d7CH4WX8@$v6w{7RKJU7gHeUrEZkr@+sJ|f6GRiP1IAq~lBs@JLg6){9vevVpRXd$y@i5?}ognlwtuQ3GOP>Ti+!T*RDM9xZFo zr99w&DV--cJDak8$Gq_%)Bv2KtEMt%Gv9SL{lHOOg>uwf3o{eaQH-xCGoSwHpU0tX zjQQYQ;Ma~^(nm|da5v2JPm>EB_kt*(+ONM<6~T{L?TEuHj$P6CHa-50_=5{4x~1%7$lu$c8x%JR#B#dDw@z zO}#{X(=>k8hj}Sw6)JlyGupV>*)@%8{w7Lzq|qOAKD){PFSSh!LhNoNUX`c=Ib~KM ziy7+ru=LQPtBhNQGp3ocaY8e62$Tp_xkMs^Ze=% zEEL|{-?~9 z{&^G6RMI0M`sqYa99kXmrXCGVA{Tc-Whz@-tnS0Z#oGULA3he8ixW8XiylnQgAwHps}!$iz}8?n9!({;nL7v zRr3!jfiwmXYq6dH5qVy}-bdvug!kYRJ7FWbFp@0*OZ<77s67n(QEjpfYKY@N_k&Vh zW$Ff?FPp3{BEf-nU2!@2QP>PhoDb*_^cu2k!L1RR6Jw@}LbjT0pT)SzhOK@efnG<0f( z$3am5ouh~4Oq|j?@ftzuF0uqI73sliG);y}yNMhHN!W#aM--#v&@tGG{xbC)p>ssm zF-#Rw%0qf%WKx78Y2%*>s-3aQ&m1x%LMZwc@i3XGecn8b#mmC8F|g$OLjR!m#l^o? zKbYR9=lZ9eblVfM0Qkfvzq03*A(!jny?F01GKxIV*zULoPb0%558;@K%hZnn`r#qW z3R|GnHte3r*kBa}0=v2MC#pv9+`F+)vF(vjPDbnRdSch#q=!co11Rcv?*&Sa(W+_Q z^!QjH^i(0|x55nfnc21oa>AXO?02h?S^}Oz1$oZ@Y;Qr5S%G!jP)r9h29~TUyKI5k z^5l{C{4(OTIJo+0cjR763Q`1lz}fD_r;5|S5LGd$;koe3bsE0xgNS>W zNiW-CiLKSuo|_uXz%^%l0sIZ(D?0u_iVy+t;?J!M$G9*xfrx_uAB?<(=7*gISB2(! z;AlCXP&0~oRw!tl$ZSju=HcL4hPJ8M?)&Q?4~cpCv*+3 z%`g8(`b(JJ_l)LE=g{6W-Zh1HpaswDq+NhX3oR!pL8I^ zYbZT@yh4#<_yMLLQaT1{$n{c*#TrkP&mBYJPs%{F{<nG%cpuq;K5Qi>-b8@G4Rmzdzr9WH zLpW0o4`bgB;myJTM+ZBQh$}*wo$HkXL=F>>&`|LE-AJhqN-GP-egkf^hYTGyr|9rC^hm_GPeVn za+{dg3Dj-$JS#C*dtRd-be|@GM`3-V39Cua6Q~J}laZ*>9y<^0W^tjhdiV`$Kq5bS z`{qp)8lT-?k|TljuC!UU2+txWsr{h+bbQ*rzW>GEdk0mOz3qaw+D3v2MWTwJBwKP6 zR7@zSNKPUkL9#?88bKu~Ny(z*oDLvCL{t=!AaF>ML?j8QQy0+htf#??uUP$FO0!#{$VgRv zYfXhtfKGMgl2qgYxh=0U@t?sL;RcA>Q&T6mo!Rytu)&%#5=Ywys^n0#AHoW^ATJGeE9X|6d^vl7#hUu%x>e_d8>y#cn z@bPK*_2a_usmD~-d$l*~)mm6*1wxf5{DC}0Q4ve|I>{{I<*GBIV+^8G=BeAc({Ae; z*7FD_dIyEEa3Fp(+cta;N9stdrwK1z&COHV&H=YqpIk>g5(w*p0DILLzW5!a93^e* zAG$ztcWA@UA0c0D#H;DI^8oZ8{Q1Ga?L|%U#M-nr@zn?yjU4UxnrLzA8QU;x;c&Jf?GRg>ZMY(uA2sjeprf~2#{G8S z`j>N%yDjQIZIa*%C5hYj;Y6owoFh+{pzNKmHC{GVmo4S$)odDYx@f?4)#k_B^dA}1 za@YUpro*R@h&-Ul7n~*z6NH*;Ed2a+NB*!GYM)IHgM~wqNiVw->P`h}G(!_PSCe9?)as-}ke5o2F^#R{(dOs(H4Ak(oI_>j@ z0gEJgBZdoi<+7!CmPS)e6shgbxRCUv!=`QGN7$an zXXyH71jK$ghJG>*4wB04Z#xyY<5=Zh^&Cg}B;OXDmVoC@Yr_}kc*3_BRN0D0KFHK^ zD@-}X&+$S3djomcSFBzYu6tV6@bgWJK-(G-3(QMYZOh}>6K;!y^4nIX8ntl*UEIW- z!(9-_9PrKl^!C6rbLUPD>gj3q25G_pl+NEutYcM@r_`UjdBfN#`&Dd7f`X*-7x6YH z_3@g0VmQZ*#2CDk)l!a|Pf6yE!gdp$U6u}R_hJTrs_m?Ah~N+2<0w z&jG9gt&RmM0(DBZlDh7J%-vDncKso&m~Q739XOvS-&YwXxXJ{Y+fy27z?O;Y>ymw58W?j2T+1 zsLr#}B|I}Upv;)YW>;$(C0A~{^K2|l+%GcA>}~q~w{PE7j@T4dFka!lPxqe}F>*S+ z?{}E78vSUNSZpPg7So!__uN#c0i_M?Rh~5+gE?+Wl0llO@87SJU^(kVqjgk_;Xgm? zuqR_c%j%liU<%JH6!ga4nr(jgIG+UNH%vH}e&h^Qyx@LcGkWP#z*~!u_HI+9RlWgT zf|eMZ=Z=5RkE8lHdlc~lf<VFA)aF! zRu&B~fTUKHd`Z`p0=_hPEAItdg_fawL<#Or3Ep$>XAbOs2@e``95h$KP_-*4_@K6Z z3O?lKU4V4r71T#4Mk8qz&I1{oz?NU7cyp{x+3n!f#f_3J`MSkRosq|pfy z7?rD8)+WSx5~wkuO%{HAz#H`N;VUuvTOI!zM4U>t(6n1xnBtX@iP8|ZYC-hJL&O*K~sbOtc?W@`ODP@OXLV-Avv_urTn@VHG=iMA=w2 zo~P)&6%DN3rVa0M6|0oV0*Z?Xl+!7>4IXPVl2;Aby$%k( z0=ySFt&L#w m9;*o+`*0xl?t*ZZ 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 literal 0 HcmV?d00001 diff --git a/source/images/components/gpslogger/settings.png b/source/images/components/gpslogger/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..c752c7df3ec81ac2685895c8d2f6b1f767f223b3 GIT binary patch literal 99023 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�cxrcxmz;`f?TmdEbKQtV_ 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ⅇ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 literal 0 HcmV?d00001 From 75fec71116ae8f2b26ef93421dc65ccb4807a299 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Oct 2017 22:35:14 +0200 Subject: [PATCH 109/152] Update 'ha_release' --- source/_components/input_number.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 4ebbe8ce681..e043b924696 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: home-assistant.png ha_category: Automation -ha_release: 0.16 +ha_release: 0.55 redirect_from: /components/input_slider/ --- From 5845fc07b092b0b37fdf23ae019b87290c5d772f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 15 Oct 2017 14:33:22 -0700 Subject: [PATCH 110/152] Release 0.55.1 --- _config.yml | 6 ++-- source/_posts/2017-10-07-release-55.markdown | 29 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index cbea8a327f2..c61e1b7f74f 100644 --- a/_config.yml +++ b/_config.yml @@ -140,11 +140,11 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 55 -current_patch_version: 0 -date_released: 2017-10-07 +current_patch_version: 1 +date_released: 2017-10-15 # 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: "#" +patch_version_notes: "#release-0551---october-15" # Minor release (Example #release-0431---april-25): diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown index 2d21382943a..bbe1bc77380 100644 --- a/source/_posts/2017-10-07-release-55.markdown +++ b/source/_posts/2017-10-07-release-55.markdown @@ -43,6 +43,16 @@ This release introduces a new sensor: [Tibber][sensor.tibber docs]. The sensor p - Updating clicksendaudio component based on feedback ([@jeroenterheerdt] - [#9692]) ([notify.clicksendaudio docs]) (new-platform) - Support for The Things Network ([@fabaff] - [#9627]) ([thethingsnetwork docs]) ([sensor.thethingsnetwork docs]) (new-platform) +## {% linkable_title 0.55.1 - October 15 %} + +- Fix for TypeError in synology camera ([@snjoetw] - [#9754]) ([camera.synology docs]) +- missing is_closed ( rflink cover fix ) ([@passie] - [#9776]) ([cover.rflink docs]) +- [light.tradfri] Fix transition time ([@lwis] - [#9785]) ([light.tradfri docs]) +- OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) +- Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) ([google docs]) +- Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) +- Livebox Play TV bug: fix #9839 ([@pschmitt] - [#9880]) ([media_player.liveboxplaytv docs]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -381,3 +391,22 @@ Experiencing issues introduced by this release? Please report them in our [issue [issue]: https://github.com/home-assistant/home-assistant/issues [discord]: https://discord.gg/c5DvZ4e [history_graph docs]: https://home-assistant.io/components/history_graph/ +[#9754]: https://github.com/home-assistant/home-assistant/pull/9754 +[#9776]: https://github.com/home-assistant/home-assistant/pull/9776 +[#9785]: https://github.com/home-assistant/home-assistant/pull/9785 +[#9794]: https://github.com/home-assistant/home-assistant/pull/9794 +[#9841]: https://github.com/home-assistant/home-assistant/pull/9841 +[#9842]: https://github.com/home-assistant/home-assistant/pull/9842 +[#9880]: https://github.com/home-assistant/home-assistant/pull/9880 +[@GenericStudent]: https://github.com/GenericStudent +[@balloob]: https://github.com/balloob +[@lwis]: https://github.com/lwis +[@passie]: https://github.com/passie +[@pschmitt]: https://github.com/pschmitt +[@snjoetw]: https://github.com/snjoetw +[camera.synology docs]: https://home-assistant.io/components/camera.synology/ +[cover.rflink docs]: https://home-assistant.io/components/cover.rflink/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[google docs]: https://home-assistant.io/components/google/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[media_player.liveboxplaytv docs]: https://home-assistant.io/components/media_player.liveboxplaytv/ From e73173e51b977dc303a89478f55294f61d714ce1 Mon Sep 17 00:00:00 2001 From: Taylor Peet Date: Mon, 16 Oct 2017 02:33:35 -0400 Subject: [PATCH 111/152] Add numeric state example to Bayesian Sensor (#3642) --- .../_components/binary_sensor.bayesian.markdown | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source/_components/binary_sensor.bayesian.markdown b/source/_components/binary_sensor.bayesian.markdown index 53505593b6b..b5d20c509ff 100644 --- a/source/_components/binary_sensor.bayesian.markdown +++ b/source/_components/binary_sensor.bayesian.markdown @@ -40,8 +40,8 @@ Configuration variables: - **entity_id** (*Required*): Name of the entity to monitor. - **prob_given_true** (*Required*): The probability of the observation occurring, given the event is `true`. - **prob_given_false** (*Optional*): The probability of the observation occurring, given the event is `false` can be set as well. If `prob_given_false` is not set, it will default to `1 - prob_given_true`. - - **platform** (*Required*): The only supported observation platforms are `state` and `numeric_state`, which are modeled after their corresponding triggers for automations. - - **to_state** (*Required*): The target start. + - **platform** (*Required*): The only supported observation platforms are `state` and `numeric_state`, which are modeled after their corresponding triggers for automations, requiring `before` and/or `after` instead of `to_state`. + - **to_state** (*Required*): The target state. - **probability_threshold** (*Optional*): The probability at which the sensor should trigger to `on`. - **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Bayesian Binary`. @@ -74,3 +74,16 @@ binary_sensor: platform: 'state' to_state: 'below_horizon' ``` +```yaml +# Example configuration.yaml entry +binary_sensor: + name: 'Heat On' + platform: 'bayesian' + prior: 0.2 + probability_threshold: 0.9 + observations: + - entity_id: 'sensor.outside_air_temperature_fahrenheit' + prob_given_true: 0.95 + platform: 'numeric_state' + below: 50 +``` From 7d2f514128343e3dfd58ace932d8ecbfff5dd93a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 16 Oct 2017 10:11:13 +0200 Subject: [PATCH 112/152] Add logo --- source/_components/sensor.season.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/sensor.season.markdown b/source/_components/sensor.season.markdown index da386ca5015..6297420cd15 100644 --- a/source/_components/sensor.season.markdown +++ b/source/_components/sensor.season.markdown @@ -8,6 +8,7 @@ comments: false sharing: true footer: true ha_category: Sensor +logo: home-assistant.png ha_iot_class: "Local Polling" ha_release: 0.53 --- From f2119564548e665822747825bb292b7392d9ecc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20W?= Date: Tue, 17 Oct 2017 05:23:36 +1100 Subject: [PATCH 113/152] update ssh details to be clearer on what is needed (#3579) --- source/developers/hassio/debugging.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/developers/hassio/debugging.markdown b/source/developers/hassio/debugging.markdown index b10426728ed..01a92c98ea8 100644 --- a/source/developers/hassio/debugging.markdown +++ b/source/developers/hassio/debugging.markdown @@ -28,10 +28,10 @@ Alternative instructions, for Mac, Windows and Linux can be found [here](https:/ Follow steps 1-4 under 'Generating a new SSH key' (The other sections are not applicable to Hass.io and can be ignored.) -Step 3 in the link above, shows the path to the private key file `id_rsa` for your chosen operating system. Your public key, `id_rsa.pub`, is saved in the same folder. Next, copy your public key file to the root of your SD card. +Step 3 in the link above, shows the path to the private key file `id_rsa` for your chosen operating system. Your public key, `id_rsa.pub`, is saved in the same folder. Next, copy your public key file to the root of your SD card as `authorized_keys`.

-Make sure when you are copying the public key to the root of the /boot partition of the SD card that you rename the file correctly with no `.pub` file extension. +Make sure when you are copying the public key to the root of the /resin-boot partition of the SD card that you rename the file correctly to `authorized_keys` with no `.pub` file extension.

You should then be able to SSH into your Hass.io device. On mac/linux, use: From 50b47aa3e78dd8b090cf93ecdeab05d7af9fea8b Mon Sep 17 00:00:00 2001 From: milanvo Date: Mon, 16 Oct 2017 21:13:55 +0200 Subject: [PATCH 114/152] Fix link to purge service heading (#3647) --- source/_components/recorder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 4eeeb72ee8b..b96abb90a48 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -27,7 +27,7 @@ recorder: Configuration variables: -- **purge_interval** (*Optional*): (days) Enable scheduled purge of older events and states. The purge task runs every x days, starting from when Home Assistant is started. If you restart your instance more frequently, than the purge will never take place. You can use [service](#service) call `recorder.purge` when needed. +- **purge_interval** (*Optional*): (days) Enable scheduled purge of older events and states. The purge task runs every x days, starting from when Home Assistant is started. If you restart your instance more frequently, than the purge will never take place. You can use [service](#service-purge) call `recorder.purge` when needed. - **purge_keep_days** (*Required with `purge_interval`*): Specify number of history days to keep in recorder database after purge. - **exclude** (*Optional*): Configure which components should be excluded from recordings. - **entities** (*Optional*): The list of entity ids to be excluded from recordings. From 02315aed833b320052d46006bf6b1b9eac6fef8e Mon Sep 17 00:00:00 2001 From: Anders Fogh Eriksen Date: Mon, 16 Oct 2017 21:48:14 +0200 Subject: [PATCH 115/152] Update .travis.yml example (#3645) to test against Python 3.5 --- source/_docs/ecosystem/backup/backup_github.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index ed4eb998ad9..8c8c9ad7b35 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -141,7 +141,7 @@ Example .travis.yml ```yaml language: python python: - - "3.4" + - "3.5" before_install: - mv travis_secrets.yaml secrets.yaml install: From 0f3266b844c8248e05ae45979dd130017306f6c5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 16 Oct 2017 10:15:14 +0200 Subject: [PATCH 116/152] Make BG transparent --- source/images/supported_brands/velbus.png | Bin 60373 -> 49093 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/supported_brands/velbus.png b/source/images/supported_brands/velbus.png index da459dbfe8ee39e2f71355860beaa014086f569a..ce95d1308a32ad0167ea59ab8ce31e5f10d8eed4 100644 GIT binary patch literal 49093 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 literal 60373 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
N;mz^{-KdM5P%Wz&fW|9qk{V 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 From 1cc983eedd1673ca459a5430590bd32d517b6e03 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 16 Oct 2017 10:24:13 +0200 Subject: [PATCH 117/152] Move redirect to standards --- source/developers/documentation/create_page.markdown | 10 ---------- source/developers/documentation/standards.markdown | 12 ++++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/source/developers/documentation/create_page.markdown b/source/developers/documentation/create_page.markdown index 6f363393e3f..56860767516 100644 --- a/source/developers/documentation/create_page.markdown +++ b/source/developers/documentation/create_page.markdown @@ -98,16 +98,6 @@ The direct usage of HTML is supported but not recommended. The note boxes are an

``` -### {% linkable_title Redirects %} -If you rename or move an existing platform or component, create the redirect. Add the old location of the page to the header of the new one. - -```text ---- -... -redirect_from: /getting-started/android/ ---- -``` - ### {% linkable_title Images, icons, and logos %} The images which are displayed on the pages are stored in various directories according to their purpose. If you want to use a logo and placed `logo:` in the file header then this image should be stored in `source/images/supported_brands`. The background must be transparent. diff --git a/source/developers/documentation/standards.markdown b/source/developers/documentation/standards.markdown index 5445e7cd5ac..c859c4db6ab 100644 --- a/source/developers/documentation/standards.markdown +++ b/source/developers/documentation/standards.markdown @@ -55,3 +55,15 @@ To ensure that the documentation for Home Assistant is consistent and easy to fo * `condition` * `service` +## {% linkable_title Renaming Pages %} + +It can happen that a component or platform is renamed, in this case the documentation needs to be updated as well. If you rename a page, add `redirect_from:` to the file header and let it point to the old location/name of the page. Please consider to add details, like release number or old component/platform name, to the page in a [note](/developers/documentation/create_page/#html). + +```text +--- +... +redirect_from: /getting-started/android/ +--- +``` + +Adding a redirect also applies if you move content around in the [documention](/docs/). From a326ebbb2a5da539ed48a3e1f7b0f75221953244 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 16 Oct 2017 22:02:03 +0200 Subject: [PATCH 118/152] Add additions from #3635 --- source/_data/glossary.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index e18d05c02e5..13f143030ad 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -22,3 +22,18 @@ description: "Values or conditions of a platform that are defined to cause an automation to run." - topic: Template description: "An automation definition can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." +- topic: hassio + description: "An operating system to manage Home Assistant easily using various HASS.io add-ons" +- topic: HADashboard + description: "HADashboard is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing." +- topic: Hass.io + description: "Hass.io is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration and can easily be extended" +- topic: Cookbook + description: "Home Assistant configuration examples of the community" +- topic: Packages + description: "Packages allow to bundle different component configuations together." +- topic: Customizing + description: "Customization allows overwriting default parameter of the devices in the configuration." +- topic: Zones + description: "Area used for presence detection." + From e7caff9a52bcff2144fe82712724474b2651e02b Mon Sep 17 00:00:00 2001 From: olskar Date: Mon, 16 Oct 2017 22:07:50 +0200 Subject: [PATCH 119/152] add scene and script to glossary (#3649) --- source/_data/glossary.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 13f143030ad..1b18f1539de 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -22,6 +22,10 @@ description: "Values or conditions of a platform that are defined to cause an automation to run." - topic: Template description: "An automation definition can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." +- topic: Script + description: "A component that allows users to specify a sequence of actions to be executed by Home Assistant when turned on" +- topic: Scene + description: "You can create scenes that capture the states you want certain entities to be. For example a scene can specify that light A should be turned on and light B should be bright red." - topic: hassio description: "An operating system to manage Home Assistant easily using various HASS.io add-ons" - topic: HADashboard @@ -36,4 +40,3 @@ description: "Customization allows overwriting default parameter of the devices in the configuration." - topic: Zones description: "Area used for presence detection." - From 5afb014f1cf34392f6d21901baad6cae29e4c281 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 16 Oct 2017 22:47:24 +0200 Subject: [PATCH 120/152] Add intro --- source/_docs/glossary.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_docs/glossary.markdown b/source/_docs/glossary.markdown index 7f7437b49ed..c5a76c534f7 100644 --- a/source/_docs/glossary.markdown +++ b/source/_docs/glossary.markdown @@ -11,6 +11,8 @@ footer: true {% assign entries = site.data.glossary | sort: 'topic' %} +The glossary covers terms which are used around Home Assistant. +