From 0907816187ca563e45b76d7217bad7f4a8f91a8a Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Sun, 28 Aug 2016 09:07:37 -0400 Subject: [PATCH 01/58] Add SleepIQ documentation --- .../binary_sensor.sleepiq.markdown | 14 ++++++++ source/_components/sensor.sleepiq.markdown | 14 ++++++++ source/_components/sleepiq.markdown | 31 ++++++++++++++++++ source/images/supported_brands/sleepiq.png | Bin 0 -> 10096 bytes 4 files changed, 59 insertions(+) create mode 100644 source/_components/binary_sensor.sleepiq.markdown create mode 100644 source/_components/sensor.sleepiq.markdown create mode 100644 source/_components/sleepiq.markdown create mode 100644 source/images/supported_brands/sleepiq.png diff --git a/source/_components/binary_sensor.sleepiq.markdown b/source/_components/binary_sensor.sleepiq.markdown new file mode 100644 index 00000000000..4ace517c003 --- /dev/null +++ b/source/_components/binary_sensor.sleepiq.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "SleepIQ Binary Sensor" +description: "Instructions for how to integrate SleepIQ sensors within Home Assistant." +date: 2016-08-28 8:56 +sidebar: true +comments: false +sharing: true +footer: true +logo: sleepiq +ha_category: Binary Sensor +--- + +To get your SleepIQ binary sensors working with Home Assistant, follow the instructions for the general [SleepIQ component](/components/sleepiq/). diff --git a/source/_components/sensor.sleepiq.markdown b/source/_components/sensor.sleepiq.markdown new file mode 100644 index 00000000000..943154b0efd --- /dev/null +++ b/source/_components/sensor.sleepiq.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "SleepIQ Sensor" +description: "Instructions for how to integrate SleepIQ sensors within Home Assistant." +date: 2016-08-28 8:56 +sidebar: true +comments: false +sharing: true +footer: true +logo: sleepiq +ha_category: Sensor +--- + +To get your SleepIQ sensors working with Home Assistant, follow the instructions for the general [SleepIQ component](/components/sleepiq/). diff --git a/source/_components/sleepiq.markdown b/source/_components/sleepiq.markdown new file mode 100644 index 00000000000..886ce824237 --- /dev/null +++ b/source/_components/sleepiq.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "SleepIQ" +description: "Instructions for how to integrate SleepIQ sensors within Home Assistant." +date: 2016-08-28 8:56 +sidebar: true +comments: false +sharing: true +footer: true +logo: sleepiq +ha_category: Hub +featured: true +--- + +The SleepIQ platfor lets you view sensor data from [SleepIQ by SleepNumber](http://www.sleepnumber.com/sn/en/sleepiq-sleep-tracker). +In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed. + +You will need an account on [SleepIQ](https://sleepiq.sleepnumber.com/) to use this component. + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +sleepiq: + username: you@example.com + password: omgsecure +``` + +Configuration variables: + +- **username** (*Required*): Your SleepIQ username (usually an email address) +- **password** (*Required*): Your SleepIQ password diff --git a/source/images/supported_brands/sleepiq.png b/source/images/supported_brands/sleepiq.png new file mode 100644 index 0000000000000000000000000000000000000000..4c822ab5eca971243bff860fa20998d83cf1b3f8 GIT binary patch literal 10096 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 Date: Sun, 11 Sep 2016 10:11:47 +0200 Subject: [PATCH 02/58] Update configuration --- source/_components/climate.radiotherm.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/climate.radiotherm.markdown b/source/_components/climate.radiotherm.markdown index 01d806fa9e6..dc9e152e191 100644 --- a/source/_components/climate.radiotherm.markdown +++ b/source/_components/climate.radiotherm.markdown @@ -15,6 +15,7 @@ ha_category: Climate The `radiotherm` climate platform let you control a thermostat from [Radio Thermostat](http://www.radiothermostat.com/). The underlaying library supports: + - CT50 V1.09 - CT50 V1.88 - CT50 V1.94 (also known as Filtrete 3M50) @@ -33,7 +34,7 @@ climate: Configuration variables: -- **host** (*Required*): List of your Radiotherm thermostats +- **host** (*Optional*): List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected. - **hold_temp** (*Required*): Boolean to control if Home Assistant temperature adjustments hold (`True`) or are temporary (`False`). Temperature settings from Home Assistant will be sent to thermostat and then hold at that temperature. Set to `False` if you set a thermostat schedule on the thermostat itself and just want Home Assistant to send temporary temperature changes. From 09a8b6d30e590717ba1c2419ad3c0f80e8f1f073 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 11 Sep 2016 10:31:39 +0200 Subject: [PATCH 03/58] Add default --- source/_components/climate.radiotherm.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.radiotherm.markdown b/source/_components/climate.radiotherm.markdown index dc9e152e191..c9cd07e0bd4 100644 --- a/source/_components/climate.radiotherm.markdown +++ b/source/_components/climate.radiotherm.markdown @@ -35,7 +35,7 @@ climate: Configuration variables: - **host** (*Optional*): List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected. -- **hold_temp** (*Required*): Boolean to control if Home Assistant temperature adjustments hold (`True`) or are temporary (`False`). +- **hold_temp** (*Optional*): Boolean to control if Home Assistant temperature adjustments hold (`True`) or are temporary (`False`). Defaults to `False`. Temperature settings from Home Assistant will be sent to thermostat and then hold at that temperature. Set to `False` if you set a thermostat schedule on the thermostat itself and just want Home Assistant to send temporary temperature changes. From 2f71eb64d6cd129182ef01377f5d16bcccaea3d0 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Mon, 12 Sep 2016 00:50:42 -0700 Subject: [PATCH 04/58] Updates for Slack Notification changes (#923) * Updates for Slack Notification changes * Updates for Slack Notification changes --- source/_components/notify.slack.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index 0f084cf1be2..ca7861883cf 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -30,6 +30,8 @@ notify: platform: slack api_key: ABCDEFGHJKLMNOPQRSTUVXYZ default_channel: '#general' + icon: ':robot_face:' + username: 'Home-Assistant' ``` Configuration variables: @@ -37,6 +39,8 @@ Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - **api_key** (*Required*): The slack API token to use for sending slack messages. - **default_channel** (*Required*): The default channel to post to if no channel is explicitly specified when sending the notification message. +- **username** (*Optional*): Setting username will allow homeassistant to post to slack using the username specified. By default not setting this will post to slack using the user account or botname that you generated the api_key as. +- **icon** (*Optional*): Use one of the slack emoji's as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). To use notifications, please see the [getting started with automation page](/getting-started/automation/). From 9e0512dc0751781f8e23d2cc7c0372981254298f Mon Sep 17 00:00:00 2001 From: Teagan Glenn Date: Mon, 12 Sep 2016 23:04:12 -0600 Subject: [PATCH 05/58] Make ISY Amaze Balls! (#893) * ISY doc updates * How to set sensor class --- .../_components/binary_sensor.isy994.markdown | 17 ++++ source/_components/cover.isy994.markdown | 17 ++++ source/_components/fan.isy994.markdown | 17 ++++ source/_components/isy994.markdown | 95 ++++++++++++------ source/_components/light.isy994.markdown | 17 ++++ source/_components/lock.isy994.markdown | 17 ++++ source/_components/sensor.isy994.markdown | 17 ++++ source/_components/switch.isy994.markdown | 17 ++++ .../customizing-devices.markdown | 20 +++- source/images/isy994/isy994_CoverExample.png | Bin 0 -> 17584 bytes 10 files changed, 202 insertions(+), 32 deletions(-) create mode 100644 source/_components/binary_sensor.isy994.markdown create mode 100644 source/_components/cover.isy994.markdown create mode 100644 source/_components/fan.isy994.markdown create mode 100644 source/_components/light.isy994.markdown create mode 100644 source/_components/lock.isy994.markdown create mode 100644 source/_components/sensor.isy994.markdown create mode 100644 source/_components/switch.isy994.markdown create mode 100644 source/images/isy994/isy994_CoverExample.png diff --git a/source/_components/binary_sensor.isy994.markdown b/source/_components/binary_sensor.isy994.markdown new file mode 100644 index 00000000000..1e5eaf55a73 --- /dev/null +++ b/source/_components/binary_sensor.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Binary Sensor" +description: "Instructions how to integrate ISY994 binary sensors into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Binary Sensor +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) binary sensors from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/cover.isy994.markdown b/source/_components/cover.isy994.markdown new file mode 100644 index 00000000000..fc9c1142209 --- /dev/null +++ b/source/_components/cover.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Cover" +description: "Instructions how to integrate ISY994 covers into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Cover +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) cover from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/fan.isy994.markdown b/source/_components/fan.isy994.markdown new file mode 100644 index 00000000000..6c1e7f1e07f --- /dev/null +++ b/source/_components/fan.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Fan" +description: "Instructions how to integrate ISY994 fans into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Fan +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) fan from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index d3c28ba9295..7c655454c5c 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -9,15 +9,15 @@ sharing: true footer: true logo: universal_devices.png ha_category: Hub -ha_release: pre 0.7 +ha_release: 0.28 --- -The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. The controller is also capable of controlling Z-Wave devices but that functionality has not yet been confirmed with Home Assistant. +The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. The ISY994 controller is manufactured by [Universal Devices](https://www.universal-devices.com/residential/isy994i-series/). ### {% linkable_title Basic Configuration %} -Home Assistant is capable of communicating with any switch, sensor, and light that is configured on the controller. Using the programs on the controller, custom switches and sensors can also be created. +Home Assistant is capable of communicating with any binary sensor, cover, fan, light, lock, sensor and switch that is configured on the controller. Using the programs on the controller, custom binary sensors, cover, fan, lock, and switches can also be created. To integrate your ISY994 controller with Home Assistant, add the following section to your `configuration.yaml` file: @@ -37,52 +37,85 @@ Configuration variables: - **username** (*Required*): The username that used to access the ISY interface. - **password** (*Required*): The password that used to access the ISY interface. -- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'Sensor'. If this string is found in the device name, Home Assistant will assume it is as a sensor. +- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). - **hidden_string** (*Optional*): The HIDDEN_STRING is a string that is used to identify which devices are to be hidden on Home Assistant's front page. This string will be stripped from the device's name before being used. By default, this value is '{HIDE ME}'. - **tls** (*Optional*): This entry should refelct the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. -Once the ISY controller is configured, it will automatically import any lights, switches, and sensors it can locate. +Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate. -### {% linkable_title Creating Custom Switches %} +### {% linkable_title Creating Custom Devices %} -Using the Programs tab in the controller's Administrative Console, custom switches can be created that will appear natively inside of Home Assistant. Home Assistant will scan two different directories for switch configurations on the controller. These directories must exist at the root level. The two directories used to make switches are *HA.doors* and *HA.switches*. Currently, the two receive identical treatment in Home Assistant. +Using the Programs tab in the controller's Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains: -A switch is created by creating a directory under either of these root dirctories with the name you would like to call the switch. Two programs are then required in this directory: *status* and *actions*. The image below shows a sample configuration. This sample includes an extra program called *auto on*. This is ignored by Home Assistant. +``` +My Programs +├── HA.binary_sensor +| ├── Movement In House +| | └── status +| └── Garage Open +| | └── status +├── HA.cover +| ├── Left Garage Door +| | ├── actions +| | └── status +| ├── Living Room Blinds +| | ├── actions +| | └── status +├── HA.fan +| ├── Desk Fan +| | ├── actions +| | └── status +| ├── Living Room Fan +| | ├── actions +| | └── status +├── HA.lock +| ├── Front Door +| | ├── actions +| | └── status +| ├── Back Door +| | ├── actions +| | └── status +├── HA.switch +| ├── Dining Lights +| | ├── actions +| | └── status +| ├── Sleep Mode +| | ├── actions +| | └── status +``` + +A device is created by creating a directory, with the name for the device, under any of the following root directories: + * *HA.binary_sensor* will create a binary sensor (see [Customizing Devices](https://home-assistant.io/getting-started/customizing-devices/) to set the sensor class) + * *HA.cover* will create a cover + * *HA.fan* will create a fan + * *HA.lock* will create a lock + * *HA.switch* will create a switch + +A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored.

- +

-The *status* program in this directory is what indicates if the switch is on or off. Only the IF clause is evaluated. If the clause returns True, the switch will be on. False will indicate the switch is off. +The *status* program in this directory is what indicates the state of the device: + * *binary_sensor* on if the clause returns true, otherwise off + * *cover* closed if the clause returns true, otherwise open + * *fan* on if the clause returns true, otherwise off + * *lock* locked if the clause returns true, otherwise unlocked + * *switch* on if the clause returns true, otherwise off

-The *actions* program indicates what should be performed to turn the switch on or off. The THEN clause gives instructions for turning the switch on while the ELSE clause gives instructions for turning the switch off. Below is an example. +The *actions* program indicates what should be performed for the following device services: + * *cover* the THEN clause is evaluated for the open_cover service, the ELSE clause is evaluated for the close_cover service + * *fan* the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service + * *lock* the THEN clause is evaluated for the lock service, the ELSE clause is evaluated for the unlock service + * *switch* the THEN clause is evaluated for the turn_on srevice, the ELSE clause is evaluated for the turn_off service

The example program above shows how to control a legacy X10 device from Home Assistant using an ISY controller. - -### {% linkable_title Creating Custom Sensors %} - -Custom sensors can also be created using the Programs tab in the ISY controller's Administrative Console. For programs, three different root level folders are evaluated that are all handled a little differently inside of Home Assistant. - - * *HA.sensors* will have states of Open or Closed - * *HA.states* will have states of On or Off - * *HA.locations* will have states of Home or Away - -To create a custom sensor, create a program under any of the three root directories. The name of the program will be the name of the sensor. An example below shows a location indicator setup. - -

- -

- -The program created only needs an IF clause. It will be evaluated to either Open/On/Home when it returns True and Closed/Off/Away when it returns False. An example is below. - -

- -

diff --git a/source/_components/light.isy994.markdown b/source/_components/light.isy994.markdown new file mode 100644 index 00000000000..4a43240e724 --- /dev/null +++ b/source/_components/light.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Light" +description: "Instructions how to integrate ISY994 lights into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Light +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) light from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/lock.isy994.markdown b/source/_components/lock.isy994.markdown new file mode 100644 index 00000000000..942cf7213b6 --- /dev/null +++ b/source/_components/lock.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Lock" +description: "Instructions how to integrate ISY994 locks into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Lock +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) lock from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/sensor.isy994.markdown b/source/_components/sensor.isy994.markdown new file mode 100644 index 00000000000..e449d7c54d2 --- /dev/null +++ b/source/_components/sensor.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Sensor" +description: "Instructions how to integrate ISY994 sensors into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Sensor +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) sensor from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/_components/switch.isy994.markdown b/source/_components/switch.isy994.markdown new file mode 100644 index 00000000000..124ee24c59b --- /dev/null +++ b/source/_components/switch.isy994.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "ISY994 Switch" +description: "Instructions how to integrate ISY994 switch into Home Assistant." +date: 2016-09-03 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: universal_devices.png +ha_category: Switch +ha_iot_class: "Local Push" +--- + +The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) switch from within Home Assistant. + +They will be automatically discovered if the isy994 component is loaded. diff --git a/source/getting-started/customizing-devices.markdown b/source/getting-started/customizing-devices.markdown index 695be29f04a..24c5b1f3073 100644 --- a/source/getting-started/customizing-devices.markdown +++ b/source/getting-started/customizing-devices.markdown @@ -41,9 +41,27 @@ homeassistant: | --------- | ----------- | | friendly_name | Name of the entity | hidden | Set to `true` to hide the entity. -| entity_picture | url to use as picture for entity +| entity_picture | Url to use as picture for entity | icon | Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix name with `mdi:`, ie `mdi:home`. | assumed_state | For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting `assumed_state` to `false` you will get the default switch icon. +| sensor_class | Sets the class of the sensor, changing the device state and icon that is displayed on the UI (see below). + +| sensor_class | Description | +| ------------ | ----------- | +| cold | On means cold (or too cold) | +| connectivity | On meanse connection present, Off means no connection +| gas | CO, CO2, etc. | +| heat | On means hot (or too hot) | +| light | Lightness threshold | +| moisture | Specifically a wetness sensor | +| motion | Motion sensor | +| moving | On means moving, Off means stopped | +| opening | Door, window, etc. | +| power | Power, over-current, etc. | +| safety | On meanse unsafe, Off means safe | +| smoke | Smoke detector | +| sound | On means sound detected, Off meanse no sound | +| vibration | On means vibration detected, Off meanse no vibration | ### {% linkable_title Reloading customize %} diff --git a/source/images/isy994/isy994_CoverExample.png b/source/images/isy994/isy994_CoverExample.png new file mode 100644 index 0000000000000000000000000000000000000000..49065e47bb3b24aefd8822609983842d72e6e684 GIT binary patch literal 17584 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 literal 0 HcmV?d00001 From aeaae31642ba029ef4a6211e80381808489c22ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Sandstr=C3=B6m?= Date: Tue, 13 Sep 2016 13:09:19 +0200 Subject: [PATCH 06/58] remove executable mode (#931) --- font/fontawesome-webfont.eot | Bin font/fontawesome-webfont.svg | 0 font/fontawesome-webfont.ttf | Bin font/fontawesome-webfont.woff | Bin source/_components/emulated_hue.markdown | 0 source/_components/light.mqtt_json.markdown | 0 source/_posts/2016-08-16-we-have-apps-now.markdown | 0 source/font/fontawesome-webfont.eot | Bin source/font/fontawesome-webfont.svg | 0 source/font/fontawesome-webfont.ttf | Bin source/font/fontawesome-webfont.woff | Bin source/images/supported_brands/aws_lambda.png | Bin source/images/supported_brands/aws_sns.png | Bin source/images/supported_brands/aws_sqs.png | Bin source/images/supported_brands/uber.png | Bin 15 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 font/fontawesome-webfont.eot mode change 100755 => 100644 font/fontawesome-webfont.svg mode change 100755 => 100644 font/fontawesome-webfont.ttf mode change 100755 => 100644 font/fontawesome-webfont.woff mode change 100755 => 100644 source/_components/emulated_hue.markdown mode change 100755 => 100644 source/_components/light.mqtt_json.markdown mode change 100755 => 100644 source/_posts/2016-08-16-we-have-apps-now.markdown mode change 100755 => 100644 source/font/fontawesome-webfont.eot mode change 100755 => 100644 source/font/fontawesome-webfont.svg mode change 100755 => 100644 source/font/fontawesome-webfont.ttf mode change 100755 => 100644 source/font/fontawesome-webfont.woff mode change 100755 => 100644 source/images/supported_brands/aws_lambda.png mode change 100755 => 100644 source/images/supported_brands/aws_sns.png mode change 100755 => 100644 source/images/supported_brands/aws_sqs.png mode change 100755 => 100644 source/images/supported_brands/uber.png diff --git a/font/fontawesome-webfont.eot b/font/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.svg b/font/fontawesome-webfont.svg old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.ttf b/font/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.woff b/font/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown old mode 100755 new mode 100644 diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown old mode 100755 new mode 100644 diff --git a/source/_posts/2016-08-16-we-have-apps-now.markdown b/source/_posts/2016-08-16-we-have-apps-now.markdown old mode 100755 new mode 100644 diff --git a/source/font/fontawesome-webfont.eot b/source/font/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/source/font/fontawesome-webfont.svg b/source/font/fontawesome-webfont.svg old mode 100755 new mode 100644 diff --git a/source/font/fontawesome-webfont.ttf b/source/font/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/source/font/fontawesome-webfont.woff b/source/font/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/aws_lambda.png b/source/images/supported_brands/aws_lambda.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/aws_sns.png b/source/images/supported_brands/aws_sns.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/aws_sqs.png b/source/images/supported_brands/aws_sqs.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/uber.png b/source/images/supported_brands/uber.png old mode 100755 new mode 100644 From d24343e727d3c303926a0574f24b92fca1171145 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 13 Sep 2016 07:11:09 +0200 Subject: [PATCH 07/58] Host is now optional --- source/_components/knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index b27d1c49981..4573a57d980 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -28,5 +28,5 @@ knx: port: PORT ``` -- **host** (*Required*): The IP address of the KNX/IP interface to use. You can use "0.0.0.0" if your KNX/IP gateway supports discovery. +- **host** (*Optional*): The IP address of the KNX/IP interface to use. It defaults to `0.0.0.0` which will start discovery for your KNX/IP gateway. - **port** (*Optional*): The UDP port number. Defaults to `3671`. From 27aea336456a6f9b08a8181823f6d0cd64e02149 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 13 Sep 2016 14:57:39 +0200 Subject: [PATCH 08/58] Update configuration variables --- .../_components/binary_sensor.nx584.markdown | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/source/_components/binary_sensor.nx584.markdown b/source/_components/binary_sensor.nx584.markdown index e9e1ae774d9..a20e681a3ce 100644 --- a/source/_components/binary_sensor.nx584.markdown +++ b/source/_components/binary_sensor.nx584.markdown @@ -17,30 +17,14 @@ The `nx584` platform provides integration with GE, Caddx, Interlogix (and other Enabling this sensor platform exposes all of your zones as binary sensors, which provides visibility through the UI as well as the ability to trigger automation actions instantly when something happens like a door opening, or a motion sensor trigger. -To enable this, add the following lines to your `configuration.yaml`: +To enable this feature, add the following lines to your `configuration.yaml`: ```yaml +# Example configuration.yaml entry binary_sensor: platform: nx584 - host: ADDRESS - exclude_zones: - - ZONE ... - zone_types: - ZONE: TYPE -``` - -Configuration variables: - -- **host** (*Optional*): This is the host connection string (host:port) for the nx584 server process. If unset, it is assumed to be `localhost:5007`, which will work if the server process is running on the same system as home-assistant. -- **exclude_zones** (*Optional*): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc. -- **zone_types** (*Optional*): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: `opening`, `motion`, `gas`, `smoke`, `moisture`, `safety`. - -Example configuration: - -```yaml -binary_sensor: - platform: nx584 - host: 192.168.1.10:5007 + host: 192.168.1.10 + pport: 5007 exclude_zones: - 3 - 5 @@ -50,3 +34,11 @@ binary_sensor: 4: motion 6: moisture ``` + +Configuration variables: + +- **host** (*Optional*): This is the host where the nx584 server process is running. If unset, it is assumed to be `localhost`, which will work if the server process is running on the same system as Home Assistant. +- **port** (*Optional*): The port where the server process is running. Defaults to `5007`. +- **exclude_zones** (*Optional*): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc. +- **zone_types** (*Optional*): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: `opening`, `motion`, `gas`, `smoke`, `moisture`, `safety`. + From 129003d668e5f560d2a25a832349970d873a64c5 Mon Sep 17 00:00:00 2001 From: Rob Johnson Date: Tue, 13 Sep 2016 23:37:01 -0500 Subject: [PATCH 09/58] added vera thermostat markdown (#937) --- source/_components/climate.vera.markdown | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 source/_components/climate.vera.markdown diff --git a/source/_components/climate.vera.markdown b/source/_components/climate.vera.markdown new file mode 100644 index 00000000000..da7b6586422 --- /dev/null +++ b/source/_components/climate.vera.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Vera Thermostat" +description: "Instructions how to integrate Vera thermostats into Home Assistant." +date: 2016-09-19 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: vera.png +ha_category: Climate +ha_iot_class: "Local Push" +--- + +The `vera` climate platform allows you to control your [Vera](http://getvera.com/) thermostats from within Home Assistant. + +They will be automatically discovered if the vera component is loaded. + +For more configuration information see the [Vera component](/components/vera/) documentation. From c75e45aa5d4a60681ab25ba82ac7c9286c439180 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:24:03 +0200 Subject: [PATCH 10/58] Create ffmpeg.markdown --- source/_components/ffmpeg.markdown | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 source/_components/ffmpeg.markdown diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown new file mode 100644 index 00000000000..eda10178742 --- /dev/null +++ b/source/_components/ffmpeg.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "FFmpeg" +description: "Instructions for how to integrate FFmpeg within Home Assistant." +date: 2016-09-14 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: sleepiq +ha_category: Hub +featured: true +--- + +

