From 53566bc4ed95d0adf01a0cbb6161ad4d2da0e589 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Fri, 24 Mar 2017 03:51:39 -0400 Subject: [PATCH 01/20] Added compatible camera (#2320) --- source/_components/binary_sensor.hikvision.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/binary_sensor.hikvision.markdown b/source/_components/binary_sensor.hikvision.markdown index 00ec4b7531..8dcbcb2f66 100644 --- a/source/_components/binary_sensor.hikvision.markdown +++ b/source/_components/binary_sensor.hikvision.markdown @@ -28,6 +28,7 @@ This platform should work with all Hikvision cameras, and has been confirmed to - DS-2CD3132-I - DS-2CD2232-I5 - DS-2CD2032-I +- DS-2CD2042WD-I - DS-2CD2142FWD-I To enable this sensor, the following lines are required in your `configuration.yaml`: From 7dea3bd21221e1976b9d85d88d35b9ddfc1f3ebb Mon Sep 17 00:00:00 2001 From: Beat Date: Fri, 24 Mar 2017 15:45:42 +0100 Subject: [PATCH 02/20] Multi-trigger explanation and example (#2322) Added instructions on how to use multiple triggers. So far they were mentioned in the introduction but only explained in the huge example configuration on the "Automation Examples" page. --- source/_docs/automation/trigger.markdown | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 0f5b735513..fd9d06520a 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -148,3 +148,20 @@ automation: # Event is either enter or leave event: enter # or "leave" ``` + + +### {% linkable_title Multiple triggers %} + +When your want your automation rule to have multiple triggers, just prefix the first line of each trigger with a dash (-) and indent the lines following accordingly. Whenever one of the triggers fires, your rule is executed. + +```yaml +automation: + trigger: + # first trigger + - platform: time + minutes: 5 + seconds: 00 + # our second trigger is the sunset + - platform: sun + event: sunset +``` From bd6b8b3f4a067c5694cbf3f1fa48bc60eb18d5c1 Mon Sep 17 00:00:00 2001 From: Luar Roji Date: Fri, 24 Mar 2017 16:38:05 -0300 Subject: [PATCH 03/20] Fixed typo in jupyter notebooks (#2324) --- source/_docs/backend/database.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index 2e298a6379..51266ff748 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -122,5 +122,5 @@ The `VACUUM` command cleans the your database. sqlite> VACUUM; ``` -For a more interactive way to work with the database or the create statistics, checkout our [Jupyther notebooks](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/). +For a more interactive way to work with the database or the create statistics, checkout our [Jupyter notebooks](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/). From 8d202807b6b80093dbe96b75802016dc587ae0b7 Mon Sep 17 00:00:00 2001 From: printzlau Date: Fri, 24 Mar 2017 21:03:46 +0100 Subject: [PATCH 04/20] Update certificate.markdown (#2295) --- source/_docs/mqtt/certificate.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown index 71374bc85c..bf410b916a 100644 --- a/source/_docs/mqtt/certificate.markdown +++ b/source/_docs/mqtt/certificate.markdown @@ -22,7 +22,7 @@ mqtt: Configuration variables: -- **certificate** (*Optional*): The certificate authority certificate file that is to be treated as trusted by this client. This file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem` +- **certificate** (*Optional*): 'auto' or the certificate authority certificate file that is to be treated as trusted by this client. 'auto' uses the bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem` - **client_key** (*Optional*): Client key, eg. `/home/user/owntracks/cookie.key`. - **client_cert** (*Optional*): Client certificate, eg. `/home/user/owntracks/cookie.crt`. From 50cd86551fd995377e75dc754d7d3e0dc91090fe Mon Sep 17 00:00:00 2001 From: R Huish Date: Fri, 24 Mar 2017 20:09:45 +0000 Subject: [PATCH 05/20] RFLink gateway added extra detail for 2.4 Ghz devices (#2301) * Update rflink.markdown * Update rflink.markdown * Update rflink.markdown --- source/_components/rflink.markdown | 36 +++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/source/_components/rflink.markdown b/source/_components/rflink.markdown index ff64c8cf84..80af235945 100644 --- a/source/_components/rflink.markdown +++ b/source/_components/rflink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Rflink" -description: "Instructions how to integrate Rflink gateway into Home Assistant." +title: "RFLink" +description: "Instructions how to integrate RFLink gateway into Home Assistant." date: 2016-01-04 sidebar: true comments: false @@ -12,17 +12,23 @@ ha_category: Hub ha_release: 0.38 --- -The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is firmware for the Arduino MEGA 2560 that allows communication with 433 Mhz devices using cheap hardware (Arduino + 433 Mhz tranceiver). +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). The 433 Mhz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. -A complete list of devices supported by Rflink can be found [here](http://www.nemcon.nl/blog2/devlist) +RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. Their website provides details for various RF transmitter, receiver and transceiver modules for 433Mhz, 868Mhz and 2.4 Ghz [here.](http://www.nemcon.nl/blog2/wiring) + +

+ Note: Versions later than R44 adds support for Ikea Ansluta, Philips Living Colors Gen1, MySensors devices. +

+ +A complete list of devices supported by RFLink can be found [here](http://www.nemcon.nl/blog2/devlist) This component is tested with the following hardware/software: -- Nodo Rflink Gateway V1.4/Rflink R44 +- Nodo RFLink Gateway V1.4/RFLink R46 -To enable Rflink in your installation, add the following to your `configuration.yaml` file: +To enable RFLink in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -32,9 +38,9 @@ rflink: Configuration variables: -- **port** (*Required*): The path to Rflink usb/serial device or TCP port in TCP mode. +- **port** (*Required*): The path to RFLink USB/serial device or TCP port in TCP mode. - **host** (*Optional*): Switches to TCP mode, connects to host instead of to USB/serial. -- **wait_for_ack** (*Optional*): Wait for Rflink to ackowledge commands sent before sending new command (slower but more reliable). Defaults to `True` +- **wait_for_ack** (*Optional*): Wait for RFLink to ackowledge commands sent before sending new command (slower but more reliable). Defaults to `True` - **ignore_devices** (*Optional*): List of devices id's to ignore. Supports wildcards (*) at the end. - **reconnect_interval** (*Optional*): Time in seconds between reconnect attempts. @@ -52,9 +58,9 @@ rflink: ### {% linkable_title TCP mode %} -TCP mode allows connect to a Rflink device over TCP/IP network. This is for example useful if placing the Rflink device next to the HA server is not optimal or desired (eg: bad reception). +TCP mode allows connect to a RFLink device over TCP/IP network. This is for example useful if placing the RFLink device next to the HA server is not optimal or desired (eg: bad reception). -To expose the usb/serial interface over TCP on a different host (Linux) the following command can be used: +To expose the USB/serial interface over TCP on a different host (Linux) the following command can be used: ```bash $ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr @@ -65,7 +71,7 @@ Other methods of exposing the serial interface over TCP are possible (eg: ESP826 Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-link/releases/tag/v2.2.3) running on a NodeMCU (ESP8266 Wifi module) with ESP8266 TXD0 (pin D10) and RXD0 (pin D9) connected to Arduino MEGA 2560 RX (Pin 2) and TX (Pin 3) respectively.

-Due to different logical levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. +Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Living Colors)

@@ -81,7 +87,7 @@ rflink: ### {% linkable_title Ignoring devices %} -Rflink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 Mhz technology. +RFLink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 Mhz technology. For example: @@ -102,15 +108,15 @@ Wildcards only work at the end of the ID, not in the middle of front! ### {% linkable_title Device support %} -Even though a lot of devices are supported by Rflink, not all have been tested/implemented. If you have a device supported by Rflink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. +Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. ### {% linkable_title Device Incorrectly Identified %} -If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). http://www.nemcon.nl/blog2/faq#RFFind. +If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.nemcon.nl/blog2/faq#RFFind) ### {% linkable_title Technical overview %} -- The`rflink` Python module a asyncio transport/protocol is setup that fires an callback for every (valid/supported) packet received by the Rflink gateway. +- The`rflink` Python module a asyncio transport/protocol is setup that fires an callback for every (valid/supported) packet received by the RFLink gateway. - This component uses this callback to distribute 'rflink packet events' over the HASS bus which can be subscribed to by entities/platform implementations. - The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's. - Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component. From 7cf5328c7f90c50d187012a1cf03936816f56cf8 Mon Sep 17 00:00:00 2001 From: R Huish Date: Fri, 24 Mar 2017 20:10:39 +0000 Subject: [PATCH 06/20] Update sensor.rflink.markdown (#2300) --- source/_components/sensor.rflink.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_components/sensor.rflink.markdown b/source/_components/sensor.rflink.markdown index f07d86606d..759e51c8ed 100644 --- a/source/_components/sensor.rflink.markdown +++ b/source/_components/sensor.rflink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Rflink Sensor" -description: "Instructions how to integrate Rflink sensors into Home Assistant." +title: "RFLink Sensor" +description: "Instructions how to integrate RFLink sensors into Home Assistant." date: 2016-01-04 sidebar: true comments: false @@ -12,11 +12,11 @@ ha_category: Sensor ha_release: 0.38 --- -The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is an Arduino firmware that allows communication with 433Mhz devices using cheap hardware (Arduino + 433Mhz tranceiver). +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First you have to set up your [rflink hub](/components/rflink/). -After configuring the Rflink hub sensors will be automatically discovered and added. +After configuring the RFLink hub sensors will be automatically discovered and added. New/unknown sensors can be assigned to a default group automatically by specifying the `new_devices_group` option with a group name. If the group doesn't exist it will be created. @@ -26,10 +26,10 @@ For example: # Example configuration.yaml entry sensor: platform: rflink - new_devices_group: "New Rflink Sensors" + new_devices_group: "New RFLink Sensors" ``` -Rflink sensor ID's are composed of: protocol, id and type (optional). For example: `alectov1_0334_temp`. Some sensors emit multiple types of data. Each will be created as its own +RFLink sensor ID's are composed of: protocol, id and type (optional). For example: `alectov1_0334_temp`. Some sensors emit multiple types of data. Each will be created as its own Once the ID of a sensor is known it can be used to configure the sensor in HA, for example to add it to a different group, hide it or configure a nice name. @@ -52,14 +52,14 @@ Configuration variables: Device configuration variables: -- **name** (*Optional*): Name for the device, defaults to Rflink ID. +- **name** (*Optional*): Name for the device, defaults to RFLink ID. - **sensor_type** (*Required*): Override automatically detected type of sensor. - **unit_of_measurement** (*Optional*): Override automatically detected unit of sensor. -- **aliasses** (*Optional*): Alternative Rflink ID's this device is known by. +- **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. ### {% linkable_title Hiding/ignoring sensors %} -Sensors are added automatically when the Rflink gateway intercepts a 433Mhz command in the ether. To prevent cluttering the frontend use any of these methods: +Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods: - Configure a `new_devices_group` for sensors and optionally add it to a different `view`. - Hide unwanted devices using [customizations](/getting-started/customizing-devices/) From 42d62a2eadbb92b74c1618c0b1bef9533990d865 Mon Sep 17 00:00:00 2001 From: R Huish Date: Fri, 24 Mar 2017 20:12:23 +0000 Subject: [PATCH 07/20] RFLink Light updated example (#2296) * Updated example for Rflink Light * Update light.rflink.markdown --- source/_components/light.rflink.markdown | 31 +++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/source/_components/light.rflink.markdown b/source/_components/light.rflink.markdown index babb149f5a..e414d5898e 100644 --- a/source/_components/light.rflink.markdown +++ b/source/_components/light.rflink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Rflink Light" -description: "Instructions how to integrate Rflink lights into Home Assistant." +title: "RFLink Light" +description: "Instructions how to integrate RFLink lights into Home Assistant." date: 2016-01-04 sidebar: true comments: false @@ -12,11 +12,11 @@ ha_category: Light ha_release: 0.38 --- -The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is an Arduino firmware that allows communication with 433Mhz devices using cheap hardware (Arduino + 433Mhz tranceiver). +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First you have to set up your [rflink hub](/components/rflink/). -After configuring the Rflink hub lights will be automatically discovered and added. +After configuring the RFLink hub lights will be automatically discovered and added. New/unknown lights can be assigned to a default group automatically by specifying the `new_devices_group` option with a group name. If the group doesn't exist it will be created. @@ -29,7 +29,7 @@ sensor: new_devices_group: "New Rflink Lights" ``` -Rflink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. +RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. Once the ID of a light is known it can be used to configure the light in HA, for example to add it to a different group, hide it or configure a nice name. @@ -39,6 +39,9 @@ Configuring a device as light with a nice name: # Example configuration.yaml entry light: platform: rflink + device_defaults: + fire_event: true + signal_repetitions: 2 devices: newkaku_0000c6c2_1: name: Living room @@ -49,22 +52,22 @@ Configuration variables: - **devices** (*Optional*): A list of devices with their name to use in the frontend. - **new_devices_group** (*Optional*): Create group to add new/unknown devices to. - **device_defaults**: (*Optional*) - - **fire_event_** (*Optional*): Set default `fire_event` for Rflink switch devices (see below). - - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below). + - **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). + - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). Device configuration variables: -- **name** (*Optional*): Name for the device, defaults to Rflink ID. +- **name** (*Optional*): Name for the device, defaults to RFLink ID. - **type** (*Optional*): Override automatically detected type of the light device, can be: switchable, dimmable or hybrid. See 'Light Types' below. -- **aliasses** (*Optional*): Alternative Rflink ID's this device is known by. +- **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. - **fire_event_** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). -- **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1) +- **signal_repetitions** (*Optional*): Repeat every RFLink command this number of times (default: 1) ### {% linkable_title Light state %} -Initially the state of a light is unknown. When the light is turned on or off (via frontend or 433Mhz remote) the state is known and will be shown in the frontend. +Initially the state of a light is unknown. When the light is turned on or off (via frontend or remote) the state is known and will be shown in the frontend. -Sometimes a light is controlled by multiple 433Mhz remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: +Sometimes a light is controlled by multiple remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: ```yaml # Example configuration.yaml entry @@ -82,7 +85,7 @@ Any on/off command from any allias ID updates the current state of the light. Ho ### {% linkable_title Light types %} -Light devices can come in different forms. Some only switch on and off, other support dimming. Dimmable devices might not always respond nicely to repeated `on` command as they turn into a pulsating state until `on` is pressed again (for example KlikAanKlikUit). The Rflink component support three types of lights to make things work in every situation: +Light devices can come in different forms. Some only switch on and off, other support dimming. Dimmable devices might not always respond nicely to repeated `on` command as they turn into a pulsating state until `on` is pressed again (for example KlikAanKlikUit). The RFLink component support three types of lights to make things work in every situation: - *Hybrid*: This type sends a `dim` followed by an a `on` command; and `off` commands. This will make dimmable devices turn on at the requested dim level and on/off devices on. One caveat is this type is not compatible with signal repetition as multiple `on` signals will cause dimmers to go into disco mode. - *Switchable*: Device type that sends only `on` and `off` commands. It work for both on/off and dimmable type switches. However dimmables might have issues with signal repetition (see above). @@ -92,7 +95,7 @@ By default new lights are assigned the `switchable` type. Protocol supporting di ### {% linkable_title Hiding/ignoring lights %} -Lights are added automatically when the Rflink gateway intercepts a 433Mhz command in the ether. To prevent cluttering the frontend use any of these methods: +Lights are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods: - Configure a `new_devices_group` for lights and optionally add it to a different `view`. - Hide unwanted devices using [customizations](/getting-started/customizing-devices/) From 44656dd2f02ed971dde97b34f137936fb94c964e Mon Sep 17 00:00:00 2001 From: R Huish Date: Fri, 24 Mar 2017 20:13:40 +0000 Subject: [PATCH 08/20] RFLink Switch removed 433Mhz (#2299) Removed 433Mhz as RFLink supports more than just 433Mhz --- source/_components/switch.rflink.markdown | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/source/_components/switch.rflink.markdown b/source/_components/switch.rflink.markdown index c2ff4e31b4..92634c58b9 100644 --- a/source/_components/switch.rflink.markdown +++ b/source/_components/switch.rflink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Rflink Switch" -description: "Instructions how to integrate Rflink switches into Home Assistant." +title: "RFLink Switch" +description: "Instructions how to integrate RFLink switches into Home Assistant." date: 2016-01-04 sidebar: true comments: false @@ -12,13 +12,13 @@ ha_category: Switch ha_release: 0.38 --- -The `rflink` component support devices that use [Rflink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo Rflink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). Rflink gateway is an Arduino firmware that allows communication with 433Mhz devices using cheap hardware (Arduino + 433Mhz tranceiver). +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First you have to set up your [rflink hub](/components/rflink/). -The Rflink component does not know the difference between a `switch` and a `light`. Therefore all switchable devices are automatically added as `light` by default. +The RFLink component does not know the difference between a `switch` and a `light`. Therefore all switchable devices are automatically added as `light` by default. -Rflink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. +RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. Once the ID of a switch is known it can be used to configure it as a switch type in HA, for example to add it to a different group, hide it or configure a nice name. @@ -43,21 +43,21 @@ Configuration variables: - **devices** (*Optional*): A list of devices with their name to use in the frontend. - **device_defaults**: (*Optional*) - - **fire_event_** (*Optional*): Set default `fire_event` for Rflink switch devices (see below). - - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below). + - **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). + - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). Device configuration variables: -- **name** (*Optional*): Name for the device, defaults to Rflink ID. -- **aliasses** (*Optional*): Alternative Rflink ID's this device is known by. +- **name** (*Optional*): Name for the device, defaults to RFLink ID. +- **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. - **fire_event_** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). -- **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1) +- **signal_repetitions** (*Optional*): Repeat every RFLink command this number of times (default: 1) ### {% linkable_title Switch state %} -Initially the state of a switch is unknown. When the switch is turned on or off (via frontend or 433Mhz remote) the state is known and will be shown in the frontend. +Initially the state of a switch is unknown. When the switch is turned on or off (via frontend or wireless remote) the state is known and will be shown in the frontend. -Sometimes a switch is controlled by multiple 433Mhz remotes, each remote has its own code programmed in the switch. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: +Sometimes a switch is controlled by multiple wireless remotes, each remote has its own code programmed in the switch. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: ```yaml # Example configuration.yaml entry From cbe09f0c26af0484f3194477ca0b0e05b94dc1e9 Mon Sep 17 00:00:00 2001 From: Sjors Spoorendonk Date: Fri, 24 Mar 2017 21:22:58 +0100 Subject: [PATCH 09/20] Update raspberry-pi-all-in-one.markdown (#2206) * Update raspberry-pi-all-in-one.markdown Changed the way it showed what to do if you installed prior to december 2016. The replace with text made it unnecessary complicated. * Update raspberry-pi-all-in-one.markdown Changed code to Markdown --- .../raspberry-pi-all-in-one.markdown | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown index 06e03d6c33..686297e48a 100644 --- a/source/_docs/installation/raspberry-pi-all-in-one.markdown +++ b/source/_docs/installation/raspberry-pi-all-in-one.markdown @@ -63,9 +63,14 @@ To upgrade the All-In-One setup manually: * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. -

-If you deployed Home Assistant via the AiO installer prior to December 2016, replace `sudo su -s /bin/bash homeassistant` with `sudo su -s /bin/bash hass` and `source /srv/homeassistant/homeassistant_venv/bin/activate` with `source /srv/hass/hass_venv/bin/activate`

- +
+**If you deployed Home Assistant via the AiO installer prior to December 2016** +* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` +* Change to homeassistant user `sudo su -s /bin/bash hass` +* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` +* Update HA `pip3 install --upgrade homeassistant` +* Type `exit` to logout the hass user and return to the `pi` user. +
To upgrade with fabric: @@ -96,9 +101,15 @@ To launch the OZWCP web application: * Open a web browser to `http://your_pi_ip:8888` * Specify your zwave controller, for example `/dev/ttyACM0` and hit initialize -

-If you deployed Home Assistant via the AiO installer prior to December 2016, replace `cd /srv/homeassistant/src/open-zwave-control-panel/` with `cd /srv/hass/src/open-zwave-control-panel/` -

+
+**If you deployed Home Assistant via the AiO installer prior to December 2016** +* Make sure Home Assistant is not running! So stop that first +* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` +* Change to the ozwcp directory `cd /srv/hass/src/open-zwave-control-panel/` +* Launch the control panel `sudo ./ozwcp -p 8888` +* Open a web browser to `http://your_pi_ip:8888` +* Specify your zwave controller, for example `/dev/ttyACM0` and hit initialize +

Don't check the USB box regardless of using a USB based device. From a87f349c790f600d92d1f08a552561c8a5302c7f Mon Sep 17 00:00:00 2001 From: Patrick Easters Date: Fri, 24 Mar 2017 17:26:02 -0400 Subject: [PATCH 10/20] Fixing link to virtualenv page (#2326) Looks like this was broken by the recent reorganization of docs. The redirect worked, but it didn't preserve the anchor --- source/_docs/z-wave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index e8fc9a96b6..eaf3e07f99 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -16,7 +16,7 @@ There is currently support for climate, covers, lights, locks, sensors, switches ### {% linkable_title Installation in Virtualenv (python-OpenZWave) %} -If you installed Home Assistant using a virtual environment then please read the instructions on [Installing python-OpenZWave in a virtualenv](https://home-assistant.io/getting-started/installation-virtualenv/#installing-python-openzwave-in-a-virtualenv). +If you installed Home Assistant using a virtual environment then please read the instructions on [Installing python-OpenZWave in a virtualenv](https://home-assistant.io/docs/installation/virtualenv/#installing-python-openzwave-in-a-virtualenv). ### {% linkable_title Installation %} From b13b58567696649b050482a71d3e21956c09c6d3 Mon Sep 17 00:00:00 2001 From: Brian J King Date: Fri, 24 Mar 2017 16:26:45 -0500 Subject: [PATCH 11/20] Fix broken formatting for Telegram notification link (#2327) --- source/_cookbook/automation_telegram_presence_alert.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/automation_telegram_presence_alert.markdown b/source/_cookbook/automation_telegram_presence_alert.markdown index 634908943e..c31da51c22 100644 --- a/source/_cookbook/automation_telegram_presence_alert.markdown +++ b/source/_cookbook/automation_telegram_presence_alert.markdown @@ -12,7 +12,7 @@ ha_category: Automation Examples This will send a message when someone in your known devices list connects to your local network. In other words, when someone arrives home. It will only work if you are using the [nmap](/components/device_tracker.nmap_tracker/) device tracker or a similar component. -This example uses [/components/notify.telegram/](Telegram) to send the notification. +This example uses [Telegram](/components/notify.telegram/) to send the notification. ```yaml notify: From d5d3d637ac6f26658a1957d4a35eaf9d1283d4c3 Mon Sep 17 00:00:00 2001 From: Paul Annekov Date: Sat, 25 Mar 2017 10:28:02 +0200 Subject: [PATCH 12/20] Fixed restriction for MQTT Eventstream config (#2328) --- source/_components/mqtt_eventstream.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/mqtt_eventstream.markdown b/source/_components/mqtt_eventstream.markdown index 3d89fe244c..4c092f3dda 100644 --- a/source/_components/mqtt_eventstream.markdown +++ b/source/_components/mqtt_eventstream.markdown @@ -25,8 +25,8 @@ mqtt_eventstream: Configuration variables: -- **publish_topic** (*Required*): Topic for publishing local events -- **subscribe_topic** (*Required*): Topic to receive events from the remote server. +- **publish_topic** (*Optional*): Topic for publishing local events +- **subscribe_topic** (*Optional*): Topic to receive events from the remote server. ## Multiple Instances From 82c9798f102f598eee209ef28f166e5d389ca005 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 17:15:09 +0100 Subject: [PATCH 13/20] Minor updates --- source/_cookbook/apache_configuration.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_cookbook/apache_configuration.markdown b/source/_cookbook/apache_configuration.markdown index 65e6364bc2..594c5ac249 100644 --- a/source/_cookbook/apache_configuration.markdown +++ b/source/_cookbook/apache_configuration.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Apache Configuration" -description: "Configure Apache to work with home assistant as a subdomain" +description: "Configure Apache to work with Home Assistant as a subdomain" date: 2016-06-20 13:05 sidebar: true comments: false @@ -22,7 +22,7 @@ This is useful if you want to have: So you already have a working Apache server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123 -Enable [`mod_proxy_wstunnel`]((https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.htm) by running if you encounter issues while serving Home Assistant through your proxy: +Enable [`mod_proxy_wstunnel`](https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.htm) by running if you encounter issues while serving Home Assistant through your proxy: ```bash $ sudo a2enmod proxy_wstunnel From 8f1095fda0151c4a0fd20f99c4c1e448b4e7dba3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 19:19:33 +0100 Subject: [PATCH 14/20] Move infrastructure cookbooks to docs (#2331) * Move apache configuration to docs * Add redirect * Move certificate cookbooks to docs * Add redirect * Move tor configuration to docs * Fix extension * Update headings and add redirect * Move file to docs * Add redirect and remove whitespaces * Add new sections --- .../ecosystem/apache.markdown} | 4 ++-- .../ecosystem/backup/backup_github.markdown} | 8 +++---- .../tls_domain_certificate.markdown | 13 ++++++++--- .../tls_self_signed_certificate.markdown | 2 +- .../ecosystem/tor.markdown} | 22 +++++++++---------- source/_includes/asides/docs_navigation.html | 19 +++++++++++++--- 6 files changed, 43 insertions(+), 25 deletions(-) rename source/{_cookbook/apache_configuration.markdown => _docs/ecosystem/apache.markdown} (97%) rename source/{_cookbook/githubbackup.markdown => _docs/ecosystem/backup/backup_github.markdown} (98%) rename source/{_cookbook => _docs/ecosystem/certificates}/tls_domain_certificate.markdown (94%) rename source/{_cookbook => _docs/ecosystem/certificates}/tls_self_signed_certificate.markdown (97%) rename source/{_cookbook/tor_configuration.markdown => _docs/ecosystem/tor.markdown} (92%) diff --git a/source/_cookbook/apache_configuration.markdown b/source/_docs/ecosystem/apache.markdown similarity index 97% rename from source/_cookbook/apache_configuration.markdown rename to source/_docs/ecosystem/apache.markdown index 594c5ac249..e526cc3f79 100644 --- a/source/_cookbook/apache_configuration.markdown +++ b/source/_docs/ecosystem/apache.markdown @@ -1,13 +1,13 @@ --- layout: page -title: "Apache Configuration" +title: "Apache Proxy" description: "Configure Apache to work with Home Assistant as a subdomain" date: 2016-06-20 13:05 sidebar: true comments: false sharing: true footer: true -ha_category: Infrastructure +redirect_from: /cookbook/apache_configuration/ --- This example demonstrates how you can configure Apache to act as a proxy for Home Assistant. diff --git a/source/_cookbook/githubbackup.markdown b/source/_docs/ecosystem/backup/backup_github.markdown similarity index 98% rename from source/_cookbook/githubbackup.markdown rename to source/_docs/ecosystem/backup/backup_github.markdown index 5b46bdfa9d..2af70720c5 100644 --- a/source/_cookbook/githubbackup.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Infrastructure +redirect_from: /cookbook/githubbackup/ --- Backing up and regularly syncing your Home Assistant configuration to [GitHub](http://GitHub.com) has several benefits: @@ -149,7 +149,7 @@ Every time you run this script, you will be prompted for a comment to describe t [Travis CI](https://travis-ci.org) is a continuous integration testing system that runs every time the code in your repository is updated and allows you to validate that your code works on a fresh install. -- [Authorise Travis CI](https://travis-ci.org/auth) to have access to your github repos. +- [Authorise Travis CI](https://travis-ci.org/auth) to have access to your github repos. - Create the build script that travis will run to test your repo. - Create a dummy secrets.yaml for Travis. @@ -159,7 +159,7 @@ language: python python: - "3.4" before_install: - - mv travis_secrets.yaml secrets.yaml + - mv travis_secrets.yaml secrets.yaml install: - pip3 install homeassistant script: @@ -188,7 +188,7 @@ $ git status Examples: ```bash -homeassistant@raspberrypi:~/.homeassistant $ git ls-files +homeassistant@raspberrypi:~/.homeassistant $ git ls-files .gitignore README.md automation.yaml diff --git a/source/_cookbook/tls_domain_certificate.markdown b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown similarity index 94% rename from source/_cookbook/tls_domain_certificate.markdown rename to source/_docs/ecosystem/certificates/tls_domain_certificate.markdown index fb0d98e31f..91198ddd4f 100644 --- a/source/_cookbook/tls_domain_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown @@ -7,17 +7,19 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Infrastructure +redirect_from: /cookbook/tls_domain_certificate/ --- If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. You can use [Self-sign certificate](/cookbook/tls_self_signed_certificate/) but your browser will present a warning and some https-only features might not work. ### {% linkable_title Prerequirement for this guide %} + * Your Home Assistant instance is not exposed to the internet. If it is - use [this guide]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) * You control a public domain name. The domain doesn't have to point to a site. A domain controlled by a *trusted* friend will do. (A friend you trust not to MITM you) * Your home router supports custom DNS entries. ### {% linkable_title Run certbot %} + ```bash $ mkdir certbot $ cd certbot @@ -44,17 +46,21 @@ Press Enter to Continue ``` * Deploy the value to TXT field using your domain registar. - * Go to a site that queries domain record. For example [this one](https://mxtoolbox.com/TXTLookup.aspx) and look if it sees your brand new TXT field (Don't forget to enter the full domain: `_acme-challenge.mydomain.com`) * Press Enter at certbot prompt. ### {% linkable_title Make mydomain.com point to your Home Assistant instance %} + If your router uses DNSMasq (for example DDWRT) add the following line to DNSMasq options: -``` + +```text address=/mydomain.com/ ``` ### {% linkable_title Edit your Home Assistant configuration to use your certificates %} + +The [`http`](/components/http/) section must contain the full path to the needed files. + ```yaml http: api_password: YOUR_SECRET_PASSWORD @@ -62,4 +68,5 @@ http: ssl_certificate: /etc/letsencrypt/live/mydomain.com/fullchain.pem ssl_key: /etc/letsencrypt/live/mydomain.com/privkey.pem ``` + Make sure the files are accessible by the user that runs Home Assistant, eg. `homeassistant` for a HASSbian setup. diff --git a/source/_cookbook/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown similarity index 97% rename from source/_cookbook/tls_self_signed_certificate.markdown rename to source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index 61ced56bf5..9eb1035eab 100644 --- a/source/_cookbook/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Infrastructure +redirect_from: /cookbook/tls_self_signed_certificate/ --- If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. [Let's encrypt]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) will only work if you have a DNS entry and remote access is allowed. The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will conplain about the security. If you have a CA then this will not be an issue. diff --git a/source/_cookbook/tor_configuration.markdown b/source/_docs/ecosystem/tor.markdown similarity index 92% rename from source/_cookbook/tor_configuration.markdown rename to source/_docs/ecosystem/tor.markdown index 5bc371d176..c5fd98dc0e 100644 --- a/source/_cookbook/tor_configuration.markdown +++ b/source/_docs/ecosystem/tor.markdown @@ -7,12 +7,10 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Infrastructure -author: Nathan Freitas -author_twitter: n8fr8 +redirect_from: /cookbook/tor_configuration/ --- -This is an example about how you can configure Tor to provide secure remote access to your Home Assistant instance as an Onion site, through Tor's Hidden Service feature. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access. +This is an example about how you can configure Tor to provide secure remote access to your Home Assistant instance as an Onion site, through [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en) feature. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access. This is useful if you want to have: @@ -21,21 +19,19 @@ This is useful if you want to have: * Want to block attackers from even being able to access/scan your port and server at all * Want to block anyone from knowing your home IP address and seeing your traffic to your Home Assistant -#### {% linkable_title Background and Contact %} +## {% linkable_title Background and Contact %} This configuration is part of an effort to apply strong cryptography technologies (like Onion Routing and End-to-End Encryption) to technology we increasingly depend on in our day to day lives. Just like when WhatsApp enabled end-to-end encryption messaging for everyone, every home automation and IoT platform should do the same, because A) the technology is all there, freely licensed and open-source and B) up to this point, all the commercial manufacturers have been doing a horrific job with security. You can learn more about how Tor can be used to secure home automation and IoT platforms through this short set of slides on the [Internet of Onion Things](https://github.com/n8fr8/talks/blob/master/onion_things/Internet%20of%20Onion%20Things.pdf) -This configuration was provided by @n8fr8 ([github](https://github.com/n8fr8), [twitter](https://twitter.com/n8fr8)) of the [Guardian Project](https://guardianproject.info) and [Tor Project](https://torproject.org). You can send questions, feedback and ideas to [support@guardianproject.info](mailto:support@guardianproject.info). - -#### {% linkable_title Hidden Services and Onion Sites %} +## {% linkable_title Hidden Services and Onion Sites %} Tor allows clients and relays to offer hidden services. That is, you can offer a web server, SSH server, etc., without revealing your IP address to its users. In fact, because you don't use any public address, you can run a hidden service from behind your firewall. Learn more about Hidden Services on the [Tor Project website](https://www.torproject.org/docs/tor-hidden-service.html.en). Onion sites are websites that run on a Tor Hidden Service node. "dot onion" sites are an [IETF recognized special use domain name](https://datatracker.ietf.org/doc/rfc7686/). -#### {% linkable_title Setting up Tor on your Home Assistant %} +## {% linkable_title Setting up Tor on your Home Assistant %} First, install Tor. On a Debian-based system, you can install the package easily: @@ -82,7 +78,7 @@ abcdef1234567890.onion ABCDEF1122334455667789 # client: haremote1 You are now done with the Home Assistant Tor server configuration. Make sure your Home Assistant instance is running, and now you can move to client configuration. -#### {% linkable_title Tor Client Access Setup %} +## {% linkable_title Tor Client Access Setup %} Using this setup, you can access your Home Assistant instance over Tor from your laptop or mobile device, using Tor Browser and other software. @@ -100,7 +96,7 @@ For [Orbot: Tor on Android](https://guardianproject.info/apps/orbot), add it in On iOS, we have not fully tested this yet, but you should be able to add custom torrc entries on [Onion Browser](https://mike.tig.as/onionbrowser/), Red Onion or TOBY browsers, all available in the iTunes App Store. -#### {% linkable_title Some More Advanced Ideas %} +## {% linkable_title Some More Advanced Ideas %} With this configuration, only you can access your Home Assistant instance Onion site through Tor, and no one else. You can share the authentication cookie with multiple devices and users, or you can generate a unique one for each - up to you! If you have multiple, say for an industrial, business or corporate configuration, this would provide an easy way to revoke access to a specific user or device. @@ -109,4 +105,6 @@ If you always access your Home Assistant instance via Tor, you can easily run th You could also use Tor as a means to connect your Home Assistant instance to a remote device, sensor or other service that you do not want to or connect provide a direct, open IP connection to. Again, Tor provides authenticated and confidential routing (aka "privacy and encryption") by default, without having to setup TLS/SSL or VPN. It is just important to secure IoT nodes within your network, as it is to secure remote access! As mentioned, with Orbot on Android, you can enable a "full device" VPN mode, that allows any app you have to tunnel through Tor, even if it is not Tor or proxy aware. This means you should be able to enter your "dot onion" Onion site address into any app you want to access to your Home Assistant instance, and it should work. - + +This configuration was provided by @n8fr8 ([github](https://github.com/n8fr8), [twitter](https://twitter.com/n8fr8)) of the [Guardian Project](https://guardianproject.info) and [Tor Project](https://torproject.org). You can send questions, feedback and ideas to [support@guardianproject.info](mailto:support@guardianproject.info). + diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 570697ab60..4bbcd23b18 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -136,7 +136,6 @@

  • {% active_link /docs/ecosystem/appdaemon/api/ AppDaemon API Reference %}
  • -
  • {% active_link /docs/ecosystem/hadashboard/ HADashboard %}
      @@ -147,7 +146,6 @@
    • {% active_link /docs/ecosystem/hadashboard/updating/ Updating HADashboard %}
  • -
  • {% active_link /docs/ecosystem/notebooks/ Notebooks %}
      @@ -179,9 +177,24 @@
    • {% active_link /docs/ecosystem/ios/integration/ Integration with other apps %}
  • -
  • {% active_link /docs/ecosystem/nginx/ NGINX %}
  • +
  • + Remote access +
      +
    • {% active_link /docs/ecosystem/apache/ Apache %}
    • +
    • {% active_link /docs/ecosystem/nginx/ NGINX %}
    • +
    • {% active_link /docs/ecosystem/tor/ Tor Onion Service %}
    • +
    +
  • +
  • + Certificates +
      +
    • {% active_link /docs/ecosystem/certificates/tls_self_signed_certificate/ Self-signed certificate %}
    • +
    • {% active_link /docs/ecosystem/certificates/tls_domain_certificate/ Certificate domain owners %}
    • +
    +
  • {% active_link /docs/ecosystem/scenegen/ scenegen %}
  • {% active_link /docs/ecosystem/synology/ Synology %}
  • +
  • {% active_link /docs/ecosystem/backup/backup_github/ Backup to GitHub %}
  • From c7d85db2d959d956ab544ddccba7e2f6463cb6f6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 23:15:56 +0100 Subject: [PATCH 15/20] Update for 0.41 --- source/_components/ha.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown index 55c7dedd28..3871dc47cb 100644 --- a/source/_components/ha.markdown +++ b/source/_components/ha.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: home-assistant.png ha_category: Other -ha_release: 0.39 +ha_release: 0.41 --- Details about the latest release can always be found at: From e2bca5e45a6f96dde224aae13e64ad834e06d8a4 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 23:17:12 +0100 Subject: [PATCH 16/20] Update for 0.41 --- _config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index 7811973a16..65c2c38181 100644 --- a/_config.yml +++ b/_config.yml @@ -138,10 +138,10 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 40 -current_patch_version: 2 -date_released: 2017-03-22 +current_minor_version: 41 +current_patch_version: 0 +date_released: 2017-03-25 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. -patch_version_notes: "#release-0402---march-22" +#patch_version_notes: "#release-0411---march-xx" From 4a9b2af7ffd5f5f6a78a0c98b69d506224325ef0 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 23:21:21 +0100 Subject: [PATCH 17/20] Update title --- source/_components/ha.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown index 3871dc47cb..a9afd2719c 100644 --- a/source/_components/ha.markdown +++ b/source/_components/ha.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Home Assistant 0.39" +title: "Home Assistant 0.41" description: "" date: 2016-12-16 17:00 sidebar: true From 5a876d6dd3132a20a216e369fed8cfb3920f3902 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 25 Mar 2017 23:38:56 +0100 Subject: [PATCH 18/20] Add blog post for 0.41 --- .../2017-03-25-todo-volumio-workday.markdown | 353 ++++++++++++++++++ source/images/blog/2017-03-0.41/social.png | Bin 0 -> 28289 bytes 2 files changed, 353 insertions(+) create mode 100644 source/_posts/2017-03-25-todo-volumio-workday.markdown create mode 100644 source/images/blog/2017-03-0.41/social.png diff --git a/source/_posts/2017-03-25-todo-volumio-workday.markdown b/source/_posts/2017-03-25-todo-volumio-workday.markdown new file mode 100644 index 0000000000..3b10ea18e2 --- /dev/null +++ b/source/_posts/2017-03-25-todo-volumio-workday.markdown @@ -0,0 +1,353 @@ +--- +layout: post +title: "Home Assistant 0.41: Tado, Volumio, Workday, improved Plex" +description: "Improved Pley media player, filtering components overview, Tado and Volumio platform" +date: 2017-03-25 08:04:05 +0000 +date_formatted: "March 25, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2017-03-0.41/social.png +--- + +Welcome to 0.41. There was a lot going on in the last two weeks. Not only from the code side but also from the social one of Home Assistant. [Paulus][@balloob] did an [interview] with [OpenSourceCraft], [Fabian][@fabaff] did a [workshop] at the [Chemnitzer Linux Tage][clt], and we are now an award-winning Open source project (I will cover that in a separate blog post). + +## Plex +[@JesseWebDotCom] made massive changes to the [Plex][plex] media player platform. From better metadata support over new configuration options to improved controls and non-controllable clients. + +## Component overview +The [Components][components] overview is now powered by search/filtering feature. This will make it faster to get the component/platform you are looking for more quickly. Thanks again, [@bdurrer] for this. + + ## Changelog +The new format of the changelog which was introduced with 0.40 will provide a link to the related pull request. We are not covering everything in our release notes but we think that this addition will make it easier to find details about the change. + +## New platforms/components + +- Support for [Tado][tado] climate devices ([@wmalgadey]) +- [Volumio][volumio] media player added ([@jslove]) +- [Workday][workday] sensor ([@BastianPoe]) + +## Breaking changes + +- The [Kodi notifier][kodi] platform was migrated to async and the configuration synced with the Kodi media player platform ([#6497]). +- For the [Music Player Daemon][mpd] (MPD) platform was `location` replaced with `name` ([#6553]). +- Event decorators were removed ([#6634]). +- The [Emby mediaplayer][emby] platform was changed to avoid name clashes ([#6664]). +- In a lot of places were the power and energy units update. This change mostly affects the `switch` platforms ([#6212]). +- If set to `auto` then the [MQTT][mqtt] implementation will use the bundled certificates automatically ([#6707]). + +## If you need help... +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## Reporting Issues +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + +## All changes + +- Bugfix android camera autodiscovery settings ([@pvizeli] - [#6510]) +- Insteon lib ([@wardcraigj] - [#6505]) +- Update to Pyunifi2.0 ([@finish06] - [#6490]) +- Insteon lib ([@wardcraigj] - [#6505]) +- Don't allow sending to invalid iOS targets ([@robbiet480] - [#6115]) +- Bugfix rpi_rf cleanup ([@pvizeli] - [#6513]) +- Include LICENSE.md in tarball ([@bachp] - [#6514]) +- Android webcam better error handling / pump library 0.4 ([@pvizeli] - [#6518]) +- Fix mysensors gateway windows setup ([@MartinHjelmare] - [#6500]) +- Update frontend ([@balloob]) +- Remove mint finance sensor ([@balloob] - [#6522]) +- Append vera device id to entity id - but not name. ([@pavoni] - [#6523]) +- Force update support for MQTT sensor ([@vrnagy] - [#6492]) +- Wink scene(shortcut) support ([@w1ll1am23] - [#6147]) +- Add type configuration in history_stats ([@bokub] - [#6430]) +- Discovery is a dict rather than an array. ([@pavoni] - [#6525]) +- Fix colortemp conversion for osramlightify ([@amelchio] - [#6516]) +- Update Kodi notifier to async ([@armills] - [#6497]) (Breaking Change) +- Fix mysensors gateway windows setup ([@MartinHjelmare] - [#6500]) +- Fix colortemp conversion for osramlightify ([@amelchio] - [#6516]) +- Remove mint finance sensor ([@balloob] - [#6522]) +- Append vera device id to entity id - but not name. ([@pavoni] - [#6523]) +- Discovery is a dict rather than an array. ([@pavoni] - [#6525]) +- Version bump to 0.41.0.dev0 ([@lwis]) +- Simplify Android IP webcam discovery ([@balloob] - [#6528]) +- Fix gen_requirements_all.py script for Windows. ([@siebert] - [#6547]) +- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) +- Be able to select mqtt:tls_version for Python ([@dennisdegreef] - [#6442]) +- ZWave binary sensor tests ([@armills] - [#6555]) +- Refactor zwave discovery to entity schema ([@armills] - [#6445]) +- Revert "Refactor zwave discovery to entity schema (#6445)" ([@balloob] - [#6564]) +- Upgraded blinkpy version, increased Throttle time for camera ([@fronzbot] - [#6561]) +- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) +- Bump voc version (fixes heater bug) ([@molobrakos]) +- Remove dispatcher camera ([@pvizeli] - [#6579]) +- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) +- Fix hydroquebec ([@titilambert] - [#6574]) +- Upgrade async_timeout to 1.2.0 ([@fabaff] - [#6590]) +- Upgrade pyasn1 to 0.2.3 ([@fabaff] - [#6588]) +- Upgrade sqlalchemy to 1.1.6 ([@fabaff] - [#6591]) +- Upgrade psutil to 5.2.0 ([@fabaff] - [#6585]) +- Upgrade Sphinx to 1.5.3 ([@fabaff] - [#6587]) +- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) +- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) +- Fix link ([@fabaff] - [#6612]) +- Upgrade py-cpuinfo to 0.2.7 ([@fabaff] - [#6610]) +- Upgrade googlemaps to 2.4.6 ([@fabaff] - [#6611]) +- Error handling when connection refused ([@molobrakos] - [#6614]) +- Prevent entities running multiple updates simultaneously ([@pvizeli] - [#6511]) +- Add configurable timeout option to notify/smtp ([@hawk259] - [#6609]) +- Define db for SHOW DIAGNOSTICS query since some users will not have a… ([@tflack] - [#6566]) +- Cover myq fix update pymyq ([@arraylabs] - [#6595]) +- Update mpd.py ([@yeralin] - [#6553]) (Breaking Change) +- Upgrade to dsmr_parser 0.8, supporting protocol 3 and 5. ([@aequitas] - [#6600]) +- Add "Refactor zwave discovery to entity schema" ([@balloob] - [#6565]) +- Tests for ZWave climate ([@armills] - [#6629]) +- Correctly flag Kodi media types ([@armills] - [#6628]) +- since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626]) +- Use sqlite's WAL mode to avoid `database is locked` errors ([@n8henrie] - [#6519]) +- Remove event decorators ([@balloob] - [#6634]) (Breaking Change) +- Deprecate event forwarding ([@balloob]) +- Upgrade aiohttp to 1.3.4 ([@pvizeli] - [#6643]) +- media_player.kodi extra attributes for tvshow and music media ([@mvillarejo] - [#6622]) +- Add ZWave cover tests ([@armills] - [#6648]) +- Kodi: Fix episode media type classification ([@armills] - [#6645]) +- Move LIFX to aiolifx for driving the bulbs ([@amelchio] - [#6584]) +- Fix #6534 ([@deisi] - [#6598]) +- self.loop.create_task -> self.add_job ([@balloob] - [#6632]) +- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) +- Version bump to 0.40.1 ([@balloob]) +- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) +- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) +- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) +- Fix hydroquebec ([@titilambert] - [#6574]) +- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) +- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) +- since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626]) +- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) +- Added workday sensor ([@BastianPoe] - [#6599]) +- Add test for Z-wave switch ([@turbokongen] - [#6619]) +- Upgrade python-digitalocean to 1.11 ([@fabaff] - [#6653]) +- Add Zwave sensors test ([@turbokongen] - [#6640]) +- round output values ([@joe248] - [#6657]) +- Support for non-clients, NVidia shield, dynamic grouping, extra metad ([@JesseWebDotCom] - [#6054]) +- Upgrade astral to 1.4 ([@fabaff] - [#6332]) +- Upgrade aiohttp to 1.3.5 ([@fabaff] - [#6660]) +- Check if droplet exists ([@fabaff] - [#6663]) +- Corrected help text for refresh_node ([@sebk-666] - [#6659]) +- Add configurable timeout option to camera.synology ([@hawk259] - [#6655]) +- Pump Android ip webcam to 0.6 ([@pvizeli] - [#6665]) +- add latitude and longitude configuration to darksky sensor ([@RickyTaterSalad] - [#6191]) +- Refactor Neurio to add Daily Power Sensor ([@mezz64] - [#6662]) +- Added support for multiple efergy sensors in the same household. ([@miniconfig] - [#6630]) +- Add new media_player platform: Volumio Media Player ([@jslove] - [#6556]) +- Phone book lookup support for Fritz!Box call monitor ([@DavidMStraub] - [#6474]) +- Update Emby component to async ([@mezz64] - [#6664]) +- Fix hass script execution on Windows (#4977). ([@matrixx567] - [#6601]) +- Fixed Show All Controls feature ([@JesseWebDotCom]) +- Update Torque component to match recent API. ([@tylercrumpton] - [#6671]) +- Rflink: added support for lights with toggle type ([@martinfrancois] - [#6521]) +- Upgrade distro to 1.0.3 ([@fabaff] - [#6693]) +- Fix longitude ([@mezz64] - [#6697]) +- Bump PyChromecast to 0.8.1 ([@balloob] - [#6702]) +- Kodi use websocket loop task created by library ([@armills] - [#6703]) +- Fix Kodi when websocket is disabled ([@armills] - [#6706]) +- Revise power and energy units and property names. ([@pavoni] - [#6212]) (Breaking Change) +- automatically use bundled certificate it set to auto ([@printzlau] - [#6707]) (Breaking Change) +- Update frontend ([@balloob]) +- Add zwave light tests ([@armills] - [#6710]) +- restore_state: do not crash if domain not defined ([@balloob] - [#6714]) +- Fix for issue: luci returns 403 invalid token when rebooted #6715 ([@fbradyirl] - [#6717]) +- Don't warn if octoprint completion is null ([@jawilson] - [#6719]) +- ZWave Sensor tests ([@armills] - [#6721]) +- ZWave switch tests ([@armills] - [#6722]) +- Update frontend ([@balloob]) +- Fix LIFX unregister races ([@amelchio] - [#6723]) +- Do not log warning on rest_command if no error ([@balloob] - [#6713]) +- camera.zoneminder: Show recording state ([@mnoorenberghe] - [#6686]) +- ZWave Lock Tests ([@armills] - [#6730]) +- Tado climate device ([@wmalgadey] - [#6572]) +- Version bump to 0.40.2 ([@balloob]) +- Bump PyChromecast to 0.8.1 ([@balloob] - [#6702]) +- Constrain core dependencies to core versions ([@balloob] - [#6738]) +- Update constraints ([@balloob]) +- Adds Support for Lutron Caseta devices. ([@gurumitts] - [#6631]) +- Add sensor for Lyft time and price (based on Uber sensor) ([@drkp] - [#6711]) +- Add zwave per-node entity. ([@andrey-git] - [#6690]) +- Version bump to 0.41 ([@balloob]) + +[#6054]: https://github.com/home-assistant/home-assistant/pull/6054 +[#6115]: https://github.com/home-assistant/home-assistant/pull/6115 +[#6147]: https://github.com/home-assistant/home-assistant/pull/6147 +[#6191]: https://github.com/home-assistant/home-assistant/pull/6191 +[#6212]: https://github.com/home-assistant/home-assistant/pull/6212 +[#6332]: https://github.com/home-assistant/home-assistant/pull/6332 +[#6430]: https://github.com/home-assistant/home-assistant/pull/6430 +[#6442]: https://github.com/home-assistant/home-assistant/pull/6442 +[#6445]: https://github.com/home-assistant/home-assistant/pull/6445 +[#6474]: https://github.com/home-assistant/home-assistant/pull/6474 +[#6490]: https://github.com/home-assistant/home-assistant/pull/6490 +[#6492]: https://github.com/home-assistant/home-assistant/pull/6492 +[#6497]: https://github.com/home-assistant/home-assistant/pull/6497 +[#6500]: https://github.com/home-assistant/home-assistant/pull/6500 +[#6505]: https://github.com/home-assistant/home-assistant/pull/6505 +[#6510]: https://github.com/home-assistant/home-assistant/pull/6510 +[#6511]: https://github.com/home-assistant/home-assistant/pull/6511 +[#6513]: https://github.com/home-assistant/home-assistant/pull/6513 +[#6514]: https://github.com/home-assistant/home-assistant/pull/6514 +[#6516]: https://github.com/home-assistant/home-assistant/pull/6516 +[#6518]: https://github.com/home-assistant/home-assistant/pull/6518 +[#6519]: https://github.com/home-assistant/home-assistant/pull/6519 +[#6521]: https://github.com/home-assistant/home-assistant/pull/6521 +[#6522]: https://github.com/home-assistant/home-assistant/pull/6522 +[#6523]: https://github.com/home-assistant/home-assistant/pull/6523 +[#6525]: https://github.com/home-assistant/home-assistant/pull/6525 +[#6528]: https://github.com/home-assistant/home-assistant/pull/6528 +[#6532]: https://github.com/home-assistant/home-assistant/pull/6532 +[#6547]: https://github.com/home-assistant/home-assistant/pull/6547 +[#6552]: https://github.com/home-assistant/home-assistant/pull/6552 +[#6553]: https://github.com/home-assistant/home-assistant/pull/6553 +[#6555]: https://github.com/home-assistant/home-assistant/pull/6555 +[#6556]: https://github.com/home-assistant/home-assistant/pull/6556 +[#6561]: https://github.com/home-assistant/home-assistant/pull/6561 +[#6564]: https://github.com/home-assistant/home-assistant/pull/6564 +[#6565]: https://github.com/home-assistant/home-assistant/pull/6565 +[#6566]: https://github.com/home-assistant/home-assistant/pull/6566 +[#6572]: https://github.com/home-assistant/home-assistant/pull/6572 +[#6574]: https://github.com/home-assistant/home-assistant/pull/6574 +[#6577]: https://github.com/home-assistant/home-assistant/pull/6577 +[#6579]: https://github.com/home-assistant/home-assistant/pull/6579 +[#6580]: https://github.com/home-assistant/home-assistant/pull/6580 +[#6584]: https://github.com/home-assistant/home-assistant/pull/6584 +[#6585]: https://github.com/home-assistant/home-assistant/pull/6585 +[#6587]: https://github.com/home-assistant/home-assistant/pull/6587 +[#6588]: https://github.com/home-assistant/home-assistant/pull/6588 +[#6590]: https://github.com/home-assistant/home-assistant/pull/6590 +[#6591]: https://github.com/home-assistant/home-assistant/pull/6591 +[#6593]: https://github.com/home-assistant/home-assistant/pull/6593 +[#6595]: https://github.com/home-assistant/home-assistant/pull/6595 +[#6598]: https://github.com/home-assistant/home-assistant/pull/6598 +[#6599]: https://github.com/home-assistant/home-assistant/pull/6599 +[#6600]: https://github.com/home-assistant/home-assistant/pull/6600 +[#6601]: https://github.com/home-assistant/home-assistant/pull/6601 +[#6602]: https://github.com/home-assistant/home-assistant/pull/6602 +[#6609]: https://github.com/home-assistant/home-assistant/pull/6609 +[#6610]: https://github.com/home-assistant/home-assistant/pull/6610 +[#6611]: https://github.com/home-assistant/home-assistant/pull/6611 +[#6612]: https://github.com/home-assistant/home-assistant/pull/6612 +[#6614]: https://github.com/home-assistant/home-assistant/pull/6614 +[#6619]: https://github.com/home-assistant/home-assistant/pull/6619 +[#6622]: https://github.com/home-assistant/home-assistant/pull/6622 +[#6626]: https://github.com/home-assistant/home-assistant/pull/6626 +[#6628]: https://github.com/home-assistant/home-assistant/pull/6628 +[#6629]: https://github.com/home-assistant/home-assistant/pull/6629 +[#6630]: https://github.com/home-assistant/home-assistant/pull/6630 +[#6631]: https://github.com/home-assistant/home-assistant/pull/6631 +[#6632]: https://github.com/home-assistant/home-assistant/pull/6632 +[#6634]: https://github.com/home-assistant/home-assistant/pull/6634 +[#6640]: https://github.com/home-assistant/home-assistant/pull/6640 +[#6643]: https://github.com/home-assistant/home-assistant/pull/6643 +[#6645]: https://github.com/home-assistant/home-assistant/pull/6645 +[#6648]: https://github.com/home-assistant/home-assistant/pull/6648 +[#6653]: https://github.com/home-assistant/home-assistant/pull/6653 +[#6655]: https://github.com/home-assistant/home-assistant/pull/6655 +[#6657]: https://github.com/home-assistant/home-assistant/pull/6657 +[#6659]: https://github.com/home-assistant/home-assistant/pull/6659 +[#6660]: https://github.com/home-assistant/home-assistant/pull/6660 +[#6662]: https://github.com/home-assistant/home-assistant/pull/6662 +[#6663]: https://github.com/home-assistant/home-assistant/pull/6663 +[#6664]: https://github.com/home-assistant/home-assistant/pull/6664 +[#6665]: https://github.com/home-assistant/home-assistant/pull/6665 +[#6671]: https://github.com/home-assistant/home-assistant/pull/6671 +[#6686]: https://github.com/home-assistant/home-assistant/pull/6686 +[#6690]: https://github.com/home-assistant/home-assistant/pull/6690 +[#6693]: https://github.com/home-assistant/home-assistant/pull/6693 +[#6697]: https://github.com/home-assistant/home-assistant/pull/6697 +[#6702]: https://github.com/home-assistant/home-assistant/pull/6702 +[#6703]: https://github.com/home-assistant/home-assistant/pull/6703 +[#6706]: https://github.com/home-assistant/home-assistant/pull/6706 +[#6707]: https://github.com/home-assistant/home-assistant/pull/6707 +[#6710]: https://github.com/home-assistant/home-assistant/pull/6710 +[#6711]: https://github.com/home-assistant/home-assistant/pull/6711 +[#6713]: https://github.com/home-assistant/home-assistant/pull/6713 +[#6714]: https://github.com/home-assistant/home-assistant/pull/6714 +[#6717]: https://github.com/home-assistant/home-assistant/pull/6717 +[#6719]: https://github.com/home-assistant/home-assistant/pull/6719 +[#6721]: https://github.com/home-assistant/home-assistant/pull/6721 +[#6722]: https://github.com/home-assistant/home-assistant/pull/6722 +[#6723]: https://github.com/home-assistant/home-assistant/pull/6723 +[#6730]: https://github.com/home-assistant/home-assistant/pull/6730 +[#6738]: https://github.com/home-assistant/home-assistant/pull/6738 +[#6664]: https://github.com/home-assistant/home-assistant/pull/6664 +[@BastianPoe]: https://github.com/BastianPoe +[@DavidMStraub]: https://github.com/DavidMStraub +[@JesseWebDotCom]: https://github.com/JesseWebDotCom +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@RickyTaterSalad]: https://github.com/RickyTaterSalad +[@aequitas]: https://github.com/aequitas +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@arraylabs]: https://github.com/arraylabs +[@bachp]: https://github.com/bachp +[@balloob]: https://github.com/balloob +[@bokub]: https://github.com/bokub +[@dale3h]: https://github.com/dale3h +[@deisi]: https://github.com/deisi +[@dennisdegreef]: https://github.com/dennisdegreef +[@drkp]: https://github.com/drkp +[@fabaff]: https://github.com/fabaff +[@fbradyirl]: https://github.com/fbradyirl +[@finish06]: https://github.com/finish06 +[@fronzbot]: https://github.com/fronzbot +[@goofz]: https://github.com/goofz +[@gurumitts]: https://github.com/gurumitts +[@hawk259]: https://github.com/hawk259 +[@iamtpage]: https://github.com/iamtpage +[@jawilson]: https://github.com/jawilson +[@jnewland]: https://github.com/jnewland +[@joe248]: https://github.com/joe248 +[@jslove]: https://github.com/jslove +[@kellerza]: https://github.com/kellerza +[@lwis]: https://github.com/lwis +[@martinfrancois]: https://github.com/martinfrancois +[@matrixx567]: https://github.com/matrixx567 +[@mezz64]: https://github.com/mezz64 +[@miniconfig]: https://github.com/miniconfig +[@mnoorenberghe]: https://github.com/mnoorenberghe +[@molobrakos]: https://github.com/molobrakos +[@mvillarejo]: https://github.com/mvillarejo +[@n8henrie]: https://github.com/n8henrie +[@pavoni]: https://github.com/pavoni +[@printzlau]: https://github.com/printzlau +[@pvizeli]: https://github.com/pvizeli +[@robbiet480]: https://github.com/robbiet480 +[@sebk-666]: https://github.com/sebk-666 +[@siebert]: https://github.com/siebert +[@tflack]: https://github.com/tflack +[@titilambert]: https://github.com/titilambert +[@turbokongen]: https://github.com/turbokongen +[@tylercrumpton]: https://github.com/tylercrumpton +[@vrnagy]: https://github.com/vrnagy +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@wmalgadey]: https://github.com/wmalgadey +[@yeralin]: https://github.com/yeralin + +[components]: https://home-assistant.io/components/ +[kodi]: https://home-assistant.io/components/notify.kodi/ +[mpd]: https://home-assistant.io/components/media_player.mpd/ +[emby]: https://home-assistant.io/components/media_player.emby/ +[mqtt]: https://home-assistant.io/docs/mqtt/ +[plex]: https://home-assistant.io/components/media_player.plex/ +[tado]: https://home-assistant.io/components/climate.tado/ +[volumio]: https://home-assistant.io//components/media_player.volumio/ +[workday]: https://home-assistant.io/components/binary_sensor.workday/ + +[forum]: https://community.home-assistant.io/ +[gitter]: https://gitter.im/home-assistant/home-assistant +[issue]: https://github.com/home-assistant/home-assistant/issues + +[@bdurrer]: https://github.com/bdurrer +[interview]: https://home-assistant.io/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/ +[OpenSourceCraft]: http://codepop.com/open-sourcecraft +[clt]: https://chemnitzer.linux-tage.de/2017/en/ +[workshop]: https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop diff --git a/source/images/blog/2017-03-0.41/social.png b/source/images/blog/2017-03-0.41/social.png new file mode 100644 index 0000000000000000000000000000000000000000..1141e907f2c887d3ed44de2d285826935197c203 GIT binary patch literal 28289 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 z zw$1x2_dP&y{9tHuvPrf8?CEgaq~i@oK0ZF;&=nOG>qqPeQ=O%yB~x)vc+3}}S{S}I zkcf;&OMCX(wa6Y9lm|i@f=-9b3xR-Gz@V1oxF79Dx(9c+vW%+&cMB-iDkQF53=A7@ z+_-W6AOqZd?%s$fRdQQPD|s?e~QJI6YU|CPcBLp0q#mLdGDel&`R;2>l)AFU(T3w6rXiE$U)$ zqumbC6v(bd05hLUhaDfp&y^cDHp9=d^Znz|QDX#!J``T>5iQZ3@>Ye-MsEx#+cMM| zqi3fYVISEOVQ^nwuP{>KhHyLb9Z24p^-&rvTzf2c@72+fw|Y+3Y~L2_ zyE=V(1KL<;aU8vB8T*;0`|Y^!db_>b?Al+Nb1wnyup*%Ru##a=>8 zlC|1SM*F;y6REt=ou;5R5Wcg_Odoh(v4(0EG4Mpe$mkGswhh4wRB+p2uLLQV-251- z6YJ4frP^Pv&Jm4eOjrxq-T?NY5StXXEDh+cT@RwF)vL z%Jl;eggbKv-C?rB{52w*+Lf{a1c=}L{k&$*NQ4D8zeS!0zWqnb_{yWkj$EXaJ&c9f zSdZYamv`*gL0BF&*fbxGgE0n|OQcF-L9~AEx?gR?3UzM?8YNyZ)ASOV12WWNg>2N7 zgxjoRDV-sdFb6~O+~dMm9k*hO{v=?rPL&wBn^*nE)%8 zWj)-I#`)2J5nql1A;RtISKunJX_~7_b%S&d#3=5c(pURPs+k>bWpVA@-KO&e?>m2q zFw=Uc?M4cO8Y*wZ;`^(hHjrxgdr#iHc@x>l8#zZNZs6K(0gxRhb3&BU z#yfnN<*iZ?4Di=}IsufTkkU5cTK147Lv0%h^jb$=G}ClK~rds zJ%5-%S0e$6nC~#oShKu+`)8NGv=d)rdf~YGe97o=?111~C?ywjN-+_JKq zNKK|zR<(c(w?Der^^IpwV7fy@RMfMI3J!cEETQ=^mvRpo^FO+fD(<-^HJDZT{Q3K= z9>&&0E<&Ne%xNr5XxT)%O;E1O*$r+P`7351{l2d+A)4c6>jpi2@q&hhg(W>B<0mDf zoJWPT&=FAqtb^-ygrDCRGS2#R)%Bu?+ZVmPy%*!2Wxv=6;`KNTQumSnEBfyY=r609 z2-oIfLn6X88Pq5a9gA$(`h8jX=R=d}p}m&1EiLrH!NDj|*xK%c27Rg$vxB-<-oBNC zRHp~$RE&(fOYtD&4d00gi;4cy-NOP~(+k8|AzKC(Ba)3F6BoEcdW_-LsRJSw#RtW>{YLsZmmH1W0y=hw%1iQ@|p z_j8LkVlpunGgHm@^y16VR<6#U_GJQmCm)E)FNb^$3R~;C6~AX)I1vAo!Qwx%W}vzt zW`<}(5bkzZTe2GT<*5!2YPiR7( z0s;~JAG$i^JgcA040b&E#l`-BkWx}oLtyL+^;5(TJYV>iz9_0?X_b+BjlJo)s~#sf znl0Wr9Y|eFYCpUzxEj4?UhNtBVcWYH%T(`}uLfDeQf5KIXzI|vAzD%(Inwx4Suk9b z4=@7kL%FcAvGKz0!i0nbjaGsp5o0v*{Ub}9t&WrJ;Sv?9UY};uofF})+7cx$TK->V11wSQ8t39wmV!SahST^CInqDp Ll+R|%>w5nmzIqa5 literal 0 HcmV?d00001 From fc4a4cece9aa6883c60f6afc7e37a74b8ef814ad Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Sat, 25 Mar 2017 23:58:59 +0100 Subject: [PATCH 19/20] Added more information to the RFY part of cover.rfxtrx.markdown (#2332) * Update cover.rfxtrx.markdown Added information that is needed if you set up RFY with single digit code. If the code is not supplemented with `0` HA will throw out an error. * Update cover.rfxtrx.markdown Was missing an 0 in the example --- source/_components/cover.rfxtrx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cover.rfxtrx.markdown b/source/_components/cover.rfxtrx.markdown index afa9e70ca3..6eeb9dbcb1 100644 --- a/source/_components/cover.rfxtrx.markdown +++ b/source/_components/cover.rfxtrx.markdown @@ -42,7 +42,7 @@ cover: ##### {% linkable_title RFY %} -The [RFXtrx433e](http://www.rfxcom.com/RFXtrx433E-USB-43392MHz-Transceiver/en) is required for RFY support, however it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the [rfxmngr](http://www.rfxcom.com/downloads.htm) tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id `071a0000[id][unit_code]`. Eg, if the id was `0a` `00` `01`, and the unit code was `01` then the fully qualified id would be `071a00000a000101`. +The [RFXtrx433e](http://www.rfxcom.com/RFXtrx433E-USB-43392MHz-Transceiver/en) is required for RFY support, however it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the [rfxmngr](http://www.rfxcom.com/downloads.htm) tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id `071a0000[id][unit_code]`. Eg, if the id was `0a` `00` `01`, and the unit code was `01` then the fully qualified id would be `071a00000a000101`, if you set your id/code to single digit in the rfxmngr eg, id: `1` `02` `04` and unit code: `1` you will need to add `0` before, so `102031` becomes `071a000001020301`. ##### {% linkable_title Common %} From 52e00c011c40b8207c294046efd1d85770f11757 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Sat, 25 Mar 2017 23:59:50 +0100 Subject: [PATCH 20/20] Added links (#2333) Added links to the components used in the example, like in the others --- source/_cookbook/dim_lights_when_playing_media.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_cookbook/dim_lights_when_playing_media.markdown b/source/_cookbook/dim_lights_when_playing_media.markdown index 89a7700f51..e0b0859193 100644 --- a/source/_cookbook/dim_lights_when_playing_media.markdown +++ b/source/_cookbook/dim_lights_when_playing_media.markdown @@ -12,7 +12,7 @@ ha_category: Automation Examples Like it how the lights dim up/down at the movies? Do it at home as well! -This example uses the media player, Philips Hue (transitions) and the sun component. We'll use actions to detect media player state changes and scenes to control multiple lights, color settings and transition between scenes. +This example uses the [media player](https://home-assistant.io/components/media_player/), [Philips Hue](https://home-assistant.io/components/light.hue/) (transitions) and the [sun](https://home-assistant.io/components/sun/) component. We'll use actions to detect media player state changes and scenes to control multiple lights, color settings and transition between scenes. #### {% linkable_title Scenes %} One scene for normal light, one for when movies are on. A 2 second transition gives a nice 'feel' to the switch.