From b753bf7eba3a8d2c9ca1d3a660f9707073cfb572 Mon Sep 17 00:00:00 2001 From: Flavio Castelli Date: Sun, 31 Jan 2016 23:59:10 +0100 Subject: [PATCH 001/601] Add documentation about SCSGate Signed-off-by: Flavio Castelli --- source/_components/light.scsgate.markdown | 29 ++++++++++++++++ .../rollershutter.scsgate.markdown | 30 +++++++++++++++++ source/_components/scsgate.markdown | 33 +++++++++++++++++++ source/_components/switch.scsgate.markdown | 29 ++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 source/_components/light.scsgate.markdown create mode 100644 source/_components/rollershutter.scsgate.markdown create mode 100644 source/_components/scsgate.markdown create mode 100644 source/_components/switch.scsgate.markdown diff --git a/source/_components/light.scsgate.markdown b/source/_components/light.scsgate.markdown new file mode 100644 index 00000000000..9100c6c418e --- /dev/null +++ b/source/_components/light.scsgate.markdown @@ -0,0 +1,29 @@ +--- +layout: component +title: "SCSGate light" +description: "Instructions how to integrate SCSGate lights into Home Assistant." +date: 2016-01-31 19:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +--- + +The SCSGate device can control lights of the BTicino MyHome system. + +To enable SCSGate lights in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + platform: scsgate + devices: + living_room: + name: Living Room + scs_id: XXXXX +``` + +Configuration variables: + +- **devices** (*Required*): A list of devices with their name to use in the frontend. diff --git a/source/_components/rollershutter.scsgate.markdown b/source/_components/rollershutter.scsgate.markdown new file mode 100644 index 00000000000..cc45deaf1f6 --- /dev/null +++ b/source/_components/rollershutter.scsgate.markdown @@ -0,0 +1,30 @@ +--- +layout: component +title: "SCSGate Rollershutter" +description: "Instructions how to integrate SCSGate motorized devices into Home Assistant." +date: 2016-01-31 22:16 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Rollershutter +--- +The SCSGate device can control motirized roller shutters connected to the BTicino MyHome system. + +To enable SCSGate roller shutters in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +rollershutter: + platform: scsgate + devices: + living_room: + name: Living Room + scs_id: XXXXX +``` + +Configuration variables: + +- **devices** (*Required*): A list of devices with their name to use in the frontend. + +**Known limitation:** it is not possible to know the current state of the roller shutter. diff --git a/source/_components/scsgate.markdown b/source/_components/scsgate.markdown new file mode 100644 index 00000000000..809afd3e8a9 --- /dev/null +++ b/source/_components/scsgate.markdown @@ -0,0 +1,33 @@ +--- +layout: component +title: "SCSGate" +description: "Instructions how to integrate SCSGate into Home Assistant." +date: 2016-01-31 19:20 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +--- + +The SCSGate component support the [SCSGate](https://translate.google.com/translate?hl=en&sl=it&tl=en&u=http%3A%2F%2Fguidopic.altervista.org%2Feibscsgt%2Finterface.html) device. This a homebrew device allows to interact with the MyHome system from BTicino/Legrande. + +To enable SCSGate in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +scsgate: + device: PATH_TO_DEVICE +``` + +Configuration variables: + +- **device** (*Required*): The path to your device, e.g. `/dev/ttyACM0` + +### How to find the scs_id for your devices + +The SCSGate component relies on the [scsgate](https://github.com/flavio/scsgate) python module. + +This module provides also a command line tool called `scs-monitor`. This program can be used to find the IDs of your lights, switches and roller shutters and produce the YAML snippet to insert into your `configuration.yaml` file. + +For more information checkout [this](http://scsgate.readthedocs.org/en/latest/?badge=latest#creation-of-a-home-assistant-configuration-file) section of `scsgate`'s documentation. diff --git a/source/_components/switch.scsgate.markdown b/source/_components/switch.scsgate.markdown new file mode 100644 index 00000000000..c68bef07832 --- /dev/null +++ b/source/_components/switch.scsgate.markdown @@ -0,0 +1,29 @@ +--- +layout: component +title: "SCSGate switch" +description: "Instructions how to integrate SCSGate switches into Home Assistant." +date: 2016-01-31 22:15 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +--- + +The SCSGate device can control switches of the BTicino MyHome system. + +To enable SCSGate switches in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: scsgate + devices: + living_room: + name: Living Room + scs_id: XXXXX +``` + +Configuration variables: + +- **devices** (*Required*): A list of devices with their name to use in the frontend. From 71b492e48c3751a07475c473f40cee7c6b46da56 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 1 Feb 2016 20:59:34 +0100 Subject: [PATCH 002/601] Add initial samsung tv docs --- .../media_player.samsungtv.markdown | 25 ++++++++++++++++++ source/images/supported_brands/samsung.png | Bin 0 -> 18271 bytes 2 files changed, 25 insertions(+) create mode 100644 source/_components/media_player.samsungtv.markdown create mode 100644 source/images/supported_brands/samsung.png diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown new file mode 100644 index 00000000000..faf86d88176 --- /dev/null +++ b/source/_components/media_player.samsungtv.markdown @@ -0,0 +1,25 @@ +--- +layout: component +title: "Samsung TV" +description: "Instructions how to integrate a Samsung TV in Home Assistant." +date: 2016-02-01 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: samsung.png +ha_category: Media Player +featured: false +--- + +The `samsungtv` platform allows you to control an [Samsung TV](http://www.samsung.com). + + +To add an Samsung TV to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: samsungtv +``` + diff --git a/source/images/supported_brands/samsung.png b/source/images/supported_brands/samsung.png new file mode 100644 index 0000000000000000000000000000000000000000..fe36a9500b0d4559b001a2cd13bce86ef8a5b930 GIT binary patch literal 18271 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 literal 0 HcmV?d00001 From 6b572a54d6f2eed348d6770ad8c4e11ed9e65ea8 Mon Sep 17 00:00:00 2001 From: jbags81 Date: Mon, 1 Feb 2016 22:06:03 -0500 Subject: [PATCH 003/601] corrected configuration typo insteon: was corrected to insteon_hub: --- source/_components/insteon_hub.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/insteon_hub.markdown b/source/_components/insteon_hub.markdown index 407c6c81c9a..9a4750d59f2 100644 --- a/source/_components/insteon_hub.markdown +++ b/source/_components/insteon_hub.markdown @@ -19,7 +19,7 @@ To integrate your Insteon Hub with Home Assistant, add the following section to ```yaml # Example configuration.yaml entry -insteon: +insteon_hub: username: YOUR_USERNAME password: YOUR_PASSWORD api_key: YOUR_API_KEY From fd84689e5659bea6e1569a12595d989078d457cc Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 2 Feb 2016 23:50:12 +0100 Subject: [PATCH 004/601] Add weblink component docs --- source/_components/weblink.markdown | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 source/_components/weblink.markdown diff --git a/source/_components/weblink.markdown b/source/_components/weblink.markdown new file mode 100644 index 00000000000..93cd2135c69 --- /dev/null +++ b/source/_components/weblink.markdown @@ -0,0 +1,26 @@ +--- +layout: component +title: "Weblink" +description: "Instructions how to setup Links within Home Assistant." +date: 2016-02-02 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: +ha_category: Other +--- + +The `weblinks` component allows you to display links in the Home Assistant frontend. + +To use this component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +weblink: + entities: + - name: Router + url: http://192.168.1.1/ + - name: Home Assistant + url: https://home-assistant.io +``` From 4953d85f9e4bba67b557d10bf80370bbda753b92 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 3 Feb 2016 00:22:19 +0100 Subject: [PATCH 005/601] Add input_select docs --- source/_components/input_select.markdown | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 source/_components/input_select.markdown diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown new file mode 100644 index 00000000000..7e75b21a53e --- /dev/null +++ b/source/_components/input_select.markdown @@ -0,0 +1,44 @@ +--- +layout: component +title: "Input Select" +description: "Instructions how to integrate the Input Select component into Home Assistant." +date: 2016-02-02 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +--- + +The `input_select` component allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. + +To enable this platform, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +input_select: + who_cooks: + name: Who cooks today + options: + - Paulus + - Anne Therese + initial: Anne Therese + icon: mdi:panda + living_room_preset: + options: + - Visitors + - Visitors with kids + - Home Alone +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the input. +- **name** (*Optional*): Friendly name of the input. +- **options** array (*Optional*): List of options to choose from +- **initial** (*Optional*): Initial value when Home Assistant starts. +- **icon** (*Optional*): Icon for entry. + +Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. + From 4a0d2c3b1e92c7480e200efdead2a5c831f2618c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 1 Feb 2016 23:15:04 +0100 Subject: [PATCH 006/601] Add some details --- source/developers/index.markdown | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/developers/index.markdown b/source/developers/index.markdown index fbf3fa5e1c9..f3fc00735a6 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -19,20 +19,22 @@ Home Assistant is open-source and MIT licensed. The source can be found here: ### {% linkable_title Starting development %} -You will need to setup a development environment if you want to start developing a new feature or component for Home Assistant perform theses steps +You will need to setup a development environment if you want to start developing a new feature or component for Home Assistant perform theses steps. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) and click fork in the top right. ```bash -$ git clone https://github.com/balloob/home-assistant.git +$ git clone https://github.com/your_github_username/home-assistant.git +$ git remote add upstream git@github.com:balloob/home-assistant.git $ cd home-assistant $ script/setup ``` +we suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. + After following these steps, running `hass` will invoke your local installation. ### {% linkable_title Submitting improvements %} -Improvements to Home Assistant should be submitted one feature at a time using Github pull -requests. +Improvements to Home Assistant should be submitted one feature at a time using Github pull requests. 1. Go to [the Home Assistant repository](https://github.com/balloob/home-assistant) and click fork in the top right. 2. Follow steps in the previous section but with your forked repository. From 68a35bb6418b714e3ac031b12479ec4f9a9928fd Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 1 Feb 2016 23:25:44 +0100 Subject: [PATCH 007/601] Minor update --- source/developers/add_new_platform.markdown | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/source/developers/add_new_platform.markdown b/source/developers/add_new_platform.markdown index d1d3c540046..91f5b6b49aa 100644 --- a/source/developers/add_new_platform.markdown +++ b/source/developers/add_new_platform.markdown @@ -11,13 +11,7 @@ footer: true Components that interact with devices are structured in core- and platform logic. This allows the same logic to be used for different platforms. -For example, the built-in `switch` component consists of the following files in [`homeassistant/components/switch/`](https://github.com/balloob/home-assistant/tree/master/homeassistant/components/switch): - -| File | Description | -| ---- | ----------- | -| \_\_init\_\_.py | Contains the Switch core logic.| -| wemo.py | WeMo platform logic. Included if in config `platform=wemo`. | -| tellstick.py | Tellstick platform logic. Included if in config `platform=tellstick`. | +For example, the built-in `switch` component consists of various platform in [`homeassistant/components/switch/`](https://github.com/balloob/home-assistant/tree/master/homeassistant/components/switch). The file `\_\_init\_\_.py` contains the core logic of all platform and the `vendor_name.py` files only the relevant platform code. If you are planning to add support for a new type of device to an existing component, you can get away with only writing platform logic. Have a look at how the component works with other platforms and create a similar file for the platform that you would like to add. From 434dd958825ad713b8b4a925642caecf9b81bd02 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 3 Feb 2016 00:34:48 +0100 Subject: [PATCH 008/601] Fix link --- source/_components/tellduslive.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index bf571f33590..2d71e991435 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -14,7 +14,7 @@ featured: false The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick connected gear at home. -To get started using Telldus Live, you will have to obtain developer keys from (https://api.telldus.com/keys/index)[developer-keys]. +To get started using Telldus Live, you will have to obtain developer keys from [https://api.telldus.com/keys/index](developer keys). To integrate your Telldus Live with Home Assistant, add the following section to your `configuration.yaml` file: From 93744781b1f86106d17c0e4e1d63fb5d40a2250e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 3 Feb 2016 00:38:35 +0100 Subject: [PATCH 009/601] Again the link --- source/_components/tellduslive.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index 2d71e991435..ad514f3f872 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -14,7 +14,7 @@ featured: false The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick connected gear at home. -To get started using Telldus Live, you will have to obtain developer keys from [https://api.telldus.com/keys/index](developer keys). +To get started using Telldus Live, you will have to obtain developer keys from the [developer page](https://api.telldus.com/keys/index). To integrate your Telldus Live with Home Assistant, add the following section to your `configuration.yaml` file: From b590908df4c7b620d767a192ec4551b9ed487519 Mon Sep 17 00:00:00 2001 From: Mokilok Date: Wed, 3 Feb 2016 16:15:04 +1100 Subject: [PATCH 010/601] Update creating_components.markdown Fixed a spelling mistake. --- source/developers/creating_components.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/developers/creating_components.markdown b/source/developers/creating_components.markdown index 57ce55700ae..a2dee37d38f 100644 --- a/source/developers/creating_components.markdown +++ b/source/developers/creating_components.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -Home Assistant offers [built-in components]({{site_root}}/components/) but it is easy to built your own. If you are the kind of person that likes to learn from code rather then guide then head over to the [`config/custom_components`](https://github.com/balloob/home-assistant/tree/master/config/custom_components) folder in the repository for two example components. +Home Assistant offers [built-in components]({{site_root}}/components/) but it is easy to build your own. If you are the kind of person that likes to learn from code rather then guide then head over to the [`config/custom_components`](https://github.com/balloob/home-assistant/tree/master/config/custom_components) folder in the repository for two example components. The first is [hello_world.py](https://github.com/balloob/home-assistant/blob/master/config/custom_components/hello_world.py), which is the classic Hello World example for Home Assistant. The second one is [example.py](https://github.com/balloob/home-assistant/blob/master/config/custom_components/example.py) which showcases various ways you can tap into Home Assistant to be notified when certain events occur. @@ -79,4 +79,4 @@ Then in the setup method of your component you will be able to refer to `config[ ## {% linkable_title Responding to events %} -Home Assistant has different ways of responding to events that occur in Home Assistant. These have been organized in [helper methods](https://github.com/balloob/home-assistant/blob/dev/homeassistant/helpers/event.py). Examples are `track_state_change`, `track_point_in_time`, `track_time_change`. \ No newline at end of file +Home Assistant has different ways of responding to events that occur in Home Assistant. These have been organized in [helper methods](https://github.com/balloob/home-assistant/blob/dev/homeassistant/helpers/event.py). Examples are `track_state_change`, `track_point_in_time`, `track_time_change`. From 4f3c011fd153ebd9181e8b4027dd57c48fcaf7db Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 3 Feb 2016 20:46:42 +0100 Subject: [PATCH 011/601] Fix sentence --- source/developers/index.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/developers/index.markdown b/source/developers/index.markdown index f3fc00735a6..384a03e829d 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -19,7 +19,7 @@ Home Assistant is open-source and MIT licensed. The source can be found here: ### {% linkable_title Starting development %} -You will need to setup a development environment if you want to start developing a new feature or component for Home Assistant perform theses steps. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) and click fork in the top right. +You will need to setup a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to perform it. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. ```bash $ git clone https://github.com/your_github_username/home-assistant.git @@ -28,7 +28,7 @@ $ cd home-assistant $ script/setup ``` -we suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. +We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. After following these steps, running `hass` will invoke your local installation. From 1ee558a8d879c85d2311d2a686c5f12b9b915a15 Mon Sep 17 00:00:00 2001 From: Philip Lundrigan Date: Wed, 3 Feb 2016 17:35:14 -0700 Subject: [PATCH 012/601] Add ssl parameters to Influx docs --- source/_components/influxdb.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 7f1973087ec..5c4a6c708bf 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -23,6 +23,8 @@ influxdb: database: DB_TO_STORE_EVENTS username: MY_USERNAME password: MY_PASSWORD + ssl: true + verify_ssl: true ``` Configuration variables: @@ -32,4 +34,5 @@ Configuration variables: - **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist. - **username** (*Optional*): The username of the database user. - **password** (*Optional*): The password for the database user account. - +- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. +- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. From 3c701a9f950adb3f0f7ed8655f87ab73bd96ba9b Mon Sep 17 00:00:00 2001 From: Lukas Hetzenecker Date: Thu, 4 Feb 2016 13:12:48 +0100 Subject: [PATCH 013/601] ZWave: Documentation for PR #1110 --- source/_components/zwave.markdown | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown index 1ec9fad3d4f..4a9c53e8c70 100644 --- a/source/_components/zwave.markdown +++ b/source/_components/zwave.markdown @@ -33,15 +33,40 @@ $ pip3 install "cython<0.23" zwave: usb_path: /dev/ttyUSB0 config_path: /usr/local/share/python-openzwave/config + polling_interval: 10000 + customize: + sensor.greenwave_powernode_6_port_energy_10: + polling_intensity: 1 ``` 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. +- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. +- **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) To find the path of your Z-Wave stick, run: ```bash $ ls /dev/ttyUSB* ``` + +#### Events + +Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch): + +```yaml +# Example configuration.yaml automation entry +automation: + - alias: Turn on Desk light + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: zwaveme_zme_wallcs_secure_wall_controller_8 + scene_id: 11 +``` + +The *entity_id* and *scene_id* of all triggered events can be seen in the console output. From 39f826a989ec37fa96c8032ecedc86bb882c4f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Fri, 5 Feb 2016 15:09:10 +0100 Subject: [PATCH 014/601] Update mqtt_eventstream.markdown Do not need both Others and Other as a category --- source/_components/mqtt_eventstream.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/mqtt_eventstream.markdown b/source/_components/mqtt_eventstream.markdown index a208bdae3e7..d4e209c46e7 100644 --- a/source/_components/mqtt_eventstream.markdown +++ b/source/_components/mqtt_eventstream.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: mqtt.png -ha_category: Others +ha_category: Other --- The `mqtt_eventstream` components two Home Assistant instances via MQTT. From 85bae8d3864dd83876130a7d8bc00cdd37de8137 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 00:19:40 +0100 Subject: [PATCH 015/601] Add http binary sensor docs --- .../_components/binary_sensor.http.markdown | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 source/_components/binary_sensor.http.markdown diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown new file mode 100644 index 00000000000..e24de061558 --- /dev/null +++ b/source/_components/binary_sensor.http.markdown @@ -0,0 +1,79 @@ +--- +layout: component +title: "HTTP Binary Sensor" +description: "Instructions how to integrate HTTP binary sensors within Home Assistant." +date: 2016-02-05 12:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: http.png +ha_category: Binary Sensor +--- + + +The `http` binary sensor platform is not a real platform within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) is consuming and proceeding messages recieved over HTTP. + +To use those kind of sensors in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themself. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. + +All [requests](/developers/rest_api/#post-apistatesltentity_id) needs to be sent to the endpoint of the device and must be **POST**. The URL looks like the example below: + +```bash +http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME +``` + +It's suggested that you choose an unique device name to avoid clashes with other devices. The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor. + +```json +{"state": "on", "attributes": {"friendly_name": "Radio"}} +``` + +For a quick test `curl` can be useful to "simulate" a device. + +```bash +$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ + -d '{"state": "off", "attributes": {"friendly_name": "Radio"}}' \ + http://localhost:8123/api/states/binary_sensor.radio +``` + +To check if the sensor is working, use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id). + +```bash +$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ + http://localhost:8123/api/states/binary_sensor.radio +{ + "attributes": { + "friendly_name": "Radio" + }, + "entity_id": "binary_sensor.radio", + "last_changed": "16:45:51 05-02-2016", + "last_updated": "16:45:51 05-02-2016", + "state": "off" +} +``` + +## {% linkable_title Examples %} + +In this section you find some real life examples of how to use this sensor. Beside `curl`. + +### {% linkable_title Using Python request module %} + +As already shown on the [API](/developers/rest_api/) page, it's very simple to use Python and the [Requests](http://docs.python-requests.org/en/latest/) module for the interaction with Home Assistant. + +```python +response = requests.post( + 'http://localhost:8123/api/states/binary_sensor.radio', + headers={'x-ha-access': 'YOUR_PASSWORD', 'content-type': 'application/json'}, + data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}})) +print(response.text) +``` + +### {% linkable_title Using `httpie` %} + +[`httpie`](https://github.com/jkbrzt/httpie) is a user-friendly CLI HTTP client. + +```bash +$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \ + x-ha-access:YOUR_PASSWORD state=off \ + attributes:='{"friendly_name": "Radio"}' +``` From a649e05e384bbc974a4bed1d5d4d520b8b1dc634 Mon Sep 17 00:00:00 2001 From: miniconfig Date: Fri, 5 Feb 2016 20:11:54 -0500 Subject: [PATCH 016/601] Added documentation for Splunk --- source/_components/splunk.markdown | 32 ++++++++++++++++++++++ source/images/supported_brands/splunk.png | Bin 0 -> 43000 bytes 2 files changed, 32 insertions(+) create mode 100644 source/_components/splunk.markdown create mode 100644 source/images/supported_brands/splunk.png diff --git a/source/_components/splunk.markdown b/source/_components/splunk.markdown new file mode 100644 index 00000000000..6089883a02d --- /dev/null +++ b/source/_components/splunk.markdown @@ -0,0 +1,32 @@ +--- +layout: component +title: "Splunk" +description: "Record events in Splunk." +date: 2016-02-05 15:31 +sidebar: true +comments: false +sharing: true +footer: true +logo: splunk.png +ha_category: "History" +--- + +The `splunk` component makes it possible to log all state changes to an external [Splunk](http://splunk.com/) database using Splunk's HTTP Event Collector feature. You can either use this alone, or with the HomeAssistant for Splunk [app](https://github.com/miniconfig/splunk-homeassistant). Since the HEC feature is new to Splunk, you will need to use at least version 6.3. + +To use the `splunk` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +splunk: + host: SPLUNK_HOST_IP_ADDRESS_OR_HOST_NAME + port: 8088 + token: B4415DFF-683C-5C6C-3994-4F6D4A5DB03A + SSL: True +``` + +Configuration variables: + +- **host** (*Optional*): IP address or host name of your Splunk host, eg. http://192.168.1.10. Will default to `localhost` if not supplied. +- **port** (*Optional*): Port to use. Defaults to 8088. +- **token** (*Required*): The HTTP Event Collector Token already created in your Splunk instance. +- **SSL** (*Optional*): Use https instead of http to connect. Defaults to False. diff --git a/source/images/supported_brands/splunk.png b/source/images/supported_brands/splunk.png new file mode 100644 index 0000000000000000000000000000000000000000..3f30171db7b51b12052e9bb3b6af4f6ab94b2d74 GIT binary patch literal 43000 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 literal 0 HcmV?d00001 From c15b695252bf37c68dddd44ca715bf782153875b Mon Sep 17 00:00:00 2001 From: Harald Nagel Date: Wed, 3 Feb 2016 20:02:34 -0700 Subject: [PATCH 017/601] Add documentation for the BloomSky components. --- source/_components/bloomsky.markdown | 27 ++++++++++++ source/_components/camera.bloomsky.markdown | 23 +++++++++++ source/_components/sensor.bloomsky.markdown | 43 ++++++++++++++++++++ source/images/supported_brands/bloomsky.png | Bin 0 -> 9061 bytes 4 files changed, 93 insertions(+) create mode 100644 source/_components/bloomsky.markdown create mode 100644 source/_components/camera.bloomsky.markdown create mode 100644 source/_components/sensor.bloomsky.markdown create mode 100644 source/images/supported_brands/bloomsky.png diff --git a/source/_components/bloomsky.markdown b/source/_components/bloomsky.markdown new file mode 100644 index 00000000000..26a92128a7f --- /dev/null +++ b/source/_components/bloomsky.markdown @@ -0,0 +1,27 @@ +--- +layout: component +title: "BloomSky" +description: "Instructions how to integrate the BloomSky within Home Assistant." +date: 2016-02-03 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bloomsky.png +ha_category: Hub +--- + + +The `bloomsky` component allows you to access your [BloomSky](http://www.insteon.com/) weather station's [sensors](/components/sensor.bloomsky) and [camera](/components/camera.bloomsky) from Home Assistant. + +To integrate your BloomSky hub with Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +bloomsky: + api_key: YOUR_API_KEY +``` + +Configuration variables: + +- **api_key** *Required*: Your BloomSky API key, obtained from your [BloomSky dashboard](https://dashboard.bloomsky.com) (click `developers` in the bottom left of the screen) diff --git a/source/_components/camera.bloomsky.markdown b/source/_components/camera.bloomsky.markdown new file mode 100644 index 00000000000..07939a0ac9b --- /dev/null +++ b/source/_components/camera.bloomsky.markdown @@ -0,0 +1,23 @@ +--- +layout: component +title: "BloomSky" +description: "Instructions how to integrate the BloomSky camera within Home Assistant." +date: 2016-02-03 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bloomsky.png +ha_category: Camera +--- + + +The `bloomsky` camera component allows you to view the current photo created by the camera in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with [BloomSky sensors](/components/sensor.bloomsky). + +To enable this camera in your installation, set up the [BloomSky component](/components/bloomsky) with your API key and add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + platform: bloomsky +``` diff --git a/source/_components/sensor.bloomsky.markdown b/source/_components/sensor.bloomsky.markdown new file mode 100644 index 00000000000..34d820e230a --- /dev/null +++ b/source/_components/sensor.bloomsky.markdown @@ -0,0 +1,43 @@ +--- +layout: component +title: "BloomSky" +description: "Instructions how to integrate the BloomSky sensors within Home Assistant." +date: 2016-02-03 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bloomsky.png +ha_category: Sensor +--- + + +The `bloomsky` sensor component allows you to view the measurements made by sensors in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with the [BloomSky camera](/components/camera.bloomsky). + +To enable these sensors in your installation, set up the [BloomSky component](/components/bloomsky) with your API key add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: bloomsky + monitored_conditions: + - Temperature + - Humidity + - Rain + - Pressure + - UVIndex + - Luminance + - Night +``` + +Configuration variables: + +- **api_key** *Required*: Your BloomSky API key, obtained from your [BloomSky dashboard](https://dashboard.bloomsky.com) (click `developers` in the bottom left of the screen) +- **monitored_conditions** *Required*: The sensors that you wish to monitor on all of your devices. Select from these options: + - Humidity + - Luminance + - Night + - Pressure + - Rain + - Temperature + - UVIndex diff --git a/source/images/supported_brands/bloomsky.png b/source/images/supported_brands/bloomsky.png new file mode 100644 index 0000000000000000000000000000000000000000..3332684dd3350c55d937331de20f4e2056069294 GIT binary patch literal 9061 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 literal 0 HcmV?d00001 From 11c4357a90143cf91bba99cc5e3b5e31584d1ac2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 08:20:09 +0100 Subject: [PATCH 018/601] Little tweaks --- source/_components/camera.bloomsky.markdown | 2 +- source/_components/sensor.bloomsky.markdown | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source/_components/camera.bloomsky.markdown b/source/_components/camera.bloomsky.markdown index 07939a0ac9b..b293c241223 100644 --- a/source/_components/camera.bloomsky.markdown +++ b/source/_components/camera.bloomsky.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "BloomSky" +title: "BloomSky Camera" description: "Instructions how to integrate the BloomSky camera within Home Assistant." date: 2016-02-03 20:00 sidebar: true diff --git a/source/_components/sensor.bloomsky.markdown b/source/_components/sensor.bloomsky.markdown index 34d820e230a..f5944f79470 100644 --- a/source/_components/sensor.bloomsky.markdown +++ b/source/_components/sensor.bloomsky.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "BloomSky" +title: "BloomSky Sensor" description: "Instructions how to integrate the BloomSky sensors within Home Assistant." date: 2016-02-03 20:00 sidebar: true @@ -32,8 +32,7 @@ sensor: Configuration variables: -- **api_key** *Required*: Your BloomSky API key, obtained from your [BloomSky dashboard](https://dashboard.bloomsky.com) (click `developers` in the bottom left of the screen) -- **monitored_conditions** *Required*: The sensors that you wish to monitor on all of your devices. Select from these options: +- **monitored_conditions** array *Required*: The sensors that you wish to monitor on all of your devices. Select from these options: - Humidity - Luminance - Night From 567840e2b87c61297956a1e96dbd3db69d01bf4e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 09:27:20 +0100 Subject: [PATCH 019/601] Capitalize titles and other minor update --- source/_components/alarm_control_panel.markdown | 1 + source/_components/arduino.markdown | 2 +- source/_components/binary_sensor.arest.markdown | 4 ++-- .../_components/binary_sensor.command.markdown | 2 +- source/_components/binary_sensor.mqtt.markdown | 2 +- source/_components/binary_sensor.nest.markdown | 15 ++++++++++++--- source/_components/binary_sensor.rest.markdown | 2 +- .../_components/binary_sensor.rpi_gpio.markdown | 4 ++-- source/_components/binary_sensor.zigbee.markdown | 2 +- source/_components/camera.foscam.markdown | 4 ++-- source/_components/camera.mjpeg.markdown | 2 +- source/_components/device_tracker.mqtt.markdown | 2 +- .../_components/light.blinksticklight.markdown | 2 +- source/_components/light.hyperion.markdown | 2 +- source/_components/light.limitlessled.markdown | 1 - source/_components/light.mqtt.markdown | 2 +- source/_components/light.rfxtrx.markdown | 5 +++-- source/_components/light.tellstick.markdown | 4 ++-- source/_components/light.vera.markdown | 4 ++-- source/_components/light.wink.markdown | 4 ++-- source/_components/light.zwave.markdown | 2 +- source/_components/lock.wink.markdown | 4 ++-- source/_components/media_player.denon.markdown | 2 +- source/_components/media_player.firetv.markdown | 2 +- source/_components/media_player.kodi.markdown | 2 +- source/_components/media_player.mpd.markdown | 2 +- source/_components/media_player.sonos.markdown | 2 +- source/_components/notify.file.markdown | 2 +- source/_components/notify.instapush.markdown | 2 +- source/_components/notify.mqtt.markdown | 2 +- source/_components/notify.slack.markdown | 2 +- source/_components/notify.syslog.markdown | 2 +- source/_components/notify.xmpp.markdown | 2 +- source/_components/sensor.arduino.markdown | 4 ++-- source/_components/sensor.arest.markdown | 4 ++-- source/_components/sensor.bitcoin.markdown | 2 +- .../_components/sensor.command_sensor.markdown | 2 +- source/_components/sensor.cpuspeed.markdown | 2 +- source/_components/sensor.dht.markdown | 4 ++-- source/_components/sensor.ecobee.markdown | 2 +- source/_components/sensor.forecast.markdown | 2 +- source/_components/sensor.glances.markdown | 2 +- source/_components/sensor.modbus.markdown | 4 ++-- source/_components/sensor.mqtt.markdown | 2 +- source/_components/sensor.mysensors.markdown | 2 +- source/_components/sensor.nest.markdown | 16 +++++++++++++--- source/_components/sensor.netatmo.markdown | 4 ++-- source/_components/sensor.onewire.markdown | 2 +- .../_components/sensor.openweathermap.markdown | 2 +- source/_components/sensor.rest.markdown | 2 +- source/_components/sensor.rfxtrx.markdown | 4 ++-- source/_components/sensor.sabnzbd.markdown | 2 +- .../sensor.swiss_public_transport.markdown | 2 +- source/_components/sensor.systemmonitor.markdown | 2 +- source/_components/sensor.tellduslive.markdown | 2 +- source/_components/sensor.tellstick.markdown | 4 ++-- source/_components/sensor.temper.markdown | 4 ++-- source/_components/sensor.template.markdown | 2 +- source/_components/sensor.time_date.markdown | 2 +- source/_components/sensor.transmission.markdown | 6 +++--- source/_components/sensor.vera.markdown | 4 ++-- source/_components/sensor.wink.markdown | 4 ++-- source/_components/sensor.worldclock.markdown | 2 +- source/_components/sensor.zwave.markdown | 2 +- source/_components/switch.arduino.markdown | 4 ++-- source/_components/switch.arest.markdown | 4 ++-- .../_components/switch.command_switch.markdown | 2 +- source/_components/switch.edimax.markdown | 4 ++-- source/_components/switch.hikvision.markdown | 4 ++-- source/_components/switch.modbus.markdown | 4 ++-- source/_components/switch.mqtt.markdown | 2 +- source/_components/switch.mysensors.markdown | 2 +- source/_components/switch.mystrom.markdown | 2 +- source/_components/switch.orvibo.markdown | 4 ++-- source/_components/switch.rest.markdown | 2 +- source/_components/switch.rfxtrx.markdown | 5 +++-- source/_components/switch.rpi_gpio.markdown | 4 ++-- source/_components/switch.tellduslive.markdown | 2 +- source/_components/switch.tellstick.markdown | 4 ++-- source/_components/switch.transmission.markdown | 4 ++-- source/_components/switch.vera.markdown | 4 ++-- source/_components/switch.wemo.markdown | 4 ++-- source/_components/switch.wink.markdown | 4 ++-- source/_components/switch.zigbee.markdown | 2 +- source/_components/switch.zwave.markdown | 2 +- source/_components/tellstick.markdown | 2 +- source/_components/thermostat.ecobee.markdown | 2 +- source/_components/thermostat.heatmiser.markdown | 6 +++--- source/_components/thermostat.homematic.markdown | 4 ++-- source/_components/thermostat.honeywell.markdown | 4 ++-- source/_components/thermostat.nest.markdown | 4 ++-- source/_components/thermostat.proliphix.markdown | 2 +- .../_components/thermostat.radiotherm.markdown | 4 ++-- 93 files changed, 156 insertions(+), 135 deletions(-) diff --git a/source/_components/alarm_control_panel.markdown b/source/_components/alarm_control_panel.markdown index ec617fa3e9a..f3fc25736db 100644 --- a/source/_components/alarm_control_panel.markdown +++ b/source/_components/alarm_control_panel.markdown @@ -12,6 +12,7 @@ footer: true Home Assistant can give you an interface with is similar to a classic alarm system. There are several panels supported: +- [Alarm.com](/components/alarm_control_panel.alarmdotcom/) - [Manual](/components/alarm_control_panel.manual/) - [MQTT](/components/alarm_control_panel.mqtt/) - [Verisure](/components/verisure/) diff --git a/source/_components/arduino.markdown b/source/_components/arduino.markdown index 08f3a7073f4..19c482136f7 100644 --- a/source/_components/arduino.markdown +++ b/source/_components/arduino.markdown @@ -16,7 +16,7 @@ The [Arduino](https://www.arduino.cc/) device family are microcontroller boards There are a lot of extensions (so called [shields](https://www.arduino.cc/en/Main/ArduinoShields)) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards. -The arduino component is designed to let you use a directly attached board to your Home Assistant host over USB. +The `arduino` component is designed to let you use a directly attached board to your Home Assistant host over USB. You need to have the [Firmata firmware](https://github.com/firmata/) on your board. Please upload the `StandardFirmata` sketch to your board, please refer to the [Arduino documentation](https://www.arduino.cc/en/Main/Howto) for further information. diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/binary_sensor.arest.markdown index dc383882e93..b14f1f8eccb 100644 --- a/source/_components/binary_sensor.arest.markdown +++ b/source/_components/binary_sensor.arest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "aREST binary sensor" +title: "aREST Binary Sensor" description: "Instructions how to integrate aREST binary sensors within Home Assistant." date: 2015-11-20 18:15 sidebar: true @@ -12,7 +12,7 @@ ha_category: Binary Sensor --- -The arest binary sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. +The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. To use your aREST binary sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/binary_sensor.command.markdown b/source/_components/binary_sensor.command.markdown index 74147e8a3a9..d7305fd5d88 100644 --- a/source/_components/binary_sensor.command.markdown +++ b/source/_components/binary_sensor.command.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Command line binary sensor" +title: "Command line Binary Sensor" description: "Instructions how to integrate Command binary sensors within Home Assistant." date: 2016-01-13 12:15 sidebar: true diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 6ab07dff653..9b397346891 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT binary sensor" +title: "MQTT Binary Sensor" description: "Instructions how to integrate MQTT binary sensors within Home Assistant." date: 2015-05-30 23:21 sidebar: true diff --git a/source/_components/binary_sensor.nest.markdown b/source/_components/binary_sensor.nest.markdown index cc50ba8bfbe..54796538425 100644 --- a/source/_components/binary_sensor.nest.markdown +++ b/source/_components/binary_sensor.nest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Nest binary sensor" +title: "Nest Binary Sensor" description: "Instructions how to integrate Nest binary sensors within Home Assistant." date: 2016-01-26 08:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Binary Sensor --- -The Nest binary sensor platform let you monitor various states of a thermostat from [Nest](https://nest.com). +The `nest` binary sensor platform let you monitor various states of a thermostat from [Nest](https://nest.com). To set it up, add the following information to your `configuration.yaml` file: @@ -34,5 +34,14 @@ sensor: Configuration variables: - **monitored_conditions** array (*Required*): States to monitor. + - 'fan' + - 'hvac_ac_state' + - 'hvac_aux_heater_state' + - 'hvac_heat_x2_state' + - 'hvac_heat_x3_state' + - 'hvac_alt_heat_state' + - 'hvac_alt_heat_x2_state' + - 'hvac_emer_heat_state' + - 'online' -

You must have the [Nest component](https://home-assistant.io/components/nest/) configured to use this sensor.

+

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

diff --git a/source/_components/binary_sensor.rest.markdown b/source/_components/binary_sensor.rest.markdown index 6cb56043db0..b3b64ae91ab 100644 --- a/source/_components/binary_sensor.rest.markdown +++ b/source/_components/binary_sensor.rest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RESTful binary sensor" +title: "RESTful Binary Sensor" description: "Instructions how to integrate REST binary sensors into Home Assistant." date: 2015-12-17 19:10 sidebar: true diff --git a/source/_components/binary_sensor.rpi_gpio.markdown b/source/_components/binary_sensor.rpi_gpio.markdown index 4bc2f7581c4..a94c65bc236 100644 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ b/source/_components/binary_sensor.rpi_gpio.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Raspberry PI GPIO sensor" +title: "Raspberry PI GPIO Binary Sensor" description: "Instructions how to integrate the GPIO sensor capability of a Raspberry PI into Home Assistant." date: 2015-08-30 19:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -The rpi_gpio binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). +The `rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/binary_sensor.zigbee.markdown b/source/_components/binary_sensor.zigbee.markdown index 7d270316e27..df2cff5a4b5 100644 --- a/source/_components/binary_sensor.zigbee.markdown +++ b/source/_components/binary_sensor.zigbee.markdown @@ -1,6 +1,6 @@ --- layout: component -title: ZigBee Binary Sensor +title: "ZigBee Binary Sensor" description: "Instructions on how to set up ZigBee binary sensors within Home Assistant." date: 2016-01-28 12:38 sidebar: true diff --git a/source/_components/camera.foscam.markdown b/source/_components/camera.foscam.markdown index 9fd47c6a9fc..a911ca8b53e 100644 --- a/source/_components/camera.foscam.markdown +++ b/source/_components/camera.foscam.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Foscam IP camera" +title: "Foscam IP Camera" description: "Instructions how to integrate Foscam IP cameras within Home Assistant." date: 2015-09-17 08:01 sidebar: true @@ -12,7 +12,7 @@ ha_category: Camera --- -The foscam platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant. +The `foscam` platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant. To enable your Foscam IP camera in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/camera.mjpeg.markdown b/source/_components/camera.mjpeg.markdown index 8fd297d0e41..f646b39e380 100644 --- a/source/_components/camera.mjpeg.markdown +++ b/source/_components/camera.mjpeg.markdown @@ -11,7 +11,7 @@ ha_category: Camera --- -The mjpeg component allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant. +The `mjpeg` component allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant. To enable this sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index 70c71cdebe6..f7ed2156f56 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT device tracker" +title: "MQTT Device Tracker" description: "Instructions how to use MQTT to track devices in Home Assistant." date: 2015-09-19 20:41 sidebar: true diff --git a/source/_components/light.blinksticklight.markdown b/source/_components/light.blinksticklight.markdown index e1e1c186c7c..459676cf0ba 100644 --- a/source/_components/light.blinksticklight.markdown +++ b/source/_components/light.blinksticklight.markdown @@ -12,7 +12,7 @@ ha_category: Light --- -The blinkstick platform let you can control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. +The `blinkstick` platform let you can control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. To add blinkstick to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index db95cad7a4b..1260dbc2c37 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -1,6 +1,6 @@ --- layout: component -title: Hyperion +title: "Hyperion" description: "Instructions how to integrate Hyperion into Home Assistant." date: 2015-10-25 22:43 sidebar: true diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 57b088c9ad2..892313be9f0 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -5,7 +5,6 @@ description: "Instructions on how to setup LimitlessLED within Home Assistant." date: 2015-12-03 13:00 sidebar: true layout: page -title: "LimitlessLED support" sidebar: false comments: false sharing: true diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 6e8b57ce211..a3712391b64 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT light" +title: "MQTT Light" description: "Instructions how to setup MQTT lights within Home Assistant." date: 2015-11-13 08:30 sidebar: true diff --git a/source/_components/light.rfxtrx.markdown b/source/_components/light.rfxtrx.markdown index a793421e6a5..ee2f5813eb9 100644 --- a/source/_components/light.rfxtrx.markdown +++ b/source/_components/light.rfxtrx.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RFXtrx light" +title: "RFXtrx Light" description: "Instructions how to integrate RFXtrx lights into Home Assistant." date: 2015-10-08 10:15 sidebar: true @@ -9,7 +9,8 @@ sharing: true footer: true ha_category: Light --- -The rfxtrx platform support lights that communicate in the frequency range of 433.92 MHz. + +The `rfxtrx` platform support lights that communicate in the frequency range of 433.92 MHz. To enable RFXtrx lights in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/light.tellstick.markdown b/source/_components/light.tellstick.markdown index 733ca3ce7be..8ebf9e8cb63 100644 --- a/source/_components/light.tellstick.markdown +++ b/source/_components/light.tellstick.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "TellStick light" +title: "TellStick Light" description: "Instructions how to integrate TellStick lights into Home Assistant." date: 2015-08-06 19:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Light --- -This tellstick light platform allows you to control your [TellStick](http://www.telldus.se/products/tellstick) dimmers. +This `tellstick` light platform allows you to control your [TellStick](http://www.telldus.se/products/tellstick) dimmers. To use your TellStick device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/light.vera.markdown b/source/_components/light.vera.markdown index 5ab3de9e3c9..3c4c08be05d 100644 --- a/source/_components/light.vera.markdown +++ b/source/_components/light.vera.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Vera light" +title: "Vera Light" description: "Instructions how to integrate Vera lights into Home Assistant." date: 2015-10-20 21:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Light --- -This vera light platform allows you to control your [Vera](http://getvera.com/) lights. +This `vera` light platform allows you to control your [Vera](http://getvera.com/) lights. This platform is useful if you wish for switches connected to your Vera controller to appear as lights in Home Assistant. All switches will be added as a light unless you exclude them in the configuration file. diff --git a/source/_components/light.wink.markdown b/source/_components/light.wink.markdown index d4d86298a7e..62bdc4753da 100644 --- a/source/_components/light.wink.markdown +++ b/source/_components/light.wink.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Wink light" +title: "Wink Light" description: "Instructions how to setup the Wink lights within Home Assistant." date: 2015-01-20 22:36 sidebar: true @@ -12,6 +12,6 @@ ha_category: Light --- -The wink sensor platform allows you to use your [Wink](http://www.wink.com/) lights. +The wink light platform allows you to use your [Wink](http://www.wink.com/) lights. The requirement is that you have setup your [Wink hub](/components/light.wink/). diff --git a/source/_components/light.zwave.markdown b/source/_components/light.zwave.markdown index 4b547ee58d4..5c5d573a562 100644 --- a/source/_components/light.zwave.markdown +++ b/source/_components/light.zwave.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Z-Wave light" +title: "Z-Wave Light" description: "Instructions how to setup the Z-Wave lights within Home Assistant." date: 2015-11-11 13:00 sidebar: true diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown index 656c149151c..6e25951dd15 100644 --- a/source/_components/lock.wink.markdown +++ b/source/_components/lock.wink.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Wink lock" +title: "Wink Lock" description: "Instructions how to setup the Wink locks within Home Assistant." date: 2015-11-20 12:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Lock --- -The wink lock platform allows you to control your [Wink](http://www.wink.com/) locks. +The Wink lock platform allows you to control your [Wink](http://www.wink.com/) locks. The requirement is that you have setup your [Wink hub](/components/wink/). diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index 1b7890b98c0..382f154a631 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -12,7 +12,7 @@ ha_category: Media Player --- -The denon platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. +The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. Supported devices: diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown index 8f52a5582da..0d1aefa7dce 100644 --- a/source/_components/media_player.firetv.markdown +++ b/source/_components/media_player.firetv.markdown @@ -12,7 +12,7 @@ ha_category: Media Player --- -The firetv platform allows you to control a [Amazon Fire TV/stick](http://www.amazon.com/Amazon-DV83YW-Fire-TV/dp/B00U3FPN4U). +The `firetv` platform allows you to control a [Amazon Fire TV/stick](http://www.amazon.com/Amazon-DV83YW-Fire-TV/dp/B00U3FPN4U). The python-firetv Python 2.x module with its helper script that exposes a HTTP server to fetch state and perform actions is used. diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index effa67c954f..905d108b083 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -13,7 +13,7 @@ featured: true --- -The kodi platform allows you to control a [Kodi](http://kodi.tv/) multimedia system from Home Assistant. +The `kodi` platform allows you to control a [Kodi](http://kodi.tv/) multimedia system from Home Assistant. To add Kodi to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/media_player.mpd.markdown b/source/_components/media_player.mpd.markdown index 49d5b265325..cd2a8e3f8a4 100644 --- a/source/_components/media_player.mpd.markdown +++ b/source/_components/media_player.mpd.markdown @@ -12,7 +12,7 @@ ha_category: Media Player --- -The mpd platform allows you to control a [Music Player Daemon](http://www.musicpd.org/) from Home Assistant. Unfortunatly you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. +The `mpd` platform allows you to control a [Music Player Daemon](http://www.musicpd.org/) from Home Assistant. Unfortunatly you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. To add MPD to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown index 22354e8d55a..a080ae0f4b1 100644 --- a/source/_components/media_player.sonos.markdown +++ b/source/_components/media_player.sonos.markdown @@ -13,7 +13,7 @@ featured: true --- -The sonos platform allows you to control your [Sonos](http://www.sonos.com) HiFi wireless speakers and audio components from Home Assistant. +The `sonos` platform allows you to control your [Sonos](http://www.sonos.com) HiFi wireless speakers and audio components from Home Assistant. To add your Sonos components to your installation, add the following to your `configuration.yaml` file. It will perform auto-discovery of your connected speakers. diff --git a/source/_components/notify.file.markdown b/source/_components/notify.file.markdown index da02630853f..042c088e806 100644 --- a/source/_components/notify.file.markdown +++ b/source/_components/notify.file.markdown @@ -11,7 +11,7 @@ ha_category: Notifications --- -The file platform allows you to store notifications from Home Assistant as a file. +The `file` platform allows you to store notifications from Home Assistant as a file. To enable file notifications in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/notify.instapush.markdown b/source/_components/notify.instapush.markdown index 9160a0ea649..77bd22b8844 100644 --- a/source/_components/notify.instapush.markdown +++ b/source/_components/notify.instapush.markdown @@ -12,7 +12,7 @@ ha_category: Notifications --- -The instapush platform uses [Instapush](https://instapush.im) to delivery notifications from Home Assistant to your Android or iOS device. +The `instapush` platform uses [Instapush](https://instapush.im) to delivery notifications from Home Assistant to your Android or iOS device. The Instapush [Getting Started page](https://instapush.im/home/start/) will guide through the process of creating the required items. diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index a83e2622954..e87485a0b52 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT notifications" +title: "MQTT Notifications" description: "Instructions how to add MQTT notifications to Home Assistant." date: 2016-02-01 08:00 sidebar: true diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index df0d51888e0..d3639631ce4 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -12,7 +12,7 @@ ha_category: Notifications --- -The slack platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). +The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). You need to obtain the [Slack API token](https://api.slack.com/web?sudo=1) to be able to send notifications. diff --git a/source/_components/notify.syslog.markdown b/source/_components/notify.syslog.markdown index 9ff602d809c..b5e72bf4a4b 100644 --- a/source/_components/notify.syslog.markdown +++ b/source/_components/notify.syslog.markdown @@ -11,7 +11,7 @@ ha_category: Notifications --- -The syslog platform allows you to deliver notifications from Home Assistant to the local syslog. +The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. To enable syslog notifications in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index d381fd0fca1..4f9996c236a 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -12,7 +12,7 @@ ha_category: Notifications --- -The xmpp platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](http://xmpp.org) account. +The `xmpp` platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](http://xmpp.org) account. ```yaml # Example configuration.yaml entry diff --git a/source/_components/sensor.arduino.markdown b/source/_components/sensor.arduino.markdown index fa013a9f0df..0db13205738 100644 --- a/source/_components/sensor.arduino.markdown +++ b/source/_components/sensor.arduino.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Arduino sensor" +title: "Arduino Sensor" description: "Instructions how to integrate Arduino boards pins as sensors within Home Assistant." date: 2015-09-14 18:28 sidebar: true @@ -12,7 +12,7 @@ ha_category: DIY --- -The arduino sensor platform allows allow you to get an numerical values from an analog input pin of an [Arduino](https://www.arduino.cc/) board. Usually the value is between 0 and 1024. +The `arduino` sensor platform allows allow you to get an numerical values from an analog input pin of an [Arduino](https://www.arduino.cc/) board. Usually the value is between 0 and 1024. To enable an Arduino sensor with Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown index 89326f3db32..c75bc22b603 100644 --- a/source/_components/sensor.arest.markdown +++ b/source/_components/sensor.arest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "aREST sensor" +title: "aREST Sensor" description: "Instructions how to integrate aREST sensors within Home Assistant." date: 2015-09-07 18:15 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -The arest sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. +The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. To use your aREST enabled device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown index efb232c67fe..da6cd72b01d 100644 --- a/source/_components/sensor.bitcoin.markdown +++ b/source/_components/sensor.bitcoin.markdown @@ -12,7 +12,7 @@ ha_category: Sensor --- -The bitcoin platform displays various details about the [Bitcoin](https://bitcoin.org) network. +The `bitcoin` platform displays various details about the [Bitcoin](https://bitcoin.org) network. If you have an online wallet from [Blockchain.info](https://blockchain.info/) the sensor is capable to show your current balance. diff --git a/source/_components/sensor.command_sensor.markdown b/source/_components/sensor.command_sensor.markdown index 914ce66f8ff..06dc43d64b5 100644 --- a/source/_components/sensor.command_sensor.markdown +++ b/source/_components/sensor.command_sensor.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Command line sensor" +title: "Command line Sensor" description: "Instructions how to integrate command line sensors into Home Assistant." date: 2015-09-13 10:10 sidebar: true diff --git a/source/_components/sensor.cpuspeed.markdown b/source/_components/sensor.cpuspeed.markdown index 96e04b4c57b..a8b43142bb7 100644 --- a/source/_components/sensor.cpuspeed.markdown +++ b/source/_components/sensor.cpuspeed.markdown @@ -11,7 +11,7 @@ ha_category: Sensor --- -The cpuspeed sensor platform to allow you to monitor the current CPU speed. +The `cpuspeed` sensor platform to allow you to monitor the current CPU speed. To add this platform to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.dht.markdown b/source/_components/sensor.dht.markdown index 3f00c01b4d3..6718cab67fe 100644 --- a/source/_components/sensor.dht.markdown +++ b/source/_components/sensor.dht.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "DHT sensor" +title: "DHT Sensor" description: "Instructions how to integrate DHTxx sensors within Home Assistant." date: 2015-08-30 19:15 sidebar: true @@ -11,7 +11,7 @@ ha_category: DIY --- -The dht sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device. +The `dht` sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device. To use your DHTxx sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.ecobee.markdown b/source/_components/sensor.ecobee.markdown index ec9fcf8338c..e729c466192 100644 --- a/source/_components/sensor.ecobee.markdown +++ b/source/_components/sensor.ecobee.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Ecobee sensor" +title: "Ecobee Sensor" description: "Instructions how to setup the Ecobee sensors within Home Assistant." date: 2015-11-30 18:00 sidebar: true diff --git a/source/_components/sensor.forecast.markdown b/source/_components/sensor.forecast.markdown index e8707d91ec2..a28b1428931 100644 --- a/source/_components/sensor.forecast.markdown +++ b/source/_components/sensor.forecast.markdown @@ -13,7 +13,7 @@ featured: true --- -The forecast platform uses the [Forecast.io](https://forecast.io/) web service as a source for meteorological data for your location. The location is based on the Longitude and Latitude cooridinates configured in `configuration.yaml`. The cooridinates are auto detected but to take advantage of the hyper-local weather reported by forecast.io, you can refine them down to your exact home address. GPS cooridinates can be found by using Google Maps and clicking on your home. +The `forecast` platform uses the [Forecast.io](https://forecast.io/) web service as a source for meteorological data for your location. The location is based on the Longitude and Latitude cooridinates configured in `configuration.yaml`. The cooridinates are auto detected but to take advantage of the hyper-local weather reported by forecast.io, you can refine them down to your exact home address. GPS cooridinates can be found by using Google Maps and clicking on your home. You need an API key which is free but requires a [registration](https://developer.forecast.io/register). You can make 1000 requests per day. This means that you could create one approximately every 1.4 minutes. diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown index 632427d052b..700320445cd 100644 --- a/source/_components/sensor.glances.markdown +++ b/source/_components/sensor.glances.markdown @@ -12,7 +12,7 @@ ha_category: Sensor --- -The glances sensor platform is consuming the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. +The `glances` sensor platform is consuming the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. This sensors needs a running instance of `glances` on the host. The minimal supported version of `glances` is 2.3: diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index 404868f4fe6..e4f331eb605 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Modbus sensor" +title: "Modbus Sensor" description: "Instructions how to integrate Modbus sensors into Home Assistant." date: 2015-08-30 23:38 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -The modbus sensor platform allows you to gather data from your [Modbus](http://www.modbus.org/) sensors. +The `modbus` sensor platform allows you to gather data from your [Modbus](http://www.modbus.org/) sensors. To use your Modbus sensors in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index 71b6355428d..11bb2a10983 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT sensor" +title: "MQTT Sensor" description: "Instructions how to integrate MQTT sensors within Home Assistant." date: 2015-05-30 23:21 sidebar: true diff --git a/source/_components/sensor.mysensors.markdown b/source/_components/sensor.mysensors.markdown index bc58715d98b..5c2125230b8 100644 --- a/source/_components/sensor.mysensors.markdown +++ b/source/_components/sensor.mysensors.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MySensors sensors" +title: "MySensors Sensor" description: "Instructions how to integrate MySensors sensors into Home Assistant." date: 2016-01-17 15:49 sidebar: true diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index e70634ee3ff..75342dd4727 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Nest sensor" +title: "Nest Sensor" description: "Instructions how to integrate Nest sensors within Home Assistant." date: 2016-01-13 19:59 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -The Nest sensor platform let you monitor sensors connected to your [Nest](https://nest.com) thermostat. +The `nest` sensor platform let you monitor sensors connected to your [Nest](https://nest.com) thermostat. To set it up, add the following information to your `configuration.yaml` file: @@ -35,5 +35,15 @@ sensor: Configuration variables: - **monitored_conditions** array (*Required*): States to monitor. + - 'temperature' + - 'target' + - 'away_temperature[0]' + - 'away_temperature[1]' + - 'humidity' + - 'mode' + - 'last_ip' + - 'local_ip' + - 'last_connection' + - 'battery_level' -

You must have the [Nest component](https://home-assistant.io/components/nest/) configured to use this sensor.

+

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

diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index 2e7b4d01d2b..119cfad3f9c 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Netatmo" +title: "Netatmo Sensor" description: "Instructions how to integrate Netatmo sensors into Home Assistant." date: 2016-01-14 08:10 sidebar: true @@ -76,4 +76,4 @@ You have to provide these name in your Home Assistant configuration file.

The Home Assistant NetAtmo platform has only be tested with the classic indoor and outdoor module. There is no support for the rainmeter and windmeter module at this time because developers does not own these modules. -

\ No newline at end of file +

diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index 44cb32bea84..e6652b4b842 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "One wire sensor" +title: "One wire Sensor" description: "Instructions how to integrate One wire (1-wire) sensors into Home Assistant." date: 2016-01-17 07:15 sidebar: true diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown index 11b0dd5b541..df7e0b8c2a6 100644 --- a/source/_components/sensor.openweathermap.markdown +++ b/source/_components/sensor.openweathermap.markdown @@ -12,7 +12,7 @@ ha_category: Weather --- -The openweathermap platform uses [OpenWeatherMap](http://openweathermap.org/) as an source for current meteorological data for your location. The `forecast` will show you the condition in 3 h. +The `openweathermap` platform uses [OpenWeatherMap](http://openweathermap.org/) as an source for current meteorological data for your location. The `forecast` will show you the condition in 3 h. You need an API key which is free but requires a [registration](http://home.openweathermap.org/users/sign_up). diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 39149765480..6cdf092461f 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RESTful sensor" +title: "RESTful Sensor" description: "Instructions how to integrate REST sensors into Home Assistant." date: 2015-09-14 19:10 sidebar: true diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown index 9b8efa6c138..0c0f9a4f30d 100644 --- a/source/_components/sensor.rfxtrx.markdown +++ b/source/_components/sensor.rfxtrx.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RFXtrx sensor" +title: "RFXtrx Sensor" description: "Instructions how to integrate RFXtrx sensors into Home Assistant." date: 2015-08-06 17:15 sidebar: true @@ -10,7 +10,7 @@ footer: true ha_category: Sensor --- -The rfxtrx platform support sensors that communicate in the frequency range of 433.92 MHz. +The `rfxtrx` platform support sensors that communicate in the frequency range of 433.92 MHz. To enable RFXtrx sensors in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index fa2718ff746..a86d2ce4e80 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -12,7 +12,7 @@ ha_category: Sensor --- -The sabnzbd platform will allow you to monitor your downloads with [SABnzbd](http://sabnzbd.org) from within Home Assistant and setup automation based on the information. +The `sabnzbd` platform will allow you to monitor your downloads with [SABnzbd](http://sabnzbd.org) from within Home Assistant and setup automation based on the information. To use sabnzbd with your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/sensor.swiss_public_transport.markdown index f2ab2840d96..8f17ad5a488 100644 --- a/source/_components/sensor.swiss_public_transport.markdown +++ b/source/_components/sensor.swiss_public_transport.markdown @@ -11,7 +11,7 @@ ha_category: Sensor --- -The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland. +The `swiss_public_transport` sensor will give you the next two departure times from a given location to another one in Switzerland. The [Stationboard](http://transport.opendata.ch/examples/stationboard.html) website can help to determine the exact name of the start and the end station. With the station names it's necessary to search for the ID of those stations: diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index fd44db9b33b..5915533cd48 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -10,7 +10,7 @@ footer: true ha_category: Sensor --- -The system monitoring sensor platform to allow you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated. +The `systemmonitor` sensor platform to allow you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated. To add this platform to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.tellduslive.markdown b/source/_components/sensor.tellduslive.markdown index 9874f868a25..d7e3ae398b4 100644 --- a/source/_components/sensor.tellduslive.markdown +++ b/source/_components/sensor.tellduslive.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Telldus Live sensors" +title: "Telldus Live sensor" description: "Instructions how to integrate Telldus Live sensors into Home Assistant." date: 2016-01-17 15:49 sidebar: true diff --git a/source/_components/sensor.tellstick.markdown b/source/_components/sensor.tellstick.markdown index cc8b995135c..1051222cdcd 100644 --- a/source/_components/sensor.tellstick.markdown +++ b/source/_components/sensor.tellstick.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "TellStick sensor" +title: "TellStick Sensor" description: "Instructions how to integrate TellStick sensors into Home Assistant." date: 2015-08-06 19:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -This tellstick sensor platform allows you to get current meteorological data from a [TellStick](http://www.telldus.se/products/tellstick) device. +The `tellstick` sensor platform allows you to get current meteorological data from a [TellStick](http://www.telldus.se/products/tellstick) device. To use your TellStick device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown index 386f8108e99..b1533e21d07 100644 --- a/source/_components/sensor.temper.markdown +++ b/source/_components/sensor.temper.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "TEMPer sensor" +title: "TEMPer Sensor" description: "Instructions how to integrate TEMPer sensors into Home Assistant." date: 2015-08-06 19:00 sidebar: true @@ -10,7 +10,7 @@ footer: true ha_category: Sensor --- -This temper sensor platform allows you to get the current temperature from a TEMPer device. +This `temper` sensor platform allows you to get the current temperature from a TEMPer device. To use your TEMPer sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 7be558afb14..7cfdcd83afc 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Template sensor" +title: "Template Sensor" description: "Instructions how to integrate Template sensors into Home Assistant." date: 2016-01-27 07:00 sidebar: true diff --git a/source/_components/sensor.time_date.markdown b/source/_components/sensor.time_date.markdown index 612bce17a13..82f287e0ca2 100644 --- a/source/_components/sensor.time_date.markdown +++ b/source/_components/sensor.time_date.markdown @@ -11,7 +11,7 @@ ha_category: Sensor --- -The time and date platform simple displays the time in various formats, the date, or both. +The time and date (`time_date`) platform simple displays the time in various formats, the date, or both. To enable this sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown index 7714f867188..cc7952fa5e9 100644 --- a/source/_components/sensor.transmission.markdown +++ b/source/_components/sensor.transmission.markdown @@ -1,7 +1,7 @@ --- layout: component -title: "Transmission sensor" -description: "Instructions how to integrate Transmission within Home Assistant." +title: "Transmission Sensor" +description: "Instructions how to integrate Transmission sensors within Home Assistant." date: 2015-04-25 9:06 sidebar: true comments: false @@ -12,7 +12,7 @@ ha_category: Sensor --- -The [Transmission](http://www.transmissionbt.com/) platform allows you to monitor your downloads from within Home Assistant and setup automation based on the information. +The `trnasmission` platform allows you to monitor your downloads with [Transmission](http://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information. ```yaml # Example configuration.yaml entry diff --git a/source/_components/sensor.vera.markdown b/source/_components/sensor.vera.markdown index 6386b2efaa7..93fd9fbe8f7 100644 --- a/source/_components/sensor.vera.markdown +++ b/source/_components/sensor.vera.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Vera sensor" +title: "Vera Sensor" description: "Instructions how to integrate Vera sensors into Home Assistant." date: 2015-10-20 21:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -This vera sensor platform allows you to get data from your [Vera](http://getvera.com/) sensors. +This `vera` sensor platform allows you to get data from your [Vera](http://getvera.com/) sensors. To use your Vera sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.wink.markdown b/source/_components/sensor.wink.markdown index 5238e0d8cdc..ab4f49f758b 100644 --- a/source/_components/sensor.wink.markdown +++ b/source/_components/sensor.wink.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Wink sensor" +title: "Wink Sensor" description: "Instructions how to setup the Wink sensors within Home Assistant." date: 2015-01-20 22:36 sidebar: true @@ -12,7 +12,7 @@ ha_category: Sensor --- -The wink sensor platform allows you to get data from your [Wink](http://www.wink.com/) sensors. +The Wink sensor platform allows you to get data from your [Wink](http://www.wink.com/) sensors. The requirement is that you have setup your [Wink hub](/components/light.wink/). diff --git a/source/_components/sensor.worldclock.markdown b/source/_components/sensor.worldclock.markdown index ef6c0f7a4ee..77989ab332b 100644 --- a/source/_components/sensor.worldclock.markdown +++ b/source/_components/sensor.worldclock.markdown @@ -11,7 +11,7 @@ ha_category: Sensor --- -The worldclock platform simple displays the current time in a different time zone +The `worldclock` sensor platform simple displays the current time in a different time zone To enable this sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.zwave.markdown b/source/_components/sensor.zwave.markdown index 0de9c07750c..f26050bd784 100644 --- a/source/_components/sensor.zwave.markdown +++ b/source/_components/sensor.zwave.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Z-Wave sensor" +title: "Z-Wave Sensor" description: "Instructions how to setup the Z-Wave sensors within Home Assistant." date: 2015-11-15 13:00 sidebar: true diff --git a/source/_components/switch.arduino.markdown b/source/_components/switch.arduino.markdown index 7bdd9363e40..27d25a6194c 100644 --- a/source/_components/switch.arduino.markdown +++ b/source/_components/switch.arduino.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Arduino switch" +title: "Arduino Switch" description: "Instructions how to integrate Arduino boards pins as switches within Home Assistant." date: 2015-09-14 18:28 sidebar: true @@ -12,7 +12,7 @@ ha_category: DIY --- -The arduino switch platform allows you to control the digital pins of your [Arduino](https://www.arduino.cc/) board. Support for switching pins is limited to high/on and low/off of the digital pins. PWM (pin 3,5,6,9,10, and 11 on an Arduino Uno) is not supported yet. +The `arduino` switch platform allows you to control the digital pins of your [Arduino](https://www.arduino.cc/) board. Support for switching pins is limited to high/on and low/off of the digital pins. PWM (pin 3,5,6,9,10, and 11 on an Arduino Uno) is not supported yet. To enable the Arduino pins with Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/switch.arest.markdown b/source/_components/switch.arest.markdown index 8874ec4fd4e..e9e815fdb3c 100644 --- a/source/_components/switch.arest.markdown +++ b/source/_components/switch.arest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "aREST switch" +title: "aREST Switch" description: "Instructions how to integrate aREST switches within Home Assistant." date: 2015-09-11 23:15 sidebar: true @@ -11,7 +11,7 @@ logo: arest.png ha_category: Switch --- -The arest switch platform allows you to toggle pins of your devices (like Arduino boards with a ethernet/wifi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. +The `arest` switch platform allows you to toggle pins of your devices (like Arduino boards with a ethernet/wifi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. To use your aREST enabled device with pins in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.command_switch.markdown b/source/_components/switch.command_switch.markdown index 333f2ba277c..5850ad1dede 100644 --- a/source/_components/switch.command_switch.markdown +++ b/source/_components/switch.command_switch.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Command line switch" +title: "Command line Switch" description: "Instructions how to have switches call command line commands." date: 2015-06-10 22:41 sidebar: true diff --git a/source/_components/switch.edimax.markdown b/source/_components/switch.edimax.markdown index 479d6fba0cd..70220e148a2 100644 --- a/source/_components/switch.edimax.markdown +++ b/source/_components/switch.edimax.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Edimax switch" +title: "Edimax Switch" description: "Instructions how to integrate Edimax switches into Home Assistant." date: 2015-06-10 22:54 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -This edimax switch platform allows you to control the state of your [Edimax](http://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. +This `edimax` switch platform allows you to control the state of your [Edimax](http://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. To use your Edimax switch in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.hikvision.markdown b/source/_components/switch.hikvision.markdown index 05f3d47d00f..5dd60b46798 100644 --- a/source/_components/switch.hikvision.markdown +++ b/source/_components/switch.hikvision.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Hikvision camera" +title: "Hikvision Camera Switch" description: "Instructions how to integrate Hikvision camera's into Home Assistant." date: 2015-06-10 22:54 sidebar: true @@ -12,7 +12,7 @@ ha_category: Camera --- -This hikvisioncam switch platform allows you to control your motion detection setting on your [Hikvision](http://www.hikvision.com/) camera. +This `hikvisioncam` switch platform allows you to control your motion detection setting on your [Hikvision](http://www.hikvision.com/) camera.

Currently works using default https port only. diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown index ff8c2d269c6..fe3f8e7c90f 100644 --- a/source/_components/switch.modbus.markdown +++ b/source/_components/switch.modbus.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Modbus switch" +title: "Modbus Switch" description: "Instructions how to integrate Modbus switches into Home Assistant." date: 2015-08-30 23:38 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -The modbus switch platform allows you to control [Modbus](http://www.modbus.org/) switches. +The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) switches. To use your Modbus switches in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 88f42a36e66..6dd0904fb18 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MQTT switch" +title: "MQTT Switch" description: "Instructions how to integrate MQTT switches into Home Assistant." date: 2015-08-30 23:38 sidebar: true diff --git a/source/_components/switch.mysensors.markdown b/source/_components/switch.mysensors.markdown index 43de6457344..314418a1bfa 100644 --- a/source/_components/switch.mysensors.markdown +++ b/source/_components/switch.mysensors.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "MySensors switches" +title: "MySensors Switch" description: "Instructions how to integrate MySensors switches into Home Assistant." date: 2016-01-17 15:49 sidebar: true diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index eb6f281452e..3a586900820 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "myStrom switch" +title: "myStrom Switch" description: "Instructions how to integrate myStrom switches into Home Assistant." date: 2015-11-25 22:00 sidebar: true diff --git a/source/_components/switch.orvibo.markdown b/source/_components/switch.orvibo.markdown index 19c464e2438..37af0826e43 100644 --- a/source/_components/switch.orvibo.markdown +++ b/source/_components/switch.orvibo.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Orvibo switch" +title: "Orvibo Switch" description: "Instructions how to integrate Orvibo switches within Home Assistant." date: 2015-11-15 18:15 sidebar: true @@ -11,7 +11,7 @@ logo: orvibo.png ha_category: Switch --- -The orvibo switch platform allows you to toggle your Orvibo S20 Wifi Smart Switch. +The `orvibo` switch platform allows you to toggle your Orvibo S20 Wifi Smart Switch. To use your Orvibo switch in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index ed7dfdc110c..a33edb2e162 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RESTful switch" +title: "RESTful Switch" description: "Instructions how to integrate REST switches into Home Assistant." date: 2015-09-14 19:10 sidebar: true diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index 24eea9da287..e8d0d9654e8 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "RFXtrx switch" +title: "RFXtrx Switch" description: "Instructions how to integrate RFXtrx switches into Home Assistant." date: 2015-10-08 10:15 sidebar: true @@ -9,7 +9,8 @@ sharing: true footer: true ha_category: Switch --- -The rfxtrx platform support switches that communicate in the frequency range of 433.92 MHz. + +The `rfxtrx` platform support switches that communicate in the frequency range of 433.92 MHz. To enable RFXtrx switches in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.rpi_gpio.markdown b/source/_components/switch.rpi_gpio.markdown index 284352994b1..cc4f86a3e60 100644 --- a/source/_components/switch.rpi_gpio.markdown +++ b/source/_components/switch.rpi_gpio.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Raspberry PI GPIO switch" +title: "Raspberry PI GPIO Switch" description: "Instructions how to integrate the GPIO of a Raspberry PI into Home Assistant as a switch." date: 2015-08-07 14:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -The rpi_gpio switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). +The `rpi_gpio` switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.tellduslive.markdown b/source/_components/switch.tellduslive.markdown index ac38ab5f01f..18252be830a 100644 --- a/source/_components/switch.tellduslive.markdown +++ b/source/_components/switch.tellduslive.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Telldus Live switches" +title: "Telldus Live Switch" description: "Instructions how to integrate Telldus Live switches into Home Assistant." date: 2016-01-17 15:49 sidebar: true diff --git a/source/_components/switch.tellstick.markdown b/source/_components/switch.tellstick.markdown index 21f22f825a3..62495288f93 100644 --- a/source/_components/switch.tellstick.markdown +++ b/source/_components/switch.tellstick.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "TellStick switch" +title: "TellStick Switch" description: "Instructions how to integrate TellStick switches into Home Assistant." date: 2015-08-06 19:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -This tellstick switch platform allows you to control [TellStick](http://www.telldus.se/products/tellstick) devices. +This `tellstick` switch platform allows you to control [TellStick](http://www.telldus.se/products/tellstick) devices. To use your TellStick device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.transmission.markdown b/source/_components/switch.transmission.markdown index c6aa8e84cdf..b7120d44c00 100644 --- a/source/_components/switch.transmission.markdown +++ b/source/_components/switch.transmission.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Transmission switch" +title: "Transmission Switch" description: "Instructions how to integrate Transmission within Home Assistant." date: 2015-06-02 09:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -The transmission platform allows you to control your [Transmission](http://www.transmissionbt.com/) client from within Home Assistant. The platform enables you switch to your 'Alternative Speed Limits' (aka 'Turtle mode') setting. +The `transmission` switch platform allows you to control your [Transmission](http://www.transmissionbt.com/) client from within Home Assistant. The platform enables you switch to your 'Alternative Speed Limits' (aka 'Turtle mode') setting. To add Transmission to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.vera.markdown b/source/_components/switch.vera.markdown index 868d6301587..25e9b439fe1 100644 --- a/source/_components/switch.vera.markdown +++ b/source/_components/switch.vera.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Vera switch" +title: "Vera Switch" description: "Instructions how to integrate Vera switches into Home Assistant." date: 2015-10-20 21:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -This vera switch platform allows you to control your [Vera](http://getvera.com/) switches. +This `vera` switch platform allows you to control your [Vera](http://getvera.com/) switches. To use your Vera switches in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.wemo.markdown b/source/_components/switch.wemo.markdown index 7692befbb08..2528d8cbc11 100644 --- a/source/_components/switch.wemo.markdown +++ b/source/_components/switch.wemo.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Belkin WeMo switch" +title: "Belkin WeMo Switch" description: "Instructions how to integrate Belkin WeMo switches into Home Assistant." date: 2015-03-23 19:59 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -The wemo platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) switches from within Home Assistant. +The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) switches from within Home Assistant. They will be automatically discovered if the discovery component is enabled. diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index 29ca5b82106..a3067d45937 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Wink switch" +title: "Wink Switch" description: "Instructions how to setup the Wink switches within Home Assistant." date: 2015-01-20 22:36 sidebar: true @@ -12,7 +12,7 @@ ha_category: Switch --- -The wink switch platform allows you to control your [Wink](http://www.wink.com/) switches. +The Wink switch platform allows you to control your [Wink](http://www.wink.com/) switches. The requirement is that you have setup your [Wink hub](/components/light.wink/). diff --git a/source/_components/switch.zigbee.markdown b/source/_components/switch.zigbee.markdown index e75435b0184..83f8b267286 100644 --- a/source/_components/switch.zigbee.markdown +++ b/source/_components/switch.zigbee.markdown @@ -1,6 +1,6 @@ --- layout: component -title: ZigBee Switch +title: "ZigBee Switch" description: "Instructions on how to set up ZigBee switches within Home Assistant." date: 2016-01-28 11:52 sidebar: true diff --git a/source/_components/switch.zwave.markdown b/source/_components/switch.zwave.markdown index 7ae6919567e..270690b276d 100644 --- a/source/_components/switch.zwave.markdown +++ b/source/_components/switch.zwave.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Z-Wave switch" +title: "Z-Wave Switch" description: "Instructions how to setup the Z-Wave switches within Home Assistant." date: 2015-11-15 13:00 sidebar: true diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index 913415ece60..3b50d202bd8 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -12,7 +12,7 @@ ha_category: Hub --- -The tellstick component integrates [TellStick](http://www.telldus.se/products/tellstick) devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 Mhz. There are couple of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) how are selling products which works with TellStick. For more details, please check the TellStick [compatibility list](http://telldus.se/products/compability). +The `tellstick` component integrates [TellStick](http://www.telldus.se/products/tellstick) devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 Mhz. There are couple of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) how are selling products which works with TellStick. For more details, please check the TellStick [compatibility list](http://telldus.se/products/compability). To get started, add the devices to your `configuration.yaml` file. diff --git a/source/_components/thermostat.ecobee.markdown b/source/_components/thermostat.ecobee.markdown index eb25c3f2f29..35cf51563ca 100644 --- a/source/_components/thermostat.ecobee.markdown +++ b/source/_components/thermostat.ecobee.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Ecobee thermostat" +title: "Ecobee Thermostat" description: "Instructions how to setup the Ecobee thermostats within Home Assistant." date: 2015-11-30 18:00 sidebar: true diff --git a/source/_components/thermostat.heatmiser.markdown b/source/_components/thermostat.heatmiser.markdown index a3bff2cf420..c98b78d78b7 100644 --- a/source/_components/thermostat.heatmiser.markdown +++ b/source/_components/thermostat.heatmiser.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Heatmiser thermostat" +title: "Heatmiser Thermostat" description: "Instructions how to integrate Heatmiser thermostats within Home Assistant." date: 2015-12-11 12:35 sidebar: true @@ -12,7 +12,7 @@ ha_category: Thermostat --- -The heatmiser thermostat platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](http://www.heatmisershop.co.uk/heatmiser-slimline-programmable-room-thermostat/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. +The `heatmiser` thermostat platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](http://www.heatmisershop.co.uk/heatmiser-slimline-programmable-room-thermostat/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. To set it up, add the following information to your `configuration.yaml` file: @@ -35,4 +35,4 @@ Configuration variables: - **port** (*Required*): The port that the interface is listening on. - **tstats** (*Required*): A list of thermostats activated on the gateway. - **id** (*Required*): The id of the thermostat as configured on the device itself -- **name** (*Required*): A friendly name for the themostat \ No newline at end of file +- **name** (*Required*): A friendly name for the themostat diff --git a/source/_components/thermostat.homematic.markdown b/source/_components/thermostat.homematic.markdown index b281ec41841..a887fd51464 100644 --- a/source/_components/thermostat.homematic.markdown +++ b/source/_components/thermostat.homematic.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Homematic thermostat" +title: "Homematic Thermostat" description: "Instructions how to integrate Homematic thermostats within Home Assistant." date: 2015-11-25 08:00 sidebar: true @@ -12,7 +12,7 @@ ha_category: Thermostat --- -The homematic thermostat platform let you control [Homematic](http://www.homematic.com/) thermostat from Home Assistant. Currently there is support for Homematic (HM-TC-IT-WM-W-EU, HM-CC-RT-DN) thermostats using Homegear or Homematic central (CCU1/CCU2). +The `homematic` thermostat platform let you control [Homematic](http://www.homematic.com/) thermostat from Home Assistant. Currently there is support for Homematic (HM-TC-IT-WM-W-EU, HM-CC-RT-DN) thermostats using Homegear or Homematic central (CCU1/CCU2). To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_components/thermostat.honeywell.markdown b/source/_components/thermostat.honeywell.markdown index baaaf7fd14a..3c2e5bf7170 100644 --- a/source/_components/thermostat.honeywell.markdown +++ b/source/_components/thermostat.honeywell.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Honeywell thermostat" +title: "Honeywell Thermostat" description: "Instructions how to integrate Honeywell thermostats within Home Assistant." date: 2015-11-09 17:15 sidebar: true @@ -12,7 +12,7 @@ ha_category: Thermostat --- -The honeywell thermostat platform let you control [Honeywell Connected](http://getconnected.honeywell.com/en/) thermostats from Home Assistant. +The `honeywell` thermostat platform let you control [Honeywell Connected](http://getconnected.honeywell.com/en/) thermostats from Home Assistant. To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_components/thermostat.nest.markdown b/source/_components/thermostat.nest.markdown index 3164fb8c633..b139e671eb8 100644 --- a/source/_components/thermostat.nest.markdown +++ b/source/_components/thermostat.nest.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Nest thermostat" +title: "Nest Thermostat" description: "Instructions how to integrate Nest thermostats within Home Assistant." date: 2015-03-23 19:59 sidebar: true @@ -12,7 +12,7 @@ ha_category: Thermostat --- -The Nest thermostat platform let you control a thermostat from [Nest](https://nest.com). +The `nest` thermostat platform let you control a thermostat from [Nest](https://nest.com). To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_components/thermostat.proliphix.markdown b/source/_components/thermostat.proliphix.markdown index 6f8a4ce9b2c..3efb55e43ef 100644 --- a/source/_components/thermostat.proliphix.markdown +++ b/source/_components/thermostat.proliphix.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Proliphix thermostat" +title: "Proliphix Thermostat" description: "Instructions how to integrate Proliphix thermostats within Home Assistant." date: 2016-01-15 08:00 sidebar: true diff --git a/source/_components/thermostat.radiotherm.markdown b/source/_components/thermostat.radiotherm.markdown index 37e9ae1999d..0c93089cb4b 100644 --- a/source/_components/thermostat.radiotherm.markdown +++ b/source/_components/thermostat.radiotherm.markdown @@ -1,6 +1,6 @@ --- layout: component -title: "Radiotherm thermostat" +title: "Radiotherm Thermostat" description: "Instructions how to integrate Radiotherm thermostats within Home Assistant." date: 2015-10-18 17:15 sidebar: true @@ -12,7 +12,7 @@ ha_category: Thermostat --- -The nest thermostat platform let you control a thermostat from [Radio Thermostat](http://www.radiothermostat.com/). +The `radiotherm` thermostat platform let you control a thermostat from [Radio Thermostat](http://www.radiothermostat.com/). The underlaying library supports: - CT50 V1.09 From 117a4137f5eef7d2dab3a4b4a7bb0d131079e1bb Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 11:07:48 +0100 Subject: [PATCH 020/601] Add http sensor docs --- source/_components/sensor.http.markdown | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/_components/sensor.http.markdown diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown new file mode 100644 index 00000000000..21faf7405f2 --- /dev/null +++ b/source/_components/sensor.http.markdown @@ -0,0 +1,55 @@ +--- +layout: component +title: "HTTP Sensor" +description: "Instructions how to integrate HTTP sensors within Home Assistant." +date: 2016-02-05 12:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: http.png +ha_category: Sensor +--- + +The URL for a sensor looks like the example below: + +```bash +http://IP_ADDRESS:8123/api/states/sensor.DEVICE_NAME +``` + +

+It's suggested that you choose an unique device name (DEVICE_NAME) to avoid clashes with other devices. +

+ + The JSON payload must contain the new state and should include the unit of measurement and a friendly name. The friendly name is used in the frontend to name the sensor. + +```json +{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temperature"}} +``` + +For a quick test `curl` can be useful to "simulate" a device. + +```bash +$ curl -XPOST -H "x-ha-access: YOUR_PASSWORD" \ + -d '{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temp"}}' \ + http://localhost:8123/api/states/sensor.bathroom_temperature +``` + +Use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id) to check if the sensor is working. + +```bash +$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ + http://localhost:8123/api/states/sensor.bathroom_temperature +{ + "attributes": { + "friendly_name": "Bathroom Temp", + "unit_of_measurement": "\u00b0C" + }, + "entity_id": "sensor.bathroom_temperature", + "last_changed": "09:46:17 06-02-2016", + "last_updated": "09:48:46 06-02-2016", + "state": "20" +} +``` + +For more examples please visit the [HTTP Binary Sensor](/components/binary_sensor.http/#examples) page. From 8efd0e7d17e7aec504a1afc01730f42a99e3b1b0 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 11:08:07 +0100 Subject: [PATCH 021/601] Move some parts to http component docs --- source/_components/binary_sensor.http.markdown | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index e24de061558..72ac7dedfaa 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -11,18 +11,17 @@ logo: http.png ha_category: Binary Sensor --- - -The `http` binary sensor platform is not a real platform within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) is consuming and proceeding messages recieved over HTTP. - -To use those kind of sensors in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themself. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. - -All [requests](/developers/rest_api/#post-apistatesltentity_id) needs to be sent to the endpoint of the device and must be **POST**. The URL looks like the example below: +The URL for a binary sensor looks like the example below: ```bash http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME ``` -It's suggested that you choose an unique device name to avoid clashes with other devices. The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor. +

+It's suggested that you choose an unique device name (DEVICE_NAME) to avoid clashes with other devices. +

+ +The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor. ```json {"state": "on", "attributes": {"friendly_name": "Radio"}} From f85ff0a8f320d3498b7e0e3a1f33c3cef8daed2f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 11:08:28 +0100 Subject: [PATCH 022/601] Add details about sensors --- source/_components/http.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index f0876ff711d..f0a7f0d6e49 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -25,9 +25,16 @@ http: Configuration variables: -- **api_password** (*Optional*): Protect Home Assistant with a password +- **api_password** (*Optional*): Protect Home Assistant with a password. - **server_port** (*Optional*): Let you set a port to use. Defaults to 8123. - **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development. - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. +On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. + +The `http` platforms are not a real platform within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) is consuming and proceeding messages received over HTTP. + +To use those kind of sensors in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. + +All [requests](/developers/rest_api/#post-apistatesltentity_id) needs to be sent to the endpoint of the device and must be **POST**. From 1a4159ec5511b90719b174f96623579373efdacd Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 11:08:51 +0100 Subject: [PATCH 023/601] Update title --- source/developers/api.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/api.markdown b/source/developers/api.markdown index e2a3fb24705..2b69960b015 100644 --- a/source/developers/api.markdown +++ b/source/developers/api.markdown @@ -12,5 +12,5 @@ footer: true Home Assistant is offering a RESTful API and a Python API for convenient access to a Home Assistant instance over HTTP. -- [Rest API](/developers/rest_api/) +- [RESTful API](/developers/rest_api/) - [Python API](/developers/python_api/) From 856a23aa9d7b5e9e20cbd06a4530b4dfa910ec9f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 11:09:04 +0100 Subject: [PATCH 024/601] Update title --- source/developers/rest_api.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index 3537acc9826..373eeba3bfd 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Rest API" -description: "Home Assistant Rest API documentation" +title: "RESTful API" +description: "Home Assistant RESTful API documentation" date: 2014-12-21 13:27 sidebar: false comments: false @@ -14,7 +14,7 @@ Home Assistant runs a web server accessible on port 8123. * http://IP_ADDRESS:8123/ is an interface to control Home Assistant. * http://IP_ADDRESS:8123/api/ is a Rest API. -The API accepts and returns only JSON encoded objects. All API calls have to be accompanied by the header `X-HA-Access: YOUR_PASSWORD` (YOUR_PASSWORD as specified in your `configuration.yaml` file). +The API accepts and returns only JSON encoded objects. All API calls have to be accompanied by the header `X-HA-Access: YOUR_PASSWORD` (YOUR_PASSWORD as specified in your `configuration.yaml` file in the [`http:` section](/components/http/)). There are multiple ways to consume the Home Assistant Rest API. One is with `curl`: From c5aaa22792be0cb46bc30e1abb02cea11c4e7daf Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 6 Feb 2016 23:18:05 +0100 Subject: [PATCH 025/601] Update note --- source/_components/binary_sensor.http.markdown | 2 +- source/_components/sensor.http.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index 72ac7dedfaa..8b7d19b096f 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -18,7 +18,7 @@ http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME ```

-It's suggested that you choose an unique device name (DEVICE_NAME) to avoid clashes with other devices. +You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices.

The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor. diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown index 21faf7405f2..8681aca6d23 100644 --- a/source/_components/sensor.http.markdown +++ b/source/_components/sensor.http.markdown @@ -18,7 +18,7 @@ http://IP_ADDRESS:8123/api/states/sensor.DEVICE_NAME ```

-It's suggested that you choose an unique device name (DEVICE_NAME) to avoid clashes with other devices. +You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices.

The JSON payload must contain the new state and should include the unit of measurement and a friendly name. The friendly name is used in the frontend to name the sensor. From 1db6e1fed825fc3d33f76e08806a2d6dd8aa8cab Mon Sep 17 00:00:00 2001 From: pavoni Date: Sat, 6 Feb 2016 22:51:18 +0000 Subject: [PATCH 026/601] Add more complex sensor.template example. --- source/_components/sensor.template.markdown | 24 ++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 7cfdcd83afc..a26501a14bb 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -41,7 +41,7 @@ In this section you find some real life examples of how to use this sensor. ### {% linkable_title Sun angle %} -This example shows the sun angle in the frontend. +This example shows the sun angle in the frontend. ```yaml sensor: @@ -53,5 +53,27 @@ sensor: unit_of_measurement: '°' ``` +### {% linkable_title Multi line example with an if test %} + +This example shows a multiple line template with and is test. It looks at a sensing switch and shows on/off in the frontend. + +```yaml +sensor: + platform: template + sensors: + kettle: + friendly_name: 'Kettle' + {% raw %}value_template: >- + {%- if is_state("switch.kettle", "standby") or + is_state("switch.kettle", "off") %} + off + {% elif is_state("switch.kettle", "on") %} + on + {% else %} + failed + {%- endif %}{% endraw %} + +``` +(please note the blank line to close the multi-line template) From 550ee46abb147dac6bb330c16b41faf91e6e87a2 Mon Sep 17 00:00:00 2001 From: pavoni Date: Sun, 7 Feb 2016 00:00:08 +0000 Subject: [PATCH 027/601] Add a number comparison to the example. --- source/_components/sensor.template.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index a26501a14bb..533221a100c 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -64,9 +64,10 @@ sensor: kettle: friendly_name: 'Kettle' {% raw %}value_template: >- - {%- if is_state("switch.kettle", "standby") or - is_state("switch.kettle", "off") %} + {%- if is_state("switch.kettle", "off") %} off + {% elif states.switch.kettle.attributes.kwh < 1000 %} + standby {% elif is_state("switch.kettle", "on") %} on {% else %} From d012717b835edbe4ff999c9cdbdbe908b68fd042 Mon Sep 17 00:00:00 2001 From: Jeremiah Wuenschel Date: Sat, 6 Feb 2016 21:54:08 -0800 Subject: [PATCH 028/601] Created a rough draft describing the MQTT Bridge setup --- ...ings-with-MQTT-and-Home-Assistant.markdown | 191 ++++++++++++++++++ .../SmartThings-HomeAssistant.png | Bin 0 -> 52969 bytes 2 files changed, 191 insertions(+) create mode 100644 source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown create mode 100644 source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png diff --git a/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown new file mode 100644 index 00000000000..61ecb36d59d --- /dev/null +++ b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown @@ -0,0 +1,191 @@ +--- +layout: post +title: "Smarter Smart Things with MQTT and Home Assistant" +description: "Jer and St. John describe how they connected SmartThings with Home Assistant." +date: 2016-02-09 10:10 -0700 +date_formatted: "February 09, 2016" +author: Jeremiah Wuenschel and St. John Johnson +comments: true +categories: User-Stories +og_image: /images/blog/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.jpg +--- + + +_This is a guest post by Home Assistant users [Jeremiah Wuenschel](https://github.com/jer) and [St. John Johnson](https://github.com/stjohnjohnson)._ + + +### Why combine SmartThings and Home Assistant? + + +### Bridge Design +**HTTP Endpoint**: There are really only 2 ways to communicate with the SmartThings hub that we could find. The easiest approach is to create a RESTful SmartApp authenticated with OAuth that provides state changes via HTTP directly. This approach is pretty straightforward to implement, but it requires communication with the SmartThings cloud service, and can't be done entirely on your LAN. We hoped to keep all communication internal, and came up with a second approach. + +**Custom Device Type:** SmartThings custom device types allow developers to define handlers for HTTP events received directly over the local network by the SmartThings hub. Messages received are authenticated by MAC address, and can contain arbitrary strings in their payload. Since a Device Type is only ever tied to a single device, we need to add a SmartApp to the mix in order to translate events between individual devices and our special Home Assistant Bridge device. Here is what we have so far: +``` +Z-Wave Switch | +Zigbee motion sensor |<---> Bridge App <---> Bridge Device Type <---> +Z-Wave light bulb | +``` + +On the Home Assistant side, there is a powerful platform available based on the MQTT lightweight message bus protocol. Everything from lights to switches to temperature sensors can be defined in Home Assistant as an MQTT component, so it makes for a convenient integration point. This requires an MQTT broker for handling the message bus, and one last piece to translate between the HTTP that SmartThings supports and MQTT. + +Here is the final sequence of events: + +![SmartThings Bridge Sequence]("/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png" "SmartThings Bridge Sequence") + + +There are a lot of stops along the way for these events, but each piece is a simple translation layer to shuttle the events between systems. + +## Setting up the MQTT bridge + +### MQTT + +Assuming that you already have Home Assistant and Smart Things running, you wil first want to get an MQTT broker running. There are a handful of [MQTT][mosquitto] [brokers][emqttd] available in Open Source land. We chose [Mosca][mosca] for its simplicity. + +There is very little you need to do to get Mosca running. The easiest approach is to install [Docker][docker], and run a command like the following: + + $ docker run \ + -d \ + --name="mqtt" \ + -v /opt/mosca:/db \ + -p 1883:1883 \ + matteocollina/mosca + + +This will start Mosca up inside of a docker container, while keeping persistent storage for Mosca in `/opt/mosca`. The default configuration is the only thing we need to get things up and running. + +If you don't want to mess with Docker and can get node.js installed without trouble, the [Standalone][mosca-standalone] instructions are all you need. + +### MQTT Bridge + +This is the small piece of magic that bridges the gap between MQTT and SmartThings. It is a node.js app, and like Mosca it is probably easiest to install with Docker: + + $ docker run \ + -d \ + --name="mqtt-bridge" \ + -v /opt/mqtt-bridge:/config \ + -p 8080:8080 \ + stjohnjohnson/smartthings-mqtt-bridge + +The code for this bridge is [on Github][mqtt-bridge] if you want to start it up independently. + +The MQTT Bridge only needs to know where your MQTT broker lives. If you are using these docker commands as-is, edit `/opt/mqtt-bridge/config.yml` to look like this: + +```yaml +--- +mqtt: + host: localhost +``` + +Restart the bridge, and you are ready to go: + + $ docker restart mqtt-bridge + +### SmartThing + +The next step is the device type. Go to the [Smart Things Device IDE][ide-dt] and `Create New Device Handler`. Choose `From Code` and paste in the [MQTT Bridge Device Code][devicetype]. Click Save. + +Now to install your new Device Handler. Go back to `My Devices` in the IDE, and click `New Device`. Enter a name, and pick any random set of characters for the Device Network Id (this will automatically update later). For Type, scroll to the bottom of the list and find your newly created `MQTT Bridge`. Fill in the other boxes however you like. + +Go back to `My Devices`, and click on your new device in the list. This will bring up a page that allows you to edit your device's Preferences. Click `edit` and fill in the 3 pieces of information it asks for. + + MQTT Bridge IP Address: + MQTT Bridge Port: <8080 if you have changed nothing in the previous commands> + MQTT Bridge MAC Address: + +This will create the link between SmartThings and the MQTT Bridge. + +### SmartApp + +The last step is to setup the SmartApp. After this, any registered devices will start sending their events to MQTT. + +Go to the [Smart App IDE][ide-app]. Click `New SmartApp`, followed by `From Code`. Paste in the [MQTT Bridge SmartApp code][smartapp] and click `save`. In the SmartThings mobile app, add the new SmartApp and configure it with your devices and MQTT Bridge device. Clicking `done` will subscribe SmartThings to your MQTT broker and begin 2-way propagation of events. + +### Configure Home Assistant + +To add SmartThings devices to Home Assistant over MQTT, first enable MQTT in Home Assistant: + +```yaml +mqtt: + broker: localhost +``` + +Replace `localhost` with the location of the running MQTT Broker. Devices from the MQTT Bridge are published to the path `/smartthings//` + +For example, my Dimmer Z-Wave Lamp is called "Fireplace Lights" in SmartThings. The following topics are published: + + # Brightness (0-99) + /smartthings/Fireplace Lights/level + # Switch State (on|off) + /smartthings/Fireplace Lights/switch + +Here is an example Home Assistant config: + +```yaml +switch: + platform: mqtt + name: "Fireplace Lights" + state_topic: "/smartthings/Fireplace Lights/switch" + command_topic: "/smartthings/Fireplace Lights/switch" + brightness_state_topic: "/smartthings/Fireplace Lights/level" + brightness_command_topic: "/smartthings/Fireplace Lights/level" + payload_on: "on" + payload_off: "off" + retain: true +``` + +We recommend `retain: true` for every MQTT device in order to keep states in sync when things become disconnected. + +Start digging through the [MQTT Components][mqtt-ha] in Home Assistant to find which components map to the new events being published to MQTT. + +### Configuring with Docker-Compose + +Our personal prefernce for starting the whole suite of software is to use a single Docker-Compose file. + +Just create a file called docker-compose.yml like this: + +```yaml +mqtt: + image: matteocollina/mosca + ports: + - 1883:1883 + +mqttbridge: + image: stjohnjohnson/smartthings-mqtt-bridge + volumes: + - ./mqtt-bridge:/config + ports: + - 8080:8080 + links: + - mqtt + +homeassistant: + image: balloob/home-assistant + ports: + - 80:80 + volumes: + - ./home-assistant:/config + - /etc/localtime:/etc/localtime:ro + links: + - mqtt +``` + +This will start home-assistant, MQTT, and the Bridge, in dependency order. All config can reference the name of the docker container instead of localhost (e.g. mqtt for the broker host in Home Assistant). + +### Future Improvements +- **Raspberry pi**: There is a lot of interest in getting this running on the Raspberry Pi. It only requires binaries compiled for ARM, so we plan to get ARM-compatible versions of the containers going at some point. +- **Authentication for MQTT**: At the moment, the MQTT bridge doesn't understand how to authenticate to MQTT, so only unauthenticated MQTT is supported. This is mitigated to some degree if you use our Docker Compose config, because MQTT's port is not actually shared publicly. +- **Authentication for MQTT Bridge**: Right now the bridge expects that anyone subscribing is the SmartThings hub. This could use proper authentication. + + +[mosquitto]: http://mosquitto.org/ +[emqttd]: https://github.com/emqtt/emqttd +[mosca]: http://www.mosca.io/ +[docker]: https://www.docker.com/ +[mosca-standalone]: https://github.com/mcollina/mosca#standalone +[mqtt-bridge]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge +[ide-dt]: https://graph.api.smartthings.com/ide/devices +[devicetype]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/devicetypes/stj/mqtt-bridge.src/mqtt-bridge.groovy +[ide-app]: https://graph.api.smartthings.com/ide/apps +[smartapp]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/smartapps/stj/mqtt-bridge.src/mqtt-bridge.groovy +[mqtt-ha]: https://home-assistant.io/components/mqtt/ diff --git a/source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png b/source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0d2b970dec8114666cd81f57bb1f00c570c47f GIT binary patch literal 52969 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 F{tp!=O$Gn} literal 0 HcmV?d00001 From 967dea3b5aa5dc318c6134ed1d020c1f613ed04a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 09:40:31 +0100 Subject: [PATCH 029/601] Add history endpoint --- source/developers/rest_api.markdown | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index 373eeba3bfd..3cce09cf727 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -166,6 +166,46 @@ Sample `curl` command: $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" http://localhost:8123/api/services ``` +#### {% linkable_title GET /api/history %} +Returns an array of state changes in the past. Each object contains further detail for the entities. + +```json +[ + [ + { + "attributes": { + "friendly_name": "Weather Temperature", + "unit_of_measurement": "\u00b0C" + }, + "entity_id": "sensor.weather_temperature", + "last_changed": "23:30:00 05-02-2016", + "last_updated": "23:30:00 05-02-2016", + "state": "-3.9" + }, + { + "attributes": { + "friendly_name": "Weather Temperature", + "unit_of_measurement": "\u00b0C" + }, + "entity_id": "sensor.weather_temperature", + "last_changed": "07:03:30 06-02-2016", + "last_updated": "07:03:30 06-02-2016", + "state": "-1.9" + }, + ] +] +``` + +Sample `curl` commands: + +```bash +$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" http://localhost:8123/api/history/period/2016-02-06 +``` + +```bash +$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" http://localhost:8123/api/history/period/2016-02-06?filter_entity_id=sensor.temperature +``` + #### {% linkable_title GET /api/states %} Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes. From d2a66e698721264dc9e6abecd67ceecf7b78570c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 09:49:56 +0100 Subject: [PATCH 030/601] Fix typo and add link to API --- source/_components/history.markdown | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/source/_components/history.markdown b/source/_components/history.markdown index d2cd12b6f1b..0fb6eb1fedc 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -28,22 +28,22 @@ history:

-Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser - no data is transferred to anyone at any time. +Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time.

#### {% linkable_title Implementation details %} -The history is stored in a SQLite databse `home-assistant.db` within your config directory. +The history is stored in a SQLite database `home-assistant.db` within your config directory. - - events table is all events except time_changed that happened while recorder component was running. - - states table contains all the new_state values of state_changed events. + - events table is all events except `time_changed` that happened while recorder component was running. + - states table contains all the `new_state` values of `state_changed` events. - Inside the states table you have: - - entity_id: the entity_id of the entity - - state: the state of the entity - - attributes: JSON of the state attributes - - last_changed: timestamp last time the state has changed. A state_changed event can happen when just attributes change. - - last_updated: timestamp anything has changed (state, attributes) - - created: timestamp this entry was inserted into the database + - `entity_id`: the entity_id of the entity + - `state`: the state of the entity + - `attributes`: JSON of the state attributes + - `last_changed`: timestamp last time the state has changed. A state_changed event can happen when just attributes change. + - `last_updated`: timestamp anything has changed (state, attributes) + - `created`: timestamp this entry was inserted into the database When the history component queries the states table it only selects states where the state has changed: `WHERE last_changed=last_updated` @@ -55,3 +55,7 @@ SQLite databases do not support native dates. That's why all the dates are saved from datetime import datetime datetime.fromtimestamp(1422830502) ``` + +#### {% linkable_title API %} + +The history information are also available through the [RESTful API](/developers/rest_api/#get-apihistory). From 261b2d9e078c9c931bba14eb6c7bfa4df22e9866 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 10:09:17 +0100 Subject: [PATCH 031/601] Add switch template docs --- source/_components/switch.template.markdown | 62 +++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 source/_components/switch.template.markdown diff --git a/source/_components/switch.template.markdown b/source/_components/switch.template.markdown new file mode 100644 index 00000000000..d8224861c9e --- /dev/null +++ b/source/_components/switch.template.markdown @@ -0,0 +1,62 @@ +--- +layout: component +title: "Template switch" +description: "Instructions how to integrate Template switches into Home Assistant." +date: 2016-02-07 07:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +--- + +The `template` platform supports switches which breaks out `turn_on` and the `turn_off` service. + +To enable Template switches in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: template + switches: + test_switch: + friendly_name: 'Slow script' + value_template: '{% raw %}{{ states.script.slow.state }}{% endraw %}' + turn_on: + service: script.turn_on + entity_id: script.slow + turn_off: + service: script.turn_off + entity_id: script.slow +``` + +Configuration variables: + +- **switches** array (*Required*): List of your switches. + - **friendly_name** (*Optional*): Name to use in the Frontend. + - **value_template** (*Optional*): Defines a [template](/getting-started/templating/) to extract a value from the payload. + - **turn_on** (*Required*): Contains the `service` and the `entity_id` which are involved. + - **turn_off** (*Required*): Contains the `service` and the `entity_id` which are involved. + +## {% linkable_title Examples %} + +In this section you find some real life examples of how to use this sensor. + +### {% linkable_title Sun angle %} + +This example shows how a skylight with a sensor which shows if it's open or closed and two momentary switches to operate the open and close is handled. + +```yaml +switch: + - platform: template + switches: + skylight: + value_template: "{% raw %}{{ states.sensor.skylight == 'tripped' }}{% endraw %}" + turn_on: + service: switch.turn_on + entity_id: switch.skylight_open + turn_off: + service: switch.turn_on + entity_id: switch.skylight_close +``` + From 7c09ce2162f3570bd9a66068e8fcec34398cf9c3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 11:48:44 +0100 Subject: [PATCH 032/601] Add ubiquiti docs --- source/_components/camera.uvc.markdown | 33 ++++++++++++++++++ source/_components/sensor.mfi.markdown | 35 ++++++++++++++++++++ source/_components/switch.mfi.markdown | 35 ++++++++++++++++++++ source/images/supported_brands/ubiquiti.png | Bin 0 -> 16067 bytes 4 files changed, 103 insertions(+) create mode 100644 source/_components/camera.uvc.markdown create mode 100644 source/_components/sensor.mfi.markdown create mode 100644 source/_components/switch.mfi.markdown create mode 100644 source/images/supported_brands/ubiquiti.png diff --git a/source/_components/camera.uvc.markdown b/source/_components/camera.uvc.markdown new file mode 100644 index 00000000000..9e76fa421f0 --- /dev/null +++ b/source/_components/camera.uvc.markdown @@ -0,0 +1,33 @@ +--- +layout: component +title: "UniFi Video Camera" +description: "Instructions how to integrate UVC cameras within Home Assistant." +date: 2016-02-07 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ubiquiti.png +ha_category: Camera +--- + + +The `uvc` component allows you to integrate [UniFi Video Camera (UVC)](https://www.ubnt.com/unifi-video/unifi-video-camera/) into Home Assistant. + +To enable a UVC camera in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + platform: uvc + nvr: IP_ADDRESS + port: PORT + key: APIKEY +``` + +Configuration variables: + +- **nvr** *Optional*: The IP or hostname of the NVR (Network Video Recorder) server. +- **port** *Optional*: The port number to use for accessing the NVR. +- **key** *Required*: The API key available from the NVR web interface. + diff --git a/source/_components/sensor.mfi.markdown b/source/_components/sensor.mfi.markdown new file mode 100644 index 00000000000..7eeaf2517c3 --- /dev/null +++ b/source/_components/sensor.mfi.markdown @@ -0,0 +1,35 @@ +--- +layout: component +title: "mFi Sensor" +description: "Instructions how to integrate mFi sensors within Home Assistant." +date: 2016-02-07 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ubiquiti.png +ha_category: Sensor +--- + + +The `mfi` sensor platform to allow you to monitor [mFi mPort interface and sensors](https://www.ubnt.com/mfi/mport/). + +To add this platform to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: mfi + host: IP_ADDRESS + port: PORT + username: USERNAME + password: PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): The IP address or hostname of your mFi controller. +- **port** (*Optional*): The port of your mFi controller. Defaults to 6443. +- **username** (*Required*): The mFi admin username. +- **password** (*Required*): The mFi admin user's password. + diff --git a/source/_components/switch.mfi.markdown b/source/_components/switch.mfi.markdown new file mode 100644 index 00000000000..a67385b7cba --- /dev/null +++ b/source/_components/switch.mfi.markdown @@ -0,0 +1,35 @@ +--- +layout: component +title: "mFi Switch" +description: "Instructions how to integrate mFi switches within Home Assistant." +date: 2016-02-07 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ubiquiti.png +ha_category: Switch +--- + + +The `mfi` switch platform to allow you to control [mFi Controllable Power Outlets](https://www.ubnt.com/mfi/mpower/). + +To add this platform to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: mfi + host: IP_ADDRESS + port: PORT + username: USERNAME + password: PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): The IP address or hostname of your mFi controller. +- **port** (*Optional*): The port of your mFi controller. Defaults to 6443. +- **username** (*Required*): The mFi admin username. +- **password** (*Required*): The mFi admin user's password. + diff --git a/source/images/supported_brands/ubiquiti.png b/source/images/supported_brands/ubiquiti.png new file mode 100644 index 0000000000000000000000000000000000000000..363b4a617ae1eaca070e9f3d96b1094f7f4bfc13 GIT binary patch literal 16067 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 yOdQ Date: Sun, 7 Feb 2016 12:21:47 +0100 Subject: [PATCH 033/601] Add proximity docs --- source/_components/proximity.markdown | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 source/_components/proximity.markdown diff --git a/source/_components/proximity.markdown b/source/_components/proximity.markdown new file mode 100644 index 00000000000..1156a9c30d3 --- /dev/null +++ b/source/_components/proximity.markdown @@ -0,0 +1,57 @@ +--- +layout: component +title: "Proximity" +description: "Instructions how to setup Proximity monitoring within Home Assistant." +date: 2016-02-07 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Organization +--- + +The `proximity` component allows you to monitor the proximity of devices to a particular [zone](/components/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data. + +This component is useful to reduce the number of automation rules required when wanting to perform automations based on locations outside a particular zone. The [zone](/components/automation/#zone-trigger) and [state](/components/automation/#state-trigger) based triggers allow similar control but the number of rules grows exponentially when factors such as direction of travel need to be taken into account. + +Some examples of its use include: + +- Increase thermostat temperature as you near home +- Decrease temperature the further away from home you travel + +The Proximity entity which is created has the following values: + +- `state`: Distance from the monitored zone (in km) +- `dir_of_travel`: Direction of the closest device to the monitoed zone. Values are: + - 'not set' + - 'arrived' + - 'towards' + - 'away_from' + - 'unknown' + - 'stationary' +- `dist_to_zone`: Distance from the monitored zone (in km) + +To enable this component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +proximity: + zone: home + ignored_zones: + - twork + - elschool + devices: + - device_tracker.nwaring_nickmobile + - device_tracker.eleanorsiphone + - device_tracker.tsiphone + tolerance: 50 +``` + +Configuration variables: + +- **zone** (*Optional*): The zone to which this component is measuring the distance to. Default is the home zone. +- **ignored_zones** array (*Optional*): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g. work or school). +- **devices** array (*Optional*): A list of devices to compare location against to check closeness to the configured zone. +- **tollerance** (*Optional*): The tolerance used to calculate the direction of travel in metres to filter out small GPS coordinate changes. + From 224b5b6d9b9ee06ee9d9106470a7b5d9a8e33aed Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 12:23:02 +0100 Subject: [PATCH 034/601] Add unit --- source/_components/proximity.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/proximity.markdown b/source/_components/proximity.markdown index 1156a9c30d3..dc97118b46d 100644 --- a/source/_components/proximity.markdown +++ b/source/_components/proximity.markdown @@ -53,5 +53,5 @@ Configuration variables: - **zone** (*Optional*): The zone to which this component is measuring the distance to. Default is the home zone. - **ignored_zones** array (*Optional*): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g. work or school). - **devices** array (*Optional*): A list of devices to compare location against to check closeness to the configured zone. -- **tollerance** (*Optional*): The tolerance used to calculate the direction of travel in metres to filter out small GPS coordinate changes. +- **tollerance** (*Optional*): The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes. From 8d5e213d89280ad8f2384e586e64dae0998b113c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 12:35:57 +0100 Subject: [PATCH 035/601] Add nx584 docs --- .../alarm_control_panel.nx584.markdown | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 source/_components/alarm_control_panel.nx584.markdown diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/alarm_control_panel.nx584.markdown new file mode 100644 index 00000000000..af5e200755a --- /dev/null +++ b/source/_components/alarm_control_panel.nx584.markdown @@ -0,0 +1,27 @@ +--- +layout: component +title: "NX584 Alarm Control Panel" +description: "Instructions how to integrate NX584 into Home Assistant." +date: 2016-02-07 10:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Alarm +--- + +The `nx584` platform is consuming the information provided by a [Alarm.com](https://www.alarm.com/). + +To enable this, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + platform: nx584 + host: IP_ADDRESS +``` + +Configuration variables: + +- **host** (*Optional*): The IP address of the pynx584 backend server. Defaults to `localhost:5007`. + From 29e29c04c8d247e5694a54fb01c1488dc24267a2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 7 Feb 2016 12:39:48 +0100 Subject: [PATCH 036/601] Add more details from PR --- source/_components/alarm_control_panel.nx584.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/alarm_control_panel.nx584.markdown index af5e200755a..da1818af1c5 100644 --- a/source/_components/alarm_control_panel.nx584.markdown +++ b/source/_components/alarm_control_panel.nx584.markdown @@ -10,7 +10,7 @@ footer: true ha_category: Alarm --- -The `nx584` platform is consuming the information provided by a [Alarm.com](https://www.alarm.com/). +The `nx584` platform is consuming the information provided by a NetworX-based alarm panels and should work for any such panel equipped with a NX584 serial interface module like Caddx, GE, or Interlogix. This includes NX-4/6/8/8E, where the NX8E has this interface built-in. To enable this, add the following lines to your `configuration.yaml`: From 6411868bb669d1cc0efc148d67acd47488fd59b6 Mon Sep 17 00:00:00 2001 From: R1chardTM Date: Sun, 7 Feb 2016 22:47:58 +0100 Subject: [PATCH 037/601] Create automation_using_timeinterval_inputboolean.markdown --- ...n_using_timeinterval_inputboolean.markdown | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 source/_cookbook/automation_using_timeinterval_inputboolean.markdown diff --git a/source/_cookbook/automation_using_timeinterval_inputboolean.markdown b/source/_cookbook/automation_using_timeinterval_inputboolean.markdown new file mode 100644 index 00000000000..22f9185db5b --- /dev/null +++ b/source/_cookbook/automation_using_timeinterval_inputboolean.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Automation example using time interval and input boolean" +description: "Automation example using time interval and input boolean." +date: 2016-02-07 22:35 +sidebar: false +comments: false +sharing: true +footer: true +--- + +#### {% linkable_title Change Hue light on interval to random color based on state of a input boolean %} + +_Note, Philips Hue is currently the only light platform that support the random effect._ + +```yaml +input_boolean: + loop_livingcolors: + name: Loop LivingColors + initial: off + icon: mdi:spotlight + +automation: +# Changes Hue light every two minutes to random color if input boolean is set to on +- alias: 'Set LivingColors to random color' + trigger: + - platform: time + minutes: '/2' + seconds: 0 + condition: + - platform: input_boolean + entity_id: input_boolean.loop_livingcolors + state: on + action: + service: light.turn_on + entity_id: + - light.woonkamer_livingcolors + data: + effect: random + transition: 5 + brightness: 255 +``` From cc8e5f568509a8f068e965b30983628465699f04 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 7 Feb 2016 14:20:52 -0800 Subject: [PATCH 038/601] Remove component layout page --- .../alarm_control_panel.alarmdotcom.markdown | 2 +- .../alarm_control_panel.manual.markdown | 2 +- source/_components/alarm_control_panel.markdown | 2 +- .../_components/alarm_control_panel.mqtt.markdown | 2 +- source/_components/alexa.markdown | 2 +- source/_components/arduino.markdown | 2 +- source/_components/automation.markdown | 2 +- source/_components/binary_sensor.arest.markdown | 2 +- source/_components/binary_sensor.command.markdown | 2 +- source/_components/binary_sensor.http.markdown | 2 +- source/_components/binary_sensor.markdown | 2 +- source/_components/binary_sensor.mqtt.markdown | 2 +- source/_components/binary_sensor.nest.markdown | 2 +- source/_components/binary_sensor.rest.markdown | 2 +- source/_components/binary_sensor.rpi_gpio.markdown | 2 +- source/_components/binary_sensor.zigbee.markdown | 2 +- source/_components/browser.markdown | 2 +- source/_components/camera.foscam.markdown | 2 +- source/_components/camera.generic.markdown | 2 +- source/_components/camera.markdown | 2 +- source/_components/camera.mjpeg.markdown | 2 +- source/_components/configurator.markdown | 2 +- source/_components/conversation.markdown | 2 +- .../_components/device_sun_light_trigger.markdown | 2 +- .../_components/device_tracker.actiontec.markdown | 2 +- source/_components/device_tracker.aruba.markdown | 2 +- source/_components/device_tracker.asuswrt.markdown | 2 +- source/_components/device_tracker.ddwrt.markdown | 2 +- source/_components/device_tracker.fritz.markdown | 2 +- source/_components/device_tracker.icloud.markdown | 2 +- .../_components/device_tracker.locative.markdown | 2 +- source/_components/device_tracker.luci.markdown | 2 +- source/_components/device_tracker.markdown | 2 +- source/_components/device_tracker.mqtt.markdown | 2 +- source/_components/device_tracker.netgear.markdown | 2 +- .../device_tracker.nmap_scanner.markdown | 2 +- .../_components/device_tracker.owntracks.markdown | 2 +- source/_components/device_tracker.snmp.markdown | 2 +- source/_components/device_tracker.thomson.markdown | 2 +- source/_components/device_tracker.tomato.markdown | 2 +- source/_components/device_tracker.tplink.markdown | 2 +- source/_components/device_tracker.ubus.markdown | 2 +- source/_components/discovery.markdown | 2 +- source/_components/downloader.markdown | 2 +- source/_components/ecobee.markdown | 2 +- source/_components/group.markdown | 2 +- source/_components/history.markdown | 2 +- source/_components/http.markdown | 2 +- source/_components/ifttt.manything.markdown | 2 +- source/_components/ifttt.markdown | 2 +- source/_components/influxdb.markdown | 2 +- source/_components/input_boolean.markdown | 2 +- source/_components/insteon_hub.markdown | 2 +- source/_components/introduction.markdown | 2 +- source/_components/isy994.markdown | 2 +- source/_components/keyboard.markdown | 2 +- source/_components/light.blinksticklight.markdown | 2 +- source/_components/light.hue.markdown | 2 +- source/_components/light.hyperion.markdown | 2 +- source/_components/light.lifx.markdown | 2 +- source/_components/light.limitlessled.markdown | 2 +- source/_components/light.markdown | 2 +- source/_components/light.mqtt.markdown | 2 +- source/_components/light.rfxtrx.markdown | 2 +- source/_components/light.tellstick.markdown | 2 +- source/_components/light.vera.markdown | 2 +- source/_components/light.wink.markdown | 2 +- source/_components/light.zigbee.markdown | 2 +- source/_components/light.zwave.markdown | 2 +- source/_components/lock.markdown | 2 +- source/_components/lock.wink.markdown | 2 +- source/_components/logbook.markdown | 2 +- source/_components/logger.markdown | 2 +- source/_components/media_player.cast.markdown | 2 +- source/_components/media_player.denon.markdown | 2 +- source/_components/media_player.firetv.markdown | 2 +- source/_components/media_player.itunes.markdown | 2 +- source/_components/media_player.kodi.markdown | 2 +- source/_components/media_player.markdown | 2 +- source/_components/media_player.mpd.markdown | 2 +- source/_components/media_player.plex.markdown | 2 +- source/_components/media_player.sonos.markdown | 2 +- .../_components/media_player.squeezebox.markdown | 2 +- source/_components/media_player.universal.markdown | 2 +- source/_components/modbus.markdown | 2 +- source/_components/mqtt.markdown | 2 +- source/_components/mqtt_eventstream.markdown | 2 +- source/_components/mysensors.markdown | 2 +- source/_components/nest.markdown | 2 +- source/_components/notify.file.markdown | 2 +- source/_components/notify.free_mobile.markdown | 2 +- source/_components/notify.google_voice.markdown | 2 +- source/_components/notify.instapush.markdown | 2 +- source/_components/notify.markdown | 2 +- source/_components/notify.mqtt.markdown | 2 +- source/_components/notify.nma.markdown | 2 +- source/_components/notify.pushbullet.markdown | 2 +- source/_components/notify.pushetta.markdown | 2 +- source/_components/notify.pushover.markdown | 2 +- source/_components/notify.slack.markdown | 2 +- source/_components/notify.smtp.markdown | 2 +- source/_components/notify.syslog.markdown | 2 +- source/_components/notify.telegram.markdown | 2 +- source/_components/notify.twitter.markdown | 2 +- source/_components/notify.xmpp.markdown | 2 +- source/_components/rfxtrx.markdown | 2 +- source/_components/rollershutter.markdown | 2 +- source/_components/rollershutter.mqtt.markdown | 2 +- source/_components/scene.markdown | 2 +- source/_components/script.markdown | 2 +- source/_components/sensor.arduino.markdown | 2 +- source/_components/sensor.arest.markdown | 2 +- source/_components/sensor.bitcoin.markdown | 2 +- source/_components/sensor.command_sensor.markdown | 2 +- source/_components/sensor.cpuspeed.markdown | 2 +- source/_components/sensor.dht.markdown | 2 +- source/_components/sensor.dweet.markdown | 2 +- source/_components/sensor.ecobee.markdown | 2 +- source/_components/sensor.efergy.markdown | 2 +- source/_components/sensor.eliqonline.markdown | 2 +- source/_components/sensor.forecast.markdown | 2 +- source/_components/sensor.glances.markdown | 2 +- source/_components/sensor.http.markdown | 2 +- source/_components/sensor.markdown | 2 +- source/_components/sensor.modbus.markdown | 2 +- source/_components/sensor.mqtt.markdown | 2 +- source/_components/sensor.mysensors.markdown | 2 +- source/_components/sensor.nest.markdown | 2 +- source/_components/sensor.netatmo.markdown | 2 +- source/_components/sensor.onewire.markdown | 2 +- source/_components/sensor.openweathermap.markdown | 2 +- source/_components/sensor.rest.markdown | 2 +- source/_components/sensor.rfxtrx.markdown | 2 +- source/_components/sensor.sabnzbd.markdown | 2 +- .../sensor.swiss_public_transport.markdown | 2 +- source/_components/sensor.systemmonitor.markdown | 2 +- source/_components/sensor.tellduslive.markdown | 2 +- source/_components/sensor.tellstick.markdown | 2 +- source/_components/sensor.temper.markdown | 2 +- source/_components/sensor.template.markdown | 2 +- source/_components/sensor.time_date.markdown | 2 +- source/_components/sensor.torque.markdown | 2 +- source/_components/sensor.transmission.markdown | 2 +- source/_components/sensor.twitch.markdown | 2 +- source/_components/sensor.vera.markdown | 2 +- source/_components/sensor.wink.markdown | 2 +- source/_components/sensor.worldclock.markdown | 2 +- source/_components/sensor.yr.markdown | 2 +- source/_components/sensor.zigbee.markdown | 2 +- source/_components/sensor.zwave.markdown | 2 +- source/_components/shell_command.markdown | 2 +- source/_components/simple_alarm.markdown | 2 +- source/_components/statsd.markdown | 2 +- source/_components/sun.markdown | 2 +- source/_components/switch.arduino.markdown | 2 +- source/_components/switch.arest.markdown | 2 +- source/_components/switch.command_switch.markdown | 2 +- source/_components/switch.edimax.markdown | 2 +- source/_components/switch.hikvision.markdown | 2 +- source/_components/switch.markdown | 2 +- source/_components/switch.modbus.markdown | 2 +- source/_components/switch.mqtt.markdown | 2 +- source/_components/switch.mysensors.markdown | 2 +- source/_components/switch.mystrom.markdown | 2 +- source/_components/switch.orvibo.markdown | 2 +- source/_components/switch.rest.markdown | 2 +- source/_components/switch.rfxtrx.markdown | 2 +- source/_components/switch.rpi_gpio.markdown | 2 +- source/_components/switch.tellduslive.markdown | 2 +- source/_components/switch.tellstick.markdown | 2 +- source/_components/switch.transmission.markdown | 2 +- source/_components/switch.vera.markdown | 2 +- source/_components/switch.wemo.markdown | 2 +- source/_components/switch.wink.markdown | 2 +- source/_components/switch.zigbee.markdown | 2 +- source/_components/switch.zwave.markdown | 2 +- source/_components/tellduslive.markdown | 2 +- source/_components/tellstick.markdown | 2 +- source/_components/thermostat.ecobee.markdown | 2 +- .../_components/thermostat.heat_control.markdown | 2 +- source/_components/thermostat.heatmiser.markdown | 2 +- source/_components/thermostat.homematic.markdown | 2 +- source/_components/thermostat.honeywell.markdown | 2 +- source/_components/thermostat.markdown | 2 +- source/_components/thermostat.nest.markdown | 2 +- source/_components/thermostat.proliphix.markdown | 2 +- source/_components/thermostat.radiotherm.markdown | 2 +- source/_components/updater.markdown | 2 +- source/_components/vera.markdown | 2 +- source/_components/verisure.markdown | 2 +- source/_components/wink.markdown | 2 +- source/_components/zigbee.markdown | 2 +- source/_components/zone.markdown | 2 +- source/_components/zwave.markdown | 2 +- source/_layouts/component.html | 14 -------------- source/_layouts/page.html | 6 ++++-- 196 files changed, 198 insertions(+), 210 deletions(-) delete mode 100644 source/_layouts/component.html diff --git a/source/_components/alarm_control_panel.alarmdotcom.markdown b/source/_components/alarm_control_panel.alarmdotcom.markdown index aa976170231..2d81393f770 100644 --- a/source/_components/alarm_control_panel.alarmdotcom.markdown +++ b/source/_components/alarm_control_panel.alarmdotcom.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Alarm.com Alarm Control Panel" description: "Instructions how to integrate Alarm.com into Home Assistant." date: 2016-01-14 22:00 diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown index 36b49399a78..c5ce1ff8353 100644 --- a/source/_components/alarm_control_panel.manual.markdown +++ b/source/_components/alarm_control_panel.manual.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Manual Alarm Control Panel" description: "Instructions how to integrate manual alarms into Home Assistant." date: 2015-10-13 19:10 diff --git a/source/_components/alarm_control_panel.markdown b/source/_components/alarm_control_panel.markdown index f3fc25736db..ba5f469915b 100644 --- a/source/_components/alarm_control_panel.markdown +++ b/source/_components/alarm_control_panel.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Alarm Control Panels" description: "Instructions how to integrate Alarm Control Panels into Home Assistant." date: 2015-10-13 19:10 diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index 440d8209e4e..2d97a23fafe 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Alarm Control Panel" description: "Instructions how to integrate MQTT capable Alarm Panels into Home Assistant." date: 2015-09-14 19:10 diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index d66913e751d..9922762b632 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Alexa / Amazon Echo" description: "Instructions how to connect Alexa/Amazon Echo to Home Assistant." date: 2015-12-13 13:02 diff --git a/source/_components/arduino.markdown b/source/_components/arduino.markdown index 19c482136f7..e961ab15149 100644 --- a/source/_components/arduino.markdown +++ b/source/_components/arduino.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Arduino" description: "Instructions how to setup an Arduino boards within Home Assistant." date: 2015-06-27 10:28 diff --git a/source/_components/automation.markdown b/source/_components/automation.markdown index 50ddd5f4baf..3dcfbc47e6d 100644 --- a/source/_components/automation.markdown +++ b/source/_components/automation.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Automation" description: "Instructions how to setup automation within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/binary_sensor.arest.markdown index b14f1f8eccb..92ff60e49d3 100644 --- a/source/_components/binary_sensor.arest.markdown +++ b/source/_components/binary_sensor.arest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "aREST Binary Sensor" description: "Instructions how to integrate aREST binary sensors within Home Assistant." date: 2015-11-20 18:15 diff --git a/source/_components/binary_sensor.command.markdown b/source/_components/binary_sensor.command.markdown index d7305fd5d88..332a4df75a7 100644 --- a/source/_components/binary_sensor.command.markdown +++ b/source/_components/binary_sensor.command.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Command line Binary Sensor" description: "Instructions how to integrate Command binary sensors within Home Assistant." date: 2016-01-13 12:15 diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index 8b7d19b096f..7e7dfe1e9a8 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "HTTP Binary Sensor" description: "Instructions how to integrate HTTP binary sensors within Home Assistant." date: 2016-02-05 12:15 diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 477642ec958..f3bbd430190 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Binary Sensor" description: "Instructions how to setup your binary sensors with Home Assistant." date: 2015-11-20 14:00 diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 9b397346891..43a3ab06a58 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Binary Sensor" description: "Instructions how to integrate MQTT binary sensors within Home Assistant." date: 2015-05-30 23:21 diff --git a/source/_components/binary_sensor.nest.markdown b/source/_components/binary_sensor.nest.markdown index 54796538425..06ed382f461 100644 --- a/source/_components/binary_sensor.nest.markdown +++ b/source/_components/binary_sensor.nest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Nest Binary Sensor" description: "Instructions how to integrate Nest binary sensors within Home Assistant." date: 2016-01-26 08:00 diff --git a/source/_components/binary_sensor.rest.markdown b/source/_components/binary_sensor.rest.markdown index b3b64ae91ab..474a1565d49 100644 --- a/source/_components/binary_sensor.rest.markdown +++ b/source/_components/binary_sensor.rest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RESTful Binary Sensor" description: "Instructions how to integrate REST binary sensors into Home Assistant." date: 2015-12-17 19:10 diff --git a/source/_components/binary_sensor.rpi_gpio.markdown b/source/_components/binary_sensor.rpi_gpio.markdown index a94c65bc236..dc2c0b8888a 100644 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ b/source/_components/binary_sensor.rpi_gpio.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Raspberry PI GPIO Binary Sensor" description: "Instructions how to integrate the GPIO sensor capability of a Raspberry PI into Home Assistant." date: 2015-08-30 19:00 diff --git a/source/_components/binary_sensor.zigbee.markdown b/source/_components/binary_sensor.zigbee.markdown index df2cff5a4b5..d8731ac102b 100644 --- a/source/_components/binary_sensor.zigbee.markdown +++ b/source/_components/binary_sensor.zigbee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ZigBee Binary Sensor" description: "Instructions on how to set up ZigBee binary sensors within Home Assistant." date: 2016-01-28 12:38 diff --git a/source/_components/browser.markdown b/source/_components/browser.markdown index 273c3ae7e40..c7ce25dc61e 100644 --- a/source/_components/browser.markdown +++ b/source/_components/browser.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Browser" description: "Instructions how to setup the browser component with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/camera.foscam.markdown b/source/_components/camera.foscam.markdown index a911ca8b53e..ed4b4106d7d 100644 --- a/source/_components/camera.foscam.markdown +++ b/source/_components/camera.foscam.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Foscam IP Camera" description: "Instructions how to integrate Foscam IP cameras within Home Assistant." date: 2015-09-17 08:01 diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index 065207f37b8..3d88569b683 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Generic IP Camera" description: "Instructions how to integrate IP cameras within Home Assistant." date: 2015-07-11 0:36 diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown index cfcc0393b24..e56503400c1 100644 --- a/source/_components/camera.markdown +++ b/source/_components/camera.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Camera" description: "Instructions how to integrate cameras within Home Assistant." date: 2015-11-09 08:36 diff --git a/source/_components/camera.mjpeg.markdown b/source/_components/camera.mjpeg.markdown index f646b39e380..4f166f044c4 100644 --- a/source/_components/camera.mjpeg.markdown +++ b/source/_components/camera.mjpeg.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Generic MJPEG IP Camera" description: "Instructions how to integrate IP cameras within Home Assistant." date: 2015-11-09 08:36 diff --git a/source/_components/configurator.markdown b/source/_components/configurator.markdown index d564089bc2c..44c594c9edb 100644 --- a/source/_components/configurator.markdown +++ b/source/_components/configurator.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Configurator" description: "Instructions how to integrate the configurator in your components." date: 2015-03-15 00:51 diff --git a/source/_components/conversation.markdown b/source/_components/conversation.markdown index 7851621520d..7ff3b348b78 100644 --- a/source/_components/conversation.markdown +++ b/source/_components/conversation.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Conversation" description: "Instructions how to have conversations with your Home Assistant." date: 2015-03-15 00:39 diff --git a/source/_components/device_sun_light_trigger.markdown b/source/_components/device_sun_light_trigger.markdown index 1b8cbc18655..dd2b298b2e1 100644 --- a/source/_components/device_sun_light_trigger.markdown +++ b/source/_components/device_sun_light_trigger.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Presence based lights" description: "Instructions how to automate your lights with Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/device_tracker.actiontec.markdown b/source/_components/device_tracker.actiontec.markdown index d3d5f198740..774b7ec2823 100644 --- a/source/_components/device_tracker.actiontec.markdown +++ b/source/_components/device_tracker.actiontec.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Actiontec" description: "Instructions how to integrate Actiontec routers into Home Assistant." date: 2015-08-30 19:00 diff --git a/source/_components/device_tracker.aruba.markdown b/source/_components/device_tracker.aruba.markdown index 8a65953e5fe..4d76b30dd50 100644 --- a/source/_components/device_tracker.aruba.markdown +++ b/source/_components/device_tracker.aruba.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Aruba" description: "Instructions how to integrate Aruba routers into Home Assistant." date: 2015-08-31 08:45 diff --git a/source/_components/device_tracker.asuswrt.markdown b/source/_components/device_tracker.asuswrt.markdown index 4ca50a9ef3b..e1590a59c93 100644 --- a/source/_components/device_tracker.asuswrt.markdown +++ b/source/_components/device_tracker.asuswrt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ASUSWRT" description: "Instructions how to integrate ASUSWRT based routers into Home Assistant." date: 2015-08-06 19:00 diff --git a/source/_components/device_tracker.ddwrt.markdown b/source/_components/device_tracker.ddwrt.markdown index 741959d19e1..5eee59d85f2 100644 --- a/source/_components/device_tracker.ddwrt.markdown +++ b/source/_components/device_tracker.ddwrt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "DD-WRT" description: "Instructions how to integrate DD-WRT based routers into Home Assistant." date: 2015-05-11 09:00 diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/device_tracker.fritz.markdown index 5d8acb12e53..75d48a75b9f 100644 --- a/source/_components/device_tracker.fritz.markdown +++ b/source/_components/device_tracker.fritz.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "FRITZ!Box" description: "Instructions how to integrate AVM FRITZ!Box based routers into Home Assistant." date: 2015-12-13 19:00 diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/device_tracker.icloud.markdown index 39299c46308..169ba7974c0 100644 --- a/source/_components/device_tracker.icloud.markdown +++ b/source/_components/device_tracker.icloud.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "iCloud" description: "Instructions how to use iCloud to track devices in Home Assistant." date: 2015-12-15 1000 diff --git a/source/_components/device_tracker.locative.markdown b/source/_components/device_tracker.locative.markdown index 17df285ccfa..dd1d40fc169 100644 --- a/source/_components/device_tracker.locative.markdown +++ b/source/_components/device_tracker.locative.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Locative" description: "Instructions how to use Locative to track devices in Home Assistant." date: 2015-10-13 19:00 diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/device_tracker.luci.markdown index 3db44706c83..81e60df206c 100644 --- a/source/_components/device_tracker.luci.markdown +++ b/source/_components/device_tracker.luci.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "OpenWRT (luci)" description: "Instructions how to integrate OpenWRT routers into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index bb36d19013d..f65447717db 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Device Tracker" description: "Instructions how to setup device tracking within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index f7ed2156f56..7c0eed7d1d4 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Device Tracker" description: "Instructions how to use MQTT to track devices in Home Assistant." date: 2015-09-19 20:41 diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index a5a508ba4d4..67a37008ece 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Netgear" description: "Instructions how to integrate Netgear routers into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/device_tracker.nmap_scanner.markdown b/source/_components/device_tracker.nmap_scanner.markdown index f5fb0f42685..e2fad493eaa 100644 --- a/source/_components/device_tracker.nmap_scanner.markdown +++ b/source/_components/device_tracker.nmap_scanner.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Nmap" description: "Instructions how to integrate Nmap into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index 2160821844f..10a04326a4b 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Owntracks" description: "Instructions how to use Owntracks to track devices in Home Assistant." date: 2015-09-22 07:00 diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index d5ef35f20fc..c33e605c692 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "SNMP" description: "Instructions how to integrate SNMP into Home Assistant." date: 2015-10-08 12:00 diff --git a/source/_components/device_tracker.thomson.markdown b/source/_components/device_tracker.thomson.markdown index bb85bd340d0..8a81c40ad9e 100644 --- a/source/_components/device_tracker.thomson.markdown +++ b/source/_components/device_tracker.thomson.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Thomson" description: "Instructions how to integrate Thomson routers into Home Assistant." date: 2015-08-30 19:00 diff --git a/source/_components/device_tracker.tomato.markdown b/source/_components/device_tracker.tomato.markdown index ad55ca2938d..db77f188633 100644 --- a/source/_components/device_tracker.tomato.markdown +++ b/source/_components/device_tracker.tomato.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Tomato" description: "Instructions how to integrate Tomato routers into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/device_tracker.tplink.markdown b/source/_components/device_tracker.tplink.markdown index a95022d65a2..50dbf15802f 100644 --- a/source/_components/device_tracker.tplink.markdown +++ b/source/_components/device_tracker.tplink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TP-Link" description: "Instructions how to integrate TP-Link routers into Home Assistant." date: 2015-06-22 10:30 diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index 9ad16682b54..71a8c26db34 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "OpenWRT (ubus)" description: "Instructions how to integrate OpenWRT routers into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 9f316298063..8633fba2c2e 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Discovery" description: "Instructions how to setup Home Assistant to discover new devices." date: 2015-01-24 14:39 diff --git a/source/_components/downloader.markdown b/source/_components/downloader.markdown index 928d1b0da98..b347ad9ca7e 100644 --- a/source/_components/downloader.markdown +++ b/source/_components/downloader.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Downloader" description: "Instructions how to setup the downloader component with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index fc21f7042ec..69879ddab9a 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Ecobee" description: "Instructions for how to integrate Ecobee thermostats and sensors within Home Assistant." date: 2015-11-30 17:54 diff --git a/source/_components/group.markdown b/source/_components/group.markdown index e28ac57bbd6..a33a3afd88a 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Group" description: "Instructions how to setup groups within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/history.markdown b/source/_components/history.markdown index 0fb6eb1fedc..90e5df451aa 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "History" description: "Instructions how to enable history support for Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/http.markdown b/source/_components/http.markdown index f0a7f0d6e49..a05b058d1f7 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "HTTP" description: "Offers a web framework to serve files." date: 2015-12-06 21:35 diff --git a/source/_components/ifttt.manything.markdown b/source/_components/ifttt.manything.markdown index dd9b53751fa..c5535ef28c0 100644 --- a/source/_components/ifttt.manything.markdown +++ b/source/_components/ifttt.manything.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ManyThing" description: "Instructions how to setup ManyThing support with IFTTT." date: 2015-09-07 18:00 diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index 67d3dcb42e2..c5adde1b462 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "IFTTT" description: "Instructions how to setup IFTTT within Home Assistant." date: 2015-09-07 18:00 diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 7f1973087ec..be64cc58dc2 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "InfluxDB" description: "Record events in InfluxDB." date: 2015-12-06 13:08 diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown index 4b874a236d6..2fcdedc64b4 100644 --- a/source/_components/input_boolean.markdown +++ b/source/_components/input_boolean.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Input Boolean" description: "Instructions how to integrate the Input Boolean component into Home Assistant." date: 2016-01-17 16:58 diff --git a/source/_components/insteon_hub.markdown b/source/_components/insteon_hub.markdown index 9a4750d59f2..7e6aa5f098b 100644 --- a/source/_components/insteon_hub.markdown +++ b/source/_components/insteon_hub.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Insteon Hub" description: "Instructions how to setup the Insteon Hub within Home Assistant." date: 2016-01-27 08:00 diff --git a/source/_components/introduction.markdown b/source/_components/introduction.markdown index dabfd1b4557..243e3b2c25a 100644 --- a/source/_components/introduction.markdown +++ b/source/_components/introduction.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Introduction" description: "Details about the introduction within Home Assistant." date: 2015-10-25 15:15 diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index 0bb77c922a0..eac00a8cc4c 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ISY994 Controller" description: "Instructions how to setup the ISY994 controller within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/keyboard.markdown b/source/_components/keyboard.markdown index 4bf2672e14b..40f15421e00 100644 --- a/source/_components/keyboard.markdown +++ b/source/_components/keyboard.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Keyboard" description: "Instructions how to simulate key presses with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/light.blinksticklight.markdown b/source/_components/light.blinksticklight.markdown index 459676cf0ba..0d80ee2086e 100644 --- a/source/_components/light.blinksticklight.markdown +++ b/source/_components/light.blinksticklight.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Blinkstick" description: "Instructions how to setup Blinkstick lights within Home Assistant." date: 2015-10-08 10:00 diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown index 8789a5d3322..501005a7f2a 100644 --- a/source/_components/light.hue.markdown +++ b/source/_components/light.hue.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Philips Hue" description: "Instructions how to setup Philips Hue within Home Assistant." date: 2015-03-23 20:09 diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index 1260dbc2c37..48889a36e83 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Hyperion" description: "Instructions how to integrate Hyperion into Home Assistant." date: 2015-10-25 22:43 diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index f6456c04566..b164bb2f4d5 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "LIFX" description: "Instructions how to integrate LIFX into Home Assistant." date: 2016-01-27 08:00 diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 892313be9f0..3a8ad99a4b5 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "LimitlessLED" description: "Instructions on how to setup LimitlessLED within Home Assistant." date: 2015-12-03 13:00 diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 51bf8111115..9cf467f247a 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Lights" description: "Instructions how to setup your lights with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index a3712391b64..f0d4680a8a7 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Light" description: "Instructions how to setup MQTT lights within Home Assistant." date: 2015-11-13 08:30 diff --git a/source/_components/light.rfxtrx.markdown b/source/_components/light.rfxtrx.markdown index ee2f5813eb9..374df8887b8 100644 --- a/source/_components/light.rfxtrx.markdown +++ b/source/_components/light.rfxtrx.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RFXtrx Light" description: "Instructions how to integrate RFXtrx lights into Home Assistant." date: 2015-10-08 10:15 diff --git a/source/_components/light.tellstick.markdown b/source/_components/light.tellstick.markdown index 8ebf9e8cb63..7326dc49345 100644 --- a/source/_components/light.tellstick.markdown +++ b/source/_components/light.tellstick.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TellStick Light" description: "Instructions how to integrate TellStick lights into Home Assistant." date: 2015-08-06 19:00 diff --git a/source/_components/light.vera.markdown b/source/_components/light.vera.markdown index 3c4c08be05d..3ed552548a4 100644 --- a/source/_components/light.vera.markdown +++ b/source/_components/light.vera.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Vera Light" description: "Instructions how to integrate Vera lights into Home Assistant." date: 2015-10-20 21:00 diff --git a/source/_components/light.wink.markdown b/source/_components/light.wink.markdown index 62bdc4753da..3f019b5ca97 100644 --- a/source/_components/light.wink.markdown +++ b/source/_components/light.wink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Wink Light" description: "Instructions how to setup the Wink lights within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/light.zigbee.markdown b/source/_components/light.zigbee.markdown index 0c71f8e4bfc..25832fedbd1 100644 --- a/source/_components/light.zigbee.markdown +++ b/source/_components/light.zigbee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: ZigBee Light description: "Instructions on how to set up ZigBee lights within Home Assistant." date: 2016-01-28 12:38 diff --git a/source/_components/light.zwave.markdown b/source/_components/light.zwave.markdown index 5c5d573a562..00b3c7b64d3 100644 --- a/source/_components/light.zwave.markdown +++ b/source/_components/light.zwave.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Z-Wave Light" description: "Instructions how to setup the Z-Wave lights within Home Assistant." date: 2015-11-11 13:00 diff --git a/source/_components/lock.markdown b/source/_components/lock.markdown index a905a990b9a..dcad2d30566 100644 --- a/source/_components/lock.markdown +++ b/source/_components/lock.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Locks" description: "Instructions how to setup your locks with Home Assistant." date: 2015-11-21 08:10 diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown index 6e25951dd15..d9abf003f8a 100644 --- a/source/_components/lock.wink.markdown +++ b/source/_components/lock.wink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Wink Lock" description: "Instructions how to setup the Wink locks within Home Assistant." date: 2015-11-20 12:00 diff --git a/source/_components/logbook.markdown b/source/_components/logbook.markdown index 7e3581788c3..f7b3c42be79 100644 --- a/source/_components/logbook.markdown +++ b/source/_components/logbook.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Logbook" description: "Instructions how to enable the logbook component for Home Assistant." date: 2015-04-25 9:23 diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index e7a9935c9bd..66c521e09ea 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Logger" description: "Instructions how to enable the logger component for Home Assistant." date: 2015-11-12 17:00 diff --git a/source/_components/media_player.cast.markdown b/source/_components/media_player.cast.markdown index ad8048f4878..0ce3920e4ec 100644 --- a/source/_components/media_player.cast.markdown +++ b/source/_components/media_player.cast.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Google Cast" description: "Instructions how to integrate Google Cast into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index 382f154a631..6d53b6c7617 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Denon Network Receivers" description: "Instructions how to integrate Denon Network Receivers into Home Assistant." date: 2015-09-08 09:00 diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown index 0d1aefa7dce..7561b7bbe8d 100644 --- a/source/_components/media_player.firetv.markdown +++ b/source/_components/media_player.firetv.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "FireTV" description: "Instructions how to integrate Music Player Daemon into Home Assistant." date: 2015-10-23 18:00 diff --git a/source/_components/media_player.itunes.markdown b/source/_components/media_player.itunes.markdown index 5e5c890353a..3e77b6f862f 100644 --- a/source/_components/media_player.itunes.markdown +++ b/source/_components/media_player.itunes.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "iTunes" description: "Instructions how to integrate iTunes into Home Assistant." date: 2015-06-22 11:00 diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index 905d108b083..b2e95c22e75 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Kodi" description: "Instructions how to integrate Kodi into Home Assistant." date: 2015-06-22 11:00 diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index 5a227781835..24d81c3b2e9 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Media Player" description: "Instructions how to setup your media players with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/media_player.mpd.markdown b/source/_components/media_player.mpd.markdown index cd2a8e3f8a4..b600a2e4159 100644 --- a/source/_components/media_player.mpd.markdown +++ b/source/_components/media_player.mpd.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Music Player Daemon (MPD)" description: "Instructions how to integrate Music Player Daemon into Home Assistant." date: 2015-06-02 08:00 diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index 4488e68fb87..72b4787d810 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Plex" description: "Instructions how to integrate Plex into Home Assistant." date: 2015-10-05 21:21 diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown index a080ae0f4b1..8b7dcc4e698 100644 --- a/source/_components/media_player.sonos.markdown +++ b/source/_components/media_player.sonos.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Sonos" description: "Instructions how to integrateSonos devices into Home Assistant." date: 2015-09-12 13:00 diff --git a/source/_components/media_player.squeezebox.markdown b/source/_components/media_player.squeezebox.markdown index 5d1a11ce52a..ba31bd25503 100644 --- a/source/_components/media_player.squeezebox.markdown +++ b/source/_components/media_player.squeezebox.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Logitech Squeezebox" description: "Instructions on how to integrate a Logitech Squeezebox player into Home Assistant." date: 2015-08-09 11:00 diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown index f634f7bdb88..fd0267ffb52 100644 --- a/source/_components/media_player.universal.markdown +++ b/source/_components/media_player.universal.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Universal" description: "Instructions how to create a universal media player in Home Assistant." date: 2016-01-12 22:00 diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown index f33ca58ca30..d8e4a36daaa 100644 --- a/source/_components/modbus.markdown +++ b/source/_components/modbus.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Modbus" description: "Instructions how to integrate Modbus within Home Assistant." date: 2015-04-25 9:16 diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index 2c0684ac9f1..cac78c44052 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT" description: "Instructions how to setup MQTT within Home Assistant." date: 2015-08-07 18:00 diff --git a/source/_components/mqtt_eventstream.markdown b/source/_components/mqtt_eventstream.markdown index a208bdae3e7..75f0ab11067 100644 --- a/source/_components/mqtt_eventstream.markdown +++ b/source/_components/mqtt_eventstream.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Eventstream" description: "Instructions how to setup MQTT eventstream within Home Assistant." date: 2016-01-13 08:00 diff --git a/source/_components/mysensors.markdown b/source/_components/mysensors.markdown index 26214db8b51..e5a6c9a84e3 100644 --- a/source/_components/mysensors.markdown +++ b/source/_components/mysensors.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MySensors" description: "Instructions how to integrate MySensors sensors into Home Assistant." date: 2015-05-14 21:57 diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index b04bfb93c26..f8a4723fe8a 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Nest" description: "Instructions how to integrate Nest into Home Assistant." date: 2016-01-29 21:57 diff --git a/source/_components/notify.file.markdown b/source/_components/notify.file.markdown index 042c088e806..afb14df7b83 100644 --- a/source/_components/notify.file.markdown +++ b/source/_components/notify.file.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "File" description: "Instructions how to add file notifications to Home Assistant." date: 2015-06-22 10:00 diff --git a/source/_components/notify.free_mobile.markdown b/source/_components/notify.free_mobile.markdown index a3d6c53f574..43ae84c090a 100644 --- a/source/_components/notify.free_mobile.markdown +++ b/source/_components/notify.free_mobile.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Free Mobile" description: "Instructions how to add user notifications to Home Assistant." date: 2016-01-12 08:36 diff --git a/source/_components/notify.google_voice.markdown b/source/_components/notify.google_voice.markdown index 677f8749d98..61044ffc40a 100644 --- a/source/_components/notify.google_voice.markdown +++ b/source/_components/notify.google_voice.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Google Voice SMS" description: "Instructions how to add user notifications to Home Assistant." date: 2016-01-29 diff --git a/source/_components/notify.instapush.markdown b/source/_components/notify.instapush.markdown index 77bd22b8844..5fc49341bfd 100644 --- a/source/_components/notify.instapush.markdown +++ b/source/_components/notify.instapush.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Instapush" description: "Instructions how to add Instapush notifications to Home Assistant." date: 2015-05-01 18:00 diff --git a/source/_components/notify.markdown b/source/_components/notify.markdown index ed8f64c4d7d..f6d4f7b5350 100644 --- a/source/_components/notify.markdown +++ b/source/_components/notify.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Notifications" description: "Instructions how to add user notifications to Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index e87485a0b52..1f42e72e43d 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Notifications" description: "Instructions how to add MQTT notifications to Home Assistant." date: 2016-02-01 08:00 diff --git a/source/_components/notify.nma.markdown b/source/_components/notify.nma.markdown index ccd634f28c7..4545d619e59 100644 --- a/source/_components/notify.nma.markdown +++ b/source/_components/notify.nma.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Notify My Android" description: "Instructions how to add user notifications to Home Assistant." date: 2015-05-01 18:00 diff --git a/source/_components/notify.pushbullet.markdown b/source/_components/notify.pushbullet.markdown index c8877437343..5860998a158 100644 --- a/source/_components/notify.pushbullet.markdown +++ b/source/_components/notify.pushbullet.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "PushBullet" description: "Instructions how to add user notifications to Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/notify.pushetta.markdown b/source/_components/notify.pushetta.markdown index 2690df81331..e3a6f049d9b 100644 --- a/source/_components/notify.pushetta.markdown +++ b/source/_components/notify.pushetta.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Pushetta" description: "Instructions how to add Pushetta notifications to Home Assistant." date: 2015-11-10 18:00 diff --git a/source/_components/notify.pushover.markdown b/source/_components/notify.pushover.markdown index 02aa891990a..9e7161e3619 100644 --- a/source/_components/notify.pushover.markdown +++ b/source/_components/notify.pushover.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "PushOver" description: "Instructions how to add user notifications to Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index d3639631ce4..5f3c21735e6 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Slack" description: "Instructions how to add Slack notifications to Home Assistant." date: 2015-08-06 18:00 diff --git a/source/_components/notify.smtp.markdown b/source/_components/notify.smtp.markdown index d56dcc00c0d..e76d3af83d0 100644 --- a/source/_components/notify.smtp.markdown +++ b/source/_components/notify.smtp.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "SMTP" description: "Instructions how to add e-mail notifications to Home Assistant." date: 2015-06-03 18:00 diff --git a/source/_components/notify.syslog.markdown b/source/_components/notify.syslog.markdown index b5e72bf4a4b..e556f6d108c 100644 --- a/source/_components/notify.syslog.markdown +++ b/source/_components/notify.syslog.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Syslog" description: "Instructions how to add syslog notifications to Home Assistant." date: 2015-06-09 16:00 diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index b804aa5bff7..b1d27f759fb 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Telegram" description: "Instructions how to add Telegram notifications to Home Assistant." date: 2015-10-09 18:00 diff --git a/source/_components/notify.twitter.markdown b/source/_components/notify.twitter.markdown index 97ea742ce19..49247e4cc51 100644 --- a/source/_components/notify.twitter.markdown +++ b/source/_components/notify.twitter.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Twitter" description: "Instructions how to add Twitter notifications to Home Assistant." date: 2016-01-27 07:00 diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index 4f9996c236a..f410411d006 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Jabber (XMPP)" description: "Instructions how to add Jabber (XMPP) notifications to Home Assistant." date: 2015-05-08 18:00 diff --git a/source/_components/rfxtrx.markdown b/source/_components/rfxtrx.markdown index 8dccdf26c99..18e44c582a9 100644 --- a/source/_components/rfxtrx.markdown +++ b/source/_components/rfxtrx.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RFXtrx" description: "Instructions how to integrate RFXtrx into Home Assistant." date: 2015-10-08 10:15 diff --git a/source/_components/rollershutter.markdown b/source/_components/rollershutter.markdown index 34f479fae51..1fe740d433c 100644 --- a/source/_components/rollershutter.markdown +++ b/source/_components/rollershutter.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Rollershutters" description: "Instructions how to integrate rollershutters into Home Assistant." date: 2015-12-01 12:00 diff --git a/source/_components/rollershutter.mqtt.markdown b/source/_components/rollershutter.mqtt.markdown index a9b92398d6e..7ed69de4085 100644 --- a/source/_components/rollershutter.mqtt.markdown +++ b/source/_components/rollershutter.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Rollershutter" description: "Instructions how to integrate MQTT motorized devices into Home Assistant." date: 2015-12-01 12:00 diff --git a/source/_components/scene.markdown b/source/_components/scene.markdown index 083bd0c0a34..3ba280133dc 100644 --- a/source/_components/scene.markdown +++ b/source/_components/scene.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Scenes" description: "Instructions how to setup scenes within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/script.markdown b/source/_components/script.markdown index 5a9f6d285f9..119ec629330 100644 --- a/source/_components/script.markdown +++ b/source/_components/script.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Scripts" description: "Instructions how to setup scripts within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/sensor.arduino.markdown b/source/_components/sensor.arduino.markdown index 0db13205738..f893a4ada08 100644 --- a/source/_components/sensor.arduino.markdown +++ b/source/_components/sensor.arduino.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Arduino Sensor" description: "Instructions how to integrate Arduino boards pins as sensors within Home Assistant." date: 2015-09-14 18:28 diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown index c75bc22b603..ea63c52baea 100644 --- a/source/_components/sensor.arest.markdown +++ b/source/_components/sensor.arest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "aREST Sensor" description: "Instructions how to integrate aREST sensors within Home Assistant." date: 2015-09-07 18:15 diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown index da6cd72b01d..56145a9d814 100644 --- a/source/_components/sensor.bitcoin.markdown +++ b/source/_components/sensor.bitcoin.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Bitcoin" description: "Instructions how to integrate Bitcoin data within Home Assistant." date: 2015-05-08 17:15 diff --git a/source/_components/sensor.command_sensor.markdown b/source/_components/sensor.command_sensor.markdown index 06dc43d64b5..9c0c8adfac5 100644 --- a/source/_components/sensor.command_sensor.markdown +++ b/source/_components/sensor.command_sensor.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Command line Sensor" description: "Instructions how to integrate command line sensors into Home Assistant." date: 2015-09-13 10:10 diff --git a/source/_components/sensor.cpuspeed.markdown b/source/_components/sensor.cpuspeed.markdown index a8b43142bb7..ec2c229d7b3 100644 --- a/source/_components/sensor.cpuspeed.markdown +++ b/source/_components/sensor.cpuspeed.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "CPU speed" description: "Instructions how to integrate CPU speed within Home Assistant." date: 2015-10-15 11:00 diff --git a/source/_components/sensor.dht.markdown b/source/_components/sensor.dht.markdown index 6718cab67fe..6b535d2cf67 100644 --- a/source/_components/sensor.dht.markdown +++ b/source/_components/sensor.dht.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "DHT Sensor" description: "Instructions how to integrate DHTxx sensors within Home Assistant." date: 2015-08-30 19:15 diff --git a/source/_components/sensor.dweet.markdown b/source/_components/sensor.dweet.markdown index eec0d5d6f84..304fcffa282 100644 --- a/source/_components/sensor.dweet.markdown +++ b/source/_components/sensor.dweet.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Dweet.io" description: "Instructions how to integrate Dweet.io sensors within Home Assistant." date: 2015-12-10 10:15 diff --git a/source/_components/sensor.ecobee.markdown b/source/_components/sensor.ecobee.markdown index e729c466192..ebd63bb6acc 100644 --- a/source/_components/sensor.ecobee.markdown +++ b/source/_components/sensor.ecobee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Ecobee Sensor" description: "Instructions how to setup the Ecobee sensors within Home Assistant." date: 2015-11-30 18:00 diff --git a/source/_components/sensor.efergy.markdown b/source/_components/sensor.efergy.markdown index 8a61b44a3f2..15dc7f7fb7d 100644 --- a/source/_components/sensor.efergy.markdown +++ b/source/_components/sensor.efergy.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Efergy" description: "Instructions how to integrate Efergy devices within Home Assistant." date: 2015-07-11 0:15 diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown index e8e767b3b17..44f3214b2d6 100644 --- a/source/_components/sensor.eliqonline.markdown +++ b/source/_components/sensor.eliqonline.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Eliqonline" description: "Instructions how to integrate Eliqonline devices within Home Assistant." date: 2015-07-11 0:15 diff --git a/source/_components/sensor.forecast.markdown b/source/_components/sensor.forecast.markdown index a28b1428931..47ce6814d5c 100644 --- a/source/_components/sensor.forecast.markdown +++ b/source/_components/sensor.forecast.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Forecast.io" description: "Instructions how to integrate Forecast.io within Home Assistant." date: 2015-04-25 9:06 diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown index 700320445cd..485c94a3032 100644 --- a/source/_components/sensor.glances.markdown +++ b/source/_components/sensor.glances.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Glances" description: "Instructions how to integrate Glances sensors into Home Assistant." date: 2015-09-14 19:10 diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown index 8681aca6d23..7d7bcb63eb5 100644 --- a/source/_components/sensor.http.markdown +++ b/source/_components/sensor.http.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "HTTP Sensor" description: "Instructions how to integrate HTTP sensors within Home Assistant." date: 2016-02-05 12:15 diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown index 215246234ef..fc8a35d9269 100644 --- a/source/_components/sensor.markdown +++ b/source/_components/sensor.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Sensor" description: "Instructions how to setup your sensors with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index e4f331eb605..99f85d03cc3 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Modbus Sensor" description: "Instructions how to integrate Modbus sensors into Home Assistant." date: 2015-08-30 23:38 diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index 11bb2a10983..770ff862e15 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Sensor" description: "Instructions how to integrate MQTT sensors within Home Assistant." date: 2015-05-30 23:21 diff --git a/source/_components/sensor.mysensors.markdown b/source/_components/sensor.mysensors.markdown index 5c2125230b8..4fce2117198 100644 --- a/source/_components/sensor.mysensors.markdown +++ b/source/_components/sensor.mysensors.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MySensors Sensor" description: "Instructions how to integrate MySensors sensors into Home Assistant." date: 2016-01-17 15:49 diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index 75342dd4727..b85a2344e08 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Nest Sensor" description: "Instructions how to integrate Nest sensors within Home Assistant." date: 2016-01-13 19:59 diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index 119cfad3f9c..ad196eda243 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Netatmo Sensor" description: "Instructions how to integrate Netatmo sensors into Home Assistant." date: 2016-01-14 08:10 diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index e6652b4b842..15fb06ec854 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "One wire Sensor" description: "Instructions how to integrate One wire (1-wire) sensors into Home Assistant." date: 2016-01-17 07:15 diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown index df7e0b8c2a6..66e5e4f3d89 100644 --- a/source/_components/sensor.openweathermap.markdown +++ b/source/_components/sensor.openweathermap.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "OpenWeatherMap" description: "Instructions how to integrate OpenWeatherMap within Home Assistant." date: 2015-04-25 9:06 diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 6cdf092461f..c75a216dac7 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RESTful Sensor" description: "Instructions how to integrate REST sensors into Home Assistant." date: 2015-09-14 19:10 diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown index 0c0f9a4f30d..1f9ce224c85 100644 --- a/source/_components/sensor.rfxtrx.markdown +++ b/source/_components/sensor.rfxtrx.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RFXtrx Sensor" description: "Instructions how to integrate RFXtrx sensors into Home Assistant." date: 2015-08-06 17:15 diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index a86d2ce4e80..984143da7fc 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "SABnzbd" description: "Instructions how to integrate SABnzbd within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/sensor.swiss_public_transport.markdown index 8f17ad5a488..47239742921 100644 --- a/source/_components/sensor.swiss_public_transport.markdown +++ b/source/_components/sensor.swiss_public_transport.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Swiss Public Transport" description: "Instructions how to integrate timetable data for travelling in Switzerland within Home Assistant." date: 2015-06-02 21:45 diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 5915533cd48..e1fb58cd46a 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "System Monitor" description: "Instructions how to monitor the Home Assistant host." date: 2015-03-23 19:59 diff --git a/source/_components/sensor.tellduslive.markdown b/source/_components/sensor.tellduslive.markdown index d7e3ae398b4..43fffd40249 100644 --- a/source/_components/sensor.tellduslive.markdown +++ b/source/_components/sensor.tellduslive.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Telldus Live sensor" description: "Instructions how to integrate Telldus Live sensors into Home Assistant." date: 2016-01-17 15:49 diff --git a/source/_components/sensor.tellstick.markdown b/source/_components/sensor.tellstick.markdown index 1051222cdcd..8c7a244ebe6 100644 --- a/source/_components/sensor.tellstick.markdown +++ b/source/_components/sensor.tellstick.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TellStick Sensor" description: "Instructions how to integrate TellStick sensors into Home Assistant." date: 2015-08-06 19:00 diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown index b1533e21d07..d204cf7fd4a 100644 --- a/source/_components/sensor.temper.markdown +++ b/source/_components/sensor.temper.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TEMPer Sensor" description: "Instructions how to integrate TEMPer sensors into Home Assistant." date: 2015-08-06 19:00 diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 533221a100c..da6ec606d69 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Template Sensor" description: "Instructions how to integrate Template sensors into Home Assistant." date: 2016-01-27 07:00 diff --git a/source/_components/sensor.time_date.markdown b/source/_components/sensor.time_date.markdown index 82f287e0ca2..2a945fb8b59 100644 --- a/source/_components/sensor.time_date.markdown +++ b/source/_components/sensor.time_date.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Time & Date" description: "Instructions how to integrate the time and the date within Home Assistant." date: 2015-05-08 17:15 diff --git a/source/_components/sensor.torque.markdown b/source/_components/sensor.torque.markdown index f7287899d91..f8911e5fada 100644 --- a/source/_components/sensor.torque.markdown +++ b/source/_components/sensor.torque.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Torque (OBD2)" description: "Instructions how to integrate Torque sensors into Home Assistant." date: 2015-12-20 18:00 diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown index cc7952fa5e9..e484da70f1e 100644 --- a/source/_components/sensor.transmission.markdown +++ b/source/_components/sensor.transmission.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Transmission Sensor" description: "Instructions how to integrate Transmission sensors within Home Assistant." date: 2015-04-25 9:06 diff --git a/source/_components/sensor.twitch.markdown b/source/_components/sensor.twitch.markdown index 56c5dff9331..b1b81299ca6 100644 --- a/source/_components/sensor.twitch.markdown +++ b/source/_components/sensor.twitch.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Twitch" description: "Instructions how to integrate Twitch sensors into Home Assistant." date: 2015-12-19 09:00 diff --git a/source/_components/sensor.vera.markdown b/source/_components/sensor.vera.markdown index 93fd9fbe8f7..eb634bf280a 100644 --- a/source/_components/sensor.vera.markdown +++ b/source/_components/sensor.vera.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Vera Sensor" description: "Instructions how to integrate Vera sensors into Home Assistant." date: 2015-10-20 21:00 diff --git a/source/_components/sensor.wink.markdown b/source/_components/sensor.wink.markdown index ab4f49f758b..f8aa03fa560 100644 --- a/source/_components/sensor.wink.markdown +++ b/source/_components/sensor.wink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Wink Sensor" description: "Instructions how to setup the Wink sensors within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/sensor.worldclock.markdown b/source/_components/sensor.worldclock.markdown index 77989ab332b..a438ea034bd 100644 --- a/source/_components/sensor.worldclock.markdown +++ b/source/_components/sensor.worldclock.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Worldclock" description: "Instructions how to integrate a Worldclock within Home Assistant." date: 2015-10-02 11:15 diff --git a/source/_components/sensor.yr.markdown b/source/_components/sensor.yr.markdown index b64d2005941..3c0072da258 100644 --- a/source/_components/sensor.yr.markdown +++ b/source/_components/sensor.yr.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "YR" description: "Instructions how to integrate Yr.no within Home Assistant." date: 2016-01-04 14:00 diff --git a/source/_components/sensor.zigbee.markdown b/source/_components/sensor.zigbee.markdown index db03ea55bcf..45a58641aca 100644 --- a/source/_components/sensor.zigbee.markdown +++ b/source/_components/sensor.zigbee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: ZigBee Sensor description: "Instructions on how to set up ZigBee sensors within Home Assistant." date: 2016-01-28 10:08 diff --git a/source/_components/sensor.zwave.markdown b/source/_components/sensor.zwave.markdown index f26050bd784..0b4641935a9 100644 --- a/source/_components/sensor.zwave.markdown +++ b/source/_components/sensor.zwave.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Z-Wave Sensor" description: "Instructions how to setup the Z-Wave sensors within Home Assistant." date: 2015-11-15 13:00 diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index 5e99dc73854..00551f9b65c 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Shell command" description: "Instructions how to integrate Shell commands into Home Assistant." date: 2015-10-13 19:10 diff --git a/source/_components/simple_alarm.markdown b/source/_components/simple_alarm.markdown index f158203cec4..d0e8f14a98d 100644 --- a/source/_components/simple_alarm.markdown +++ b/source/_components/simple_alarm.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Intruder Alerts" description: "Instructions how to receive intruder alerts from Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/statsd.markdown b/source/_components/statsd.markdown index fbaa914b3ef..80a473c4456 100644 --- a/source/_components/statsd.markdown +++ b/source/_components/statsd.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "StatsD" description: "Record events in StatsD." date: 2016-01-25 08:00 diff --git a/source/_components/sun.markdown b/source/_components/sun.markdown index 3d5c3268b97..81fac12dc5c 100644 --- a/source/_components/sun.markdown +++ b/source/_components/sun.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Sun" description: "Instructions how to track the sun within Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/switch.arduino.markdown b/source/_components/switch.arduino.markdown index 27d25a6194c..b2a1b7ef5cd 100644 --- a/source/_components/switch.arduino.markdown +++ b/source/_components/switch.arduino.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Arduino Switch" description: "Instructions how to integrate Arduino boards pins as switches within Home Assistant." date: 2015-09-14 18:28 diff --git a/source/_components/switch.arest.markdown b/source/_components/switch.arest.markdown index e9e815fdb3c..a68fa5e5cc8 100644 --- a/source/_components/switch.arest.markdown +++ b/source/_components/switch.arest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "aREST Switch" description: "Instructions how to integrate aREST switches within Home Assistant." date: 2015-09-11 23:15 diff --git a/source/_components/switch.command_switch.markdown b/source/_components/switch.command_switch.markdown index 5850ad1dede..ea1dc0b7119 100644 --- a/source/_components/switch.command_switch.markdown +++ b/source/_components/switch.command_switch.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Command line Switch" description: "Instructions how to have switches call command line commands." date: 2015-06-10 22:41 diff --git a/source/_components/switch.edimax.markdown b/source/_components/switch.edimax.markdown index 70220e148a2..b0078775a0c 100644 --- a/source/_components/switch.edimax.markdown +++ b/source/_components/switch.edimax.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Edimax Switch" description: "Instructions how to integrate Edimax switches into Home Assistant." date: 2015-06-10 22:54 diff --git a/source/_components/switch.hikvision.markdown b/source/_components/switch.hikvision.markdown index 5dd60b46798..1887dd389fc 100644 --- a/source/_components/switch.hikvision.markdown +++ b/source/_components/switch.hikvision.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Hikvision Camera Switch" description: "Instructions how to integrate Hikvision camera's into Home Assistant." date: 2015-06-10 22:54 diff --git a/source/_components/switch.markdown b/source/_components/switch.markdown index c42f4760403..162d9c8c79a 100644 --- a/source/_components/switch.markdown +++ b/source/_components/switch.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Switches" description: "Instructions how to setup your switches with Home Assistant." date: 2015-01-24 14:39 diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown index fe3f8e7c90f..667b5a3dc78 100644 --- a/source/_components/switch.modbus.markdown +++ b/source/_components/switch.modbus.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Modbus Switch" description: "Instructions how to integrate Modbus switches into Home Assistant." date: 2015-08-30 23:38 diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 6dd0904fb18..6c609991110 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MQTT Switch" description: "Instructions how to integrate MQTT switches into Home Assistant." date: 2015-08-30 23:38 diff --git a/source/_components/switch.mysensors.markdown b/source/_components/switch.mysensors.markdown index 314418a1bfa..7b3fb6f1a31 100644 --- a/source/_components/switch.mysensors.markdown +++ b/source/_components/switch.mysensors.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "MySensors Switch" description: "Instructions how to integrate MySensors switches into Home Assistant." date: 2016-01-17 15:49 diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index 3a586900820..e5bdac5b17d 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "myStrom Switch" description: "Instructions how to integrate myStrom switches into Home Assistant." date: 2015-11-25 22:00 diff --git a/source/_components/switch.orvibo.markdown b/source/_components/switch.orvibo.markdown index 37af0826e43..b365802102a 100644 --- a/source/_components/switch.orvibo.markdown +++ b/source/_components/switch.orvibo.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Orvibo Switch" description: "Instructions how to integrate Orvibo switches within Home Assistant." date: 2015-11-15 18:15 diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index a33edb2e162..3d56ca231b3 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RESTful Switch" description: "Instructions how to integrate REST switches into Home Assistant." date: 2015-09-14 19:10 diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index e8d0d9654e8..215eb43af36 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "RFXtrx Switch" description: "Instructions how to integrate RFXtrx switches into Home Assistant." date: 2015-10-08 10:15 diff --git a/source/_components/switch.rpi_gpio.markdown b/source/_components/switch.rpi_gpio.markdown index cc4f86a3e60..608ca7aa1ab 100644 --- a/source/_components/switch.rpi_gpio.markdown +++ b/source/_components/switch.rpi_gpio.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Raspberry PI GPIO Switch" description: "Instructions how to integrate the GPIO of a Raspberry PI into Home Assistant as a switch." date: 2015-08-07 14:00 diff --git a/source/_components/switch.tellduslive.markdown b/source/_components/switch.tellduslive.markdown index 18252be830a..eb2002814ab 100644 --- a/source/_components/switch.tellduslive.markdown +++ b/source/_components/switch.tellduslive.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Telldus Live Switch" description: "Instructions how to integrate Telldus Live switches into Home Assistant." date: 2016-01-17 15:49 diff --git a/source/_components/switch.tellstick.markdown b/source/_components/switch.tellstick.markdown index 62495288f93..e9f3baf21e4 100644 --- a/source/_components/switch.tellstick.markdown +++ b/source/_components/switch.tellstick.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TellStick Switch" description: "Instructions how to integrate TellStick switches into Home Assistant." date: 2015-08-06 19:00 diff --git a/source/_components/switch.transmission.markdown b/source/_components/switch.transmission.markdown index b7120d44c00..e5a1e435127 100644 --- a/source/_components/switch.transmission.markdown +++ b/source/_components/switch.transmission.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Transmission Switch" description: "Instructions how to integrate Transmission within Home Assistant." date: 2015-06-02 09:00 diff --git a/source/_components/switch.vera.markdown b/source/_components/switch.vera.markdown index 25e9b439fe1..07bad9bea28 100644 --- a/source/_components/switch.vera.markdown +++ b/source/_components/switch.vera.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Vera Switch" description: "Instructions how to integrate Vera switches into Home Assistant." date: 2015-10-20 21:00 diff --git a/source/_components/switch.wemo.markdown b/source/_components/switch.wemo.markdown index 2528d8cbc11..1e9560f77ee 100644 --- a/source/_components/switch.wemo.markdown +++ b/source/_components/switch.wemo.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Belkin WeMo Switch" description: "Instructions how to integrate Belkin WeMo switches into Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index a3067d45937..6dda470f287 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Wink Switch" description: "Instructions how to setup the Wink switches within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/switch.zigbee.markdown b/source/_components/switch.zigbee.markdown index 83f8b267286..41097f32e68 100644 --- a/source/_components/switch.zigbee.markdown +++ b/source/_components/switch.zigbee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ZigBee Switch" description: "Instructions on how to set up ZigBee switches within Home Assistant." date: 2016-01-28 11:52 diff --git a/source/_components/switch.zwave.markdown b/source/_components/switch.zwave.markdown index 270690b276d..3b9f072fa12 100644 --- a/source/_components/switch.zwave.markdown +++ b/source/_components/switch.zwave.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Z-Wave Switch" description: "Instructions how to setup the Z-Wave switches within Home Assistant." date: 2015-11-15 13:00 diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index ad514f3f872..3898d4d89bb 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Telldus Live" description: "Instructions how to integrate Telldus Live into Home Assistant." date: 2016-01-17 16:00 diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index 3b50d202bd8..13124b11046 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "TellStick" description: "Instructions how to integrate your TellStick into Home Assistant." date: 2015-03-28 13:06 diff --git a/source/_components/thermostat.ecobee.markdown b/source/_components/thermostat.ecobee.markdown index 35cf51563ca..d209c458a0f 100644 --- a/source/_components/thermostat.ecobee.markdown +++ b/source/_components/thermostat.ecobee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Ecobee Thermostat" description: "Instructions how to setup the Ecobee thermostats within Home Assistant." date: 2015-11-30 18:00 diff --git a/source/_components/thermostat.heat_control.markdown b/source/_components/thermostat.heat_control.markdown index d27bb3993bb..5f754334261 100644 --- a/source/_components/thermostat.heat_control.markdown +++ b/source/_components/thermostat.heat_control.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Heat control" description: "Turn Home Assistant into a thermostat" date: 2015-03-23 19:59 diff --git a/source/_components/thermostat.heatmiser.markdown b/source/_components/thermostat.heatmiser.markdown index c98b78d78b7..49529fb0eb2 100644 --- a/source/_components/thermostat.heatmiser.markdown +++ b/source/_components/thermostat.heatmiser.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Heatmiser Thermostat" description: "Instructions how to integrate Heatmiser thermostats within Home Assistant." date: 2015-12-11 12:35 diff --git a/source/_components/thermostat.homematic.markdown b/source/_components/thermostat.homematic.markdown index a887fd51464..dc206f5a7ab 100644 --- a/source/_components/thermostat.homematic.markdown +++ b/source/_components/thermostat.homematic.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Homematic Thermostat" description: "Instructions how to integrate Homematic thermostats within Home Assistant." date: 2015-11-25 08:00 diff --git a/source/_components/thermostat.honeywell.markdown b/source/_components/thermostat.honeywell.markdown index 3c2e5bf7170..554b224734d 100644 --- a/source/_components/thermostat.honeywell.markdown +++ b/source/_components/thermostat.honeywell.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Honeywell Thermostat" description: "Instructions how to integrate Honeywell thermostats within Home Assistant." date: 2015-11-09 17:15 diff --git a/source/_components/thermostat.markdown b/source/_components/thermostat.markdown index d47b2728c4a..d003e41cfa5 100644 --- a/source/_components/thermostat.markdown +++ b/source/_components/thermostat.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Thermostats" description: "Instructions how to setup thermostats tracking within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/thermostat.nest.markdown b/source/_components/thermostat.nest.markdown index b139e671eb8..30c1b8c9005 100644 --- a/source/_components/thermostat.nest.markdown +++ b/source/_components/thermostat.nest.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Nest Thermostat" description: "Instructions how to integrate Nest thermostats within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_components/thermostat.proliphix.markdown b/source/_components/thermostat.proliphix.markdown index 3efb55e43ef..c9c13f91d13 100644 --- a/source/_components/thermostat.proliphix.markdown +++ b/source/_components/thermostat.proliphix.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Proliphix Thermostat" description: "Instructions how to integrate Proliphix thermostats within Home Assistant." date: 2016-01-15 08:00 diff --git a/source/_components/thermostat.radiotherm.markdown b/source/_components/thermostat.radiotherm.markdown index 0c93089cb4b..fc409933030 100644 --- a/source/_components/thermostat.radiotherm.markdown +++ b/source/_components/thermostat.radiotherm.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Radiotherm Thermostat" description: "Instructions how to integrate Radiotherm thermostats within Home Assistant." date: 2015-10-18 17:15 diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown index 44d270b7b1e..8f857c78089 100644 --- a/source/_components/updater.markdown +++ b/source/_components/updater.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Updater" description: "Detecting when Home Assistant updates are available." date: 2015-11-15 20:40 diff --git a/source/_components/vera.markdown b/source/_components/vera.markdown index 4ceee75d400..782ca02cb7d 100644 --- a/source/_components/vera.markdown +++ b/source/_components/vera.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Vera" description: "Instructions how to setup Vera hubs within Home Assistant." date: 2015-03-23 20:04 diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown index 06c635ecb31..8730ec8382f 100644 --- a/source/_components/verisure.markdown +++ b/source/_components/verisure.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Verisure" description: "Instructions how to setup Verisure devices within Home Assistant." date: 2015-08-17 20:28 diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index bebe9368ac2..4cd2283687b 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Wink" description: "Instructions how to setup the Wink hub within Home Assistant." date: 2015-01-20 22:36 diff --git a/source/_components/zigbee.markdown b/source/_components/zigbee.markdown index 51ae3f4fae0..01770a49e11 100644 --- a/source/_components/zigbee.markdown +++ b/source/_components/zigbee.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "ZigBee" description: "Instructions on how to integrate a ZigBee network with Home Assistant." date: 2016-01-27 17:10 diff --git a/source/_components/zone.markdown b/source/_components/zone.markdown index a0bd59ad1a2..bcb5980a1c1 100644 --- a/source/_components/zone.markdown +++ b/source/_components/zone.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Zone" description: "Instructions how to setup zones within Home Assistant." date: 2015-10-04 09:23 diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown index 1ec9fad3d4f..88a54ac9b73 100644 --- a/source/_components/zwave.markdown +++ b/source/_components/zwave.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Z-Wave" description: "Instructions how to integrate your existing Z-Wave within Home Assistant." date: 2015-03-23 19:59 diff --git a/source/_layouts/component.html b/source/_layouts/component.html deleted file mode 100644 index 3f387fde493..00000000000 --- a/source/_layouts/component.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- - -
-
-

- {{ page.title }} -

-
-
- - {{ content }} -
diff --git a/source/_layouts/page.html b/source/_layouts/page.html index c4f667776a0..9701938066a 100644 --- a/source/_layouts/page.html +++ b/source/_layouts/page.html @@ -3,8 +3,10 @@ layout: default ---
- - {% include edit_github.html %} + {% assign url_parts = page.url | split: '/' %} + {% if url_parts[1] != 'components' and url_parts[1] != 'cookbook' %} + {% include edit_github.html %} + {% endif %} {% if page.title and page.show_title != false %}
From c80185409660d0a6c3552d5e63c9c6ff88cae287 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 7 Feb 2016 14:21:09 -0800 Subject: [PATCH 039/601] Remove mailing list from help page --- source/help/index.markdown | 6 ------ 1 file changed, 6 deletions(-) diff --git a/source/help/index.markdown b/source/help/index.markdown index e7c026bc4a4..6f578f97ff3 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -15,7 +15,6 @@ There are various ways to get in touch with the Home Assistant community. It doe - [Forum](https://automic.us/forum/) - [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions. - - [Development Mailing List](https://groups.google.com/forum/#!forum/home-assistant-dev) for development related questions and discussing new features. ### {% linkable_title Bugs, Feature requests, and alike %} @@ -27,8 +26,3 @@ Have you found an issue in your Home Assistant installation? Please report it in ### {% linkable_title Roadmap %} There is no explicit roadmap available but the public [tracker](https://www.pivotaltracker.com/n/projects/1250084) can give you some insight into what is going on. - -### {% linkable_title Commercial vendors %} - -If you are a commercial vendor and would like to get your product integrated into Home Assistant, please submit a [Pull request](https://github.com/balloob/home-assistant/pulls) or get in touch with us. - From f5a7217b3fe739432e4cf688dd2b4e40ae781fa3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 7 Feb 2016 14:21:34 -0800 Subject: [PATCH 040/601] Make cookbook more prominent --- sass/oscailte/base/_navigation.scss | 9 +++++---- source/_includes/custom/grid_item_right.html | 1 + source/_includes/custom/navigation.html | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss index ea581a0b4e9..a6a974a6309 100644 --- a/sass/oscailte/base/_navigation.scss +++ b/sass/oscailte/base/_navigation.scss @@ -14,13 +14,14 @@ body{ -webkit-animation: bugfix infinite 1s; } #toggle, .toggle { display: none; } .menu li { list-style: none; float:left; } -$menu-collapse: 955px; +$menu-collapse: 924px; // @media only screen and (max-width: $lap-end){ @media only screen and (max-width: $menu-collapse){ .menu { display: none; opacity: 0; width: 100%; position: absolute; right: 0; } .menu li { display: block; width: 100%; margin: 0; } .menu li a { display: block; width: 100%; text-decoration: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } + .menu li a .icon { display: none; } .toggle { display: block; position: relative; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } #toggle:checked ~ .menu { display: block; opacity: 1; z-index: 999; } } @@ -75,10 +76,10 @@ header .grid { @include box-sizing(border-box); @include transition(all 0.25s linear); display: block; - padding: 32px 20px; + padding: 32px 12px; text-decoration: none; font-weight: normal; - font-size: 16px; + font-size: 14px; line-height: 1; } @@ -86,7 +87,7 @@ header .grid { background: $site-background; box-shadow: inset 0px 5px $navigation-color; color: $navigation-color; - padding: 40px 20px 24px; + padding: 40px 12px 24px; } .toggle{ diff --git a/source/_includes/custom/grid_item_right.html b/source/_includes/custom/grid_item_right.html index ba27398e2db..a1b637ad6b1 100644 --- a/source/_includes/custom/grid_item_right.html +++ b/source/_includes/custom/grid_item_right.html @@ -9,3 +9,4 @@
  • receive a message when the lights turn on while you are not at home?
  • We've got you covered.

    +

    View examples by the community.

    diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html index 52f378b5495..ccc7386c18a 100644 --- a/source/_includes/custom/navigation.html +++ b/source/_includes/custom/navigation.html @@ -1,6 +1,6 @@ diff --git a/source/developers/api.markdown b/source/developers/api.markdown index 2b69960b015..dd2edce9be9 100644 --- a/source/developers/api.markdown +++ b/source/developers/api.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Home Assistant API" -description: "Home Assistant API documentation" +title: "Home Assistant API/SSE" +description: "Home Assistant API/SSE documentation" date: 2015-05-11 12:00 sidebar: false comments: false @@ -9,8 +9,10 @@ sharing: true footer: true --- -Home Assistant is offering a RESTful API and a Python API for convenient access to -a Home Assistant instance over HTTP. +Home Assistant is offering a RESTful API and a Python API for convenient access to a Home Assistant instance over HTTP. - [RESTful API](/developers/rest_api/) - [Python API](/developers/python_api/) + +There is also support for [server-sent events](/developers/server_sent_events). + diff --git a/source/developers/index.markdown b/source/developers/index.markdown index 1b1e571000f..158f32285af 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -61,5 +61,6 @@ $ pip3 install tox - [Creating a custom component](/developers/creating_components/) - [Adding support for a new platform](/developers/add_new_platform/) - [Rest API](/developers/api/) +- [Server-sent events](/developers/server_sent_events/) - [Website](/developers/website/) From 823e6207d3c04455411689c530aaf3ba1a46fd1b Mon Sep 17 00:00:00 2001 From: Lindsay Ward Date: Fri, 8 Apr 2016 23:39:02 +1000 Subject: [PATCH 413/601] Made README and website contributions match, added more detail to website contribution setup details, updated forum link, re-organised getting started and troubleshooting with respect to YAML --- README.markdown | 44 ++----------- source/developers/index.markdown | 26 ++++---- source/developers/website.markdown | 23 +++++-- source/getting-started/configuration.markdown | 66 +++++++++++++++++-- source/getting-started/index.markdown | 11 ++-- .../troubleshooting-configuration.markdown | 44 ++----------- source/help/index.markdown | 6 +- 7 files changed, 110 insertions(+), 110 deletions(-) diff --git a/README.markdown b/README.markdown index d7531a67054..3dc2d536518 100644 --- a/README.markdown +++ b/README.markdown @@ -1,31 +1,10 @@ # Home Assistant website -This is the source for the [Home Assistant](https://github.com/balloob/home-assistant) website available at [Home-Assistant.io](https://home-assistant.io). All commits made to the `master` branch will be automatically pushed to production. - -Please point your Pull Request (PR) at the `next` branch. - -## Jekyll project to generate and deploy - -| Command | Action | -|---|---| -| `rake preview` | Preview site on [http://127.0.0.1:4000](http://127.0.0.1:4000) -| `rake generate` | Generate new version of the site -| `rake deploy` | Deploy a new version of the site - -_Generating and deploying is no longer necessary as we now have auto-deply._ +This is the source for the [Home-Assistant.io website](https://home-assistant.io) for the [Home Assistant project](https://github.com/balloob/home-assistant) ## Setup -_You need to have Ruby installed._ - -- [Ruby installation instructions](https://www.ruby-lang.org/en/documentation/installation/) -- For Fedora and CentOS check the last section of this file. - -```bash -$ git clone --recursive https://github.com/balloob/home-assistant.io.git -$ cd home-assistant.io -$ bundle -``` +Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/website/). ## Create a new blog post @@ -39,23 +18,8 @@ $ rake new_post["title"] $ rake preview ``` -The preview is now available on [http://127.0.0.1:4000](http://127.0.0.1:4000). +This makes the preview available on [http://127.0.0.1:4000](http://127.0.0.1:4000). -## Steps for the deployment of the site - -All developers with write access to the repositories are able to deploy the website. The deploy process is fully automated with `rake generate && rake deploy`. - -```bash -$ git submodule update --init -$ cd _deploy -$ git fetch -$ git pull origin gh-pages -$ cd .. -$ rake generate && rake deploy -``` -```bash -TZ=UTC rake generate && rake deploy -``` ### Setup on Fedora and CentOS On Fedora > 22 or CentOS 7.1.1503 Ruby is not available by default. Please take the notes here as a little guide for the Ruby installation process. @@ -76,4 +40,4 @@ The last command will give you something like this `ruby 2.2.3p173 (2015-08-18 r $ gem install bundler ``` -Now please follow the Setup instructions above. +Now you can follow the [setup instructions](https://home-assistant.io/developers/website/). diff --git a/source/developers/index.markdown b/source/developers/index.markdown index 1b1e571000f..e292c6e801a 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -9,17 +9,20 @@ sharing: true footer: true --- -Home Assistant is built from the ground up to be easily-extensible by other developers using components. It uses [Python 3](https://www.python.org/) for the backend and [Polymer (Webcomponents)](https://www.polymer-project.org/) for the frontend. +Home Assistant is built from the ground up to be easily-extensible by other developers using components. It uses [Python 3](https://www.python.org/) for the backend and [Polymer (Web components)](https://www.polymer-project.org/) for the frontend. Home Assistant is open-source and MIT licensed. The source can be found here: - - [home-assistant](https://github.com/balloob/home-assistant) - Python server-backend - - [home-assistant-js](https://github.com/balloob/home-assistant-js) - javascript-backend powering the client + - [home-assistant](https://github.com/balloob/home-assistant) - Python server backend + - [home-assistant-js](https://github.com/balloob/home-assistant-js) - JavaScript backend powering the client - [home-assistant-polymer](https://github.com/balloob/home-assistant-polymer) - Polymer UI ### {% linkable_title Starting development %} -You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to perform it. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. +You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to get setup. +Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. + +We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. ```bash $ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git @@ -28,13 +31,17 @@ $ git remote add upstream https://github.com/balloob/home-assistant.git $ script/setup ``` -We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. +Testing your work requires `tox` to be installed: + +```bash +$ pip3 install tox +``` After following these steps, running `hass` will invoke your local installation. ### {% linkable_title Submitting improvements %} -Improvements to Home Assistant should be submitted one feature at a time using Github pull requests. +Improvements to Home Assistant should be submitted one feature at a time using GitHub [pull requests](https://help.github.com/articles/using-pull-requests). 1. From your fork, create a new branch to hold your changes `git checkout -b some-feature` @@ -44,15 +51,10 @@ Improvements to Home Assistant should be submitted one feature at a time using G 4. Commit the changes `git add .` `git commit -m "Added some-feature"` - 5. Push your commited changes back to your fork on GitHub + 5. Push your committed changes back to your fork on GitHub `git push origin HEAD` 6. Follow [these steps](https://help.github.com/articles/creating-a-pull-request/) to create your pull request. -Note that the above requires `tox` to be installed. If you don't have it, do this: - -```bash -$ pip3 install tox -``` ### {% linkable_title Further reading %} diff --git a/source/developers/website.markdown b/source/developers/website.markdown index fac5d007e18..3a5bead0605 100644 --- a/source/developers/website.markdown +++ b/source/developers/website.markdown @@ -9,19 +9,28 @@ sharing: true footer: true --- -The home of Home Assistant is [https://home-assistant.io](https://home-assistant.io). This is the place where we provide documentation and additional details about Home Assistant for end users and developers. +The website you're reading now is the home of Home Assistant: [https://home-assistant.io](https://home-assistant.io). This is the place where we provide documentation and additional details about Home Assistant for end users and developers. -home-assistant.io is using the [Octopress](http://octopress.org/) framework for [Jekyll](http://github.com/mojombo/jekyll). To get more details, please checkout the [documentation](http://octopress.org/docs/). That means that creating a new page is simple. The pages are written in [markdown](http://daringfireball.net/projects/markdown/), you don't need to care about HTML or alike. +home-assistant.io uses the [Octopress](http://octopress.org/) framework for [Jekyll](http://github.com/mojombo/jekyll). To get more details, please checkout the [Octopress documentation](http://octopress.org/docs/). +That means that creating a new page is simple. The pages are written in [markdown](http://daringfireball.net/projects/markdown/); you don't need to care about HTML or the like. -To work on the website the process is no different to working on Home Assistant itself. +The process for working on the website is no different from working on Home Assistant itself. -- Fork the home-assistant.io [git repository](https://github.com/balloob/home-assistant.io). +To test your changes locally, you need to install the **Ruby** dependencies (gems): + +- [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) if you don't have it already. +- Install `bundler`, which is a dependency manager for Ruby: `gem install bundler` +- In your home-assistant.io root directory, run `bundle` to install the gems you need. + +Then you can work on the documentation: + +- Fork home-assistant.io [git repository](https://github.com/balloob/home-assistant.io). - Create/edit/update a page in the directory `source/_components/` for your platform/component. -- To test changes to home-assistant.io locally, run ``rake preview`` and navigate to http://127.0.0.1:4000. +- Test your changes to home-assistant.io locally: run ``rake preview`` and navigate to [http://127.0.0.1:4000](http://127.0.0.1:4000) - Create a Pull Request (PR) against the **next** branch of home-assistant.io if your documentation is for a new feature, platform, or component. - Create a Pull Request (PR) against the **master** branch of home-assistant.io if you fix stuff, create Cookbook entries, or expand existing documentation. -For a platform page it would be the fastest way to make a copy of an existing page and edit it. The [component overview](/components/) is generated automatically, so there is no need to add a link to that your page. +For a platform page, the fastest way is to make a copy of an existing page and edit it. The [component overview](/components/) is generated automatically, so there is no need to add a link to your page. ### {% linkable_title Code %} To take advantage of the built-in features of Octopress to display code snippets, just use the default markdown syntax. Please use `$` and `#` if it's a command and to differ from output. @@ -37,7 +46,7 @@ If you want to display line numbers, add the following snippet somewhere on your ``` ### {% linkable_title Images, icons, and logos %} -The images which are displayed on the pages are stored in various directories according their purpose. +The images which are displayed on the pages are stored in various directories according to their purpose. | Type | Location | | :----------- |:----------------------------------------------| diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index ca1ae21f43c..d1f4752a2dc 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -9,19 +9,75 @@ sharing: true footer: true --- -Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X/Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`. +Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X and Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`. Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is. -This file contains YAML code, which is explained briefly in [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/). An example configuration file is located [here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). +This file contains YAML code, which is explained briefly below. +[An example configuration file is located here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). -When launched for the first time, Home Assistant will write a default configuration enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the interface. +When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the user interface. If you run into trouble while configuring Home Assistant, have a look at [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/). +

    - You will have to restart Home Assistant for changes in configuration.yaml to take effect. + You will have to restart Home Assistant each time you make changes in configuration.yaml in order for these to take effect.

    +### {% linkable_title YAML %} + +Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. + +For each component that you want to use in Home Assistant, you add code in your `configuraton.yaml` file to specify its settings. +Example, the following code specifies that you want to use the [notify component](/components/notify) with the [pushbullet platform](/components/notify.pushbullet). + + +```yaml +notify: + platform: pushbullet + api_key: "o.1234abcd" + name: pushbullet +``` + +- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). +- A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). + +The basics of YAML syntax are block collections and mappings containing key-value pairs. +Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. + +Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. +Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. + +Lines that start with **#** are comments and are ignored by the system. + +The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. +The other properties (like name) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. + +```yaml +input_select: + threat: + name: Threat level +# A collection is used for options + options: + - 0 + - 1 + - 2 + - 3 + initial: 0 +``` + +The following example shows nesting a collection of mappings in a mapping. +In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). + +```yaml +sensor: + - platform: mqtt + state_topic: sensor/topic + - platform: mqtt + state_topic: sensor2/topic +``` + + ### {% linkable_title Setting up the basic info %} By default Home Assistant will try to detect your location and will automatically select a temperature unit and time zone based on your location. You can overwrite this by adding the following information to your `configuration.yaml`: @@ -47,7 +103,7 @@ homeassistant: ### {% linkable_title Password protecting the web interface %} -The first thing you want to add is a password for the web interface. Use your favourite text editor to open the file `/config/configuration.yaml` and add the following to the `http` section: +The first thing you will want to add is a password for the web interface. Use your favourite text editor to open `configuration.yaml` and edit the `http` section: ```yaml http: diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index d8d95d3c10c..ffe13cf36d9 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -278,21 +278,22 @@ $ python3/pip3 install --upgrade homeassistant If you run into any issues, please see [the troubleshooting page](/getting-started/troubleshooting/). It contains solutions to many of the more commonly encountered issues. -For additional help, in addition to this site, there are four sources: +In addition to this site, check out these sources for additional help: - - [Forum](https://automic.us/forum/) - - [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions. + - [Forum](https://community.home-assistant.io) for Home Assistant discussions and questions. + - [Gitter Chat Room](https://gitter.im/balloob/home-assistant) for real-time chat about Home Assistant. - [GitHub Page](https://github.com/balloob/home-assistant/issues) for issue reporting. ### {% linkable_title Updating %} -To update Home Assistant to the latest release run: `pip3 install --upgrade homeassistant` +To update Home Assistant to the latest release run: +`pip3 install --upgrade homeassistant` You have to restart Home Assistant (`hass` itself or with the help of the autostarting daemon if you use any) for the changes to take effect. ### {% linkable_title What's next %} -If you want to have Home Assistant start on boot, autostart instructions can be found [here](/getting-started/autostart/). +If you want to have Home Assistant start on boot, [autostart instructions can be found here](/getting-started/autostart/). To see what Home Assistant can do, launch demo mode: `hass --demo-mode` or visit the [demo page](/demo). diff --git a/source/getting-started/troubleshooting-configuration.markdown b/source/getting-started/troubleshooting-configuration.markdown index 5b3420d1462..f21209385c5 100644 --- a/source/getting-started/troubleshooting-configuration.markdown +++ b/source/getting-started/troubleshooting-configuration.markdown @@ -15,49 +15,17 @@ Before we dive into common issues, make sure you know where your configuration d Whenever a component or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. -### {% linkable_title YAML %} - -Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML can be confusing to start with but is really powerful in allowing you to express complex configurations. - -The basics of YAML are block collections and mappings containing key-value pairs. Collections will have each item start with a `-` while mappings will have the format `key: value`. The last value for a key is used in case you specify a duplicate key. -Note that the indentation is an important part of specifying relationships using YAML. - -```yaml -# A collection -- hello -- how -- are -- you - -# Lookup mapping -beer: ice cold # <-- will be ignored because key specified twice -beer: warm -wine: room temperature -water: cold - -# Nesting mappings (note the indentation) -device_tracker: - platform: mqtt - -# Nesting a collection of mappings in a mapping -sensor: - - platform: mqtt - state_topic: sensor/topic - - platform: mqtt - state_topic: sensor2/topic -``` - -Indentation is used to specify which objects are nested under one another. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. - - - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack. - - You can test your configuration using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - ### {% linkable_title My component does not show up %} When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your component you are trying to set up. #### {% linkable_title Problems with the configuration %} +One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. + + - You can test your configuration using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). + - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). + `configuration.yaml` does not allow multiple sections to have the same name. If you want a specific platform to be loaded twice, append a [number or string](/getting-started/devices/#style-2) to the name or nest them using [this style](/getting-started/devices/#style-1). ```yaml @@ -92,7 +60,7 @@ If you are using multiple files for your setup, make sure that the pointers are light: !include devices/lights.yaml sensor: !include devices/sensors.yaml ``` -Contents of `lights.yaml`: +Contents of `lights.yaml` (notice it does not contain `light: `): ```yaml - platform: hyperion diff --git a/source/help/index.markdown b/source/help/index.markdown index 6f578f97ff3..3129217ebe8 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -13,12 +13,12 @@ There are various ways to get in touch with the Home Assistant community. It doe ### {% linkable_title Communication channels %} - - [Forum](https://automic.us/forum/) - - [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions. + - [Forum](https://community.home-assistant.io) for Home Assistant discussions and questions. + - [Gitter Chat Room](https://gitter.im/balloob/home-assistant) for real-time chat about Home Assistant. ### {% linkable_title Bugs, Feature requests, and alike %} -Have you found an issue in your Home Assistant installation? Please report it in one of the issue trackers. Reporting it there makes it easier to track than in the Mailing list and ensures that it gets fixed. +Have you found an issue in your Home Assistant installation? Please report it in one of the issue trackers. Reporting it there makes it easy to track and ensures that it gets fixed. - [Issue tracker Home Assistant](https://github.com/balloob/home-assistant/issues) - [Issue tracker home-assistant.io](https://github.com/balloob/home-assistant.io/issues) (Website and documentation) From c581168e49f7734ace996a0264301c159927601c Mon Sep 17 00:00:00 2001 From: Lindsay Ward Date: Fri, 8 Apr 2016 23:39:02 +1000 Subject: [PATCH 414/601] Made README and website contributions match, added more detail to website contribution setup details, updated forum link, re-organised getting started and troubleshooting with respect to YAML --- README.markdown | 30 ++++----- source/developers/index.markdown | 26 +++---- source/developers/website.markdown | 23 +++++-- source/getting-started/configuration.markdown | 67 +++++++++++++++++-- source/getting-started/index.markdown | 8 +-- .../troubleshooting-configuration.markdown | 44 ++---------- source/help/index.markdown | 2 +- 7 files changed, 116 insertions(+), 84 deletions(-) diff --git a/README.markdown b/README.markdown index 32421af2737..3dc2d536518 100644 --- a/README.markdown +++ b/README.markdown @@ -1,28 +1,26 @@ # Home Assistant website -This is the source for the [Home Assistant](https://github.com/balloob/home-assistant) website available at [Home-Assistant.io](https://home-assistant.io). All commits made to the `master` branch will be automatically pushed to production. - -Please point your Pull Request (PR) at the `next` branch. - -## Preview Jekyll website locally - -| Command | Action | -|---|---| -| `rake preview` | Preview site on [http://127.0.0.1:4000](http://127.0.0.1:4000) +This is the source for the [Home-Assistant.io website](https://home-assistant.io) for the [Home Assistant project](https://github.com/balloob/home-assistant) ## Setup -_You need to have Ruby installed._ +Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/website/). -- [Ruby installation instructions](https://www.ruby-lang.org/en/documentation/installation/) -- For Fedora and CentOS check the last section of this file. +## Create a new blog post ```bash -$ git clone --recursive https://github.com/balloob/home-assistant.io.git -$ cd home-assistant.io -$ bundle +$ rake new_post["title"] ``` +## Site preview + +```bash +$ rake preview +``` + +This makes the preview available on [http://127.0.0.1:4000](http://127.0.0.1:4000). + + ### Setup on Fedora and CentOS On Fedora > 22 or CentOS 7.1.1503 Ruby is not available by default. Please take the notes here as a little guide for the Ruby installation process. @@ -42,4 +40,4 @@ The last command will give you something like this `ruby 2.2.3p173 (2015-08-18 r $ gem install bundler ``` -Now please follow the Setup instructions above. +Now you can follow the [setup instructions](https://home-assistant.io/developers/website/). diff --git a/source/developers/index.markdown b/source/developers/index.markdown index 158f32285af..583e5c161a2 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -9,17 +9,20 @@ sharing: true footer: true --- -Home Assistant is built from the ground up to be easily-extensible by other developers using components. It uses [Python 3](https://www.python.org/) for the backend and [Polymer (Webcomponents)](https://www.polymer-project.org/) for the frontend. +Home Assistant is built from the ground up to be easily-extensible by other developers using components. It uses [Python 3](https://www.python.org/) for the backend and [Polymer (Web components)](https://www.polymer-project.org/) for the frontend. Home Assistant is open-source and MIT licensed. The source can be found here: - - [home-assistant](https://github.com/balloob/home-assistant) - Python server-backend - - [home-assistant-js](https://github.com/balloob/home-assistant-js) - javascript-backend powering the client + - [home-assistant](https://github.com/balloob/home-assistant) - Python server backend + - [home-assistant-js](https://github.com/balloob/home-assistant-js) - JavaScript backend powering the client - [home-assistant-polymer](https://github.com/balloob/home-assistant-polymer) - Polymer UI ### {% linkable_title Starting development %} -You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to perform it. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. +You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to get setup. +Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. + +We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. ```bash $ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git @@ -28,13 +31,17 @@ $ git remote add upstream https://github.com/balloob/home-assistant.git $ script/setup ``` -We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. +Testing your work requires `tox` to be installed: + +```bash +$ pip3 install tox +``` After following these steps, running `hass` will invoke your local installation. ### {% linkable_title Submitting improvements %} -Improvements to Home Assistant should be submitted one feature at a time using Github pull requests. +Improvements to Home Assistant should be submitted one feature at a time using GitHub [pull requests](https://help.github.com/articles/using-pull-requests). 1. From your fork, create a new branch to hold your changes `git checkout -b some-feature` @@ -44,15 +51,10 @@ Improvements to Home Assistant should be submitted one feature at a time using G 4. Commit the changes `git add .` `git commit -m "Added some-feature"` - 5. Push your commited changes back to your fork on GitHub + 5. Push your committed changes back to your fork on GitHub `git push origin HEAD` 6. Follow [these steps](https://help.github.com/articles/creating-a-pull-request/) to create your pull request. -Note that the above requires `tox` to be installed. If you don't have it, do this: - -```bash -$ pip3 install tox -``` ### {% linkable_title Further reading %} diff --git a/source/developers/website.markdown b/source/developers/website.markdown index fac5d007e18..3a5bead0605 100644 --- a/source/developers/website.markdown +++ b/source/developers/website.markdown @@ -9,19 +9,28 @@ sharing: true footer: true --- -The home of Home Assistant is [https://home-assistant.io](https://home-assistant.io). This is the place where we provide documentation and additional details about Home Assistant for end users and developers. +The website you're reading now is the home of Home Assistant: [https://home-assistant.io](https://home-assistant.io). This is the place where we provide documentation and additional details about Home Assistant for end users and developers. -home-assistant.io is using the [Octopress](http://octopress.org/) framework for [Jekyll](http://github.com/mojombo/jekyll). To get more details, please checkout the [documentation](http://octopress.org/docs/). That means that creating a new page is simple. The pages are written in [markdown](http://daringfireball.net/projects/markdown/), you don't need to care about HTML or alike. +home-assistant.io uses the [Octopress](http://octopress.org/) framework for [Jekyll](http://github.com/mojombo/jekyll). To get more details, please checkout the [Octopress documentation](http://octopress.org/docs/). +That means that creating a new page is simple. The pages are written in [markdown](http://daringfireball.net/projects/markdown/); you don't need to care about HTML or the like. -To work on the website the process is no different to working on Home Assistant itself. +The process for working on the website is no different from working on Home Assistant itself. -- Fork the home-assistant.io [git repository](https://github.com/balloob/home-assistant.io). +To test your changes locally, you need to install the **Ruby** dependencies (gems): + +- [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) if you don't have it already. +- Install `bundler`, which is a dependency manager for Ruby: `gem install bundler` +- In your home-assistant.io root directory, run `bundle` to install the gems you need. + +Then you can work on the documentation: + +- Fork home-assistant.io [git repository](https://github.com/balloob/home-assistant.io). - Create/edit/update a page in the directory `source/_components/` for your platform/component. -- To test changes to home-assistant.io locally, run ``rake preview`` and navigate to http://127.0.0.1:4000. +- Test your changes to home-assistant.io locally: run ``rake preview`` and navigate to [http://127.0.0.1:4000](http://127.0.0.1:4000) - Create a Pull Request (PR) against the **next** branch of home-assistant.io if your documentation is for a new feature, platform, or component. - Create a Pull Request (PR) against the **master** branch of home-assistant.io if you fix stuff, create Cookbook entries, or expand existing documentation. -For a platform page it would be the fastest way to make a copy of an existing page and edit it. The [component overview](/components/) is generated automatically, so there is no need to add a link to that your page. +For a platform page, the fastest way is to make a copy of an existing page and edit it. The [component overview](/components/) is generated automatically, so there is no need to add a link to your page. ### {% linkable_title Code %} To take advantage of the built-in features of Octopress to display code snippets, just use the default markdown syntax. Please use `$` and `#` if it's a command and to differ from output. @@ -37,7 +46,7 @@ If you want to display line numbers, add the following snippet somewhere on your ``` ### {% linkable_title Images, icons, and logos %} -The images which are displayed on the pages are stored in various directories according their purpose. +The images which are displayed on the pages are stored in various directories according to their purpose. | Type | Location | | :----------- |:----------------------------------------------| diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index bdf04226678..32496cc92db 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -9,19 +9,74 @@ sharing: true footer: true --- -Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X/Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`. +Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X and Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`. -Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is. -This file contains YAML code, which is explained briefly in [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/). An example configuration file is located [here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). +Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is. +This file contains YAML code, which is explained briefly below. +[An example configuration file is located here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). -When launched for the first time, Home Assistant will write a default configuration enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the interface. +When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the user interface. If you run into trouble while configuring Home Assistant, have a look at [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/).

    -You will have to restart Home Assistant for changes in configuration.yaml to take effect. + You will have to restart Home Assistant each time you make changes in configuration.yaml in order for these to take effect.

    +### {% linkable_title YAML %} + +Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. + +For each component that you want to use in Home Assistant, you add code in your `configuraton.yaml` file to specify its settings. +Example, the following code specifies that you want to use the [notify component](/components/notify) with the [pushbullet platform](/components/notify.pushbullet). + + +```yaml +notify: + platform: pushbullet + api_key: "o.1234abcd" + name: pushbullet +``` + +- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). +- A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). + +The basics of YAML syntax are block collections and mappings containing key-value pairs. +Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. + +Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. +Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. + +Lines that start with **#** are comments and are ignored by the system. + +The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. +The other properties (like name) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. + +```yaml +input_select: + threat: + name: Threat level +# A collection is used for options + options: + - 0 + - 1 + - 2 + - 3 + initial: 0 +``` + +The following example shows nesting a collection of mappings in a mapping. +In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). + +```yaml +sensor: + - platform: mqtt + state_topic: sensor/topic + - platform: mqtt + state_topic: sensor2/topic +``` + + ### {% linkable_title Setting up the basic info %} By default Home Assistant will try to detect your location and will automatically select a temperature unit and time zone based on your location. You can overwrite this by adding the following information to your `configuration.yaml`: @@ -47,7 +102,7 @@ homeassistant: ### {% linkable_title Password protecting the web interface %} -The first thing you want to add is a password for the web interface. Use your favourite text editor to open the file `configuration.yaml` and add the following to the `http` section: +The first thing you will want to add is a password for the web interface. Use your favourite text editor to open `configuration.yaml` and edit the `http` section: ```yaml http: diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 42225c4f557..12e7ccb7b8d 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -289,15 +289,15 @@ $ python3/pip3 install --upgrade homeassistant If you run into any issues, please see [the troubleshooting page](/getting-started/troubleshooting/). It contains solutions to many of the more commonly encountered issues. -For additional help, in addition to this site, there are four sources: +In addition to this site, check out these sources for additional help: - - [Forum](https://community.home-assistant.io/) - - [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions. + - [Forum](https://community.home-assistant.io) for Home Assistant discussions and questions. + - [Gitter Chat Room](https://gitter.im/balloob/home-assistant) for real-time chat about Home Assistant. - [GitHub Page](https://github.com/balloob/home-assistant/issues) for issue reporting. ### {% linkable_title What's next %} -If you want to have Home Assistant start on boot, autostart instructions can be found [here](/getting-started/autostart/). +If you want to have Home Assistant start on boot, [autostart instructions can be found here](/getting-started/autostart/). To see what Home Assistant can do, launch demo mode: `hass --demo-mode` or visit the [demo page](/demo). diff --git a/source/getting-started/troubleshooting-configuration.markdown b/source/getting-started/troubleshooting-configuration.markdown index 5b3420d1462..f21209385c5 100644 --- a/source/getting-started/troubleshooting-configuration.markdown +++ b/source/getting-started/troubleshooting-configuration.markdown @@ -15,49 +15,17 @@ Before we dive into common issues, make sure you know where your configuration d Whenever a component or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. -### {% linkable_title YAML %} - -Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML can be confusing to start with but is really powerful in allowing you to express complex configurations. - -The basics of YAML are block collections and mappings containing key-value pairs. Collections will have each item start with a `-` while mappings will have the format `key: value`. The last value for a key is used in case you specify a duplicate key. -Note that the indentation is an important part of specifying relationships using YAML. - -```yaml -# A collection -- hello -- how -- are -- you - -# Lookup mapping -beer: ice cold # <-- will be ignored because key specified twice -beer: warm -wine: room temperature -water: cold - -# Nesting mappings (note the indentation) -device_tracker: - platform: mqtt - -# Nesting a collection of mappings in a mapping -sensor: - - platform: mqtt - state_topic: sensor/topic - - platform: mqtt - state_topic: sensor2/topic -``` - -Indentation is used to specify which objects are nested under one another. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. - - - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack. - - You can test your configuration using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - ### {% linkable_title My component does not show up %} When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your component you are trying to set up. #### {% linkable_title Problems with the configuration %} +One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. + + - You can test your configuration using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). + - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). + `configuration.yaml` does not allow multiple sections to have the same name. If you want a specific platform to be loaded twice, append a [number or string](/getting-started/devices/#style-2) to the name or nest them using [this style](/getting-started/devices/#style-1). ```yaml @@ -92,7 +60,7 @@ If you are using multiple files for your setup, make sure that the pointers are light: !include devices/lights.yaml sensor: !include devices/sensors.yaml ``` -Contents of `lights.yaml`: +Contents of `lights.yaml` (notice it does not contain `light: `): ```yaml - platform: hyperion diff --git a/source/help/index.markdown b/source/help/index.markdown index c92de072511..740f22d3ec3 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -20,7 +20,7 @@ There are various ways to get in touch with the Home Assistant community. It doe ### {% linkable_title Bugs, Feature requests, and alike %} -Have you found an issue in your Home Assistant installation? Please report it in one of the issue trackers. Reporting it there makes it easier to track than in the Mailing list and ensures that it gets fixed. +Have you found an issue in your Home Assistant installation? Please report it in one of the issue trackers. Reporting it there makes it easy to track and ensures that it gets fixed. - [Issue tracker Home Assistant](https://github.com/balloob/home-assistant/issues) - [Issue tracker home-assistant.io](https://github.com/balloob/home-assistant.io/issues) (Website and documentation) From bcc789f3c3893970abe55c3dba4cdff029ca125a Mon Sep 17 00:00:00 2001 From: Ryan Borstelmann Date: Fri, 8 Apr 2016 15:37:01 -0500 Subject: [PATCH 415/601] Update z-wave.markdown (#375) --- source/_topics/z-wave.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_topics/z-wave.markdown b/source/_topics/z-wave.markdown index 4fff9fea8e2..970303a1c2e 100644 --- a/source/_topics/z-wave.markdown +++ b/source/_topics/z-wave.markdown @@ -31,3 +31,9 @@ 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/) + + +## {% linkable_title Modifying Zwave Device Settings %} +You may wish to modify the zwave settings ozw*.xml file in your .homeassistant root folder, 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 Zwave 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 zwave 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 zwave devices. From cdc9606a57656b517ac5d083fcff75974c77b7b4 Mon Sep 17 00:00:00 2001 From: Ryan Borstelmann Date: Fri, 8 Apr 2016 17:16:23 -0500 Subject: [PATCH 416/601] Update z-wave.markdown fixed markdown typos --- source/_topics/z-wave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_topics/z-wave.markdown b/source/_topics/z-wave.markdown index 970303a1c2e..06a4c054946 100644 --- a/source/_topics/z-wave.markdown +++ b/source/_topics/z-wave.markdown @@ -34,6 +34,6 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support ## {% linkable_title Modifying Zwave Device Settings %} -You may wish to modify the zwave settings ozw*.xml file in your .homeassistant root folder, 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 zwave settings ozw*.xml file in your .homeassistant root folder, 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 Zwave 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 zwave 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 zwave devices. From 3cfbc037f397a740bb4f68cf48ee2a6b1ed2a92b Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Mon, 28 Mar 2016 10:52:52 -0700 Subject: [PATCH 417/601] Add GTFS sensor docs --- source/_components/sensor.gtfs.markdown | 53 ++++++++++++++++++++++++ source/images/supported_brands/gtfs.png | Bin 0 -> 982 bytes 2 files changed, 53 insertions(+) create mode 100644 source/_components/sensor.gtfs.markdown create mode 100644 source/images/supported_brands/gtfs.png diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown new file mode 100644 index 00000000000..97ebcd31a28 --- /dev/null +++ b/source/_components/sensor.gtfs.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "Public Transit (GTFS)" +description: "Instructions how to use public transit open data inHome Assistant." +date: 2016-03-28 10:19 +sidebar: true +comments: false +sharing: true +footer: true +logo: 'gtfs.png' +ha_category: Sensor +ha_iot_class: "Local Polling" +--- + + +The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. + +You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. + +Here are some examples: + +- [Bay Area Rapid Transit (BART)](http://www.bart.gov/schedules/developers/gtfs) - The light rail system for the San Francisco Bay Area. +- [Metropolitan Transit Authority of New York City (MTA)](http://www.bart.gov/schedules/developers/gtfs) - Provides separate data feeds for subway, bus, LIRR and Metro-North of the greater New York City metropolitan region. +- [GBRail.info](http://www.gbrail.info/) - Provides data feeds for most if not all rail companies in the Britain. + +You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. + +The data will be converted into a queryable format and saved as a SQLite3 database alongside the source data. The sensor will check for the existence of this SQLite3 data at every startup and will re-import the ZIP/Folder if none is found. + +To update the data, delete the SQLite3 file and restart Home Assistant. + +To find your stop ID, open the `stops.txt` file inside the ZIP file/unzipped folder. The format of the ID is different for every transit agency but will be the first "column" (meaning the string before the first comma) in a row. + +The sensor attributes will contain all related information for the specific trip, such as agency information, origin and destination stop information, origin and destination stop time and the route information. + +Your mileage may vary depending on the transit agency used. Most agencies respect the GTFS format but some will do weird things like adding extra columns or using different data formatting. If you have any data specific issues, please report them to the [PyGTFS](https://github.com/jarondl/pygtfs) project, which is what the GTFS sensor uses to parse data. + +**Please note**: This is a _static_ data source. Currently, there is no GTFS Realtime support in this sensor due to issues surrounding parsing the protocol buffer format in Python 3. Once those issues have been fixed Realtime support will be added. Once added, the sensor will check for any delays and advisories and report them in sensor as needed. + +```yaml +# Example configuration.yaml entry +sensor: + platform: gtfs + origin: STOP_ID + destination: STOP_ID + data: DATA_SOURCE +``` + +Configuration variables: + +- **origin** (*Required*): The stop ID of your origin station. +- **destination** (*Required*): The stop ID of your destination station. +- **data** (*Required*): The name of the ZIP file or folder containing the GTFS data. It must be located inside the `gtfs` folder of your configuration directory. diff --git a/source/images/supported_brands/gtfs.png b/source/images/supported_brands/gtfs.png new file mode 100644 index 0000000000000000000000000000000000000000..45f39d707fca73ad85fdc92bd96e7d198d651df4 GIT binary patch literal 982 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE(}8pX7+2iB`GtXjInmR_F{I+w+qu5pA&C-g`o0T2xbJ$nIPT(# zmE79#qM0X#wducuhnL3x#vLESr(B4CA%EqNt7G>?5Amyul!83oFv~7kcC=Dec+*VF z_m%IypRp0QIkVvNN4xK(=k`3G^HJttq0I5jaH}iK47(bO4^$>_NHF|r+*fd${|l4t z!;RH*Sga2JjX!X0-~G2t_Z#yMOb?j-@SE`mwhG=o-2GD%br(qQV2NSYo78G|;{L&? zP277_Cx2wB;IeVoQ8k-;z~aM<9L+VVakCTGJpL1T*vnJAfIY%n;YwPz?w1Qo`8Efx zW0=aq)Dt@OLa^oz|8J73_;kzOw%wbQrr5ZkYaMIpiT_DjjRkA6ykx&Q`c2MlU){WM z)!GZiMmlN&U8TCmIP{M7MaX{;v=B>nP)(YhqkH4bXC=cj6Sa)}A2@COpVUs2VA5MX zSzyxc??A?iUeF1@z-7SQGa=S_h5DWOtZ^&Zmmhew=Z@?Hy>@+* zxd(UxOl79abgQjS5wBb|-O!n{NN3iZyrh`#F%EN9UAPld$`auh>maH2usucmY4()) z2b8})(AB8ols;#;EwTCI(?gF;uI`zmu=`Jn@fW6eZn^pMmqn$WQh2cD#ZI*&0vFyK zci!9cwBp^`rsH8H?@I%}lsZm7X{ITCG|9L`H^0L0S_8je++zc`j6C-oE1T^eUGMhl zJ=dW5}25-)mq)=~_3dL253AT*|UF*JH$ewiPz_;5PuUECnO@3yz zVWLCC#%$#;VO(sPYb_Hszl3O6o!BOF>Yu)knr6YFt+P(LH{L!F`aq&&r*{)bL!+C#+{2I$rjj$yWb+ Date: Mon, 28 Mar 2016 11:02:05 -0700 Subject: [PATCH 418/601] Typo fixes --- source/_components/sensor.gtfs.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown index 97ebcd31a28..8ad6a0cbb95 100644 --- a/source/_components/sensor.gtfs.markdown +++ b/source/_components/sensor.gtfs.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Public Transit (GTFS)" -description: "Instructions how to use public transit open data inHome Assistant." +description: "Instructions on how to use public transit open data in Home Assistant." date: 2016-03-28 10:19 sidebar: true comments: false @@ -21,7 +21,7 @@ Here are some examples: - [Bay Area Rapid Transit (BART)](http://www.bart.gov/schedules/developers/gtfs) - The light rail system for the San Francisco Bay Area. - [Metropolitan Transit Authority of New York City (MTA)](http://www.bart.gov/schedules/developers/gtfs) - Provides separate data feeds for subway, bus, LIRR and Metro-North of the greater New York City metropolitan region. -- [GBRail.info](http://www.gbrail.info/) - Provides data feeds for most if not all rail companies in the Britain. +- [GBRail.info](http://www.gbrail.info/) - Provides data feeds for most if not all rail companies in Britain. You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. @@ -35,7 +35,7 @@ The sensor attributes will contain all related information for the specific trip Your mileage may vary depending on the transit agency used. Most agencies respect the GTFS format but some will do weird things like adding extra columns or using different data formatting. If you have any data specific issues, please report them to the [PyGTFS](https://github.com/jarondl/pygtfs) project, which is what the GTFS sensor uses to parse data. -**Please note**: This is a _static_ data source. Currently, there is no GTFS Realtime support in this sensor due to issues surrounding parsing the protocol buffer format in Python 3. Once those issues have been fixed Realtime support will be added. Once added, the sensor will check for any delays and advisories and report them in sensor as needed. +**Please note**: This is a _static_ data source. Currently, there is no GTFS Realtime support in this sensor due to issues surrounding parsing the protocol buffer format in Python 3. Once those issues have been fixed Realtime support will be added. Once added, the sensor will check for any delays and advisories and report them in the sensor as needed. ```yaml # Example configuration.yaml entry From 2866e29abcc2df870c7f5d561ef56eb0a7073fcb Mon Sep 17 00:00:00 2001 From: Marc Plano-Lesay Date: Tue, 29 Mar 2016 14:17:56 +0200 Subject: [PATCH 419/601] Fix typos in Transmission sensor documentation --- source/_components/sensor.transmission.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown index 1ab30b43326..52f82ad2887 100644 --- a/source/_components/sensor.transmission.markdown +++ b/source/_components/sensor.transmission.markdown @@ -36,13 +36,13 @@ Configuration variables: - **name** (*Optional*): The name to use when displaying this Transmission instance. - **username** (*Optional*): Your Transmission username, if you use authentication. - **password** (*Optional*): Your Transmission password, if you use authentication. -- **display_variables** array: Conditions to display in the frontend. +- **monitored_variables** array: Conditions to display in the frontend. - **current_status**: The status of your Transmission daemon. - **download_speed**: The current download speed. - **upload_speed**: The current upload speed. -To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Perferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed. +To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed.

    From 19725ab75763ca075f730163ab6698df43a3d06b Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Tue, 29 Mar 2016 14:11:26 -0700 Subject: [PATCH 420/601] Add links to GTFS Data Exchange and TransitFeeds --- source/_components/sensor.gtfs.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown index 8ad6a0cbb95..dce5fb4dd33 100644 --- a/source/_components/sensor.gtfs.markdown +++ b/source/_components/sensor.gtfs.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. -You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. +You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. You may also be able to find data at either [TransitFeeds](http://transitfeeds.com/feeds) or [GTFS Data Exchange](http://www.gtfs-data-exchange.com/). Here are some examples: From df6a6701fa5549f44f9f6b8ad8c72b2d0b8681a6 Mon Sep 17 00:00:00 2001 From: Florian Holzapfel Date: Thu, 17 Mar 2016 13:08:52 +0100 Subject: [PATCH 421/601] add vieratv documentation --- .../_components/media_player.vieratv.markdown | 38 ++++++++++++++++++ source/images/supported_brands/panasonic.png | Bin 0 -> 2576 bytes 2 files changed, 38 insertions(+) create mode 100644 source/_components/media_player.vieratv.markdown create mode 100644 source/images/supported_brands/panasonic.png diff --git a/source/_components/media_player.vieratv.markdown b/source/_components/media_player.vieratv.markdown new file mode 100644 index 00000000000..12fe1a64eb1 --- /dev/null +++ b/source/_components/media_player.vieratv.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Panasonic Viera TV" +description: "Instructions on how to integrate a Panasonic Viera TV into Home Assistant." +date: 2016-03-17 13:04 +sidebar: true +comments: false +sharing: true +footer: true +logo: Panasonic.png +ha_category: Media Player +featured: false +--- + +The `vieratv` platform allows you to control a Panasonic Viera TV. + +To add a TV to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: vieratv + host: 192.168.0.10 + port: 55000 + name: Living Room TV +``` + +Configuration variables: + +- **host** *Required*: The IP of the Panasonic Viera TV, e.g. `192.168.0.10` +- **port** *Optional*: The port of your Panasonic Viera TV. Defaults to `55000` +- **name** *Optional*: The name you would like to give to the Panasonic Viera TV. + +Currently known supported models: + +- TX-P42STW50 + +If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/balloob/home-assistant.io). diff --git a/source/images/supported_brands/panasonic.png b/source/images/supported_brands/panasonic.png new file mode 100644 index 0000000000000000000000000000000000000000..f74fb674c90c7e5dd40fd3773624dde5b559f03a GIT binary patch literal 2576 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 msJLcU2h0J_sZ|Ran#4b_p~h924}CWP0000 Date: Tue, 29 Mar 2016 23:18:48 +0200 Subject: [PATCH 422/601] rename virtatv to include the brand name --- ...vieratv.markdown => media_player.panasonic_viera.markdown} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename source/_components/{media_player.vieratv.markdown => media_player.panasonic_viera.markdown} (90%) diff --git a/source/_components/media_player.vieratv.markdown b/source/_components/media_player.panasonic_viera.markdown similarity index 90% rename from source/_components/media_player.vieratv.markdown rename to source/_components/media_player.panasonic_viera.markdown index 12fe1a64eb1..5e0256daada 100644 --- a/source/_components/media_player.vieratv.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -12,14 +12,14 @@ ha_category: Media Player featured: false --- -The `vieratv` platform allows you to control a Panasonic Viera TV. +The `panasonic_viera` platform allows you to control a Panasonic Viera TV. To add a TV to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry media_player: - platform: vieratv + platform: panasonic_viera host: 192.168.0.10 port: 55000 name: Living Room TV From 6fdae7a492633c122c94b49faeb35fbd761f9e21 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 30 Mar 2016 10:08:07 +0200 Subject: [PATCH 423/601] Add docs for onkyo receiver --- .../_components/media_player.onkyo.markdown | 24 ++++++++++++++++++ source/images/supported_brands/onkyo.png | Bin 0 -> 3830 bytes 2 files changed, 24 insertions(+) create mode 100644 source/_components/media_player.onkyo.markdown create mode 100644 source/images/supported_brands/onkyo.png diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown new file mode 100644 index 00000000000..fc2b2fc9f7c --- /dev/null +++ b/source/_components/media_player.onkyo.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Onkyo" +description: "Instructions how to integrate Onkyo receivers into Home Assistant." +date: 2016-03-30 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: onkyo.png +ha_category: Media Player +--- + + +The `onkyo` platform allows you to control a [Onkyo receiver](http://www.onkyo.com/) from Home Assistant. + +To add an Onkyo receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: onkyo +``` + diff --git a/source/images/supported_brands/onkyo.png b/source/images/supported_brands/onkyo.png new file mode 100644 index 0000000000000000000000000000000000000000..eaca37abcf5060df924ec6448b69a81ee659839d GIT binary patch literal 3830 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 literal 0 HcmV?d00001 From 654e0165edc2706dbd7dad2873482fb7bbf897d1 Mon Sep 17 00:00:00 2001 From: Charles Spirakis Date: Wed, 30 Mar 2016 15:25:40 -0700 Subject: [PATCH 424/601] Dcoument zwave's test_network for 0.17 Documents the test_network service which is a call through to openzwave's TestNetwork() method. --- source/_components/zwave.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown index f7c224b555f..14efbecc46f 100644 --- a/source/_components/zwave.markdown +++ b/source/_components/zwave.markdown @@ -120,6 +120,7 @@ The Z-Wave component exposes four services to help maintain the network. | remove_node | Put the zwave controller in exclusion mode. Allows one to remove a device from the zwave network.| | heal_network | Tells the controller to "heal" the network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | | soft_reset | Tells the controller to do a "soft reset". This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.| +| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead".| The soft_reset and heal_network commands can be used as part of an automation script to help keep a zwave network running relliably. For example: From 5ffbdcf2d9d9abb4da0bd8aba33ba02f65028866 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 1 Apr 2016 00:37:43 -0400 Subject: [PATCH 425/601] Update media_player.onkyo.markdown --- .../_components/media_player.onkyo.markdown | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index fc2b2fc9f7c..04473cb94de 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -22,3 +22,71 @@ media_player: platform: onkyo ``` +A few notes: +- Source selection has no front-end UI, but can be controlled by way of service calls. Select the source string from the following list: + +``` + video1 + video2 + video3 + video4 + video5 + video6 + video7 + dvd + bd-dvd + tape1 + tv-tape + tape2 + phono + cd + tv-cd + fm + am + tuner + dlna + internet-radio + usb + network + universal-port + multi-ch + xm + sirius + ``` +- Sample automation and input select +``` +automation: + alias: Receiver Source + trigger: + platform: state + entity_id: input_select.receiver_source + action: + service: media_player.select_source + data_template: + entity_id: media_player.txnr535_000000000000 + source: > + {% if is_state('input_select.receiver_source', 'HTPC') %} + pc + {% elif is_state('input_select.receiver_source', 'Chromecast') %} + aux1 + {% elif is_state('input_select.receiver_source', 'Wii U') %} + game + {% elif is_state('input_select.receiver_source', 'Bluray') %} + bd + {% elif is_state('input_select.receiver_source', 'Raspberry Pi') %} + tv + {% endif %} + +input_select: + receiver_source: + name: Source + options: + - HTPC + - Chromecast + - Wii U + - Bluray + - Raspberry Pi + initial: None + +``` + From b3180e08792791ba274056ce55b0180e7a6a9642 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 2 Apr 2016 23:32:04 +0200 Subject: [PATCH 426/601] Add loop energy docs --- .../_components/sensor.loop_energy.markdown | 35 ++++++++++++++++++ source/images/supported_brands/loop.png | Bin 0 -> 7192 bytes 2 files changed, 35 insertions(+) create mode 100644 source/_components/sensor.loop_energy.markdown create mode 100644 source/images/supported_brands/loop.png diff --git a/source/_components/sensor.loop_energy.markdown b/source/_components/sensor.loop_energy.markdown new file mode 100644 index 00000000000..0d6aa9c0c11 --- /dev/null +++ b/source/_components/sensor.loop_energy.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Loop Energy" +description: "Instructions how to integrate Loop Energy devices within Home Assistant." +date: 2016-04-02 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: loop.png +ha_category: Sensor +--- + + +Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. + +To enable the Loop Energy sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + platform: loopenergy + electricity_serial: ELECRITCAL_SERIAL + electricity_secret: ELECTRICAL_OFFSET + gas_serial: GAS_SERIAL + gas_secret: GAS_SECRET +``` + +Configuration variables: + +- **electricity_serial** (*Required*): Serial of your electricity sensor +- **electricity_secret** (*Required*): Secret for your electricity Sensor +- **gas_serial** (*Required*): Serial for your gas sensor. +- **gas_secret** (*Required*): Secret for your gas sensor. + diff --git a/source/images/supported_brands/loop.png b/source/images/supported_brands/loop.png new file mode 100644 index 0000000000000000000000000000000000000000..a96a4099f89fb3304a21edd0d18a3e510800305a GIT binary patch literal 7192 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 Date: Sun, 3 Apr 2016 09:54:04 +0200 Subject: [PATCH 427/601] Create thermostat.zwave.markdown Copy paste of the binary sensor instruction --- source/_components/thermostat.zwave.markdown | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 source/_components/thermostat.zwave.markdown diff --git a/source/_components/thermostat.zwave.markdown b/source/_components/thermostat.zwave.markdown new file mode 100644 index 00000000000..58bff349616 --- /dev/null +++ b/source/_components/thermostat.zwave.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Z-Wave Thermostat" +description: "Instructions how to setup the Z-Wave thermostat within Home Assistant." +date: 2016-04-03 9:52 +sidebar: true +comments: false +sharing: true +footer: true +logo: z-wave.png +ha_category: Thermostat +--- + +To get your Z-Wave thermostat working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). From 99de6098c6bd7279a159b166904679b061c70c6f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 6 Apr 2016 09:22:51 +0200 Subject: [PATCH 428/601] Fix image name and size --- .../media_player.panasonic_viera.markdown | 13 +++++++------ source/images/supported_brands/panasonic.png | Bin 2576 -> 4347 bytes 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index 5e0256daada..6902988957f 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -7,13 +7,19 @@ sidebar: true comments: false sharing: true footer: true -logo: Panasonic.png +logo: panasonic.png ha_category: Media Player featured: false --- The `panasonic_viera` platform allows you to control a Panasonic Viera TV. +Currently known supported models: + +- TX-P42STW50 + +If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/balloob/home-assistant.io). + To add a TV to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -31,8 +37,3 @@ Configuration variables: - **port** *Optional*: The port of your Panasonic Viera TV. Defaults to `55000` - **name** *Optional*: The name you would like to give to the Panasonic Viera TV. -Currently known supported models: - -- TX-P42STW50 - -If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/balloob/home-assistant.io). diff --git a/source/images/supported_brands/panasonic.png b/source/images/supported_brands/panasonic.png index f74fb674c90c7e5dd40fd3773624dde5b559f03a..67c008e0dda196ec30f91cadbcb46a8784138c6e 100644 GIT binary patch literal 4347 zcmV|Acn}p2o#O-5R}Ei!J*=!Ol>)OboI#EwjXuiC=arGp2dqsxkfHxOO8=3lTD4?y=_lnMQC!CJ=DBw|5t~+yx+Z!OV3RTlE=Nman-NLxDA3lSn*`XT zOoGeNQr*;po&Wi0a<(VsA4=Su)lpWy8pW0EBsM}aNpehz!zF&c7f!u7i?K~w!T(cm z4Ga<-yP}%h1(Px^vM|(p!YOUe;L1NT4~a3pqXtk^t|l4RT5#?!ZLIgmDbk>W))Q}$ z2d9akwFV;c6gX|t%4#%3-!lLJ2n*ta>vKNKv9xvQNX_FO0KnXt?(p#*pB!TcttZAl z;HJr2zoo&U1NY;8Ci&NU+q)uD+>rxlJVHlUlpM^;EVTQ;;+N)neCu>Y8Yh zC#R8HqCsP;5gJ`Tl+C@S>q5RO=FW77zxNbKB|IcVd12*ZvDM9=b^S5v(Dqw>hJ+|D zM9Rbz04N@Il8pauK~}yREt)>Fc2Wrsn_loi+8RFu`g5D$+}karu&fJ(Wi*U^1P>az z(QO;8F$)$yOp zZ6f==Y(Qh1(dMy41`DutjlXGLEXl=u6-oc&BQvGLRYC&Xapd2h!C7&nAYZy<*+ zsBrX>%1j|JiK`2R)FfYg{F@+)%C1DwP8PjU&TOS}evV3|0lPkb1U7&GKwN|;&hME6 zS%ApY--#){y~#F z8MnQ{E?@xwtsg*UZYyHmD97EZ4x4EHo8?_t{ALACWjC_|3jj3Qek6ZTjc<#ZEjCX3 z!vm7?Nv&PL0)Pso0b5SgW8=XJqSG5j^|9l071{8+YP*0146(Iq_Eq7`Hw}bIIVSGD zkAr`1;tZ^(v2@0@7A#IHM{#AlUFnuXS&xyhvyv0A0HCN+i&gJF7;}0@r#Fxtr>n?{ zbcId80)S$L4$p6^z^SW`$hd>6tVTn)YC2V`maN@hWznUvRa!KCNdBN29kibFL}%Sl zqfXUhGa-}mN!_RgJ$3aFIhEb)kU7k{p~mqmPt3kM@MSF-`JKIz_US{5iYWJX3t6OuTl6*!mMWb=kUeBm)CC1<7#8oIIPj}2p*kJO`e7|Yyt8wZj0=|h~j zq9o%AuEQ4|b807(y5q=Y)u{MpEK;ZHL1u32xCggtx({D`*J>7<9Qad{L;E;X3W8#VG{? z=dZUxsp_(;uLED!l8c4y4tb89XC9%bTutm|3oUA^2AWhib>sZ?He}sUbFx}dvjy0A zsD`nfpLhz=*7#$AOaPU-4~1nk*d`*UNCW3AsM@U0k-`2*NsJa@?GkSU`%gus(twO> zt&CPv*FAvia(XDvDo`_Obg`!!@(zb%QTPxcLTe3V&)G*{B9@BoYt7uE__r!S>)C-7 z9>j;((+#CHdPcX=*iVppbjZSw7jrqhud8;16(x#x^8B_6PHp)-7gjfUV31&&g?NuM zxDt2Y2bL9@t#rt1r8W&}MT`g?+I~iNP{?;h(aA`&U=;v1ykE|!X>9eGhqG1FMN^<^ z=N2z18oEszM_$G3Mr}xt;Nt%IRQ|EQeb?CBMZ$kw#%L)@s&%7)U`ZB-3r)ZR0FkGF z(&-H(>xSAYV3f_hrnEp-zM6I30)2SMJ{V>S+?A>>vi^f=FpXW+Zp87g>~puI5*{?# ze$H`Uu|jKeABVEo-O!X5eXuK8ib$E5s&1gk_R|lMd#BTCdwG>^h)0+|opOlfvQ@UN zoxwV&mljPM1*{=<#*@){>ADAO%1Q9tC>+}ojFcCBAoLJWiie$K%ZYlhooyQ!Bqriw zI8|%Wr%&?5#r-2TtG^c&{#r3nG;}k%xd347W4?dxoldOZUrrLEMTiOYz@l&oHIkyX z$h3M6eP({w%Iaz4eiUv>TL3_?)QeKJYDvWFWsFMl++W(D(;FDaIg&BW+$A%mB`z1J z$d(fiSv><~i)|!NT@y`0Ui*=C-7?>vN1faAlMx9LQMA@TR;1r&j7x8ixaKr)t&S5T zX|W%r(;G<9$w7FP`FK4i29c|Lm>Pt%bF{3o zp2UO-5fdWB!nq!Zi||B9kchIj$z+?DJ&%=(rO2DyAkp#Jv{jA zVZD&=itK}-W=b`AnUp$qNlA8|Q8NBk-#uv4KFqz-$*L50B}!pss%ZgseMI z#W-fCgDWJ!9T_`h$oUXp)2ww(G`U=$BBix@6f1O)SL?7MUBS@@=Qh!No(ocwe6icY zripz+PS{wpr;Ed8C5y_{L|&~!u|fy`WI5+p0svn6`804z%n$!vQKi<5(vJD9 zoTR?wiw(;pW_hTxIs@zd;^%uI$I7*YC@)r~t*l;;xCl?ye%3Gbw&<-SM0q)UFBU)0 zvAV(5(n?HuP5?Ms0Ox`$GFX6bKMb>)#V@PTko-~_H_N+lvs?={ZOSA)z1+YR=*zQO z-Qn$N-;{LFdUCV83q_SW41H=5$1!NOW*OHknL#Z`y+iKR8|kz6kX9qK6ugKJybJ3~5XJ!_CVX3H-VQ_X4}*`4tS=dZVoS^2#BaV@GFX!7+f z_8iZ^0AY2F8TW&`>x2UrTMVf08FW6lcC4Ra(R_yo@gd~9A~r%o=>XjP>Fb}K>3$bpAH`XteKo%gPZk`0EOuREKTfV%NB<{Y?YROmsLX5Rb zys;u?8bqD~Digrovo*vXcWPuMc8Q{$+^aXBtj>UY^+N;@m;BIoB^so>=)>BslA-vS z>6(d52^CH_a76|S7z+-nn|h#X)e@<%CuNBYS@rG%&Th0*RSOsT_uSiakdhQY6@Lb# z5Bt8cl|7%K>mGF4SaM4`8LuyxEkMq}Fa%4zs4NQ$$i*E?{p3DjbCpw92AXYx%LOX3 z`FK5JY@uxK#llc;D)3*62vf1~x5XN}$Is`vAT~^Ba~^8EB{5nArjoLOL4pfb@~NdY zdX{+24fL}DS7R%46-1y94=G6jmd|K$D6ev=qF^cf{Z-<0i&TBHT1RI6>Mn}~9{Rjk z*v?qV5fU)kO;27Xr8XX{AWZYcpXvf5fVE2`IQg}8I=xt-L-wsFWaLqmyHy=zaT@b6 zl9h|a@bMN>C5rY56)4As3n7!bGp^senGK^}NugAA5jOTWCPWD3u>W10IWXQ7X0KA! z-e<9DJM&s2$+*T|nA>G=9y`TG6X(fkj66Qltk#iNKdxnU-JYI?UND-uAo^p1knwcozh9}`i89s+9LD*>!= zX~ND*>^)mUu73Z79Qd-9L~Sl(Es;xJDtUHpVX)s+M%Hg&kl^`k71(yNii8BXL)p@c zJb5QlkJfQx!}^@(7KR7%nPak28gbhya5$@;OmTBTQKc4A11V%esdP&RXV#5xQ-+;&hMFvs7&+kU7S6r zy&Gr3)x~zD#wA;??{*%zB4uJ~LxN;nT*{}`OXMk_t{wM2YcU?^eiMKNJQlw4u`!;GJd`nicUr%VWDLg*yULaDt+T@ z>f(DLkV)NHHEsIKGg0!{0xSxbP^n42tZ|N|cTkL%_)iy7g~uYWd8HrtJQvo@oqaGA z8N0%%m9b)0MKPS}mIa8Y+>gR=e$O0EwR&c;VGtiDwg%&WPDWz*S));|ji-P*zBQD( zeJT>G(al^=ppG`ylk$E`3H-h?muvnHX*v0+xshh_mIOpYp{iovCmSE(56vn7b zp7~_t-Dx4!O+C0*Z$M*PFQgJ4_&gUZj}{?up$N`=Z{b*^vAK)nmv*7CwHL~kUZ~oQ zkV<$6_M3{eOS~-}-55(>B~^OJt95A6^r1!5hsSCognU;MJs%SyL|lX?r&oYkl4iAz z+$g1Sw^k30wjX8n1`G@kM9BmYy1OEJt_N29OvL$>bAK;V-9VFKg%-sM9U9tt(b#H4 p$Ii}d=L`3bU4C=t&YhX>Irp6JxzpRc z>qPSAlHY4-pRYQQ96Wj|=@|?Sqkr3R@%gk_GIS2_FWsN?ZdzVzyJgmf8CW_F@=}pbdt$5j5@6yZe$|`-kl1Fc?7_3~eK5+7;7Q zCr6H3Y}#N1Z7{TsplQ?QZLt@`U<7S2w2`3CnY1EVv*nn*B!)48sW=Qq&=uP~FKn`x z#9%NO>L%!A>kmiCwQtkWqf$*faQ-ITeQP612x-^9M@zgUVyUXM2+=&u&bvd3arN z*}XrGIOhD@SGxZr+nfIK)@0Gw`*R6&@wb2EE_Er+@xL9|{b%yzTicS0@A_fXSTC8{ zm&|^9N3!pr{v}Kc5I(jL{eDhS{QFQFEMu3C=Iw!wNOE;?|3BOr;$QisM zbBX~RPtV?91YL-r9Tfez7wK$hB+COV((ruKFN#Fa_s!kxJlUd2&aCQ4h`x>(J>!ab zhj{pP^q*%0FqV)`6)9zGHJ~AARva2b8MZ4QSTiD|Q-+|K>nd}LA+zM8p%Vn{mVJtT zc%WJK#zG2Z8)O@La1ue6Z7lcGabEX=)_9J&AM6^@|MTzdtW`-9^ZE#b5JsxnKP2m( zr-B4swy}b$LeMU0UBfuM(_t{QmZ0(eH2pvZb$Ntgd*#F3V@}Ytmlpq)gt6LKjJ8UH zD7~@SzIRCFS+YE*5%$q|>FL<5=C~px9mc)KlAt-4PvR9N=(-IbD?(!vL#qfH0%6&& z^+b4(@t&p72HrKEBym%g<(mFUAT>eIuI~bKH|eRL-Kv3kg4{Ks72?hG@4RUtHtq=U zEQsYw$yyi34wm@Z*ef9gV!xXBG)YRo(ilsErp^C&Pho;)Oxlo&HXcu6(b&W=ZUkM| z=1ERLA$X9ny*nh5c1!dU1kH;Ip%n3!Jo!km=a}xBq^1;3Kqmr4oik@K_xg3CE#^C_~WPiy}!%KgUG~T9cSYI_lLvI3m)$pqUqK=rlpI^mQ+L z&TpnZ7cXXUo|4eNU+!uM8e+z?^+`FBWH&z1ueuITSdzDjIv{o}c%ym8IRY65-nTRs z=8IKE=t*lKB?U1?p(N2mvkHP}nOiMEbI-ygBQift_{d#D0fNT(rzLcGvF&hmBF&fg z<_(6<5i}ZS@8S6Zgmfc}vb_JusD~V)(@4y`K2<}|Vaz%t9*y_r$B045x|Wzmn7@&+ zN&P!R(bH?oL!(0&V&)s$T(S<&FYCU$Rf_VS#h}R}Fi#qS&RR8TjIs|oX$e}B)OC{4 z2%OYXvGOq(Iz`Y(u(VZZyr_6jERpdbizKkT7by{RUPYruYNnDL_RdHN@ow?RiiBO9 z9=La=Xrt=f6OLdE>FbrqCd-I%#InAsB4Xu+BPxQ%U}TL)6KjkSGz17~q3P8YTxb%JS5IGCn~@A-q)v^Z2uWql zlax!K5u?`-bXr;%CZX#lXqQYDz6NBhV3_a(jhD(YILlLo;awTz&PRHFI4LpYW&NSW~w4#N16L@a9H!bTF2O^2l46_r91aHXgSZ zi(rI}Q4F0WXpOWhy_bWBTW%{oz9tCTNvd*wLvk-GIqJ0D3MBy^cV3I_tAR0);^A%u zGYo0>J+Cp2K?=EGEbutnM$j6=nx$u!Dm%4?)nI5PK|B3$Nr{t26Wk<0OVw!Mo*n6U zvgGNy%En#`*ngd)34)%tNLE2GcD!7c%y?H?owu8#VYvO96(1Au30%&lnJ+i?vyc*&W%soX zEJB%x-1iK<(UHbKxDRY{eG_l-B~ifU@?H{5B?FZt`dC(Lcw ze_II}XQAvDaAKq{|vw?umW%+c4n>8jw(tvgvqy#7Mn2DM{N1 z2e4#svecVuLP%FqW^high~Ro8W0T&fi0k5O=0*4Upzs3n3U%0dfKVys&=wPs^vruU z+D_0OtSmJ9Tzfekd4<^bBMpWL1&T{Za6xjABl=!Sgvp+3Nu>=yO@Xn4Y`6x0E&LtZ zQ@QH7m>*OIoP+XY3V`tFyhfS?W0kllMg+wMMv?v?FV4aK8r&aN0eR*8T?Iw~L&!B^ msJLcU2h0J_sZ|Ran#4b_p~h924}CWP0000 Date: Wed, 6 Apr 2016 09:24:43 +0200 Subject: [PATCH 429/601] Fix liquid syntax error --- .../_components/media_player.onkyo.markdown | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index 04473cb94de..c7c0f913c1e 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -23,38 +23,39 @@ media_player: ``` A few notes: -- Source selection has no front-end UI, but can be controlled by way of service calls. Select the source string from the following list: -``` - video1 - video2 - video3 - video4 - video5 - video6 - video7 - dvd - bd-dvd - tape1 - tv-tape - tape2 - phono - cd - tv-cd - fm - am - tuner - dlna - internet-radio - usb - network - universal-port - multi-ch - xm - sirius - ``` -- Sample automation and input select -``` +Source selection has no front-end UI, but can be controlled by way of service calls. Select the source string from the following list: + +- video1 +- video2 +- video3 +- video4 +- video5 +- video6 +- video7 +- dvd +- bd-dvd +- tape1 +- tv-tape +- tape2 +- phono +- cd +- tv-cd +- fm +- am +- tuner +- dlna +- internet-radio +- usb +- network +- universal-port +- multi-ch +- xm +- sirius + +Sample automation and input select + +```yaml automation: alias: Receiver Source trigger: @@ -65,7 +66,7 @@ automation: data_template: entity_id: media_player.txnr535_000000000000 source: > - {% if is_state('input_select.receiver_source', 'HTPC') %} + {% raw %}{% if is_state('input_select.receiver_source', 'HTPC') %} pc {% elif is_state('input_select.receiver_source', 'Chromecast') %} aux1 @@ -75,7 +76,7 @@ automation: bd {% elif is_state('input_select.receiver_source', 'Raspberry Pi') %} tv - {% endif %} + {% endif %}{% endraw %} input_select: receiver_source: @@ -87,6 +88,5 @@ input_select: - Bluray - Raspberry Pi initial: None - ``` From 045137071a9aa1bfaccd279c20aa93c675cd7303 Mon Sep 17 00:00:00 2001 From: William Hughes Date: Thu, 7 Apr 2016 10:02:07 +1200 Subject: [PATCH 430/601] Documentation 'mac' option for Orvibo platform of the switch component Documents changes made in balloob/home-assistant#1730 --- source/_components/switch.orvibo.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/switch.orvibo.markdown b/source/_components/switch.orvibo.markdown index b365802102a..a68cf2761e3 100644 --- a/source/_components/switch.orvibo.markdown +++ b/source/_components/switch.orvibo.markdown @@ -20,9 +20,11 @@ To use your Orvibo switch in your installation, add the following to your `confi switch: platform: orvibo host: IP_ADDRESS + mac: MA:CA:DD:RE:SS:00 ``` Configuration variables: - **host** (*Required*): IP address of your switch, eg. 192.168.1.10. +- **mac** (*Optional*): MAC address of the switch, eg "AA:BB:CC:DD:EE:FF". This is required if the switch is connected to a different subnet to the machine running Home Assistant From 8474be607d743176c7f81fdb1595aa7f4c8cad44 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 8 Apr 2016 23:46:05 -0700 Subject: [PATCH 431/601] Release 0.17 --- source/_components/camera.rpi_camera.markdown | 43 ++++++++++++++ source/_components/sensor.nzbget.markdown | 32 +++++++++++ ...asonic-gtfs-and-config-validation.markdown | 56 +++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 source/_components/camera.rpi_camera.markdown create mode 100644 source/_components/sensor.nzbget.markdown create mode 100644 source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown diff --git a/source/_components/camera.rpi_camera.markdown b/source/_components/camera.rpi_camera.markdown new file mode 100644 index 00000000000..44cf348374b --- /dev/null +++ b/source/_components/camera.rpi_camera.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Raspberry Pi Camera" +description: "Instructions how to integrate Raspberry Pi within Home Assistant." +date: 2016-04-08 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Camera +ha_iot_class: "Local Polling" +--- + + +The `rpi` platform allows you to integrate the Raspberry Pi camera into Home Assistant. This component uses the application "raspistill" to store the image from camera. + +```yaml +# Example configuration.yaml entry +camera: + platform: raspberry_camera + name: Raspberry Pi Camera + image_width: 640 + image_height: 480 + image_quality: 7 + image_rotation: 0 + timelapse: 1000 + horizontal_flip: 0 + vertical_flip: 0 + file_path: /tmp/image.jpg +``` + +Configuration variables: + + - **name** (optional): name of the camera + - **image_width** (optional): set the image width (default: 640) + - **image_height** (optional): set the image width (default: 480) + - **image_quality** (optional): set the image quality (from 0 to 100, default: 7) + - **image_rotation** (optional): Set image rotation (0-359, default: 0) + - **horizontal_flip** (optional): Set horizontal flip (0 to disable, 1 to enable, default: 0) + - **vertical_flip** (optional): Set vertical flip (0 to disable, 1 to enable, default: 0) + - **timelapse** (optional): Takes a picture every ms (default: 1000) + - **file_path** (optional): Save the picture in a custom file path (default: camera components folder) diff --git a/source/_components/sensor.nzbget.markdown b/source/_components/sensor.nzbget.markdown new file mode 100644 index 00000000000..359ab33e107 --- /dev/null +++ b/source/_components/sensor.nzbget.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "NZBGet" +description: "Instructions how to integrate NZBGet within Home Assistant." +date: 2016-04-08 19:59 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Polling" +--- + +The `NZBGet` platform will allow you to monitor your downloads with [NZBGet](http://NZBGet.net) from within Home Assistant and setup automation based on the information. + +To use NZBGet with your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: nzbget + base_url: http://192.168.1.18:6789 + username: apiuser + password: apipass + monitored_variables: + - ArticleCacheMB + - DownloadRate + - DownloadPaused + - FreeDiskSpaceMB + - PostPaused + - RemainingSizeMB +``` diff --git a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown new file mode 100644 index 00000000000..5cb3106d8a3 --- /dev/null +++ b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown @@ -0,0 +1,56 @@ +--- +layout: post +title: "0.17: Onkyo, Panasonic, GTFS and config validation" +description: "Home Assistant 0.17 has arrived." +date: 2016-04-08 23:10:00 -0700 +date_formatted: "April 9, 2016" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +--- + +Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we've been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in it's early stages. More common platforms and components have been added but we didn't do everything yet. + +When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We're looking into options to make it more clear - it is a work in progress. + +Another big thing is the addition of GTFS support. You probably don't know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend. + + + + - Config validation ([@balloob], [@jaharkes]) + - Sensor: [GTFS] support (public transit open standard) ([@robbiet480]) + - Camera: [Raspberry PI] support added ([@LucaSoldi]) + - Z-Wave: improved startup reliability ([@srcLurker]) + - Media Player: [Onkyo receiver] now supported ([@danieljkemp]) + - Sensor: [Loop Energy] now supported ([@pavoni]) + - Thermostat: [Z-Wave] now supported ([@coteyr], [@turbokongen], [@luxus]) + - Sensor: [NZBGet] now supported ([@justyns]) + - Media Player: [Panasonic Viera TV] now supported ([@florianholzapfel]) + - Thermostats: Use whole degrees if user uses Fahrenheit ([@JshWright]) + - Frontend: more material love ([@balloob]) + +[@balloob]: https://github.com/balloob/ +[@coteyr]: https://github.com/coteyr/ +[@danieljkemp]: https://github.com/danieljkemp/ +[@florianholzapfel]: https://github.com/florianholzapfel/ +[@jaharkes]: https://github.com/jaharkes/ +[@JshWright]: https://github.com/JshWright/ +[@justyns]: https://github.com/justyns/ +[@LucaSoldi]: https://github.com/LucaSoldi/ +[@luxus]: https://github.com/luxus/ +[@pavoni]: https://github.com/pavoni/ +[@robbiet480]: https://github.com/robbiet480/ +[@srcLurker]: https://github.com/srcLurker/ +[@turbokongen]: https://github.com/turbokongen/ +[GTFS]: /components/sensor.gtfs/ +[Loop Energy]: /components/sensor.loop_energy/ +[NZBGet]: /components/sensor.nzbget/ +[Onkyo receiver]: /components/media_player.onkyo/ +[Panasonic Viera TV]: /components/media_player.panasonic_viera/ +[Raspberry PI]: /components/camera.rpi_camera/ +[Z-Wave]: /components/thermostat.zwave/ + +### Breaking changes + +As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to `execute_service` in their script configs. This should be `service`. From 08f4293ed7ea9beede1a3e923f1b307af2d96915 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 8 Apr 2016 23:52:47 -0700 Subject: [PATCH 432/601] Update 2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown --- ...16-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown index 5cb3106d8a3..3b5dfa4c65f 100644 --- a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown +++ b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown @@ -10,7 +10,7 @@ comments: true categories: Release-Notes --- -Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we've been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in it's early stages. More common platforms and components have been added but we didn't do everything yet. +Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we've been hard at work to introduce config validation! Especially huge thanks to [@jaharkes] for his hard work on this. Config validation is still in it's early stages. More common platforms and components have been added but we didn't do everything yet. When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We're looking into options to make it more clear - it is a work in progress. From 83a743f8b5ac7dd43d3ca3ac1a7a81e882ef9dc0 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 10:33:34 +0200 Subject: [PATCH 433/601] Add more details (fix for #368) --- source/getting-started/autostart.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/autostart.markdown b/source/getting-started/autostart.markdown index 77b9cdc1e6e..72e76957e59 100644 --- a/source/getting-started/autostart.markdown +++ b/source/getting-started/autostart.markdown @@ -51,7 +51,7 @@ $ ps -p 1 -o comm= If the preceding command returns the string `systemd`, you are likely using `systemd`. -If you want Home Assistant to be launched automatically, an extra step is needed to setup `systemd`. You need a service file to control Home Assistant with `systemd`. If you are using a Raspberry Pi then replace the `[your user]` with `pi` otherwise use your user you want to run Home Assistant. +If you want Home Assistant to be launched automatically, an extra step is needed to setup `systemd`. You need a service file to control Home Assistant with `systemd`. If you are using a Raspberry Pi with Raspbian then replace the `[your user]` with `pi` otherwise use your user you want to run Home Assistant. `ExecStart` contains the path to `hass` and this may vary. Check with `whereis hass` for the location. ```bash $ su -c 'cat <> /lib/systemd/system/home-assistant@[your user].service From 04581ecde4c7e3dddd3f964ddda2540b6f89e189 Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Sat, 9 Apr 2016 10:56:46 +0100 Subject: [PATCH 434/601] Add info about how to get the required keys (#379) --- .../_components/sensor.loop_energy.markdown | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/source/_components/sensor.loop_energy.markdown b/source/_components/sensor.loop_energy.markdown index 0d6aa9c0c11..533215c7f40 100644 --- a/source/_components/sensor.loop_energy.markdown +++ b/source/_components/sensor.loop_energy.markdown @@ -14,22 +14,48 @@ ha_category: Sensor Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. -To enable the Loop Energy sensor, add the following lines to your `configuration.yaml`: +To use this sensor you need the the client serial number and secret keys for your devices. + +The library used to get the data isn't officially supported and the only way to get the keys is to log into loop energy's website and type a command into your browser console. + +To do this log into [Loop Energy](https://www.your-loop.com/). Once you're logged in you should be able see see your live readings on the webpage. + +You can then open your browser's console window, how you do this varies by browser but in Chrome you click on `More Tools / Developer Tools' and click on the console window. You then type:- + +`Drupal.settings.navetas_realtime.` + +This should show something like +```` +client_ip: "127.0.0.1" +gas_secret: "GAS_SECRET" +gas_serial: "GAS_SERIAL" +host: "www.your-loop.com" +... +secret: "ELECTRICAL_SECRET" +serial: "ELECTRICAL_SERIAL" +```` + +The serial and secret tokens are the ones you need. If you just have an electricity monitor - then you won't see the gas keys. + +Now you have the keys, add the following lines to your `configuration.yaml`, replacing the `SERIAL` and `SECRET` keys with the ones you found in the console: ```yaml # Example configuration.yaml entry sensor: platform: loopenergy - electricity_serial: ELECRITCAL_SERIAL - electricity_secret: ELECTRICAL_OFFSET + electricity_serial: ELECTRICAL_SERIAL + electricity_secret: ELECTRICAL_SECRET gas_serial: GAS_SERIAL gas_secret: GAS_SECRET ``` Configuration variables: -- **electricity_serial** (*Required*): Serial of your electricity sensor -- **electricity_secret** (*Required*): Secret for your electricity Sensor -- **gas_serial** (*Required*): Serial for your gas sensor. -- **gas_secret** (*Required*): Secret for your gas sensor. +- **electricity_serial** (*Required*): Serial number of your electricity sensor +- **electricity_secret** (*Required*): Secret key for your electricity sensor +- **gas_serial** (*Required*): Serial number for your gas sensor. +- **gas_secret** (*Required*): Secret key for your gas sensor. +The electricity readings are updated every 10 seconds and the gas readings every 15 minutes. + +The gas readings are experimental and not all gas meters are properly supported - so if the data you see doesn't agree with the readings you see via loop energy please report an issue. From 28a915a01531fb23cb32d35ea5b2d2c540e28ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Sat, 9 Apr 2016 17:51:37 +0200 Subject: [PATCH 435/601] Update input_slider.markdown (#380) --- source/_components/input_slider.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/input_slider.markdown b/source/_components/input_slider.markdown index 5fd9d136c42..ae9d1bf77d6 100644 --- a/source/_components/input_slider.markdown +++ b/source/_components/input_slider.markdown @@ -21,6 +21,7 @@ input_slider: initial: 30 min: -20 max: 35 + step: 1 ``` Configuration variables: @@ -30,4 +31,5 @@ Configuration variables: - **initial** (*Optional*): Initial value when Home Assistant starts. - **min** (*Optional*): Minimum value for the slider. - **max** (*Optional*): Maximum value for the slider. +- **step** (*Optional*): Step value for the slider. From fca2c46dd456d9252cb0b12c84a86c20d9d6c438 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 15:43:46 +0200 Subject: [PATCH 436/601] Remove trailing whitespaces --- source/getting-started/configuration.markdown | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 787f20885b1..887a0421be1 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -11,9 +11,7 @@ footer: true Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X and Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`. -Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is. -This file contains YAML code, which is explained briefly below. -[An example configuration file is located here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). +Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is. This file contains YAML code, which is explained briefly below. [An example configuration file is located here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example). When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the user interface. @@ -28,8 +26,8 @@ If you run into trouble while configuring Home Assistant, have a look at [the co Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. -For each component that you want to use in Home Assistant, you add code in your `configuraton.yaml` file to specify its settings. -Example, the following code specifies that you want to use the [notify component](/components/notify) with the [pushbullet platform](/components/notify.pushbullet). +For each component that you want to use in Home Assistant, you add code in your `configuraton.yaml` file to specify its settings. +The following example entry specifies that you want to use the [notify component](/components/notify) with the [pushbullet platform](/components/notify.pushbullet). ```yaml @@ -42,15 +40,14 @@ notify: - A **component** provides the core logic for some functionality (like `notify` provides sending notifications). - A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). -The basics of YAML syntax are block collections and mappings containing key-value pairs. -Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. +The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. -Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. +Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. Lines that start with **#** are comments and are ignored by the system. -The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. +The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. The other properties (like name) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. ```yaml @@ -66,8 +63,7 @@ input_select: initial: 0 ``` -The following example shows nesting a collection of mappings in a mapping. -In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). +The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). ```yaml sensor: From b2d510662451b1cecb43165b23cfb031fbbde679 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 15:53:08 +0200 Subject: [PATCH 437/601] Add SSE and link to Let's Encrypt blog post --- source/_components/http.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index e66976ca8d5..3490451a05d 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -31,10 +31,12 @@ Configuration variables: - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. -On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. +The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post gives you details about the encryption of your traffic using free certificates from [Let's Encrypt](https://letsencrypt.org/). + +On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/) available. The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP. -To use those kind of sensors in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. +To use those kind of [sensors](/components/sensor.http/) or [binary sensors](components/binary_sensor.http/) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent to the endpoint of the device and must be **POST**. From b6f2cc301dd4278cdcbcf4da0414fbe017bace4a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 17:55:18 +0200 Subject: [PATCH 438/601] Remove trailing whitespaces --- source/developers/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/index.markdown b/source/developers/index.markdown index 583e5c161a2..926accf982e 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -19,7 +19,7 @@ Home Assistant is open-source and MIT licensed. The source can be found here: ### {% linkable_title Starting development %} -You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to get setup. +You will need to set up a development environment if you want to start developing a new feature or component for Home Assistant. Please follow these steps to get setup. Visit the [the Home Assistant repository](https://github.com/balloob/home-assistant) first and click fork in the top right. We suggest that you setup a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` before running the setup script. From 44c76069e37a0c1454eec5cbca63257cca7fbb15 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 18:11:20 +0200 Subject: [PATCH 439/601] Update link --- source/getting-started/configuration.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 887a0421be1..35e597ae540 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -106,9 +106,7 @@ http: api_password: YOUR_PASSWORD ``` -_See the [HTTP component documentation][http] for more options like HTTPS encryption._ - -[http]: /components/http/ +See the [HTTP component documentation](/components/http/) for more options like HTTPS encryption. ### {% linkable_title Setting up your phone or tablet %} From 4d565f53ef719389df48717ac00c8a1169b8424f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 18:11:35 +0200 Subject: [PATCH 440/601] Add inital note for venv (fixes #378) --- source/getting-started/index.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 12e7ccb7b8d..b7974af6749 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -22,6 +22,10 @@ footer: true

    Installing and running Home Assistant on your local machine is easy. Make sure you have [Python 3.4 or higher](https://www.python.org/downloads/) installed and execute the following code in a console: +

    +It's highly recommended to use a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` to keep things separated. A virtual environment can be created by exceuting the following command: `pyvenv /path/where/you/home-assistant/` (or on some systems `pyvenv-3.4`). Then change to that the created directory and go the next step. +

    + ```bash $ pip3 install homeassistant $ hass --open-ui From a6e93edc7155a864f3f708608f77cca33f4695c3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 23:07:04 +0200 Subject: [PATCH 441/601] Add UE40F6500 (fixes #382) --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 0b39452b466..698d11e0560 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -38,6 +38,7 @@ Currently known supported models: - D8000 - ES5500 - ES6800 +- UE40F6500 If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/balloob/home-assistant.io). The two letters at the beginning of the model number represent the region, UE is Europe, UN is North America and UA is Asia & Australia. The two numbers following that represent the screen size. If you add your model remember to remove these before adding them to the list. From d879665cdfde21a5102c690bf79b5c44b2a7b797 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 23:15:40 +0200 Subject: [PATCH 442/601] Add forum for feature requests (fixes #381) --- source/help/index.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/help/index.markdown b/source/help/index.markdown index 740f22d3ec3..c89f7e6d824 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -20,10 +20,11 @@ There are various ways to get in touch with the Home Assistant community. It doe ### {% linkable_title Bugs, Feature requests, and alike %} -Have you found an issue in your Home Assistant installation? Please report it in one of the issue trackers. Reporting it there makes it easy to track and ensures that it gets fixed. +Have you found an issue in your Home Assistant installation? Please report it. Reporting it makes it easy to track and ensures that it gets fixed. - [Issue tracker Home Assistant](https://github.com/balloob/home-assistant/issues) - [Issue tracker home-assistant.io](https://github.com/balloob/home-assistant.io/issues) (Website and documentation) +- [Feature requests Home Assistant](https://community.home-assistant.io/c/feature-requests) ### {% linkable_title Roadmap %} From d31013597f83e2ca9a710a285bca18a695b46005 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 23:18:45 +0200 Subject: [PATCH 443/601] Fix entry --- source/_components/media_player.samsungtv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 698d11e0560..bcd63bcda47 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -38,7 +38,7 @@ Currently known supported models: - D8000 - ES5500 - ES6800 -- UE40F6500 +- F6500 If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/balloob/home-assistant.io). The two letters at the beginning of the model number represent the region, UE is Europe, UN is North America and UA is Asia & Australia. The two numbers following that represent the screen size. If you add your model remember to remove these before adding them to the list. From b6fdc6f46fd323ea929bfa1d2731ebc78245b941 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Apr 2016 23:27:18 +0200 Subject: [PATCH 444/601] Add @justyns, @JshWright, @coteyr, and @danieljkemp --- source/developers/credits.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index f6f63365775..8ef5cde5a83 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -35,8 +35,10 @@ This page contains a list of people who have contributed in one way or another t - [Charles Spirakis](https://github.com/srcLurker) - [Chris Mulder](https://github.com/chrisvis) - [Christian Braedstrup](https://github.com/LinuxChristian) +- [coteyr](https://github.com/coteyr/) - [Dan Cinnamon](https://github.com/Cinntax) - [Daniel Iversen](https://github.com/danielhiversen) +- [Daniel J. Kemp](https://github.com/danieljkemp/) - [Dan Smith](https://github.com/kk7ds) - [Daren Lord](https://github.com/Xorso) - [Dean Galvin](https://github.com/FreekingDean) @@ -70,8 +72,10 @@ This page contains a list of people who have contributed in one way or another t - [joopert](https://github.com/joopert) - [Joseph Hughes](https://github.com/joshughes) - [Joseph Piron](https://github.com/eagleamon) +- [Josh Wright](https://github.com/JshWright/) - [Julien Danjou](https://github.com/jd) - [Justin Moy](https://github.com/justincmoy) +- [Justyn Shull](https://github.com/justyns/) - [Karen Goode](https://github.com/kfgoode) - [kennedyshead](https://github.com/kennedyshead) - [kixam](https://github.com/kixam) From 9cbd2d11415e7f3cec8e7d08cb192d6e4aac466f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 9 Apr 2016 15:49:40 -0700 Subject: [PATCH 445/601] pyvenv -> python3 -m venv --- source/getting-started/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index b7974af6749..b161bf6d241 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -23,7 +23,7 @@ footer: true Installing and running Home Assistant on your local machine is easy. Make sure you have [Python 3.4 or higher](https://www.python.org/downloads/) installed and execute the following code in a console:

    -It's highly recommended to use a [virtual environment](https://docs.python.org/3.4/library/venv.html) aka `venv` to keep things separated. A virtual environment can be created by exceuting the following command: `pyvenv /path/where/you/home-assistant/` (or on some systems `pyvenv-3.4`). Then change to that the created directory and go the next step. +It's highly recommended to use a [virtual environment](https://docs.python.org/3.4/library/venv.html) to keep things separated. A virtual environment can be created by exceuting the following command: `python3 -m venv /path/where/you/home-assistant/`. Then change to the created directory and go the next step.

    ```bash From 383f58daea1b3838e745e43410aa3503f7b2e49d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 9 Apr 2016 16:33:08 -0700 Subject: [PATCH 446/601] Update demo --- source/demo/frontend.html | 2572 +++++++++++++------------ source/demo/index.html | 4 +- source/demo/webcomponents-lite.min.js | 6 +- 3 files changed, 1324 insertions(+), 1258 deletions(-) diff --git a/source/demo/frontend.html b/source/demo/frontend.html index aa9efcef31f..918f027e716 100644 --- a/source/demo/frontend.html +++ b/source/demo/frontend.html @@ -1,585 +1,493 @@ - \ No newline at end of file +case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'
    Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),o.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)},this))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document)-
    \ No newline at end of file diff --git a/source/demo/index.html b/source/demo/index.html index 1120506038c..92fec6ba1b0 100644 --- a/source/demo/index.html +++ b/source/demo/index.html @@ -31,14 +31,59 @@ left: 0; right: 0; bottom: 0; - margin-bottom: 123px; + margin-bottom: 97px; + font-family: Roboto, sans-serif; + font-size: 0pt; + transition: font-size 2s; + } + + #ha-init-skeleton paper-spinner { + height: 28px; + } + + #ha-init-skeleton a { + color: #03A9F4; + text-decoration: none; + font-weight: bold; + } + + #ha-init-skeleton.error { + font-size: 16px; + } + + #ha-init-skeleton.error img, + #ha-init-skeleton.error paper-spinner { + display: none; } + + -
    - - +
    + + + Home Assistant had trouble
    connecting to the server.

    TRY AGAIN +
    +