+You need a `ffmpeg` binary in your system path. On Debain 8 you can install it from backports. If you want Hardware support on a Raspberry Pi you need tobuild from source by yourself. Windows binary are avilable on the [FFmpeg](http://www.ffmpeg.org/) website. +

+ +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +ffmpeg: + ffmpeg_bin: /usr/bin/ffmpeg + run_test: True +``` + +Configuration variables: + +- **ffmpeg_bin** (*Optional*): Default 'ffmpeg'. Set the ffmpeg binary. +- **run_test** (*Optional*): Default True. Check if `input` is usable by ffmpeg. + +### {% linkable_title Troubleshooting %} + +In most of case, `ffmpeg` autodetect all needed options to read a video/audio stream or file. But it is possible in rare cases that's needed to set a option to help `ffmpeg`. Per default `ffmpeg` use 5 seconds to detect all options or abort. + +First check, if your stream playable by `ffmpeg` with (use option `-an` or `-vn` to disable video or audio stream): + +``` +$ ffmpeg -i INPUT -an -f null - +``` + +Now you can see what going wrong. Following list could be help to solve your trouble: + +- `[rtsp @ ...] UDP timeout, retrying with TCP`: You need to set RTSP transport in the configuration with: `input: -rtsp_transport tcp -i INPUT` +- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg need more data or time for autodetect. You can set the `analyzeduration` and/or `probesize` option, play with this value. If you know the needed value you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about that can be found on [FFmpeg](https://www.ffmpeg.org/ffmpeg-formats.html#Description). From 01e2540083b68a5083a3f8540c7a67d784639306 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:27:32 +0200 Subject: [PATCH 11/58] Update binary_sensor.ffmpeg.markdown --- source/_components/binary_sensor.ffmpeg.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/binary_sensor.ffmpeg.markdown b/source/_components/binary_sensor.ffmpeg.markdown index 4a14494725c..f613b840e0a 100644 --- a/source/_components/binary_sensor.ffmpeg.markdown +++ b/source/_components/binary_sensor.ffmpeg.markdown @@ -95,4 +95,4 @@ For playing with values (changes/100 is the scene value on ffmpeg): $ ffmpeg -i YOUR_INPUT -an -filter:v select=gt(scene\,0.1) -f framemd5 - ``` -If you are running into trouble with this sensor, please refer to this [Troubleshooting section](/components/camera.ffmpeg/#troubleshooting). +If you are running into trouble with this sensor, please refer to this [Troubleshooting section](/components/ffmpeg/#troubleshooting). From 575e802b9dfdbeb93eac346f728ed9874ab599a5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:28:38 +0200 Subject: [PATCH 12/58] Update camera.ffmpeg.markdown --- source/_components/camera.ffmpeg.markdown | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown index 71c14c789b5..40f1472c4db 100644 --- a/source/_components/camera.ffmpeg.markdown +++ b/source/_components/camera.ffmpeg.markdown @@ -42,18 +42,6 @@ Configuration variables: You can control the `image quality` with [`extra_arguments`](https://www.ffmpeg.org/ffmpeg-codecs.html#jpeg2000) `-q:v 2-32` or with lossless option `-pred 1`. -### {% linkable_title Troubleshooting %} -In most of case, `ffmpeg` autodetect all needed options to read a video/audio stream or file. But it is possible in rare cases that's needed to set a option to help `ffmpeg`. Per default `ffmpeg` use 5 seconds to detect all options or abort. - -First check, if your stream playable by `ffmpeg` with (use option `-an` or `-vn` to disable video or audio stream): - -``` -$ ffmpeg -i INPUT -an -f null - -``` - -Now you can see what going wrong. Following list could be help to solve your trouble: - -- `[rtsp @ ...] UDP timeout, retrying with TCP`: You need to set RTSP transport in the configuration with: `input: -rtsp_transport tcp -i INPUT` -- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg need more data or time for autodetect. You can set the `analyzeduration` and/or `probesize` option, play with this value. If you know the needed value you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about that can be found on [FFmpeg](https://www.ffmpeg.org/ffmpeg-formats.html#Description). +If you are running into trouble with this sensor, please refer to this [Troubleshooting section](/components/ffmpeg/#troubleshooting). From e2aed7320e8556ab9aae439ece2f2589bd6cf50e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:31:27 +0200 Subject: [PATCH 13/58] Update ffmpeg.markdown --- source/_components/ffmpeg.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index eda10178742..91e4df83866 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: sleepiq +logo: ffmpeg.png ha_category: Hub featured: true --- From c44185788013585ea006b25e5d119239dbbad4b5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:32:18 +0200 Subject: [PATCH 14/58] Update binary_sensor.ffmpeg.markdown --- source/_components/binary_sensor.ffmpeg.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_components/binary_sensor.ffmpeg.markdown b/source/_components/binary_sensor.ffmpeg.markdown index f613b840e0a..b537e5360a8 100644 --- a/source/_components/binary_sensor.ffmpeg.markdown +++ b/source/_components/binary_sensor.ffmpeg.markdown @@ -16,10 +16,6 @@ ha_iot_class: "Local Polling" The `ffmpeg` platform allows you to use every video or audio feed with [FFmpeg](http://www.ffmpeg.org/) for various sensors in Home Assistant. Available are: **noise**, **motion**. If the `ffmpeg` process is broken, the sensor will be unavailable. To restart the instance, use the service *binary_sensor.ffmpeg_restart*. -

-You need the `ffmpeg` binary in your system path. On Debain 8 you can install it from backports. If you want Hardware support on a Raspberry Pi you need to build it from source. Windows binary are avilable on [FFmpeg](http://www.ffmpeg.org/) homepage. -

- ### {% linkable_title Noise %} To enable your FFmpeg with noise detection in your installation, add the following to your `configuration.yaml` file: From 05657982f3b60d2470de492f6f8ed44ff160c1fb Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:32:50 +0200 Subject: [PATCH 15/58] Update camera.ffmpeg.markdown --- source/_components/camera.ffmpeg.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown index 40f1472c4db..628775ffb73 100644 --- a/source/_components/camera.ffmpeg.markdown +++ b/source/_components/camera.ffmpeg.markdown @@ -15,10 +15,6 @@ ha_release: 0.26 The `ffmpeg` platform allows you to use every video feed with [FFmpeg](http://www.ffmpeg.org/) as camera in Home Assistant. The input for ffmpeg need to support that could have multiple connection to source (input) in same time. For every user in UI and all 10 seconds (snapshot image) it make a new connection/reading to source. Normally that should never be a trouble only in strange selfmade constructs can be make mistakes. -

-You need a `ffmpeg` binary in your system path. On Debain 8 you can install it from backports. If you want Hardware support on a Raspberry Pi you need tobuild from source by yourself. Windows binary are avilable on the [FFmpeg](http://www.ffmpeg.org/) website. -

- To enable your FFmpeg feed in your installation, add the following to your `configuration.yaml` file: ```yaml From 3e6b3f846a6659a6709935248b5fd9082b179688 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:39:14 +0200 Subject: [PATCH 16/58] Update binary_sensor.ffmpeg.markdown --- source/_components/binary_sensor.ffmpeg.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_components/binary_sensor.ffmpeg.markdown b/source/_components/binary_sensor.ffmpeg.markdown index b537e5360a8..b75be6458d1 100644 --- a/source/_components/binary_sensor.ffmpeg.markdown +++ b/source/_components/binary_sensor.ffmpeg.markdown @@ -27,7 +27,6 @@ camera: tool: noise input: FFMPEG_SUPPORTED_INPUT name: FFmpeg Noise - ffmpeg_bin: /usr/bin/ffmpeg peak: -30 duration: 1 reset: 20 @@ -64,7 +63,6 @@ camera: tool: motion input: FFMPEG_SUPPORTED_INPUT name: FFmpeg Motion - ffmpeg_bin: /usr/bin/ffmpeg changes: 10 reset: 20 # group feature / default not in use From 1556e5c355a5e83f5a1caf64258d70fdf30937b6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 16:39:59 +0200 Subject: [PATCH 17/58] Update camera.ffmpeg.markdown --- source/_components/camera.ffmpeg.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown index 628775ffb73..b6e8f0b7896 100644 --- a/source/_components/camera.ffmpeg.markdown +++ b/source/_components/camera.ffmpeg.markdown @@ -23,7 +23,6 @@ camera: - platform: ffmpeg input: FFMPEG_SUPPORTED_INPUT name: FFmpeg - ffmpeg_bin: /usr/bin/ffmpeg extra_arguments: -q:v 2 ``` From b16ee58f192b38cd5dfbdd226e34ffb77ad9e5e8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 14 Sep 2016 18:28:13 +0200 Subject: [PATCH 18/58] Update ffmpeg.markdown --- source/_components/ffmpeg.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index 91e4df83866..b58e5b9a9b9 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -13,7 +13,7 @@ featured: true ---

-You need a `ffmpeg` binary in your system path. On Debain 8 you can install it from backports. If you want Hardware support on a Raspberry Pi you need tobuild from source by yourself. Windows binary are avilable on the [FFmpeg](http://www.ffmpeg.org/) website. +You need a `ffmpeg` binary in your system path. On Debain 8 or Raspbian (Jessie) you can install it from backports. If you want Hardware support on a Raspberry Pi you need to build from source by yourself. Windows binary are avilable on the [FFmpeg](http://www.ffmpeg.org/) website.

To set it up, add the following information to your `configuration.yaml` file: From 27e223861adc56c4ddc4dd45060bbf2fc87c689b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 16 Sep 2016 10:57:47 +0200 Subject: [PATCH 19/58] Simplepush docs (#926) * Add Simplepush docs * Use the actual length for a device key --- source/_components/notify.simplepush.markdown | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 source/_components/notify.simplepush.markdown diff --git a/source/_components/notify.simplepush.markdown b/source/_components/notify.simplepush.markdown new file mode 100644 index 00000000000..2fcf9506a9d --- /dev/null +++ b/source/_components/notify.simplepush.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Simplepush" +description: "Instructions how to add Simplepush notifications to Home Assistant." +date: 2016-09-11 18:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Notifications +ha_release: 0.29 +--- + + +The `simplepush` platform uses [Simplepush](https://simplepush.io/) to delivery notifications from Home Assistant to your Android device. + +To add Simplepush to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - name: NOTIFIER_NAME + platform: simplepush + device_key: ABCDE +``` + +Configuration variables: + +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **device_key** (*Required*): The device key of your device. + +To test if the service works, just send a message with `curl` from the command-line. + +```bash +$ curl 'https://api.simplepush.io/send/device_key/title/message' +``` + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). From 7fa6db53c64f4e5d45ae85dc1f3d5a9c45c3bdbc Mon Sep 17 00:00:00 2001 From: chrom3 Date: Fri, 16 Sep 2016 10:59:02 +0200 Subject: [PATCH 20/58] Kodi notification documentation (#927) * Create notify.kodi.markdown Initial documentation for kodi notification * Update notify.kodi.markdown cosmetic changes * Update notify.kodi.markdown --- source/_components/notify.kodi.markdown | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 source/_components/notify.kodi.markdown diff --git a/source/_components/notify.kodi.markdown b/source/_components/notify.kodi.markdown new file mode 100644 index 00000000000..a803d35aa2c --- /dev/null +++ b/source/_components/notify.kodi.markdown @@ -0,0 +1,60 @@ +--- +layout: page +title: "Kodi" +description: "Instructions how to add Kodi notifications to Home Assistant." +date: 2016-09-12 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: kodi.png +ha_category: Notifications +ha_release: 0.29 +--- + + +The `Kodi` platform allows you so send messages to your [Kodi](https://kodi.tv/) multimedia system from Home Assistant. + +To add Kodi to your installation, add the following to your configuration.yaml file: + +### {% linkable_title Configuration %} +```yaml +# Example configuration.yaml entry +notify: + platform: kodi + name: NOTIFIER_NAME + host: http://192.168.0.123 + port: 8080 + username: USERNAME + password: PASSWORD +``` + +- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **host** (*Required*): The host name or address of the device that is running Kodi. +- **port** (*optional*): The port number, the default value is `8080`. +- **username** (*Optional*): The XBMC/Kodi HTTP username. +- **password** (*Optional*): The XBMC/Kodi HTTP password. + +### {% linkable_title script.yaml example %} +```yaml +################################################################ +## Script / Notify KODI +################################################################ +kodi_notification: + sequence: + - service: notify.NOTIFIER_NAME + data: + title: "Home Assistant" + message: "Message to KODI from Home Assistant!" + data: + displaytime: 20000 + icon: "warning" +``` +#### message variables: +- **title** (*Optional*): Title that is displayed on the message. +- **message** (*Required*): Message to be displayed. +- **data** (*Optional*) + - **icon** (*Optional*): Kodi comes with 3 default icons: `info`, `warning` and `error`, an URL to an image is also valid. *Defaults to `info`* + - **displaytime** (*Optional*): Length in milliseconds the message stays on screen. *Defaults to `10000` ms* + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). From 8830c0d20eabe4cdffd2689afef0386653b51d61 Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Fri, 16 Sep 2016 06:10:38 -0400 Subject: [PATCH 21/58] Updated nest markdown to support new componement climate (#940) --- source/_components/nest.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index 1ec2da8e882..bd850a89e7c 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -20,7 +20,7 @@ nest: username: USERNAME password: PASSWORD -thermostat: +climate: platform: nest ``` @@ -31,7 +31,7 @@ nest: password: PASSWORD structure: Vacation -thermostat: +climate: platform: nest ``` @@ -44,7 +44,7 @@ nest: - Vacation - Primary -thermostat: +climate: platform: nest ``` @@ -52,4 +52,4 @@ Configuration variables: - **username** (*Required*): Your Nest username. - **password** (*Required*): Your Nest password. -- **structure** (*Optional*): The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. \ No newline at end of file +- **structure** (*Optional*): The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. From 20c56ad641abcb507e8784e940533bdcccc6a290 Mon Sep 17 00:00:00 2001 From: Heiko Rothe Date: Fri, 16 Sep 2016 12:10:59 +0200 Subject: [PATCH 22/58] Added documentation for new mqtt_room away timeout setting (#922) --- source/_components/sensor.mqtt_room.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown index ce024b50ec1..425ac54367b 100644 --- a/source/_components/sensor.mqtt_room.markdown +++ b/source/_components/sensor.mqtt_room.markdown @@ -26,6 +26,7 @@ sensor: name: 'Cool device' state_topic: 'room_presence' timeout: 5 + away_timeout: 60 ``` Configuration variables: @@ -34,6 +35,7 @@ Configuration variables: - **name** (*Optional*): The name of the sensor. - **state_topic** (*Optional*): The topic that contains all subtopics for the rooms. - **timeout** (*Optional*): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 secoonds scanner2 reports device with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed. +- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `away` if there were no updates. `0` disables the check and is the default. Example JSON that should be published to the room topics: From b167b8f64bbaae333c7b0732396d868bd723c722 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Sun, 18 Sep 2016 16:44:03 +0200 Subject: [PATCH 23/58] Cleanup and update of Z-Wave documenation (#935) * Update z-wave.markdown (#917) - Notes added to Z-wave `soft-reset` about known issues by @sgauche - Fixed usage of `zwave` component, Z-Wave for references to a Z-Wave network, and OpenZWave as a project name by @sgauche --- .../asides/getting_started_navigation.html | 2 +- .../z-wave-controllers.markdown | 8 ++- .../z-wave-device-specific.markdown | 8 +-- .../getting-started/z-wave-settings.markdown | 6 +- source/getting-started/z-wave.markdown | 59 +++++++++++-------- 5 files changed, 46 insertions(+), 37 deletions(-) diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index f9b7019d0ea..77d992a1df7 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -48,7 +48,7 @@
  • {% active_link /getting-started/z-wave/ Z-Wave %}
      -
    • {% active_link /getting-started/z-wave-controllers/ USB Controllers %}
    • +
    • {% active_link /getting-started/z-wave-controllers/ Controllers %}
    • {% active_link /getting-started/z-wave-settings/ Modifying Settings %}
    • {% active_link /getting-started/z-wave-device-specific/ Device Specific %}
    diff --git a/source/getting-started/z-wave-controllers.markdown b/source/getting-started/z-wave-controllers.markdown index 3a40dea161e..1c8c35c81d3 100644 --- a/source/getting-started/z-wave-controllers.markdown +++ b/source/getting-started/z-wave-controllers.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Z-Wave USB Controllers" +title: "Z-Wave Controllers" description: "Extended instructions how to setup Z-Wave." date: 2016-03-24 08:49 -0700 sidebar: true @@ -12,15 +12,16 @@ footer: true Z-Wave is a popular home automation protocol that is not always straightforward to setup. This page will try to help you make sense of it all.

    -Upon first run, the z-wave component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess. +Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess.

    -## {% linkable_title Supported Z-Wave Sticks %} +## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %} | Device | Works on Linux | Works on Windows | Works on OSX | |-------------------------|----------------|------------------|--------------| | Aeotec Z-Stick Series 2 | ✓ | | | | Aeotec Z-Stick Series 5 | ✓ | | | +| Pine64 Z-Wave Module | ✓ | | | | Razberry GPIO Module | ✓ | | | | ZWave.me UZB1 | ✓ | | | @@ -29,3 +30,4 @@ Upon first run, the z-wave component will take time to initialize entities and e The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support: - [Vera](/components/vera/) + - [Wink](/components/wink/) diff --git a/source/getting-started/z-wave-device-specific.markdown b/source/getting-started/z-wave-device-specific.markdown index adfef28bee5..c96d2e853ca 100644 --- a/source/getting-started/z-wave-device-specific.markdown +++ b/source/getting-started/z-wave-device-specific.markdown @@ -11,16 +11,16 @@ footer: true ##### {% linkable_title Motion or alarm sensors %} -In order for Home Assistant to recognize well the sensor, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`. Currently there's no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it +In order for Home Assistant to recognize well the sensor, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`. Currently there's no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it. These devices will either show as a binary sensor or a sensor called `Alarm xxxx` and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual. ##### {% linkable_title Locks and other secure devices %} -These devices require a network key to be set for the zwave network before they are paired. This key is set in OpenZwave's `options.xml` which is located in Open Zwave's directory. This should also be the same directory as `config_path:` in your `configuration.yaml`. If it's not, make sure you have the same values in all the files you are using. +These devices require a network key to be set for the Z-Wave network before they are paired. This key is set in OpenZwave's `options.xml` which is located in OpenZWave's directory. This should also be the same directory as `config_path:` in your `configuration.yaml`. If it's not, make sure you have the same values in all the files you are using. The option is commented out by default in `options.xml` and is a default key. Make your own unique key. The key is in Hexadecimals. -It is best to pair these devices in Open Zwave Control Panel or other Zwave tool that can show you logs while pairing. Test the device before you save the configuration. -Make sure you copy the newly saved `zwcfg_[home_id].xml`into your HomeAssistant config directory. +It is best to pair these devices in OpenZWave Control Panel or other Z-wave tool that can show you logs while pairing. Test the device before you save the configuration. +Make sure you copy the newly saved `zwcfg_[home_id].xml`into your Home Assistant configuration directory. ##### {% linkable_title Aeon Minimote %} diff --git a/source/getting-started/z-wave-settings.markdown b/source/getting-started/z-wave-settings.markdown index 76682705797..ce0caf178c5 100644 --- a/source/getting-started/z-wave-settings.markdown +++ b/source/getting-started/z-wave-settings.markdown @@ -9,13 +9,13 @@ sharing: true footer: true --- -You may wish to modify the Z-Wave settings in your `ozw*.xml` file stored in the `.homeassistant` directory, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image. +You may wish to modify the Z-Wave settings in your `ozw*.xml` file stored in the `.homeassistant` configuration directory, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image. -The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the `.homeassistant` folder acts as a settings/values cache for the Z-Wave network, so modifying it directly won't change the network values. The Open-Zwave Control Panel writes values directly to the network and will provide you with an updated `.xml` file to overwrite in your `.homeassistant` folder. This is the most foolproof way to make modifications to your Z-Wave devices. +The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the `.homeassistant` configuration directory acts as a settings/values cache for the Z-Wave network, so modifying it directly won't change the network values. The [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel) writes values directly to the network and will provide you with an updated `.xml` file to overwrite in your `.homeassistant` configuration directory. This is the most foolproof way to make modifications to your Z-Wave devices. Although totally normal for your Z-Wave stick (Aeon Aeotec Z-Stick Gen5 for example) to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don like this behaviour then you could turn it off. -Use the following commands from a terminal session to your Pi where your Z-Wave stick is connected as an example. +Use the following commands from a terminal session on your Pi where your Z-Wave stick is connected as an example. Turn off "Disco lights": diff --git a/source/getting-started/z-wave.markdown b/source/getting-started/z-wave.markdown index 57e8dc4c9c7..b0951255e39 100644 --- a/source/getting-started/z-wave.markdown +++ b/source/getting-started/z-wave.markdown @@ -9,9 +9,9 @@ sharing: true footer: true --- -[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host. +[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host. -There is currently support for switches, lights and sensors. All will be picked up automatically after configuring this platform. +There is currently support for climate, covers, lights, locks, sensors, switches and thermostats. All will be picked up automatically after configuring this platform. ### {% linkable_title Installation %} @@ -68,13 +68,13 @@ zwave: Configuration variables: - **usb_path** (*Required*): The port where your device is connected to your Home Assistant host. -- **config_path** (*Optional*): The path to the Python Open Z-Wave configuration files. -- **autoheal** (*Optional*): Allows disabling auto ZWave heal at midnight. Defaults to True. +- **config_path** (*Optional*): The path to the Python OpenZWave configuration files. +- **autoheal** (*Optional*): Allows disabling auto Z-Wave heal at midnight. Defaults to True. - **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. - **customize** (*Optional*): This attribute contains node-specific override values: - **polling_intensity** (*Optional*): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2-every other time, etc). If not specified then your device will not be polled. -To find the path of your Z-Wave stick, run: +To find the path of your Z-Wave USB stick or module, run: ```bash $ ls /dev/ttyUSB* @@ -86,6 +86,12 @@ Or, on some other systems (such as Raspberry Pi), use: $ ls /dev/ttyACM* ``` +Or, on some other systems (such as Pine 64), use: + +```bash +$ ls /dev/ttyS* +``` + Or, on macOS, use: ```bash @@ -98,9 +104,9 @@ Depending on what's plugged into your USB ports, the name found above may change ### {% linkable_title Adding Security Devices %} -Security Z-Wave devices require a network key before being added to the network using the zwave.add_node_secure service. You must edit the options.xml file, located in your python-openzwave config_path to use a network key before adding these devices. +Security Z-Wave devices require a network key before being added to the network using the `zwave.add_node_secure` service. You must edit the `options.xml` file, located in your `python-openzwave config_path` to use a network key before adding these devices. -Edit your options.xml file: +Edit your `options.xml` file: ```bash @@ -110,52 +116,52 @@ Uncomment the line: