From 99536c46da578392fadc9e8df27744b76b0ee3ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 26 Apr 2016 15:31:55 +0200 Subject: [PATCH 01/16] Update rfxtrx documentation --- source/_components/light.rfxtrx.markdown | 41 +++++++++++---- source/_components/rfxtrx.markdown | 25 +-------- source/_components/sensor.rfxtrx.markdown | 57 +++++++++++++++++---- source/_components/switch.rfxtrx.markdown | 47 +++++++++++++---- source/images/components/rfxtrx/sensor.png | Bin 0 -> 24599 bytes source/images/components/rfxtrx/switch.png | Bin 0 -> 5993 bytes 6 files changed, 116 insertions(+), 54 deletions(-) create mode 100644 source/images/components/rfxtrx/sensor.png create mode 100644 source/images/components/rfxtrx/switch.png diff --git a/source/_components/light.rfxtrx.markdown b/source/_components/light.rfxtrx.markdown index c16b42a4b20..c5b42bb52b9 100644 --- a/source/_components/light.rfxtrx.markdown +++ b/source/_components/light.rfxtrx.markdown @@ -12,19 +12,42 @@ ha_category: Light The `rfxtrx` platform support lights that communicate in the frequency range of 433.92 MHz. -To enable RFXtrx lights in your installation, add the following to your `configuration.yaml` file: +First you have to set up your [rfxtrx hub.](/components/rfxtrx/) +The easiest way to find your lights is to add this to your `configuration.yaml`: +```yaml +light: + platform: rfxtrx + automatic_add: True +``` + +Launch your homeassistant and go the website. +Push your remote and your device should be added: + +

+ +

+ +Here the name is 0b11000102ef9f210010f70 and you can verify that it works from the frontend. +Then you should update your configuration to: +```yaml +light: + platform: rfxtrx + devices: + 0b11000102ef9f210010f70: + name: device_name +``` + +Example configuration: ```yaml # Example configuration.yaml entry light: - platform: rfxtrx - signal_repetitions: 3 - devices: - living_room: - name: Living Room - packetid: XXXXX - fire_event: True - automatic_add: True + platform: rfxtrx + devices: + 0b11000f10e9e5660b010f70: + name: Light1 + 0b1100100f29e5660c010f70: + name: Light_TV ``` Configuration variables: diff --git a/source/_components/rfxtrx.markdown b/source/_components/rfxtrx.markdown index 18e44c582a9..57267db40cc 100644 --- a/source/_components/rfxtrx.markdown +++ b/source/_components/rfxtrx.markdown @@ -20,33 +20,10 @@ rfxtrx: debug: True ``` + Configuration variables: - **device** (*Required*): The path to your device, e.g. `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` - **debug** (*Optional*): If you want to receive debug output. -### How to find the packet_id for your devices -Make sure you have enabled all RFXtrx related platforms. Push your remote and the device will be added automatically. After that you can see you device packetid in the state developer tools in the app. - -Example for X10 and Chacon DI.O signals, if you see in state developer tools the following entities: - -``` -light.123efab1__1b2200000890efab1213f60 -light.a8__0123454041230170 -``` - -You must add the following to your `configuration.yaml`: - -```YAML -light: - platform: rfxtrx - automatic_add: True - devices: - 123efab1: - name: My DI.0 light device - packetid: 1b2200000890efab1213f60 - a8: - name: My X10 light device - packetid: 0123454041230170 -``` diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown index 3efb14a9919..294b1dc2369 100644 --- a/source/_components/sensor.rfxtrx.markdown +++ b/source/_components/sensor.rfxtrx.markdown @@ -12,25 +12,59 @@ ha_category: Sensor The `rfxtrx` platform support sensors that communicate in the frequency range of 433.92 MHz. -To enable RFXtrx sensors in your installation, add the following to your `configuration.yaml` file: +First you have to set up your [rfxtrx hub.](/components/rfxtrx/) +The easiest way to find your sensors is to add this to your `configuration.yaml`: +```yaml +sensor: + platform: rfxtrx + automatic_add: True +``` +Then when the sensor emits a signal it will be automatically added: + +

+ +

+ +Here the name is 0a52080000301004d240259 and you can verify that it works from the frontend. +Then you should update your configuration to: +```yaml +sensor: + platform: rfxtrx + devices: + 0a52080000301004d240259: + name: device_name +``` + +If you want to display several data types from one sensor: + +```yaml +sensor: + platform: rfxtrx + devices: + 0a520802060100ff0e0269: + name: Bath + data_type: + - Humidity + - Temperature +``` + + + +Example configuration: ```yaml # Example configuration.yaml entry sensor: platform: rfxtrx automatic_add: True devices: - sensor_0502: + 0a52080705020095220269: name: Lving - packetid: 0a52080705020095220269 - data_type: Temperature - sensor_0601: - name: Bath_Humidity - packetid: 0a520802060100ff0e0269 - data_type: Humidity - sensor_0601 2: - name: Bath - packetid: 0a520802060100ff0e0269 + 0a520802060100ff0e0269: + name: Bath + data_type: + - Humidity + - Temperature ``` Configuration variables: @@ -38,3 +72,4 @@ Configuration variables: - **devices** (*Optional*): A list of devices with their name to use in the frontend. - **automatic_add** (*Optional*): To enable the automatic addition of new lights. - **data_type** (*Optional*): Which data type the sensor should show + diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index 9cb5cb5a510..7621a3cdf99 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -12,19 +12,46 @@ ha_category: Switch The `rfxtrx` platform support switches that communicate in the frequency range of 433.92 MHz. -To enable RFXtrx switches in your installation, add the following to your `configuration.yaml` file: +First you have to set up your [rfxtrx hub.](/components/rfxtrx/) +The easiest way to find your switches is to add this to your `configuration.yaml`: ```yaml -# Example configuration.yaml entry switch: - platform: rfxtrx - signal_repetitions: 3 - devices: - living_room: - name: Living Room - packetid: XXXXX - fire_event: True - automatic_add: True + platform: rfxtrx + automatic_add: True +``` + +Launch your homeassistant and go the website. +Push your remote and your device should be added: + +

+ +

+ +Here the name is 0b11000102ef9f210010f70 and you can verify that it works from the frontend. +Then you should update your configuration to: +```yaml +switch: + platform: rfxtrx + devices: + 0b11000102ef9f210010f70: + name: device_name +``` + +Example configuration: +```yaml +# Example configuration.yaml entry +switch: + platform: rfxtrx + automatic_add: False + signal_repetitions: 2 + devices: + 0b1100ce3213c7f210010f70: + name: Movment1 + 0b11000a02ef2gf210010f50: + name: Movment2 + 0b1111e003af16aa10000060: + name: Door ``` Configuration variables: diff --git a/source/images/components/rfxtrx/sensor.png b/source/images/components/rfxtrx/sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d7ce3d1dad8232d41925ff1a6ffee38f844b65 GIT binary patch literal 24599 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 ZHtKcLaJR&OWhhpHX=!h9$82BxzX6=KWNiQd literal 0 HcmV?d00001 diff --git a/source/images/components/rfxtrx/switch.png b/source/images/components/rfxtrx/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..660b9288e6e3bc083ad80e59787c807b05509ae0 GIT binary patch literal 5993 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 literal 0 HcmV?d00001 From 4be4102776221fe855b4421bed5a1504a8ad75d5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 1 May 2016 19:25:52 +0200 Subject: [PATCH 02/16] Update script docs --- sass/custom/_paulus.scss | 1 + source/_components/alexa.markdown | 9 +- source/_components/script.markdown | 34 +++++- .../asides/getting_started_navigation.html | 10 +- .../automation-action.markdown | 31 ++++-- .../automation-condition.markdown | 102 +----------------- .../automation-create-first.markdown | 14 ++- .../automation-templating.markdown | 98 +++++++++++++++++ .../automation-trigger.markdown | 4 +- source/getting-started/automation.markdown | 49 ++++----- .../scripts-conditions.markdown | 95 ++++++++++++++++ .../scripts-service-calls.markdown} | 70 +++++------- source/getting-started/scripts.markdown | 89 +++++++++++++++ .../screenshots/developer-tool-about-icon.png | Bin 0 -> 2748 bytes .../developer-tool-events-icon.png | Bin 0 -> 3409 bytes .../developer-tool-services-icon.png | Bin 0 -> 2570 bytes .../developer-tool-states-icon.png | Bin 0 -> 2005 bytes .../developer-tool-templates-icon.png | Bin 0 -> 2252 bytes 18 files changed, 417 insertions(+), 189 deletions(-) create mode 100644 source/getting-started/automation-templating.markdown create mode 100644 source/getting-started/scripts-conditions.markdown rename source/{_topics/service_calls.markdown => getting-started/scripts-service-calls.markdown} (58%) create mode 100644 source/getting-started/scripts.markdown create mode 100644 source/images/screenshots/developer-tool-about-icon.png create mode 100644 source/images/screenshots/developer-tool-events-icon.png create mode 100644 source/images/screenshots/developer-tool-services-icon.png create mode 100644 source/images/screenshots/developer-tool-states-icon.png create mode 100644 source/images/screenshots/developer-tool-templates-icon.png diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 0d34fb833b0..9ad00e409e7 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -113,6 +113,7 @@ article.post, article.page, article.listing { img, table { border-radius: 3px; box-shadow: rgba(0,0,0,0.06) 0 0 10px; + vertical-align: middle; } img.no-shadow { diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index fd378d865f8..ee1fbecbcbb 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -45,7 +45,7 @@ Please note that you can use Haaska and the built-in Alexa component side-by-sid ### {% linkable_title I want to build custom commands to use with Echo %} -The built-in Alexa component allows you to integrate Home Assistant into Alexa/Amazon Echo. This component will allow you to query information and call services within Home Assistant by using your voice. There are no supported sentences out of the box as of now, you will have to define them all yourself. +The built-in Alexa component allows you to integrate Home Assistant into Alexa/Amazon Echo. This component will allow you to query information and call services within Home Assistant by using your voice. Home Assistant offers no built-in sentences but offers a framework for you to define your own.
@@ -113,7 +113,10 @@ Out of the box, the component will do nothing. You have to teach it about all in You can use [templates] for the values of `speech/text`, `card/title` and `card/content`. +Actions are using the [Home Assistant Script Syntax] and also have access to the variables from the intent. + [templates]: /topics/templating/ +[Home Assistant Script Syntax]: /getting-started/scripts/ Configuring the Alexa component for the above intents would look like this: @@ -137,8 +140,8 @@ alexa: LocateIntent: action: service: notify.notify - data: - message: Your location has been queried via Alexa. + data_template: + message: The location of {{ User }} has been queried via Alexa. speech: type: plaintext text: > diff --git a/source/_components/script.markdown b/source/_components/script.markdown index d6c3be180ce..e1ddf497f02 100644 --- a/source/_components/script.markdown +++ b/source/_components/script.markdown @@ -11,15 +11,27 @@ logo: home-assistant.png ha_category: Automation --- -The script component allows users to create a sequence of service calls and delays. Scripts can be started using the service `script/turn_on` and interrupted using the service `script/turn_off`. +The script component allows users to specify a sequence of actions to be executed by Home Assistant when turned on. The script component will create an entity for each script and allow them to be controlled via services. + +The sequence of actions is specified using the [Home Assistant Script Syntax]. + +[Home Assistant Script Syntax]: /getting-started/scripts/ ```yaml # Example configuration.yaml entry script: + message_temperature: + sequence: + # This is Home Assistant Script Syntax + - service: notify.notify + data_template: + message: Current temperature is {% raw %}{{ states.sensor.temperature.state }}{% endraw %} + # Turns on the bedroom lights and then the living room lights 1 minute later wakeup: alias: Wake Up sequence: + # This is Home Assistant Script Syntax - event: LOGBOOK_ENTRY event_data: name: Paulus @@ -32,10 +44,28 @@ script: entity_id: group.bedroom brightness: 100 - delay: - # supports seconds, milliseconds, minutes, hours, etc. + # supports seconds, milliseconds, minutes, hours minutes: 1 - alias: Living room lights on service: light.turn_on data: entity_id: group.living_room ``` + +### {% linkable_title Passing parameters in service calls %} + +As part of the service, parameters can be passed in that will be made available to the script as variables within templates. + +There are two ways to activate scripts. One is using the generic `script.turn_on` service. To pass variables to the script with this service, call it using the following parameters: + +```yaml +{ + "entity_id": "script.wakeup", + "variables": { + "hello": "world", + "name": "Paulus" + } +} +``` + +If you are calling the script service directly, for example `script.wakeup`. All service data will be made available as variables. diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index 51192cc7998..21c7496446d 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -21,7 +21,7 @@
  • {% active_link /getting-started/devices/ Setting up devices %}
  • {% active_link /getting-started/customizing-devices/ Customizing devices and services %}
  • {% active_link /getting-started/presence-detection/ Presence Detection %}
  • -
  • {% active_link /getting-started/troubleshooting-configuration/ Troubleshooting configuration.yaml %}
  • +
  • {% active_link /getting-started/troubleshooting-configuration/ Troubleshooting %}
  • @@ -31,6 +31,14 @@
  • {% active_link /getting-started/automation-trigger/ Triggers %}
  • {% active_link /getting-started/automation-condition/ Conditions %}
  • {% active_link /getting-started/automation-action/ Actions %}
  • +
  • {% active_link /getting-started/automation-templating/ Templates %}
  • + + +
  • + {% active_link /getting-started/scripts/ Scripts %} +
      +
    • {% active_link /getting-started/scripts-service-calls/ Service Calls %}
    • +
    • {% active_link /getting-started/scripts-conditions/ Conditions %}
  • diff --git a/source/getting-started/automation-action.markdown b/source/getting-started/automation-action.markdown index fc6f10fea82..b08c9678a93 100644 --- a/source/getting-started/automation-action.markdown +++ b/source/getting-started/automation-action.markdown @@ -9,11 +9,19 @@ sharing: true footer: true --- -When an automation rule fires, it calls a service. For this service you can specify the entity_id that it should apply to and optional service parameters (to specify for example the brightness). +The action of an automation rule is what is being executed when a rule fires. The action part follows the [script syntax] which can be used to interact with anything via services or events. For services you can specify the entity_id that it should apply to and optional service parameters (to specify for example the brightness). + +You can also call the service to activate [a scene] which will allow you to define how you want your devices to be and have Home Assistant call the right services. + +[script syntax]: /getting-started/scripts/ +[a scene]: /components/scene/ ```yaml automation: # Change the light in the kitchen and living room to 150 brightness and color red. + trigger: + platform: sun + event: sunset action: service: homeassistant.turn_on entity_id: @@ -22,15 +30,20 @@ automation: data: brightness: 150 rgb_color: [255, 0, 0] -``` -```yaml -automation: +automation 2: # Notify me on my mobile phone of an event + trigger: + platform: sun + event: sunset + offset: -00:30 action: - service: notify.notify - data: - message: Something just happened, better take a look! + # Actions are scripts so can also be a list of actions + - service: notify.notify + data: + message: Beautiful sunset! + - delay: 0:35 + - service: notify.notify + data: + message: Oh wow you really missed something great. ``` - -If you want to specify multiple services to be called, or to include a delay, have a look at the [script component](/components/script/). If you want to describe the desired state of certain entities, check out the [scene component](/components/scene/). diff --git a/source/getting-started/automation-condition.markdown b/source/getting-started/automation-condition.markdown index 5930840c101..8a712153168 100644 --- a/source/getting-started/automation-condition.markdown +++ b/source/getting-started/automation-condition.markdown @@ -11,18 +11,6 @@ footer: true Conditions are an optional part of an automation rule and be used to prevent an action from happening when triggered. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off. -An automation rule can have multiple conditions. By default the action will only fire if all conditions pass. An optional key `condition_type: 'or'` can be set on the automation rule to fire action if any condition matches. In the example below, the automation would trigger if the time is before 05:00 _OR_ after 20:00. - -```yaml -automation: - condition_type: or - condition: - - platform: time - before: '05:00' - - platform: time - after: '20:00' -``` - If your triggers and conditions are exactly the same, you can use a shortcut to specify conditions. In this case, triggers that are not valid conditions will be ignored. ```yaml @@ -30,92 +18,6 @@ automation: condition: use_trigger_values ``` -#### {% linkable_title Numeric state condition %} +The available conditions for an automation are the same as for the script syntax. So see that page for a [full list of available conditions][script-condition]. -This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches all of the above or below thresholds. -Either `above` or `below`, or both need to be specified. If both are used, the condition is true when the value is >= `before` *and** < `after`. -You can optionally use a `value_template` to make the value of the entity the same type of value as the condition. - -```yaml -automation: - condition: - platform: numeric_state - entity_id: sensor.temperature - above: 17 - below: 25 -``` - -#### {% linkable_title State condition %} - -Tests if an entity is a specified state. - -```yaml -automation: - condition: - platform: state - entity_id: device_tracker.paulus - state: not_home - # optional: trigger only if state was this for last X time. - for: - hours: 1 - minutes: 10 - seconds: 5 -``` - -#### {% linkable_title Sun condition %} - -The sun condition can test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger](#sun-trigger). - -```yaml -automation: - condition: - platform: sun - after: sunset - # Optional offset value - after_offset: "-1:00:00" -``` - -#### {% linkable_title Template condition %} - -The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. - - -```yaml -automation: - condition: - platform: template - value_template: '{% raw %}{{ state.attributes.battery > 50 }}{% endraw %}' - # Or value_template could be: - # {% raw %}{% if state.attributes.battery > 50 %}true{% else %}false{% endif %}{% endraw %} -``` - -#### {% linkable_title Time condition %} - -The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week - -```yaml -automation: - condition: - platform: time - # At least one of the following is required. - after: '15:00:00' - before: '23:00:00' - weekday: - - mon - - wed - - fri -``` - -Valid values for `weekday` are (`sun`, `mon`, `tue`, `wed`, `thu`, `fri` & `sat`) - -#### {% linkable_title Zone condition %} - -Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). - -```yaml -automation: - condition: - platform: zone - entity_id: device_tracker.paulus - zone: zone.home -``` +[script-condition]: /getting-started/scripts-conditions/ diff --git a/source/getting-started/automation-create-first.markdown b/source/getting-started/automation-create-first.markdown index 0d123608a46..e128a94ce1e 100644 --- a/source/getting-started/automation-create-first.markdown +++ b/source/getting-started/automation-create-first.markdown @@ -74,7 +74,7 @@ automation: Christmas is coming along and you decide to buy a remote switch to control the Christmas lights from Home Assistant. You can't claim to live in the house of the future if you're still manually turning on your Christmas lights! -We hook the switch up to Home Assistant and grab the entity ID0 from the developer tools: `switch.christmas_lights`. We will update the group to include the switch and will change our action. We are no longer able to call `light.turn_on` because we also want to turn on a switch. This is where `homeassistant.turn_on` comes to the rescue. This service is capable of turning any entity on. +We hook the switch up to Home Assistant and grab the entity ID from the developer tools: `switch.christmas_lights`. We will update the group to include the switch and will change our action. We are no longer able to call `light.turn_on` because we also want to turn on a switch. This is where `homeassistant.turn_on` comes to the rescue. This service is capable of turning any entity on. ```yaml # Example configuration.yaml entry @@ -98,3 +98,15 @@ automation: service: homeassistant.turn_on entity_id: group.living_room ``` + +### {% linkable_title Learn more %} + + - [Triggers] + - [Conditions] + - [Actions] + - [Templating] (advanced) + +[Triggers]: /getting-started/automation-trigger/ +[Conditions]: /getting-started/automation-condition/ +[Actions]: /getting-started/automation-action/ +[Templating]: /getting-started/automation-templating/ diff --git a/source/getting-started/automation-templating.markdown b/source/getting-started/automation-templating.markdown new file mode 100644 index 00000000000..e80b973d3ce --- /dev/null +++ b/source/getting-started/automation-templating.markdown @@ -0,0 +1,98 @@ +--- +layout: page +title: "Automation Templating" +description: "Advanced automation documentation using templating." +date: 2016-04-24 08:30 +0100 +sidebar: true +comments: false +sharing: true +footer: true +--- + +In Home Assistant 0.19 we introduced a new powerful feature: variables in scripts and automations. This makes it possible to adjust your condition and action based on the information of the trigger. + +The trigger data made is available during template rendering as the `trigger` variable. + +```yaml +# Example configuration.yaml entries +automation: + trigger: + platform: state + entity_id: device_tracker.paulus + action: + service: notify.notify + data_template: + message: >{% raw %} + Paulus just changed from {{ trigger.from_state.state }} + to {{ trigger.to_state.state }}{% endraw %} + +automation 2: + trigger: + platform: mqtt + topic: /notify/+ + action: + service_template: >{% raw %} + notify.{{ trigger.topic.split('/')[-1] }} + data_template: + message: {% raw %}{{ trigger.payload }}{% endraw %} +``` + +### {% linkable_title Available Trigger Data %} + +The following tables show the available trigger data per platform. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `event`. +| `trigger.event` | Event object that matched. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `mqtt`. +| `trigger.topic` | Topic that received payload. +| `trigger.payload` | Payload. +| `trigger.qos` | QOS of payload. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `numeric_state` +| `trigger.entity_id` | Entity ID that we observe. +| `trigger.below` | The below treshold, if any. +| `trigger.above` | The above treshold, if any. +| `trigger.from_state` | The previous state of the entity. +| `trigger.to_state` | The new state that triggered trigger. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `state` +| `trigger.entity_id` | Entity ID that we observe. +| `trigger.from_state` | The previous state of the entity. +| `trigger.to_state` | The new state that triggered trigger. +| `trigger.for` | Timedelta object how long state has been to state, if any. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `sun` +| `trigger.event` | The event that just happened: `sunset` or `sunrise`. +| `trigger.offset` | Timedelta object with offset to the event, if any. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `template` +| `trigger.entity_id` | Entity ID that caused change. +| `trigger.from_state` | Previous state of entity that caused change. +| `trigger.to_state` | New state of entity that caused template to change. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `time` +| `trigger.now` | DateTime object that triggered the time trigger. + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `zone` +| `trigger.entity_id` | Entity ID that we are observing. +| `trigger.from_state` | Previous state of the entity. +| `trigger.to_state` | New state of the entity. +| `trigger.zone` | State object of zone +| `trigger.event` | Event that trigger observed: `enter` or `leave`. diff --git a/source/getting-started/automation-trigger.markdown b/source/getting-started/automation-trigger.markdown index f471c68d12f..3fc7462c14d 100644 --- a/source/getting-started/automation-trigger.markdown +++ b/source/getting-started/automation-trigger.markdown @@ -53,13 +53,13 @@ automation: #### {% linkable_title State trigger %} -Triggers when the state of an entity changes. If only entity_id given will match all state changes. +Triggers when the state of tracked entities change. If only entity_id given will match all state changes. ```yaml automation: trigger: platform: state - entity_id: device_tracker.paulus + entity_id: device_tracker.paulus, device_tracker.anne_therese # Optional from: 'not_home' to: 'home' diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 3dda9544535..2de0f5c7db7 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -11,23 +11,35 @@ footer: true When all your devices are set up it's time to put the cherry on the pie: automation. Home Assistant offers [a few built-in automations](/components/#automation) but mainly you'll be using the automation component to set up your own rules. +Home Assistant offers a wide range of automations. In the next few pages we'll try to guide you through all the different possibilities and options. Besides this documentation there are also a couple of people who have made their automation configurations [publicly available][cookbook-config]. + +[cookbook-config]: /cookbook/#example-configurationyaml + ### {% linkable_title The basics of automation %} -Every automation rule consists of triggers, an action to be performed and optional conditions. +Before you can go ahead and create your own automations, it's important to learn the basics. To explore the basics, let's have a look at the following example home automation rule: -Triggers can be anything observed in Home Assistant. For example, it can be a certain point in time or a person coming home, which can be observed by the state changing from `not_home` to `home`. +```text +(trigger) When Paulus arrives home +(condition) and it is after sunset: +(action) Turn the lights in the living room on +``` -Actions will call services within Home Assistant. For example, turn a light on, set the temperature on your thermostat or activate a scene. +The example consists of three different parts: a trigger, a condition and an action. -Conditions are used to prevent actions from firing unless certain conditions are met. For example, it is possible to only turn on the light if someone comes home and it is after a certain point in time. +The first line is the trigger of the automation rule. Triggers describe events that should trigger the automation rule. In this case it is a person arriving home, which can be observed in Home Assistant by observing the state of Paulus changing from 'not_home' to 'home'. -The difference between a condition and a trigger can be confusing. The difference is that the trigger looks at the event that is happening, e.g., a car engine turning on. Conditions looks at the current state of the system, e.g., is the car engine on. +The second line is the condition part of the automation rule. Conditions are optional tests that can limit an automation rule to only work in your specific use cases. A condition will test against the current state of the system. This includes the current time, devices, people and other things like the sun. In this case we only want to act when the sun has set. + +The third part is the action which will be performed when a rule is triggered and all conditions are met.For example, it can turn a light on, set the temperature on your thermostat or activate a scene. + +

    +The difference between a condition and a trigger can be confusing as they are very similar. Triggers are looking at the actions while conditions look at the result: turning a light on vs a light being on. +

    ### {% linkable_title Exploring the internal state %} -Automation rules are based on the internal state of Home Assistant. This is available for exploring in the app using the developer tools. The first icon will show you the available services and the second icon will show you the current devices. - -Each device is represented in Home Assistant as an entity consisting of the following parts: +Automation rules interact directly with the internal state of Home Assistant so you'll need to familiarize yourself with it. Home Assistant exposes it's current state via the developer tools which are available at the bottom of the sidebar in the frontend. The icon will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts: | Name | Description | Example | | ---- | ----- | ---- | @@ -35,23 +47,8 @@ Each device is represented in Home Assistant as an entity consisting of the foll | State | The current state of the device. | `home` | Attributes | Extra data related to the device and/or current state. | `brightness` -A service can be called to have Home Assistant perform an action. Turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light device in your system. Services can be passed parameters to for example tell which device to turn on or what color to use. +State changes can be used as the source of triggers and the current state can be used in conditions. +Actions are all about calling services. To explore the available services open the Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use. - -### {% linkable_title Further reading %} - -We went over the basics of creating a home automation rule. Now, go automate! - - - Learn about the available [automation triggers](/getting-started/automation-trigger/) - - Learn about the available [automation conditions](/getting-started/automation-condition/) - - Learn about [scripts](/components/script/) to help you trigger multiple actions and delays - - Learn about [scenes](/components/scene/) to help you set many entities at once to your liking - - Setup a [notification platform](/components/#notifications) to sent yourself messages - - For more advanced automation using Python, write your own [custom component](/developers/creating_components/). - - Check out the [slides](http://events.linuxfoundation.org/sites/events/files/slides/OpenIoT%202016%20-%20Automating%20your%20Home%20with%20Home%20Assistant.pdf) from [OpenIoT 2016 summit](http://events.linuxfoundation.org/events/openiot-summit) - -

    - Whenever you write the value on or off, surround it with quotes to avoid - the YAML parser interpreting the values as booleans. -

    +### [Next step: Your First Automation »](/getting-started/automation-create-first/) diff --git a/source/getting-started/scripts-conditions.markdown b/source/getting-started/scripts-conditions.markdown new file mode 100644 index 00000000000..f99b8816726 --- /dev/null +++ b/source/getting-started/scripts-conditions.markdown @@ -0,0 +1,95 @@ +--- +layout: page +title: "Conditions" +description: "Documentation about all available conditions." +date: 2016-04-24 08:30 +0100 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off. + +#### {% linkable_title Numeric state condition %} + +This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches all of the above or below thresholds. + +For above, the condition passes if `value >= above`. For below, the condition passes if `value <= below`. If both `below` and `above` are specified, both tests have to pass. + +You can optionally use a `value_template` to process the value of the state before testing it. + +```yaml +condition: numeric_state +entity_id: sensor.temperature +above: 17 +below: 25 +# If your sensor value needs to be adjusted +value_template: {{ float(state.state) + 2 }} +``` + +#### {% linkable_title State condition %} + +Tests if an entity is a specified state. + +```yaml +condition: state +entity_id: device_tracker.paulus +state: not_home +# optional: trigger only if state was this for last X time. +for: + hours: 1 + minutes: 10 + seconds: 5 +``` + +#### {% linkable_title Sun condition %} + +The sun condition can test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger](#sun-trigger). + +```yaml +condition: sun +after: sunset +# Optional offset value +after_offset: "-1:00:00" +``` + +#### {% linkable_title Template condition %} + +The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. + +```yaml +condition: template +value_template: '{% raw %}{{ state.attributes.battery > 50 }}{% endraw %}' +``` + +Within an automation, template conditions also have access to the `trigger` variable as [described here][automation-templating]. + +[automation-templating]: /getting-started/automation-templating/ + +#### {% linkable_title Time condition %} + +The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week + +```yaml +condition: time +# At least one of the following is required. +after: '15:00:00' +before: '23:00:00' +weekday: + - mon + - wed + - fri +``` + +Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. + +#### {% linkable_title Zone condition %} + +Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). + +```yaml +condition: zone +entity_id: device_tracker.paulus +zone: zone.home +``` diff --git a/source/_topics/service_calls.markdown b/source/getting-started/scripts-service-calls.markdown similarity index 58% rename from source/_topics/service_calls.markdown rename to source/getting-started/scripts-service-calls.markdown index fb30a38d0d1..1090dc741ed 100644 --- a/source/_topics/service_calls.markdown +++ b/source/getting-started/scripts-service-calls.markdown @@ -3,7 +3,7 @@ layout: page title: "Service Calls" description: "Instructions how to call services in Home Assistant." date: 2016-03-12 12:00 -0800 -sidebar: false +sidebar: true comments: false sharing: true footer: true @@ -16,7 +16,7 @@ The configuration options to call a config are the same between all components a Examples on this page will be given as part of an automation component configuration but different approaches can be used for other components too.

    -Use the service developer tool in the frontend to discover available services. +Use the service developer tool in the frontend to discover available services.

    ### {% linkable_title The basics %} @@ -24,13 +24,8 @@ Use the service developer tool in the frontend to discover available services. Call the service `homeassistant.turn_on` on the entity `group.living_room`. This will turn all members of `group.living_room` on. You can also omit `entity_id` and it will turn on all possible entities. ```yaml -automation: -- trigger: - platform: sun - event: sunset - action: - service: homeassistant.turn_on - entity_id: group.living_room +service: homeassistant.turn_on +entity_id: group.living_room ``` ### {% linkable_title Passing data to the service call %} @@ -38,16 +33,11 @@ automation: You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness. ```yaml -automation: -- trigger: - platform: sun - event: sunset - action: - service: light.turn_on - entity_id: group.living_room - data: - brightness: 120 - rgb_color: [255, 0, 0] +service: light.turn_on +entity_id: group.living_room +data: + brightness: 120 + rgb_color: [255, 0, 0] ``` ### {% linkable_title Use templates to decide which service to call %} @@ -55,18 +45,13 @@ automation: You can use [templating] support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on. ```yaml -automation: -- trigger: - platform: sun - event: sunset - action: - service_template: > - {% raw %}{% if states.sensor.temperature | float > 15 %} - switch.turn_on - {% else %} - switch.turn_off - {% endif %}{% endraw %} - entity_id: switch.ac +service_template: > + {% raw %}{% if states.sensor.temperature | float > 15 %} + switch.turn_on + {% else %} + switch.turn_off + {% endif %}{% endraw %} +entity_id: switch.ac ``` ### {% linkable_title Use templates to determine the attributes %} @@ -74,20 +59,15 @@ automation: Templates can also be used for the data that you pass to the service call. ```yaml -automation: -- trigger: - platform: sun - event: sunset - action: - service_template: thermostat.set_temperature - data_template: - entity_id: > - {% raw %}{% if is_state('device_tracker.paulus', 'home') %} - thermostat.upstairs - {% else %} - thermostat.downstairs - {% endif %}{% endraw %} - temperature: {% raw %}{{ 22 - distance(states.device_tracker.paulus) }}{% endraw %} +service: thermostat.set_temperature +data_template: + entity_id: > + {% raw %}{% if is_state('device_tracker.paulus', 'home') %} + thermostat.upstairs + {% else %} + thermostat.downstairs + {% endif %}{% endraw %} + temperature: {% raw %}{{ 22 - distance(states.device_tracker.paulus) }}{% endraw %} ``` [templating]: /topics/templating/ diff --git a/source/getting-started/scripts.markdown b/source/getting-started/scripts.markdown new file mode 100644 index 00000000000..e0413a421da --- /dev/null +++ b/source/getting-started/scripts.markdown @@ -0,0 +1,89 @@ +--- +layout: page +title: "Script Syntax" +description: "Documention for the Home Assistant Script Syntax." +date: 2016-04-24 08:30 +0100 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Scripts are a sequence of actions that Home Assistant will execute. Scripts are available as an entity through the standalone [Script component] but can also be embedded in [automations] and [Alexa/Amazon Echo] configurations. + +The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted. + +```yaml +# Example script component containing script syntax +script: + example_script: + sequence: + # This is written using the Script Syntax + - service: light.turn_on + entity_id: light.ceiling + - service: notify.notify + data: + message: 'Turned on the ceiling light!' +``` + +#### {% linkable_title Call a Service %} + +The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the [service calls page]. + +```yaml +alias: Bedroom lights on +service: light.turn_on +data: + entity_id: group.bedroom + brightness: 100 +``` + +#### {% linkable_title Test a Condition %} + +While executing a script you can add a condition to stop further execution. When a condition does not return `true`, the script will finish. There are many different conditions which are documented at the [conditions page]. + +```yaml +condition: state +entity_id: device_tracker.paulus +state: 'home' +``` + +#### {% linkable_title Delay %} + +Delays are useful for temporarily suspending your script and start it at a later moment. We support different syntaxes for a delay as shown below. + +```yaml +# Waits 1 hour +delay: 01:00 +``` + +```yaml +# Waits 1 minute, 30 seconds +delay: 00:01:30 +``` + +```yaml +# Waits 1 minute +delay: + # supports seconds, minutes, hours, days + minutes: 1 +``` + +#### {% linkable_title Fire an Event %} + +This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another component that something is happening. For instance, in the below example it is used to create an entry in the logbook. + +```yaml +event: LOGBOOK_ENTRY +event_data: + name: Paulus + message: is waking up + entity_id: device_tracker.paulus + domain: light +``` + +[Script component]: /components/script/ +[automations]: /getting-started/automation-action/ +[Alexa/Amazon Echo]: /components/alexa/ +[service calls page]: /getting-started/scripts-service-calls/ +[conditions page]: /getting-started/scripts-conditions/ diff --git a/source/images/screenshots/developer-tool-about-icon.png b/source/images/screenshots/developer-tool-about-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0796b67b510124e2cb1af1ecd0af840fb9b75932 GIT binary patch literal 2748 zcmaJ@dpJ~iAD@JBS1fi^#)PQM#W2$hLl`0^49l1)=5~gOxim8vvSQkVR!Y*K#ujRA zxg?i*S27`6=;EFts|?kscIl$j?r5uh|9E@P^PKbheSgpA^Z8!Sc}{llwk-y_U|kRh zWZ>^dAgR~D#e2E7`q_CbWP^J7R_sF-hw|CtB)Sj)d9wHn0OHT3#{eXN&Pv{O9dHAI zmO?pUWHFf-h-31(F!~|}CgBRyY!JxJLn5Fv;{Y*)0mN{4c;toF*uYH4uODtx}a)r zLKYiGBKUstrMB?USg}}ugTs@Ol3+M>WDxl*|*;C5}AN+Rq9E zK*SVs1Y!=K2U%34Gx!N&JX9U&KPhkpUu1crPi0aU3@)Jy;7Ax^F{RHyBJux2x!f;k zk(dPh8}I)V7KJ4X05}N{@e_nhb>rA;7hMT(-a>#b<_p94{P@pR436cC`J!090OB3$ z0wL0w9Nwb+5ln9Gne%*7xPu_;wW$hYR?2f$VmiPzCu11@-bx`=j*XJe^u`j zm-Y2nT)xVMtAl|rHuk?7{rN~eJ&W5fW2-j43_ie9PrFb(*87(SR)Rpw5dH+uFv*B& zJJoM>gz2a|l<>!j+iv>S&UVGdOF3bGTIVF&>k!X(Nb4)P*SDnQ4;xv}t*t0{Ri?S{ zGtoUi@6cc`G>pR0T{#P#*z)4=W_=qwUukZ#*N>k2WLsW?Z(TltjjDNlQ+4UNmfod^ z(cPskF*jABoAM)buV$#aOT$qZry-PH|5Pe_4XUK5`U5X#{`mY4*lW$5tJq_#vEWkg zoN{BGLd7{+A*#u#ONKS%9z^Xfijd*Ec}iBjo_0ne^6b%Ip2pP#r0dc25ZmGX-A1y8 zCuVxK0=*=}UyKjmK9*j-wIGYU6?po^gu#W}dDq$JekQ6NO7omZ(?}Uj9^MSrkPtJ>;JbrvKBV$R;rVNbhBNpuAjNr)Hl&_V3acXrl7vUI$HYP_d*=y)WyUZaDrHT`%$@S zz0lWJdth*|SJ_iCYHSe4DScz2zoBA}-@zTz{xdT({SO{^@b?~bq_T}4_V-o<Hf-4XE!&usU-Es zE^NmRA^-rMcU3bp71h-+u$5Km?5|R(#z+(2%8^pfzjxg~vf@D6lGPw^RVMA{Q@bb@UNzBI&_WwjqH5Usgvq>Cs^W~i z$r`<6b6KuM+h73M5)3|7S?SP4+fD&5{D%o)7J9VC#KfGzm@N?EEz$9ZVwEX#wHgkJ z?%{gQkvV7E@l^&b?>m$rEjh9q>APi%W9fmM9Q*CJzkhljn~uz!3?QexovWM_rKP0} zYxXUkB6D}!1u@358en)#-BQZ3XtNojb`7_!1+5XVACyHLknjhGQTdNNaR@B zdF|R&JJ~a8UeEQ0bXt(j#wtp~jX&oHtEhC7z}HosN>Gp*8)3h(e(;y=SJFoR2rpjU zx-RwIfgb;#8U#$bzcn;Adr>PgUEgY+N*QEr zvQr!vSV%_;>cT@p=tY8uoP<}ZyN7hNqm}Dy7@mRBi#m!I;lmeyaOuZSFNtbNjZE>r zx^8@F%bZ@8><3UTPx8w4jsYPtxAu?Q_wUC?4s~j4HMZYhzs9p>Cx>&=93CaPLak%z zxVX54P$m79;w`C^z>L{&Ls?C*Cms~;Xh97ymaK-5K8c}Zt645Ec5=N z6@YC?t5ho?eS>XD%9yE^kD^s-Taq5 zek}31(wnaFjXr<#@vyy7&A;dFd^bSTT>CPpb0WBw`Dp4<#=hQV&EM~_JJ^mZ8wpI* zY75blyla6Qwm%8wUVcbGjIZoz`QF2{jbTuUj-pH(E$x}UH=rrD(e40;aP_7)WzyKc z$eW&-bRsmf+dZw&!9KfE3Vs~zSi9-%vFw?j+UY)?&|Rwv4QvdzU&wAhoQ6KU$+_2V oWoP~fVPc%RKWn7y=wBu@P?=juWeUq8a`AuC-)9@4+KVRr8?(lt9smFU literal 0 HcmV?d00001 diff --git a/source/images/screenshots/developer-tool-events-icon.png b/source/images/screenshots/developer-tool-events-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cd955fb728ef2fa4cd2472f6c9be19fc660f02 GIT binary patch literal 3409 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 X^$XR0MzkPqKXPy`p4eN?;Tiu2!n@uG literal 0 HcmV?d00001 diff --git a/source/images/screenshots/developer-tool-services-icon.png b/source/images/screenshots/developer-tool-services-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9eafcdb76329c3dcca2efd4077830d9d69a3a8 GIT binary patch literal 2570 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 VeGn-~w|joHd~OEkY-(P`e*uw}Dk%T} literal 0 HcmV?d00001 diff --git a/source/images/screenshots/developer-tool-templates-icon.png b/source/images/screenshots/developer-tool-templates-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4e90e910cf13cfa303a1d7d30891b411016d8426 GIT binary patch literal 2252 zcmaJ@X;@Qd77ikaAjlFSh_RQjm<}ZifrJF2M3R`GQ3)72~Bvh-2D~`&lEDoYDbwoxKSz1&ml2Z$WP2rJd0N@e0)7dJ|kurf)iQ~`k@ zK7are%M=Fx9bO<{@D)igs1QSZHWP<15M(k5gG>ozQRq}QiMEanGLCB+aU>8t&{`rN@mDDp@q%iP^fet zUxbhTX)W(#C7;(4_*pGPL=4d|*#8;y+!eAt2J_?EBF@LfhZM-RtC6+lN>>0Vlt}=e z%?eGqH&(WmC*F*?ap@nsZ8fl+4J&&nqtfZAFS{V!Y)?AHw(cEN?^w*s{d1bdhcc~3cc=ce7wSzF*cQ!4q#m1J^+(KyBKfe&Qs?UddG;@hd zg|j?&fp%X}&8wUEhV(xQXIlJ*Z;v(ex<+yjbC?od*hPbUG*so(6ALB_>`BR@!is`bUkLj*x8Q|~8w;(c zT&7+Inz@9p0xAL&(1O{mb>2Jen;uB5+UC{u;_n38f#aziCvpY_%scumwe=Azoqh?J zIG*)1qK4b=VHd@~w^HhU#(~DE!KF%Vt7e1K4XpgC(do^)r$bE0G^Xsvpt>Ep7>T`MSXmi;K;BeckdBRc?oOLkBscNakAxnjOBc7d|$EJUAEX-{k$Zz8(*p> zZG+=W4*kH5Pi^89lfArfJ-4>?+KY@u!#{Ev+2MtU`^mbtDZp=&YX_t)z#iU`IW5*` ze9&lgRa))YvzSN%_~tm|+97)^yD^^q-~sq}eEfpjeu<@(RdZLDb!cd4F3=&PMTnxJ zzVKaUB~46R_pL}Mv^}&bJbYnwb+!Hyr-0jhGr!oa`up#VMn^{#_nen+SXYc@RUIv? zcd?OlSC-tp8*XNrp}&!rmsfxOeA#olQ5CkZJ{R9$Yf`;)JxXR{Yi}~x3^cN)jIARA0Bpf&#hVr zwBI@~WIQT$_xM-*?-*x!Ow7FI2dc>8A_Q21Ki<2rkT-u({z0tU{@RoTcGI^FXU-(A z6&>@=fUtTe-V*N1$7P~w^pYixqQL#_oZIrMxI`_eOJ^^KkFMC9ZO3~E6+zB za+>vi(dZz2lowapIc+heDW{$KhI5gh<`q)$#_8yGIDgIN}ys`q~SYecqldzeKUp656GMCfIe zWg=v~#l78qIxM(PUwl<)op8k`OJDpv1e4IsLkzb~n1lyke@7ngX?tryLQRt6OGFL; Q)9`=6=d5Sft&UFr6Tae@ivR!s literal 0 HcmV?d00001 From 7d6b837ec0d5f8ff149229503d863e728b5e0d30 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Fri, 6 May 2016 16:38:29 -0400 Subject: [PATCH 03/16] Added octoprint documentation (#448) --- .../binary_sensor.octoprint.markdown | 33 +++++++++++++++++ source/_components/octoprint.markdown | 29 +++++++++++++++ source/_components/sensor.octoprint.markdown | 35 ++++++++++++++++++ source/images/supported_brands/octoprint.png | Bin 0 -> 46027 bytes 4 files changed, 97 insertions(+) create mode 100644 source/_components/binary_sensor.octoprint.markdown create mode 100644 source/_components/octoprint.markdown create mode 100644 source/_components/sensor.octoprint.markdown create mode 100644 source/images/supported_brands/octoprint.png diff --git a/source/_components/binary_sensor.octoprint.markdown b/source/_components/binary_sensor.octoprint.markdown new file mode 100644 index 00000000000..d8ce6a63132 --- /dev/null +++ b/source/_components/binary_sensor.octoprint.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "OctoPrint Binary Sensor" +description: "Instructions how to integrate OctoPrint binary sensors within Home Assistant." +date: 2016-05-05 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: octoprint.png +ha_category: Binary Sensor +--- + + +The `OctoPrint` binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error. + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +binary_sensor: + platform: octoprint + monitored_conditions: + - Printing + - Printing Error +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): States to monitor. + - Printing + - Printing Error + +

    You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor.

    diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown new file mode 100644 index 00000000000..063ed182f6a --- /dev/null +++ b/source/_components/octoprint.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "OctoPrint" +description: "Instructions how to setup the OctoPrint in Home Assistant." +date: 2015-01-20 22:36 +sidebar: true +comments: false +sharing: true +footer: true +logo: octoprint.png +ha_category: Hub +featured: true +--- + +[OctoPrint](http://octoprint.org/) is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors, you will have to setup sensors and binary sensors separately. + +To get started with the OctoPrint API, please follow the directions on their [site](http://docs.octoprint.org/en/master/api/general.html). Once OctoPrint is configured you will need to add your API key and host to your configuration.yaml. + + +```yaml +octoprint: + host: http://YOUR_OCTOPRINT_HOST + api_key: YOUR_API_KEY +``` + +Configuration variables: + +- **api_key** (*Required*): The retrieved api key. +- **host** (*Required*): The octoprint host. diff --git a/source/_components/sensor.octoprint.markdown b/source/_components/sensor.octoprint.markdown new file mode 100644 index 00000000000..eb811f8c696 --- /dev/null +++ b/source/_components/sensor.octoprint.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "OctoPrint Sensor" +description: "Instructions how to integrate OctoPrint sensors within Home Assistant." +date: 2016-05-05 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: octoprint.png +ha_category: Sensor +--- + + +The `OctoPrint` sensor platform let you monitor various states of your 3D printer and its print jobs. + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +sensor: + platform: octoprint + monitored_conditions: + - Current State + - Temperatures + - Job Percentage +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): States to monitor. + - Current State (Text of current state) + - Temperatures (Temperatures of all available tools)(print head, print bed, ...) These will be displayed as tool0, tool1, ... please refer to your OctoPrint frontend to associate tool number with actual device. + - Job Percentage + +

    You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor.

    diff --git a/source/images/supported_brands/octoprint.png b/source/images/supported_brands/octoprint.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5286f423db32bba7556677ed04974c0679cd2b GIT binary patch literal 46027 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 bFdhFNUViQtkrq2900000NkvXXu0mjf|H8JL literal 0 HcmV?d00001 From db8daf013f8d40c2d2848c1ca9b46fa911ad4dc4 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:00:18 +0200 Subject: [PATCH 04/16] Add @blackdog70, @gwendalg ,@ishults, @aceat64, @kylehendricks, @bah2830, @devdelay, @hmronline, @milaq, and @timharton --- source/developers/credits.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 0d985f8c549..5e9b44d4553 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -23,14 +23,17 @@ This page contains a list of people who have contributed in one way or another t - [Alex Harvey](https://github.com/infamy) - [Allan Glen](https://github.com/allanglen) - [Andrew](https://github.com/aoakeson) +- [Andrew LeCody](https://github.com/aceat64) - [Andy Loughran](https://github.com/andylockran) - [andythigpen](https://github.com/andythigpen) - [Arthur Leonard Andersen](https://github.com/leoc) - [Austin](https://github.com/trainman419) - [Azelphur](https://github.com/Azelphur) - [Bart274](https://github.com/Bart274) +- [blackdog70](https://github.com/blackdog70) - [Brad Buran](https://github.com/bburan) - [Brad Johnson](https://github.com/bradsk88) +- [Brent](https://github.com/bah2830) - [Bruno Adele](https://github.com/badele) - [Carlo Costanzo](https://github.com/CCOSTAN) - [Charles Spirakis](https://github.com/srcLurker) @@ -44,6 +47,7 @@ This page contains a list of people who have contributed in one way or another t - [Daren Lord](https://github.com/Xorso) - [Dean Galvin](https://github.com/FreekingDean) - [Dennis Karpienski](https://github.com/TheRealLink) +- [devdelay](https://github.com/devdelay) - [Edwin Smulders](https://github.com/Dutchy-) - [Ellis Percival](https://github.com/flyte) - [Eric Rolf](https://github.com/xrolfex) @@ -58,9 +62,12 @@ This page contains a list of people who have contributed in one way or another t - [Greg Dowling](https://github.com/pavoni) - [Guillem Barba](https://github.com/gbarba) - [Gustav Ahlberg](https://github.com/Gyran) +- [gwendalg](https://github.com/gwendalg) - [happyleavesaoc](https://github.com/happyleavesaoc) - [Heathbar](https://github.com/heathbar) +- [Hernán](https://github.com/hmronline) - [Hydreliox](https://github.com/HydrelioxGitHub) +- [Igor Shults](https://github.com/ishults) - [Issac Kelly](https://github.com/issackelly) - [James Cole](https://github.com/jamespcole) - [Jan Harkes](https://github.com/jaharkes) @@ -84,6 +91,7 @@ This page contains a list of people who have contributed in one way or another t - [Karen Goode](https://github.com/kfgoode) - [kennedyshead](https://github.com/kennedyshead) - [kixam](https://github.com/kixam) +- [Kyle Hendricks](https://github.com/kylehendricks) - [Luca Soldi](https://github.com/LucaSoldi) - [Lukas Hetzenecker](https://github.com/lukas-hetzenecker) - [Magnus Knutas](https://github.com/MagnusKnutas) @@ -97,6 +105,7 @@ This page contains a list of people who have contributed in one way or another t - [Michael Auchter](https://github.com/auchter) - [Michael Gilbert](https://github.com/Zyell) - [Michael Kuty](https://github.com/michaelkuty) +- [Micha LaQua](https://github.com/milaq) - [miniconfig](https://github.com/miniconfig) - [molobrakos](https://github.com/molobrakos) - [Moon Shot](https://github.com/moonshot) @@ -127,6 +136,7 @@ This page contains a list of people who have contributed in one way or another t - [Theb-1](https://github.com/Theb-1) - [Theodor Lindquist](https://github.com/theolind) - [tilutza](https://github.com/tilutza) +- [Tim Harton](https://github.com/timharton) - [toddeye](https://github.com/toddeye) - [Tom Duijf](https://github.com/tomduijf) - [trollkarlen](https://github.com/trollkarlen) From 03fcde950a2a5e82e6bd88cb2d93c57af74a6454 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:04:34 +0200 Subject: [PATCH 05/16] Add Z-Wave locks docs --- source/_components/locks.zwave.markdown | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 source/_components/locks.zwave.markdown diff --git a/source/_components/locks.zwave.markdown b/source/_components/locks.zwave.markdown new file mode 100644 index 00000000000..05f7c243af1 --- /dev/null +++ b/source/_components/locks.zwave.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Z-Wave Lock" +description: "Instructions how to setup the Z-Wave Locks within Home Assistant." +date: 2016-05-07 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: z-wave.png +ha_category: Locks +--- + +To get your Z-Wave locks working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). From 99ca3bb5cf0d83a4906ca645f14da8c6609ded99 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:10:41 +0200 Subject: [PATCH 06/16] Add /api/discovery_info --- source/developers/rest_api.markdown | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index 197c1d0648e..8e4463a9e0b 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -273,6 +273,25 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ http://localhost:8123/api/error_log ``` +#### {% linkable_title GET /api/discovery_info %} +Retrieve about the discovery feature. + +```json +{ + "base_url": "http://192.168.1.2:8123", + "location_name": "My home", + "requires_api_password": true, + "version": "0.19.0" +} +``` + +Sample `curl` command: + +```bash +$ curl -X GET -H "x-ha-access: mypass" \ + http://localhost:8123/api/discovery_info +``` + #### {% linkable_title POST /api/states/<entity_id> %} Updates or creates the current state of an entity. From 77cfe71c9fa54c94e5cbfe65d2a0f0f22088ef0c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:28:14 +0200 Subject: [PATCH 07/16] Add Dweet export docs --- source/_components/dweet.markdown | 44 ++++++++++++++++++ source/images/screenshots/dweet-freeboard.png | Bin 0 -> 94006 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/dweet.markdown create mode 100644 source/images/screenshots/dweet-freeboard.png diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown new file mode 100644 index 00000000000..9b57782db83 --- /dev/null +++ b/source/_components/dweet.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Dweet.io" +description: "Record events in InfluxDB." +date: 2016-05-07 07:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: dweet.png +ha_category: "History" +featured: true +ha_release: 0.19 +--- + +The `dweet` component makes it possible to transfer details collected with Home Assistant to [Dweet.io](http://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public! + +

    + +

    + + +

    + The publishing interval is limited to 1 second. This means that it's possible to missing fast changes. +

    + +To use the `deweet` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +dweet: + name: HAExport + whitelist: + - input_slider.brightness + - input_boolean.notify_home + - sensor.weather_temperature + - sensor.cpu +``` + +Configuration variables: + +- **name** (*Required*): Choose must choose an unique name. +- **whitelist** (*Required*): List of entity IDs you want to publish. + diff --git a/source/images/screenshots/dweet-freeboard.png b/source/images/screenshots/dweet-freeboard.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fd8a1aadef1c4441f114cd341b74b406546404 GIT binary patch literal 94006 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

    *s_o>@u3TW^_1&F8%xUtP+X!s|5#aB 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

    X6r|+k;-p*gRJoFi< z*;$iAP8rERi_ZV(Up%W*v5R}eac|hGgvgxDoO&qppu+KsQoYg;X0qwiQ&QG(K{Dgs z<&KNiF&qNJ23=1FXIkU#vt!UL$5_zQo--e^lrRIE1BxFgGZYM(Kb@5>_?XG;)!jZ< z#(GI8dGb}eTkE44!IN2)-3xmPxg=#Se@~v;Jy%^WWh-pa>A6&% zew~ty^#s0@!Gl!c!B5Wua;kSZJijmBAHQ*$?Y%+dH}3E!*BYwZbgv~zp1q0V-klGw z4;>m2Vi3T^|KZnXdc|Ulk%n*PLB2Wmqtaf!A(qjonVMZjQ{!Cliwi8geb+G0W51y< zhKJA^Ej$<@sVO2EcJoVJ}t7^VsAM9nkp4#E0XF~g$U1vqNEHb;x z*>dL&CWMm=+dOH)&|d$He)*1E2JTtX2biDInHMt{9OXBKe@DNI=lLCd{F44RKHr)P ze8oH-q|VaJEw^O!*(@;9vU6Rz){1N+fF$i&8S*WOIiKrU+)9!?3e@kh(Fl ze`Y(KNlrCA|2DT3K1$tsoN_1Zxbk^_n{>APCm|&!a=a`%kFFlb(`TA`?& zE+IP(n^mu;K+#CDwm~jRrcds2Y#GBPp|q(!GdqQQRtopH3wd71!R@VFS6}M=@JEbB z;>_n1($tI8BGyDpkv`H{7JqD)pC~vI~K?2B7~lZw!YT-=E>i<#nfjS46*%_ zLdkjzl1-QrqM_Rcg%>j;ejY_d?sE^|$fGfC3Jht{V3 zSpV;=$b(C^pY+yMztP4cImhlm%;1t-^RIT{-%LJ_?I%B@YODy&(QM% zqb5P9!x@f0na{$#AvIaIajN8;!Qw3+R&0#f&yqB@o}|)Fj0W$MFFu;QUEiA~GTL`^ z#c3q3P3og2wh8YHXm*pmCJJ`08A@$=VZ3wQ z)}~D8-RuyLn6e-~FY@qwqwHD#u;-amS;E$1ayAYjwv!`cp4nl^SjN8YpkHGhX_mAH z^WRX@^X!b=m>RZ|tpTBwY^6iDghREH_a6kNrcZ^!dul$sqt{wo@1y@ydOlRp(yeej zJix4hSWn$*(!M$)?*4E9<7nCIsr6C0p+_3LU95^#d?F)EitKbd-vrnD?mFw&7TTyf zxt8Ko$#W?a91is>vSEQlD@G`SWFl z@-2(3n$-q{rBz1dX=W6+lP+eOd~izEIjNm2NP>2~WZRr)|Jk%CHL1_6HzXjsdu5-3 zFs@_DaZ*Z&=ZxkXC)@lecNR-i7VV2UlbeHj= zMx&3wBDIL0N|Qr(YR;xrwu61P!|V28>kb*4&EFES#bj+ih%*Lw?QEH&2h-oG@y7J6 z+{frXFuyFU&qV#uDElj~UF>@WwI0t~Fq$$q4Q`&ytis>OD%QuI%I_r;5m(-rN|_ZY zoPNw1KOc{Kl261_O{y)JI}l8wy8PXYu4s?VQ1aJq-&wh*4;lk9(5AL~$0hB3%XK@! zg5Y%i__&|tjDkCRDvY&J@vi*TSQzm98=v5&NS1>^-+Hnm(eU**lXvLuM1HgRq_W&f z?mFdveyf*tEW7Cw4;@$h{LJEW4Th&ZADyr)bdtQkMxZ^=O7yB3_Bb>h7iAQs*fn8n zubt!pr#xD8gC|yDksmwKf&bMme z$ETZZeh7eT3)7w}#&!Akjq0Y?rn}AE)jM}N_Sg-Xl!m<)F`sN4M3WfI+N5SX(jT=; ze$N>aGKyPGwRVF-)uCG9X?9WEfMBl_(5L&GjC+x(t`&LC}iM0I-USUlRSFyp5D^>wEpF(?Wqu&n7 zy4jm8WXF-;)~^%r7S-1aMCvHcpVnRYsh}_*rLfd2T*woteI{+XVdhcq2VWXR>oK1c z(tGi6YGLmsx(0{-_k)TBUYWMddtNj=IF5PdE?&&~2cxp!`K(A*MG>jVNa13~_+7-` zP5$C@E(4AK%BslTSR~mTg$~x`@T+0lb)G2%dxR{%?g_cwLCT~pzXn9=?{Y}H6zi#` z=IY%P$*8i^NV!f~JX`NK8))~dfzmb#%u#?V>tCKixDURDLOT!BlxGA^D;<|O!|6ej z8ImjP*B7X}w{gs9FK<*+uuWQQIyRbwvS@quQEse2F)t@Qv(Jb!Z~tcUp|iAuzPrgM zJ*Nxqx=pUM#b?OM^Tm}{19C1b_&aPZ&V@B8iDF3)gVa;zJpb%;e4o#Gq!YCdn+_9d z(gVUbZSbR&Ufo_7y}EI?Ow3aF97aB149VZB2Yjiba5ucijU~mf)~l&V;1mnsg=h+v zo*&XY71w^;!LemNH`3z_S|Y+EKRirQMS{VDXGVY{`P(2E@aUc=iozBTnvL0cl0OhV zwHBq*i+b@>+U6VIX)XO90=_j*R&gr=`wzfz4ThnUlgI>Pg2QCXP~enp%t37207k^? zy#B4nJbpDiUyjq!o^~$@dk`axXACfQDv`JWt;vDG$&aclpD%L^EtOkg+)bMEaH>2H z!EFeo>3ijoIR7glVD80}O2>}%Rdu@Mw-mMH>2dc>W#vt#JHERweIr&PYC3+)!&YCu zh1Mb9ZYR|y(LJA&oMS~2=t@>}1`l^~xP;jiD+dbfg$e@V+_$Nkhdzt#zZBk$Q?D(Q zi!J^b8^)iK6#hswizl*+lsp!VhcHAY$|uFny>Uc9uUc%PO6-{<#nN(!`gtWLezwo+ z*BeQrB428p`3y?|x61W5`KFRFUOC$3Kg&cyeJFG}8YI2){X?egKg}`**MxH|$!&$U zk20CI6t$|;S(q|A4g1^JGRH@gBn$^@m9vxaWdEs=5-rvrXdTM9+yCiu9#I_cMv)75 z7S9WCkcVTm&vZm-&#`L4^M%3Ie$WwqcR1*NwMEhs1u9IZ8BvFLhKrPUW%?*5+M2Yj zxH=#d zOdGCI=NC^l0O*;PKRQA}i>d0SsS&~0>Bfi8r@nkcR$#6K)~>(RYrn%FWP zI_2?Wrkwi^F1hOO<=tMSu9W_+b-gc;!MQnaREyVJ^kauQnnDsx*%#M1G=)-gboTk5 znaO{yU23wq>nDyS?J(UeP~q_84jmJFz7>k)HjJ#l?FHxhuyo&~?b#!NXKYJUP9|ca z89XnJ{4@yK1W!RAcAK)qFp=8xnaame9iBb*nGdG^Cz==tg397AEgm)V(Yys$U`>v# z(}ZZKpbHkDy$=VI9p4{T_QdQe9CsnIdU=s^3_{E**Lg|R9{W0$Xm5`E)_e@ee zE=pjq$&VFiFlrc6hErO$MqL`?5ko&_&3@Y=k(5xTR%fE*hYP4W&6R7#pF8KWBH>Z3 z$z?tj&K(F1q)~9|kTDcGEpK*1N%+#%_rS}m{vno&R3*fX2^5ReGdJ{^)J1NY`#NgG zI6GAeWwmq;wLBe8cygvQDhE@eF`fWx%Z7=giEXW7xA*pNa&pH&ODr=X^P^u{X(iv; z&nZRpEx5|=+M($2AG3>>^S5tfBN&5o!fAHnIueWRe=Kv+JWNxiDA@(q8&+`#{Xg{` zi;6L;TGv%#xv8M4q%Pk;!2?U2QN~Iql$u!e5j_)ck%{wEvR}UXFs(hg;&B}21|%`q zW$1JsAatKa9Z|Mq;V??$|#0hO}*pi2y%m>6u zU!{UCDoFaEvF#!TzWtHD^2Qq@cLb9s`zsXV?mK@?BZ+uVMtzQ9o9x}?={v*~!d-fG z0wu(QJ?C_##j+hN+J|Jm_z>TNEBko)Em(%F_c*PBiib0KMxlS{izb|Y$hzt<5*}{FmT0*inhhBO zMdA2S@-qw^_i~qHunV%p&Zi0uVOY?LFy9{-iuR!>+CHao5EXFuiw}*0^*gfJIJ6Oq zS9igT?*{g!HW_CkSX_b0EZuRcP5(qoqVlE>re;^{O3n*cKAd@P^rH~gxByDa6L1Wx5saVkEFYzNba7JJ+++I`|3-PUzn}hOnmrK3dfEgmW7Lub!zIUG zNq#fosYUNEUC(ff3RHC1P~>$)XA()L)coLLivFqb`Zn3`7EF4{`N8Qs=G1m@9bo5^ zNWa6LH{X*!IYWLAYW64`m0f^ZrLT%n*F0^BGy9Cy3jO_R752I{z*6 zZg%Foe6M_>kMk)t{+rn~D`Cl(P|WkKicT6;BVkwU0&LS%<>Dz)hZT+wzKvi#bKOA0 zD_r6QWUar4l1n7h_;*CK_7V^1Fg>o6=HODwB^gk(>FRxoPP-M^^9$BNUX|`}KiWdx z$}V?K1sc25-sdMz4rAC2Fbt9JCH*AZ=qhR@6ty+V(FeklU#InSAF8R7BBeY(qd+h8gGdhcY40T zx(*MSYc|Z#;E9M8ht$J-=-9uLd$%3lDKk+uoX!Dv(5}{W_3!nsJra^Wv~~fYBKIrW zB7Nks3~TE1#9QrdV?IWLUN9}XuAAMCU*s6l^jf?cj_CWua)T|?SPi3BKe(hQbAjbr zA1~&){hNnSW+|nA62b(#>YI<>jBlJ{@}O*~DVXy# zS$n;fO(xIfu@-&csaU0`Q7y(kYB}p_uta!wKWgYEjj;3ER>K{Pqto68t##rtF}jT& zefP$f)<&smW)@ehIug{~z%TkDvl=K~O)9yL7R$+AlKq>(2}6;B-)Hab+6t3 z_Vd*1DVfB^4@O^^vRLgxOOnHF#)<0 zz`nT^6a_=q1HmZ zn$(*i9y2_Z)ivfsk)}|WX)g!X$EHpSu<{hf{Ke!+{>!2HV@KlXEwcdbZm3yhA-$<} z4Aor3*u8A^l-jp|Gu#-z_Cc;l)Bhds-=tPnnMv+aK6dvQJiZanKe7xpE?Hb0z^}K; zWC*c^714JYtwxfWQa9`U5Ey;Tq~UOWSV4t^E0E^?IF(KNHP@zNDD)ddrZCXhI{D#& zZfe&fN+Mmn?XBpq6}(j8yVo*L&<3_X79F^BnYE!KP}XHcPqd8vPut(h!iLIecb&1` zMX)tH5sAQC(5d(D@)q%tYP`V0hL6&_jL;t%FB{8x={GGlG1dMp#I)fG?l%O_#=ZY0 z-+i(NP@MI-jAK^4rH%OE$?^u5WLPp${!noO=c737lq}?bk2CDOi`JQ9-ju$?GRPX9 z-7S4J?WT8iB2Vd5(x;FcOdr)Khl)Qc;0#vojUMms-R`|q)|l>CXcQ@N=E6x~JF;Bz1xY?-VK@ah zl+vMI>&H_BCxq@xt}C9Kc)#z;NjzI;j901KXS7o0~@&u897sI@fEFMLf49!$A4_9*F8@wmJ4}~ zUyTtJjt}_HQ4qNp!kFO&{Y?i+xD_vK?Jh1?%KfTL$PM3m?sd^l`%!3U4zzf*IPUmw zc>zl94DN-UUHK*hs{w7Z0)}<^jgVf=lKE_)#Wk4_ZX(z5T%{44@?Wo((bqNqxgZqU zOK|d#|y{K)~CGa(}R(dwj0YT$@o3R?F0>XZfgbww`BSw2|S)J|N*m zrE|&D0CV``rpI^t39e)%M8o7eq|}d(Flo}z>$(4kw*wGiMIoHRnn=a>E{p7Q>F5^2 z$z~1jVJ;g=tH1B|_`{#8$rM=KlQAA!EKQrHP_sdw209_|_8#t%m{BSzeLNqyOUksY z<-rVdA52oyzi*xSsz?XG;ejBIKd$*)7THv35z>tuvTX%$ceZvn84rz%?!VbqmfgQ7 zEnFPbsW#>O{QR02Vgf@E#m_Po;QWHD71bOR-NBHRjN+WvCax(jG6$U#^X%=sR37zT z6r|z!)$o)q0!W?Sm#=t%4S=WmC61Y4*-t% z6QypN-8OGyWwkL{Y@P@dD-fMxoqDxaJX8Z%GTx%7?hDWo2%sRjUE=+&e6M3mFaD%> z6|WY$)DPq&0BqOs$6$TwOd~G9*3Jd3M%WMyApFuLc>Ehz$7S=%ln`*~fU{9manZu| zh5L4_=V-iPT0|76ez0n%g*`3Us%+%T`DIOSHDK0K5{VbxfY_F&E$R&wXLp40l2w^xy`o@?| z!NCL&;EVc3FUIjKI(4?RyDYw`=^}JL5C!3fPkUy?&W8ZygT~1G z?jwmfo^`q`cr(~oH*elNaXSYxX@SA<>-0XJpOd=5e6JICg=zZ==re{OJdHW zOCALb@++mJpex@|o9DNHGvY1CWfYn!tpl8r_%@1Gje7?{gtUE{$}~4{ z2#e9{0TstI6idjdNsGxdw|d)z=*pQrRZ78jd0e1Y2@E8!rOIUso2&hG9q8?48-ChgkD5~Q6A zNMrP)+ zjkepF*P5`NUXp6@FMu#Vk&?n6r{d*xp3hLSD~I;cp!Y%U8X-*DJvyqcps)pi$K3Na zoh47`WjtBsgrp8Y!uj_SBx%!f>3xUk_NxhR_C^40+dnwSOBABZvh<4E%-rnt@8Qky z!mcyZ3Emf0%m}Z=LwDD?_q5Ny1m$2OKLUcsx9seRDyMB`w=>%qzgCv^?9$1A=l>$& zuH+yLORhVs?0rtAOEB9Rx)#J~ehLw?_;nx8(AHAC6 z>W$O6CZXHN*YuH&KFd&%*WbeoJFo#+m$n$rU>`MGTiaUHXd`HXE^y{a(oJ_Wo|u@q zdPf0X|0GMy@0j=H%K}hC*~G+K4GUmcPMW#|xVV*GKhDU=5Cpg^-+GxRW_Wb8f8phq z6z28O!}HNoi;N`27OJ?THi)j<{M>JryKsbvkT6r>8_vz^h=z^*%87Mgkw-?}4{h?a zT^{XSw!3?I@W#tAMQ!tUS;tLn>^t(muB@)CtV~aDvMfzW`PnnXGE9JtUAXWLCH%t& zB|0T3sTO)*F%P&k-t91Qmz6maIFbIuV}2h)|H!3gCYj8$F7If)5)A=6D;HO3UfwJH z*D26i+6vIEqIZO3Q1hWd^m>`WVhHg}A=mh;dY}a^*&JNE*6W(@E`(7cCo6r^_2f&e zWr2G3PWDd3)G3ops#5>>_{jye=|z`Nm$jy*<~T6<%Yb>$x<1(wjzwVcFt&sH$)(Ls z4Ganb8lzumXsEycGqBb!=$JH>AQRIXStvuaBLL?TcJ|M&B|Be`+$p!-0O+N=i!55*rTGl91e7 zy}S#e#4Ep1C-7pv$7as_@q!bovV4{nefmnG;@G+3z|0M<@O%=3~koqfb(Z#V+#)t z$HK;j7T>T*IVD837~b?I!$e)$b*|PX!NrA!^oq})KiAdJ=Xh**bjlE!x! zA1`p#M#Bo=rS=s`@(T%BaMI2lDrC@5Q}aKVKsHcQ{-*dPJ>4BRl+efg*|TS`t6-u! zR%<`PG-16OFNaG=_yiSb$W|sMjv#adB-C+Bt{djRYkcaIom03Fa~DwIeO+wL(uMW} zS^jrT$6kh<_7=k-*^*aK|w*RH#8XU-_ip6 zRp)={n37(vXW^)mrTXAar4-a0XpU9Sf1F5YZW_y3xe<{qE1JV3D8?nGg0`)$M}R4! z>N7`Sw(w6Gejz%zR9td`5yJvuw)UXp&~ z@nRV1_v<6V(dx>;3O=HmyY}7<#_~CS?5jo+bVOq}`F=Qz8h-9E0fDw26LiMoC-N-8 z;@G&jAa`+tpYnY}&qqfOZ|8%(Pv7pRRWct0o|~g0U#ESst9s)!CQp?Cq_b=n+Vj=3 z>vZ!#fDYQ&L+9l5bZU^L>PZ&ku#zEqoH=k545}m9%DDIMb8>P@pR$up^M>2ZD?D=^ z!H7QksA}ZpbLWP4j<&nghvTQw6Vtc7I0<{M+hqS-GQVfx`a8dA>zF!_+N-MC+Q8NI z)V52IP(6PqQo~ZM!eZpGwbg!g@UDnzq*jrmwWXz{iwl1}3s7C&?5{KO+fZIb$I%JM?T#!b$OlyZAo?8ig5hpK9I|YT(r#-BRV6)3Z%)`S zgOHYr=7h%7Li`+cxO7^9Dnrt}#mCYY0*ouWN141aEl5_=l6(NaYcT9 zes(r+V=!W;c#~IY_ zYNLL>Dg(%~fi8&qo0YAlwYTJCUURrOF6YNni%toc$$iWE`uea51;C6jWWj5A+zFbS zexbKKUY#6lrag(m5&>>Vl5(a*%q-7+57I1fkK7Jt0)g9;-q%xFy2(iTouwTJRSi=t zaya+=<)dY&DxPX+@C7gq_4jvsfBpJ3|F@ouOgpd$Os$AwhIP3vtmk)?yY(#K-I#C~ z8yR)PJf!F28?)fN<PGi zl9lg9$G0Hff0QVB(_6pwBki|u-(bv%nt%lXf^&u&lhwf00Wn;`#89IV#5qHE#x+`6 zTF@rKz`&?KyNlOjkE88YVYy87A)Wc)YXV?3o& zIHv{AHQNI;4<;BH8H?tS5vd^QS-nmoX;5g|D1Ceh^%wtfCYV z5%t2*kb;`JFD4eQP&87#KOsS$4Wf7HatXiJFFd#qc}ZP7WAFr!JhG8OfXN92_(*Z} z<%HBPX_VTzb%Q#!JH3uC%|I-6=O;>3oBh$&P7BB__UO`gZG)a85oem>k+$o>wD0l$ z+O4TC#l^c|M5;lJv_S%RncREVt`RjwcPzkAHN%a>r~g%@-H^a_qiIxoNf0F z85DE)r|{hD!+v-Tp>d1Pt*kxfUhYB&i^7i)Z1$yDk))>$O-v)-C( zNlqqPu<<-+pox%9>5-gO2fFdJXSP9YNKFvq*RnKQnRlQ6G=*xYzp2UU#l&f@V|!CM zu^&IiFjaxr;?jr_kuVF_A=Sy$U7Z59TJ8Co)ePgFywGm{+Z!o*s3?eFcwIh#Z1 zpd23=31XFNrBgLd+r}cz1@mpo+4!JYd^ACyi+t^B$ZUe+Rtqqf`m$e+7Wrd_hlL62 zEV%;#ZDvMa#E+J33xpyly&CqTI*GRYP!YgjQ=*IT3JciU0`-lS#qAcu0#Ku&<6z%E zLikKH$z>s4f!}g(V z+z}BG4?-n!hf0f!UFSodq!aMg^o)<}_xR^bo)v`JKDS2~-HTsC3&wng@p5uzMLQCL z9j{uIu>0>nZvP(Oi_;R*Qsdlx*+(unR3WnJrAopf|?B#T6K8HBr#GxP4ay2EN2{WUIeV9$Tchw{N*{X6=Np#Oe<6 zHLoyX(mdOy5Ew&jk%p7L^Zj~~-s?b$HMUi-*#ebW=HUBXzC2_il4j}zTEo4y)F2EF z!WZ&F+vtJ{K`||c(yJT8-2~TgvMKT$H}yp%<>W%dQ|{LLVGDm#bhBC;?Us1pd@!AO zHb;#__QSvqD9ux~XU;(5UGfAM;-?gZcS{Xwz58)YLDhde>ZiHY6hv}qFBbC^)X-V( z%z>EjaD5H}&?OQz!0} zZJ&`xTnZH}c+}-^J|yg%k97Hu0oj~a*x-65-puCCbqAugDu)^;qepW`0=QH!X|F!Q zy!K9*1&_$Zwt^J3PWP4F^RXvH9q(fjK2v$cWmp5GW>pJ@l*gaIzito>Z^s((p(Pm} zc5FtTaZ5GH>sUqN%dc zQk(47t+}I{B>_fcXo!4PR=Y=O3f}i6Pq#z@{8?i=>PyftN_-|8HT!g$6ySnLD zA0r|#EMZBp5?IW0TY`gfEV^Dy(xxqCy)Ure9g_}w)S{D*o(1O^xRK*qbtqV+EV?!& zZIcrM2@sZozWon!i5tFbkdVSCS=l*yhOA+Ks?-ayxOwK> z{A}}%i``{hh}yNWucEBntKm;hMh5yRoe2VC!^4t71AWURsq!RNy<6bJ6P_Goj>UNX z@VX(qm#`vNK$A^%h*YXx5r5Wd>;O>Y6_2s`YKCFlw5UTQ4}+p_@A;b=@aE}nl6hX^ zQM8Qez2}8#ZE3gMfr@ys5;q?_8bq5hPVv&(eq)Y5{@S~@L#w;Tr!#XLN%Fh9yTMG@ zk~1c^$I_5wapN?)Irqqdub^w zVfyh)Q!3&Y@c zedJ6!C)&cGJsAt^J|_=#q{GF*;XfKSuq&^~$f!zAuBtj|p-v>)^OJOM%|5sx6};|1 zfq8F7{!ZFcnhQtDlhEtTBPuG9L~xil1VR$a$~Df4le0G)utSdBXQJ>LcUp|64j~~4 z^K+*3%zP=?KQbcadHft3TSLUnCX6PjmP-7SuK9uMEH{&&Ab{f6TiRR6ycje}ert+} zNlBq~s$Q(Gw^wx(@qHj+G0R;GX_({8j0}ho91~PB2SC9Zd=42bLbh=InaIwE3FbC@)gLyEYalBkFL-D;n5DLpF!2;zU~Z?a zIbh|B-~AZI9YemN@F64-EA4B|uOx&>F0*4zV?3*vKw0?rvO7l&*vRjwi2JGxmfh)r zSS*r+XM>gfl)O6RhgIwJmao4<-$-fy&DVC9F7_(@u=9w~R3b;I!^ULkq>F7cClJO7 zN@TwtczG4{DpbUM3KPa{;8tw&z6CCu7iMe+)#S0&>Kz_`{DSi${p(r>K$j*FaQ=vy zywP=)=IlXtV zgf2uiKs2z+S^@1BuX>fSsJHeyR9t2%x6%`eB^jVv7xp>~jZ5Mg@(6)Ij zal(hDg~vHcH>Pw2Yo96(XebV}<+p#NaazE!cZ*@_`yvvP-ji0!~#vjj{wLxsYRx8`DkdUgpd zUYeL-BEQr7)E}n%_u>Lz ze&wy79v<8i`YcR9IEb1+@x4-$DYQwHzOzSh@I6(LoCpKd0!-FCgr9yj-yJM=7UG*I zveE@^0|`@0DE*S)2HP!b+cJ*>cwBi8v|a&wE{yR(rKlC8>*Ma-S1A~5B9gxK=l3dvbEb67!Pf_A-un!ynC8WT`?Dk@ z{I7uM=W%k9I%g;%sivmp;7|&6ixRX6V^HMoa^DOD-R+$nJ9WWo!{9?W*B^j={uF4UF9{{{d!zZY25*q--IG+k?c(>si>MfA@cT4r(aa*v7j@ z9?~P2YBth5Pf#~^f;9#z6UPmH5X6BcvY*;p;HWw9f+2@ESgoR=IyY-Ao&d*e25%o88fl~! zNs@7cysf~dJZ{m+nef=JAe}Pgi`_G4wJfRiJE&TnZThcoJk0%A_)Xc!Ddo);`jIL` z0+8po;_8?!LPEj#Wn@8MgE)wf9jOr%R8A!Y~$6&Cn3@ z!8y6z*MDetLG!rkV@p_{2nt%-<+F$8>(%?(1Y!^mor1;f6GB!P^;=n8$x>d0rE6N$ zzp-C?xDfmLIE_6Q^86hbgiExs;o$`qBWwhwYpbhowmY~Q(MJRlT|{spld-N^QS|xq z=dvyw#<@SmamgSs>Bt@9$6bftHTWY_!M}QsNNN z%1TN3gYKE1A1Hh7m|x4DcP`#v6e*QYpCRKw^0bzM^i*njp;eXk*S_f?nljq=NCtYm z_vBGcSLI{)lt<_>3rNR=Q>v3JjK#cstk#zZIg!U_cRrjsZX%nk|K?LQ4()HTjDEoC z)X4!w-h9=qt*vzsS_QRxbjvX4&;gZKkPT^UY6{)qD}c;t$d}>=Or^C2#k4!MU2+cC zA~skY^_F@bD6aig+E$R#07b^3)nZi!u1UvPn5vXHPp~JKE2cF<+U)IUhiy8i@1SxS zu9)6fy|Qeb(N4PpCP0S61xuTB$Ubktvb6Tk$@ay-i#e4;b(xz8{Cg|Q;XhN%RliL1@__co!x(GAIeWGZ&SViY0R4$ki;@@)S3aj5hZAb^!?fCSoqS8_lUdKP) zi;1}Vn2G%2kK1YYj!)|+*W8Noo}Rp7cUT|KELF)=$-QqbTXj09@u17dX$uOK@Xd1$ zCND(GGE1pZY7RUiDHfd0TBsAk!bM*et0y|npdA&yfG$hZ^}bCtg!-oHA+wGNO-`4h ze?#m(dQkNMix&o4dtBUw1YE3Th5tekSXxLy*X^5VD^Z)rd4;{PFM!o8dhcske%k^88o~%8s&{7eca5mg>)`M=c2Ze96lDhf zVYxLeGN>a;{SSYe_waSzEAY>(&Pz|N99vFI%uYn7#*0_)u;5HjO~t{%VbH0G>s(|# z7@LC5R?xO8F(Tp~E-nZK&e@bV9MoLQi5nV$DDhT1C+!8_cp{@MJOz0I4mJ?DG+Y#KaH~gx)--o3$Z+cH7}s{cJo@8-D=>C*LE+J?6GB zLiXMLDJ)_fFKG6pXWSj5h>N=W5M3s#{QOLh1Wh0s)H=Qq&*NP3O)7e!Qb!h0x~DjlT)rmZ}Y8Ivs zxIVCgXL3m|7yHm6ZuG&y0aVBW8%3V9M|T)U8WCRRk-Oq}`o_l@HWOy7ty6y_7(O$m z{+g)%FfC~Uyscn$!9faYFBgSzr7>qUnZ@m+fsmlpT6BH#t!UV=#alu5R~mXv5QOC%jx=sp)#*w;dD7P0{E73W zx{Hg8qGErTE$b$KZr`$vjSVCTU}rWpH5C&Rd;a`G*CHY3J((jDX+8fiH8MloiX-(K z5twT$yFVqkfj1SYM|2Gc8yT+bZ!X;JuhunA}g{OIT#p3~Cq zjpDLNPx*JcMeRoBZBC)LNOiAH3rsVi^B=d0>^eQ~2<(7GBK_hXk_(ZFP|fB~gHWN) z?JDui(;-knh9b_isIOe2;6zW)v`u-xnZ2T-;%m81DDF4JpuZFT1(ql6I`2(q%r>6GR!z*1e(hRpn_aRE#QSfo!dB8FPs@TG_9bi zwveV68dw#2zIbwC*Y%6wTDg?ycn2{7CR!gUO<2eA7-T036^g8>%120T%aAbECdu!G z^xjZex{BiQN zAPjuRtFQW!=8x#k2d_UbmWxSp%FbgjFII=FAFsjBAW(@1i6fTXs~1sY=SAX5845@& zc#3opB1tA@W>{^E+WtE|AITPPnr16X$y$jNkx@Tlx5%^a2X`M*EYOe(l0Vkgto1D5 z9dgFXruTgtSn>0N_D@WKjmZOMqAJU)tG4BuP&}e%V#>+Q1uyb__*;G`rktcPV%mJ} z*Y26CL5L<|WyTR??;Lo@5>LhiCNN8{VYS`WT)rH0UHb3c4Mi87l@QpHDD(^rsddWg zQomqdARb@HE}eSNW9el~2|8E~{@0N?Yq#Y-=~`-OO{_ywd)yl3!U-{L38w@x%PMJN zd+0%h>wefqBCv_<8dVJKq$)SGp=pDPnN{f+q&kJ5TZ}Q$eo|p(;0+CXUM;AxcV4Qb zmnB#er9Y)x%k<=;X1>Levv(brcHcA zw_)s{X22QSV%XZ&1`izqFd2rFIJpY>UAg|7a|Nx@`=&U$T$-Z$T}n@Y3u3|yGQ z%pZ!QmRv(WEtO&zR##Nyu&_4CU?>U~epDA$H^_2N;l~qsd7W_`;m^s*`q0m2dd&S# z9SRhy0OEj($OPG5_+?=s^C7Dav`Bak;@HZnOGGWjq1#()_l-(1Cl#Z#0sVIW8` z%QCQ~k>)oYK|l~@FO>aZ5}RE(*C}%8>;%DfZdC~h4?>&z#>UJ`$G{|;o0-9R1LNZ^ z5taeflcd8pS-j@v3<UR3 zI$Ou50GhZ7Vx zWkFB5=v}f#Q{dNN&zil7jEP)#nR$cs9Thb-G`%y1fGjojv6$F5#f+L7!O95`)zyZ0 z9o#oN0$ko@Xo_508%*SYZSw z%YAR;#Vq$b6tHX_q^RKf^74-A=ff8RuvoOr!v3+qgHTAi!LhVtVs5^=v;-xm$Jdc_ zY%h8lfH^Hv&jxct7s20UOGJH!`flnkPPm5Z+Pm+Q)oR+p#v)sHWx36?E3A?`a_nj*K=b2pm`?KzQ z`yitZxBHHI;V%a?xAfdX@_Rxm|2;wSZTnwrF2wxSEG&f&M_O~swH8-rkN9Qko#wsS zm&pEe`rBy?^b$FF<hhJJS3UmESN$9QT%7rxTlnvjgunhDTn>+HxRnL{=r1l1t|_S!@VOvG^Z3@ghBf6Uq4SX^Zw_J`$4ok!ik^U4z2DVBVE)T zaFDM~&}qTu=zd z`HpBlhlR}CnnyaI{TGv*9NyW<$D?z4Ns7iKgiyiV#!Ub{f%fST4={N6b6?JDTBS zCjnS*bYB(f$)o$LbS#yy_uhT)I3Hp}N}>JKQ>C`|OcH-H(~hB6$E2ANeMGf&m&w(f zm^i*EB)-fszr)huu{gnEdvru(Bv!>y#Os6h=w1i~HM5lk4t^mqw9N!tFmxv71_TBY zmOw^nACPAaI?Fw47vppRJ%ci6G6@ypA`ddp4FgrKnFD@}G-Z=DQB#lODrV-t22#We zV4nNOu7Zg}tB~x-akDHPTirc!5o8?>aLlxWkdI$JC7Yq1h2agYC!PRoTbMslNG#6( z)K3K7pRnl?I1ie{OTnfN01%At%fZo60GB*iP;tKa9%Td&4?_CqNDm9kGaL5fq^D3G z20u&TTfbQ`z*T5)_@VPRiMrBTl03AdP4)4|7qjPwbsT^N4_)eXF{87|Vb60)Fj5PF z8v!}dnKuw}3Oj-;+MSf*6($yF*|)m86vnEMIiO%e87G&nor~+44KP`_{3kpC0Ri6l z+ovoee*16yqq70jk@OT$;R%bmAIDqwb7ekg;ER}4MJ^tG)_jnv@v+6RT=OpK0n$5C zgb0hD?kZ}Trse24I{AI<%k`~m;z5c@b^;kaJ9~R*f-0Ms5X{w)|NNVxf?y5g6$#L9 z0Mr#OER(msZs}R~*6owmQu@r*P36l5c-$cdN8UMDF(a*c3<$5g$dQXYB8I6#ujxOu zAYB#eRhMX*x7p%vD$taiSN6zdgwGLmUWiUi;C?nfwo2gzh!*p-{$?M&Zv$qub;^|! za_kz*C=&l(5j|eccdVR>@u*HU3;Fvt|EW-i1u>D;Jc`vjBeh4Q{PL)J+#&N$+Ell? zCFv1ghj{e~f_)a9LJZU*MU5emBkYKVhSn4sB@-WW&`f>@px$`IY)l`e)5KHoOYmji z-uv%EB?!KOZ73@@BcabaNkCVmxEht&jaJZ{##4ZrjRp0_tH|$^?_f5k9Ulv403I_s zXpuWak2|uOBcHjZ6z=M~*GTo7F4$guUn=Y9Bqk;bfw3mJyDr(Tb zmefax{h`H!(OGVKDt|f5w)1Wqd?dHJv@>L< z`~H$8G4!XeIj=)xRsNr?m*supAa{tUkc=^s;62~Nu#@wvy|;6O8|J(Q;Qp^jiOD_A I5z+PdUmsOmF8}}l literal 0 HcmV?d00001 From 653994ff477a7cf6d200f5b489462da316dd6ac8 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:34:47 +0200 Subject: [PATCH 08/16] Add Ha release --- source/_components/alarm_control_panel.mqtt.markdown | 1 + source/_components/alarm_control_panel.nx584.markdown | 1 + source/_components/alarm_control_panel.verisure.markdown | 1 + source/_components/binary_sensor.octoprint.markdown | 1 + source/_components/locks.zwave.markdown | 1 + source/_components/octoprint.markdown | 1 + source/_components/sensor.octoprint.markdown | 1 + 7 files changed, 7 insertions(+) diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index 36c9230b87e..95967a021ed 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: mqtt.png ha_category: Alarm +ha_release: 0.7.4 --- The `mqtt` alarm panel platform enables the possibility to control MQTT capable alarm panels. The Alarm icon will change state after receiving a new state from `state_topic`. If these messages are published with *RETAIN* flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be `unknown`. diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/alarm_control_panel.nx584.markdown index 12a07029947..64bb0963997 100644 --- a/source/_components/alarm_control_panel.nx584.markdown +++ b/source/_components/alarm_control_panel.nx584.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: networx.png ha_category: Alarm +ha_release: 0.13 --- The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work. diff --git a/source/_components/alarm_control_panel.verisure.markdown b/source/_components/alarm_control_panel.verisure.markdown index edf0248b5d2..c806c0cf326 100644 --- a/source/_components/alarm_control_panel.verisure.markdown +++ b/source/_components/alarm_control_panel.verisure.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: verisure.png ha_category: Alarm +ha_release: 0.7.3 --- diff --git a/source/_components/binary_sensor.octoprint.markdown b/source/_components/binary_sensor.octoprint.markdown index d8ce6a63132..7a05254c5e4 100644 --- a/source/_components/binary_sensor.octoprint.markdown +++ b/source/_components/binary_sensor.octoprint.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: octoprint.png ha_category: Binary Sensor +ha_release: 0.19 --- diff --git a/source/_components/locks.zwave.markdown b/source/_components/locks.zwave.markdown index 05f7c243af1..f5a1802fb6e 100644 --- a/source/_components/locks.zwave.markdown +++ b/source/_components/locks.zwave.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: z-wave.png ha_category: Locks +ha_release: 0.19 --- To get your Z-Wave locks working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 063ed182f6a..67b3846901b 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -10,6 +10,7 @@ footer: true logo: octoprint.png ha_category: Hub featured: true +ha_release: 0.19 --- [OctoPrint](http://octoprint.org/) is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors, you will have to setup sensors and binary sensors separately. diff --git a/source/_components/sensor.octoprint.markdown b/source/_components/sensor.octoprint.markdown index eb811f8c696..58aaacb01b8 100644 --- a/source/_components/sensor.octoprint.markdown +++ b/source/_components/sensor.octoprint.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: octoprint.png ha_category: Sensor +ha_release: 0.19 --- From 7a9c5396ea509673c00f54642a596d76512c3809 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 09:49:58 +0200 Subject: [PATCH 09/16] Add Pioneer docs --- .../_components/media_player.pioneer.markdown | 32 ++++++++++++++++++ source/images/supported_brands/pioneer.png | Bin 0 -> 22446 bytes 2 files changed, 32 insertions(+) create mode 100644 source/_components/media_player.pioneer.markdown create mode 100644 source/images/supported_brands/pioneer.png diff --git a/source/_components/media_player.pioneer.markdown b/source/_components/media_player.pioneer.markdown new file mode 100644 index 00000000000..0d05f454731 --- /dev/null +++ b/source/_components/media_player.pioneer.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Pioneer Network Receivers" +description: "Instructions on how to integrate a Pioneer Network Receivers into Home Assistant." +date: 2016-05-07 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pioneer.png +ha_category: Media Player +featured: false +ha_release: 0.19 +--- + +The `pioneer` platform allows you to control Pioneer Network Receivers. + +To add a Pioneer receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: pioneer + host: 192.168.0.10 + name: Living receiver +``` + +Configuration variables: + +- **host** *Required*: The IP of the Pioneer device, eg. `192.168.0.10` +- **name** *Optional*: The name you would like to give to the receiver. + diff --git a/source/images/supported_brands/pioneer.png b/source/images/supported_brands/pioneer.png new file mode 100644 index 0000000000000000000000000000000000000000..50574207a828ce20b75abbc1ed275115645bb6a1 GIT binary patch literal 22446 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 JPDHLkV1jwV{A2(C literal 0 HcmV?d00001 From b9e2eda126a85d3b461fd253b99bd8d7bee11311 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 10:52:44 +0200 Subject: [PATCH 10/16] Add Acer Projector switch docs --- .../switch.acer_projector.markdown | 37 ++++++++++++++++++ source/images/supported_brands/acer.png | Bin 0 -> 42032 bytes 2 files changed, 37 insertions(+) create mode 100644 source/_components/switch.acer_projector.markdown create mode 100644 source/images/supported_brands/acer.png diff --git a/source/_components/switch.acer_projector.markdown b/source/_components/switch.acer_projector.markdown new file mode 100644 index 00000000000..fac3494da63 --- /dev/null +++ b/source/_components/switch.acer_projector.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Acer Projector Switch" +description: "Instructions how to integrate Acer Projector switches into Home Assistant." +date: 2016-05-07 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: acer.png +ha_category: Switch +ha_iot_class: "Local Polling" +ha_release: 0.19 +--- + + +The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](http://www.acer.com). + +To use your Acer Projector in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: acer_projector + filename: /dev/ttyUSB0 + name: Projector + timeout: 1 + write_timeout: 1 +``` + +Configuration variables: + +- **filename** (*Required*): The pipe where the projector is connected to +- **name** (*Optional*): The name to use when displaying this switch. +- **timeout** (*Optional*): Timeout for the connection in seconds. +- **write_timeout** (*Optional*): Write timeout in seconds. + diff --git a/source/images/supported_brands/acer.png b/source/images/supported_brands/acer.png new file mode 100644 index 0000000000000000000000000000000000000000..9178908c129a47171e3ee4594744d1bd9784b75e GIT binary patch literal 42032 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
  • $#b>Y_Cf%r9^aB|W#%%=Az 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 literal 0 HcmV?d00001 From 30d1190e676c1aad64edb2bba5f3087d4e1c0d56 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 11:08:47 +0200 Subject: [PATCH 11/16] Add Raspberry Pi RF docs --- source/_components/switch.rpi_rf.markdown | 43 +++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 source/_components/switch.rpi_rf.markdown diff --git a/source/_components/switch.rpi_rf.markdown b/source/_components/switch.rpi_rf.markdown new file mode 100644 index 00000000000..0338a091cbc --- /dev/null +++ b/source/_components/switch.rpi_rf.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Raspberry PI GPIO Switch" +description: "Instructions how to integrate the GPIO of a Raspberry PI into Home Assistant as a switch." +date: 2016-05-07 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Switch +ha_release: 0.19 +--- + + +The `rpi_rf` switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a [Raspberry Pi](https://www.raspberrypi.org/). + +To use your Raspberry Pi with a 433MHz adaptor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: rpi_rf + gpio: 17 + switches: + bedroom_light: + code_on: 1234567 + code_off: 1234568 + ambilight: + pulselength: 200 + code_on: 987654 + code_off: 133742 +``` + +Configuration variables: + +- **gpio** array (*Required*): Array of used ports. +- **switches:** (*Required*): Array of switches. + - **[name]** (*Requireld*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). + - **code_on** (*Requireld*): Code to switch the device on, eg. `987654`. + - **code_off** (*Requireld*): Code to switch the device off, eg. `133742`. + - **pulselength** (*Optional*): Length of the pulse + From 67b88dc0ccf0d0627255ba70def35612cb40da2d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 15:43:51 +0200 Subject: [PATCH 12/16] Add initial HVAC docs --- source/_components/hvac.markdown | 22 ++++++++++++++++++++++ source/_components/hvac.zwave.markdown | 15 +++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 source/_components/hvac.markdown create mode 100644 source/_components/hvac.zwave.markdown diff --git a/source/_components/hvac.markdown b/source/_components/hvac.markdown new file mode 100644 index 00000000000..51092629ab5 --- /dev/null +++ b/source/_components/hvac.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "HVAC" +description: "Instructions on how to integrate HVAC devices status with Home Assistant." +date: 2016-05-07 09:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: HVAC +ha_release: 0.19 +--- + +The `hvac` component is built for the controlling and monitoring of HVAC (heating, ventilating, and air conditioning) devices. + +To enable this component, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +hvac: +``` + diff --git a/source/_components/hvac.zwave.markdown b/source/_components/hvac.zwave.markdown new file mode 100644 index 00000000000..8cb94120226 --- /dev/null +++ b/source/_components/hvac.zwave.markdown @@ -0,0 +1,15 @@ +--- +layout: page +title: "Z-Wave HVAC" +description: "Instructions on how to integrate HVAC Z-Wave devices status with Home Assistant." +date: 2016-05-07 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: z-wave.png +ha_category: HVAC +ha_release: 0.19 +--- + +To get your Z-Wave `hvac` devices working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/) and the (HVAC component](/components/hvac/). From 42a071a7fe7ab246686d1709cd2e426d34549b98 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 15:47:31 +0200 Subject: [PATCH 13/16] Fix link --- source/_components/hvac.zwave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/hvac.zwave.markdown b/source/_components/hvac.zwave.markdown index 8cb94120226..373256a6cc0 100644 --- a/source/_components/hvac.zwave.markdown +++ b/source/_components/hvac.zwave.markdown @@ -12,4 +12,4 @@ ha_category: HVAC ha_release: 0.19 --- -To get your Z-Wave `hvac` devices working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/) and the (HVAC component](/components/hvac/). +To get your Z-Wave `hvac` devices working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/) and the [HVAC component](/components/hvac/). From ee280f9d55bb702cfdcee1584f8be6c49430100b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 May 2016 15:47:55 +0200 Subject: [PATCH 14/16] Remove category --- source/_components/hvac.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/hvac.markdown b/source/_components/hvac.markdown index 51092629ab5..48bda1c43f1 100644 --- a/source/_components/hvac.markdown +++ b/source/_components/hvac.markdown @@ -7,7 +7,6 @@ sidebar: true comments: false sharing: true footer: true -ha_category: HVAC ha_release: 0.19 --- From 53472d530ebb2c845c84866c18574de107e452b0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 May 2016 12:40:16 -0700 Subject: [PATCH 15/16] Add 0.19 blog post --- source/_components/mqtt.markdown | 2 + source/_components/sensor.fitbit.markdown | 19 +++ .../sensor.google_travel_time.markdown | 28 ++++ ...5-07-empowering-scripts-and-alexa.markdown | 158 ++++++++++++++++++ .../platform_options.markdown} | 18 +- source/_topics/templating.markdown | 1 + .../scripts-conditions.markdown | 30 ++++ 7 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 source/_components/sensor.fitbit.markdown create mode 100644 source/_components/sensor.google_travel_time.markdown create mode 100644 source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown rename source/{_cookbook/customize_polling_interval.markdown => _topics/platform_options.markdown} (61%) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index 966b96ca453..df2adc25741 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -39,6 +39,8 @@ Configuration variables: - **username** (*Optional*): The username to use with your MQTT broker. - **password** (*Optional*): The corresponding password for the username to use with your MQTT broker. - **certificate** (*Optional*): Certificate to use to encrypt communication with the broker. +- **client_key** (*Optional*): Client key (example: `/home/user/owntracks/cookie.key`) +- **client_cert** (*Optional*): Client certificate (example: `/home/user/owntracks/cookie.crt`) - **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. ## {% linkable_title Picking a broker %} diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/sensor.fitbit.markdown new file mode 100644 index 00000000000..30fdba8603b --- /dev/null +++ b/source/_components/sensor.fitbit.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Fitbit" +description: "Instructions how to integrate Fitbit devices within Home Assistant." +date: 2015-07-11 0:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: 0.19 +--- + +```yaml +sensor: + platform: fitbit +``` diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown new file mode 100644 index 00000000000..be06fb1d94b --- /dev/null +++ b/source/_components/sensor.google_travel_time.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Google Maps Travel Time" +description: "Instructions on how to add Google Maps travel time to Home Assistant." +date: 2016-03-28 10:19 +sidebar: true +comments: false +sharing: true +footer: true +logo: +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: 0.19 +--- + +Sensor to provide travel time from Google maps api. + +Get an api key [here](https://github.com/googlemaps/google-maps-services-python#api-keys). + +```yaml +# Example entry for configuration.yaml +sensor: + platform: google_travel_time + api_key: XXXX_XXXXX_XXXXX + origin: Trondheim, Norway + destination: Paris, France + travel_mode: bicycling # can be ["driving", "walking", "bicycling", "transit"] +``` diff --git a/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown b/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown new file mode 100644 index 00000000000..cd9ba085571 --- /dev/null +++ b/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown @@ -0,0 +1,158 @@ +--- +layout: post +title: "0.19: Empowering scripts and Alexa" +description: "The new release of Home Assistant includes a lot of upgrades to how we handle scripts and make them available in a wide range of new components including automation and alexa." +date: 2016-05-07 11:06:00 -0700 +date_formatted: "May 7, 2016" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Talks +og_image: /images/blog/2016-05-openiot/preview-video.png +--- + +This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic. + +**Scripts** are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including `from_state` !). Passing data to script entities is available by passing the data to the script services. + +```yaml +automation: + trigger: + platform: mqtt + topic: some/notify/topic + action: + service: notify.notify + data_template: + message: {{ trigger.payload }} + +automation 2: + trigger: + platform: state + entity_id: light.hue + action: + service: notify.notify + data_template: + message: {{ trigger.to_state.name }} is now {{ trigger.to_state.state }} +``` + +**Entity Namespaces** allow you to influence the entity ids for a specific platform. For example you can turn `light.living_room` into `light.holiday_home_living_room` with the following config: + +```yaml +light: + platform: hue + entity_namespace: holiday_home +``` + + + + - Automation: allow [script syntax] for action ([@balloob]) + - Automation: expose [`trigger` variable][trigger-variable] to script templates ([@balloob]) + - Script: allow passing variables for script templates in the [script service calls] ([@balloob]) + - Alexa/Amazon Echo: allow [script syntax] for action ([@balloob]) + - Alexa/Amazon Echo: [expose intent variables] to script templates ([@balloob]) + - Script syntax: [conditions now supported] to interrupt execution ([@balloob]) + - Automation: use [new condition syntax] ([@balloob]) + - Script syntax: two new conditions [`and`][con-and] and [`or`][con-or] to combine conditions ([@balloob]) + - Any platform: Allow setting [entity namespace] to prefix entity_ids. ([@balloob]) + - Switch: [Raspberry Pi generic 433 Mhz GPIO adapters][rpi-rf] now supported ([@milaq]) + - Z-Wave: use more sane defaults ([@danieljkemp]) + - Media Player: [Snapcast] now supports picking a source ([@happyleavesaoc]) + - MySensors: major cleanup ([@MartinHjelmare]) + - Binary Sensor: [Command line sensor] now supports classes ([@fabaff]) + - MQTT: [allow client key authentication] ([@timharton]) + - Sensor: [Forecast.io] now supports minutely, hourly and daily summaries ([@aceat64]) + - Media Player: [Pioneer AVR] now supported ([@kylehendricks]) + - Switch: [Acer Projectors] now supported ([@deisi]) + - New [HVAC component] added with Z-Wave support ([@turbokongen]) + - Support added for [OctoPrint] ([@w1ll1am23]) + - Configuration.yaml can now refer to environment variables using `!envvar` ([@bah2830]) + - Lock: [Z-Wave][lock.zwave] now supported ([@devdelay]) + - New [Dweet component] to export data ([@fabaff]) + - Media Player now supports stop command + initial kodi support ([@hmronline]) + - Zigbee: push updates now supported ([@flyte]) + - Wink devices with battery level will now show these ([@w1ll1am23]) + - Templates: new [`as_timestamp`] method now available ([@srcLurker]) + - API: Add [`/api/discovery_info`] with basic instance info ([@robbiet480]) + - Sensor: [Google Maps travel time] added ([@Danielhiversen]) + - HTTP: Allow adding [CORS headers] ([@robbiet480]) + - Sensor: Fitbit support added (@robbiet480) + - Bug fixes and tweaks by [@turbokongen], [@danieljkemp], [@Danielhiversen], [@TheRealLink], [@persandstrom], [@sander76], [@fabaff], [@ishults], [@Bart274], [@robbiet480], [@Cinntax], [@blackdog70], [@gwendalg], [@JshWright], [@kylehendricks], [@bradsk88], [@shaftoe], [@molobrakos], [@bah2830], [@nkgilley] + +[script syntax]: /getting-started/scripts/ +[trigger-variable]: /getting-started/automation-templating/#available-trigger-data +[script service calls]: /components/script/#passing-parameters-in-service-calls +[expose intent variables]: /components/alexa/#configuring-home-assistant +[conditions now supported]: /getting-started/scripts-conditions/ +[new condition syntax]: /getting-started/scripts-conditions/ +[con-and]: /getting-started/scripts-conditions/#and-condition +[con-or]: /getting-started/scripts-conditions/#or-condition +[entity namespace]: /topics/platform_options/#entity-namespace +[rpi-rf]: /components/switch.rpi_rf/ +[Forecast.io]: /components/sensor.forecast/ +[Snapcast]: /components/media_player.snapcast/ +[Command line sensor]: /components/sensor.command_line/ +[allow client key authentication]: /components/mqtt/ +[Pioneer AVR]: /components/media_player.pioneer/ +[Acer Projectors]: /components/switch.acer_projector/ +[HVAC component]: /components/hvac/ +[OctoPrint]: /components/octoprint/ +[Z-Wave]: /components/zwave/ +[lock]: /components/lock/ +[lock.zwave]: /components/lock.zwave/ +[Dweet component]: /components/dweet/ +[`as_timestamp`]: /topics/templating/#home-assistant-template-extensions +[Google Maps travel time]: /components/sensor.google_travel_time/ +[CORS headers]: /components/http/ +[@balloob]: https://github.com/balloob/ +[@milaq]: https://github.com/milaq/ +[@danieljkemp]: https://github.com/danieljkemp/ +[@happyleavesaoc]: https://github.com/happyleavesaoc/ +[@MartinHjelmare]: https://github.com/MartinHjelmare/ +[@fabaff]: https://github.com/fabaff/ +[@timharton]: https://github.com/timharton/ +[@aceat64]: https://github.com/aceat64/ +[@kylehendricks]: https://github.com/kylehendricks/ +[@deisi]: https://github.com/deisi/ +[@turbokongen]: https://github.com/turbokongen/ +[@w1ll1am23]: https://github.com/w1ll1am23/ +[@bah2830]: https://github.com/bah2830/ +[@devdelay]: https://github.com/devdelay/ +[@hmronline]: https://github.com/hmronline/ +[@flyte]: https://github.com/flyte/ +[@srcLurker]: https://github.com/srcLurker/ +[@robbiet480]: https://github.com/robbiet480/ +[@Danielhiversen]: https://github.com/Danielhiversen/ +[@TheRealLink]: https://github.com/TheRealLink/ +[@persandstrom]: https://github.com/persandstrom/ +[@sander76]: https://github.com/sander76/ +[@ishults]: https://github.com/ishults/ +[@Bart274]: https://github.com/Bart274/ +[@Cinntax]: https://github.com/Cinntax/ +[@blackdog70]: https://github.com/blackdog70/ +[@gwendalg]: https://github.com/gwendalg/ +[@JshWright]: https://github.com/JshWright/ +[@bradsk88]: https://github.com/bradsk88/ +[@shaftoe]: https://github.com/shaftoe/ +[@molobrakos]: https://github.com/molobrakos/ +[@nkgilley]: https://github.com/nkgilley/ + +### Deprecations + - Conditions in automations should now specify which condition to use with `condition:` instead of `platform:`. For example `condition: state`. + - RFXtrx has a new config format. + +Old RFXtrx config format: + +```yaml + devices: + 123efab1: + name: My DI.0 light device + packetid: 1b2200000890efab1213f60 +``` + +New RFXtrx config format: + +```yaml + devices: + 1b2200000890efab1213f60: + name: My DI.0 light device +``` diff --git a/source/_cookbook/customize_polling_interval.markdown b/source/_topics/platform_options.markdown similarity index 61% rename from source/_cookbook/customize_polling_interval.markdown rename to source/_topics/platform_options.markdown index ef73095c114..eb8f1300c22 100644 --- a/source/_cookbook/customize_polling_interval.markdown +++ b/source/_topics/platform_options.markdown @@ -1,15 +1,29 @@ --- layout: page -title: "Customize polling interval for any component" +title: "Entity component platform options" description: "Shows how to customize polling interval for any component via configuration.yaml." date: 2016-02-12 23:17 -0800 sidebar: true comments: false sharing: true footer: true -ha_category: Customize Defaults --- +Any component that is based on the entity component allows various extra options to be set per platform. + +### {% linkable_title Entity namespace %} + +By setting an entity namespace, all entities will be prefixed with that namespace. That way `light.bathroom` can become `light.holiday_house_bathroom`. + +```yaml +# Example configuration.yaml entry +light: + platform: hue + entity_namespace: holiday_house +``` + +### {% linkable_title Scan Interval %} + Platforms that require polling will be polled in an interval specified by the main component. For example a light will check every 30 seconds for a changed state. It is possible to overwrite this scan interval for any platform that is being polled by specifying a `scan_interval` config key. In the example below we setup the Philips Hue lights but tell Home Assistant to poll the devices every 10 seconds instead of the default 30 seconds. ```yaml diff --git a/source/_topics/templating.markdown b/source/_topics/templating.markdown index 5bc4c9ea59b..5211753d2a4 100644 --- a/source/_topics/templating.markdown +++ b/source/_topics/templating.markdown @@ -69,6 +69,7 @@ Home Assistant adds extensions to allow templates to access all of the current s - Filter `round(x)` will convert the input to a number and round it to `x` decimals. - `now` will be rendered as current time in your time zone. - `utcnow` will be rendered as UTC time. + - `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. diff --git a/source/getting-started/scripts-conditions.markdown b/source/getting-started/scripts-conditions.markdown index f99b8816726..3ee0d281bd2 100644 --- a/source/getting-started/scripts-conditions.markdown +++ b/source/getting-started/scripts-conditions.markdown @@ -11,6 +11,21 @@ footer: true Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off. +#### {% linkable_title AND condition %} + +Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid. + +```yaml +condition: and +conditions: + - condition: state + entity_id: 'device_tracker.paulus' + state: 'home' + - condition: numeric_state + entity_id: 'sensor.temperature' + below: '20' +``` + #### {% linkable_title Numeric state condition %} This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches all of the above or below thresholds. @@ -28,6 +43,21 @@ below: 25 value_template: {{ float(state.state) + 2 }} ``` +#### {% linkable_title OR condition %} + +Test multiple conditions in 1 condition statement. Passes if any embedded conditions is valid. + +```yaml +condition: or +conditions: + - condition: state + entity_id: 'device_tracker.paulus' + state: 'home' + - condition: numeric_state + entity_id: 'sensor.temperature' + below: '20' +``` + #### {% linkable_title State condition %} Tests if an entity is a specified state. From cbdc2dd72c0f216fb9b86de881ab82381312186e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 May 2016 12:41:07 -0700 Subject: [PATCH 16/16] Add fitbit link --- source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown b/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown index cd9ba085571..0b8fd2e2b16 100644 --- a/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown +++ b/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown @@ -75,7 +75,7 @@ light: - API: Add [`/api/discovery_info`] with basic instance info ([@robbiet480]) - Sensor: [Google Maps travel time] added ([@Danielhiversen]) - HTTP: Allow adding [CORS headers] ([@robbiet480]) - - Sensor: Fitbit support added (@robbiet480) + - Sensor: [Fitbit] support added ([@robbiet480]) - Bug fixes and tweaks by [@turbokongen], [@danieljkemp], [@Danielhiversen], [@TheRealLink], [@persandstrom], [@sander76], [@fabaff], [@ishults], [@Bart274], [@robbiet480], [@Cinntax], [@blackdog70], [@gwendalg], [@JshWright], [@kylehendricks], [@bradsk88], [@shaftoe], [@molobrakos], [@bah2830], [@nkgilley] [script syntax]: /getting-started/scripts/ @@ -103,6 +103,7 @@ light: [`as_timestamp`]: /topics/templating/#home-assistant-template-extensions [Google Maps travel time]: /components/sensor.google_travel_time/ [CORS headers]: /components/http/ +[Fitbit]: /components/sensor.fitbit/ [@balloob]: https://github.com/balloob/ [@milaq]: https://github.com/milaq/ [@danieljkemp]: https://github.com/danieljkemp/
  • U9Uks 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