diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png
index c2824cc432c..e932cb09a99 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png
index 77cd829a4b5..021685f4b0a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png
index e06aa50ca29..9d3291e8e59 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
index d2bc4fc75a8..ef55acc7ca4 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png
index 96fe7bb0242..091cc054a2a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png
index 22295074029..f7c23cd5ba1 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
index 15db44d4e66..1f6aebd73ae 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png
index e399bf34cb9..e6ab8aa55a3 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png
index 409d89d29a3..8dcf0c5bfcc 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png
index 3fe284845fa..6898116a3b7 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
index 73b371abbca..5e151d69c8c 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
index 72322171bd5..e89fc5c6afc 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
index 626444a66a7..ae47e9018b3 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png
index 27851dfdf36..63692be0b75 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png
index 3658453cfc1..6433b4d476a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
index 138ebb35ba8..206be887e0a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/background.png b/.themes/classic/source/assets/jwplayer/glow/display/background.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/background.png and b/.themes/classic/source/assets/jwplayer/glow/display/background.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png
index a3819c1ef19..10ae39736ad 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png
index e0408bbda5e..8e078ae4387 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png
index cb384278722..269e4311bcb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/dock/button.png b/.themes/classic/source/assets/jwplayer/glow/dock/button.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/dock/button.png and b/.themes/classic/source/assets/jwplayer/glow/dock/button.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png
index 812592c3ce5..825911836fb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png
index 549f3721d6b..cbb7e34d85f 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png
index 048cc623be9..61c6dfbbba0 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png
index 65c463a0c04..4d6dae6290f 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png
index 121778affdc..2b455a6ff85 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png
index b4059754baf..dabce156c23 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png
index eae1d4e7559..b659a20c3b5 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png
index 695ec949f86..2435d3777eb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png differ
diff --git a/.themes/classic/source/favicon.png b/.themes/classic/source/favicon.png
index 0f250673059..2ad3a59140c 100644
Binary files a/.themes/classic/source/favicon.png and b/.themes/classic/source/favicon.png differ
diff --git a/.themes/classic/source/images/bird_32_gray.png b/.themes/classic/source/images/bird_32_gray.png
index 574f210aec4..cf2cb22d97d 100644
Binary files a/.themes/classic/source/images/bird_32_gray.png and b/.themes/classic/source/images/bird_32_gray.png differ
diff --git a/.themes/classic/source/images/bird_32_gray_fail.png b/.themes/classic/source/images/bird_32_gray_fail.png
index 8337d10317a..d6259651482 100644
Binary files a/.themes/classic/source/images/bird_32_gray_fail.png and b/.themes/classic/source/images/bird_32_gray_fail.png differ
diff --git a/.themes/classic/source/images/code_bg.png b/.themes/classic/source/images/code_bg.png
index a57bab56a1b..ebd3acfa9b7 100644
Binary files a/.themes/classic/source/images/code_bg.png and b/.themes/classic/source/images/code_bg.png differ
diff --git a/.themes/classic/source/images/dotted-border.png b/.themes/classic/source/images/dotted-border.png
index 57f99071a5a..d19b60c9f6b 100644
Binary files a/.themes/classic/source/images/dotted-border.png and b/.themes/classic/source/images/dotted-border.png differ
diff --git a/.themes/classic/source/images/email.png b/.themes/classic/source/images/email.png
index e55473fef7b..9100c8bb194 100644
Binary files a/.themes/classic/source/images/email.png and b/.themes/classic/source/images/email.png differ
diff --git a/.themes/classic/source/images/line-tile.png b/.themes/classic/source/images/line-tile.png
index f67ee19fdc9..9247c3b1f5c 100644
Binary files a/.themes/classic/source/images/line-tile.png and b/.themes/classic/source/images/line-tile.png differ
diff --git a/.themes/classic/source/images/noise.png b/.themes/classic/source/images/noise.png
index 432e05bfd1a..46cdf03fdf2 100644
Binary files a/.themes/classic/source/images/noise.png and b/.themes/classic/source/images/noise.png differ
diff --git a/.themes/classic/source/images/rss.png b/.themes/classic/source/images/rss.png
index 151ae718ebf..037ce65db15 100644
Binary files a/.themes/classic/source/images/rss.png and b/.themes/classic/source/images/rss.png differ
diff --git a/.themes/classic/source/images/search.png b/.themes/classic/source/images/search.png
index 1220ff4e261..d0e1b1908bb 100644
Binary files a/.themes/classic/source/images/search.png and b/.themes/classic/source/images/search.png differ
diff --git a/_config.yml b/_config.yml
index 3f8193a9a79..868c6051c4d 100644
--- a/_config.yml
+++ b/_config.yml
@@ -139,12 +139,12 @@ social:
# Home Assistant release details
current_major_version: 0
-current_minor_version: 58
-current_patch_version: 1
-date_released: 2017-11-21
+current_minor_version: 60
+current_patch_version: 0
+date_released: 2017-12-17
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
# Major release:
-patch_version_notes: "#release-0581---november-21"
+patch_version_notes: "#"
# Minor release (Example #release-0431---april-25):
diff --git a/credits_generator/README.md b/credits_generator/README.md
index 03c187d2d8a..ee89f678174 100644
--- a/credits_generator/README.md
+++ b/credits_generator/README.md
@@ -3,11 +3,17 @@ credits_generator
This tool can be used to update the [Home Assistant's Credits page](https://home-assistant.io/developers/credits/).
+Setup
+-----
+
```bash
$ cd credits_generator
$ npm install
```
+Usage
+-----
+
Set your personal GitHub access token as environmental variable.
```bash
@@ -17,6 +23,7 @@ $ export GITHUB_TOKEN=
+ If you are wanting to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/).
+
+ Use [Home Assistant Cloud](/components/cloud/) to integrate with Alexa without any effort.
+
-If you are using Python 3.6, you might need to replace the 34m with 36m in the _gi.*.so filename in the gi folder.
-
Any specific levels for triggers needs to be configured on the device.
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
Make sure that the URL exactly matches your endpoint or resource.
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+ In the example above, `devicename` refers to the detected name of the device. For instance, `my_iphone`.
+
If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled.
diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown
index 22767d9907a..60c14a1f873 100644
--- a/source/_components/device_tracker.snmp.markdown
+++ b/source/_components/device_tracker.snmp.markdown
@@ -33,6 +33,7 @@ The following OID examples pull the current MAC Address table from a router. Thi
| TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` |
| EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` |
| Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` |
+| DD-WRT | unknown RouterOS version/model | `1.3.6.1.2.1.4.22.1.2` |
To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown
index 004d92679d7..5e25b7df5c3 100644
--- a/source/_components/device_tracker.unifi.markdown
+++ b/source/_components/device_tracker.unifi.markdown
@@ -33,7 +33,7 @@ Configuration variables:
- **password** (*Required*): The password for your given admin account.
- **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard).
- **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem".
-- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats.
+- **detection_time** (*Optional*): The Unifi component will only return devices that have been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/_components/device_tracker.unifi_direct.markdown b/source/_components/device_tracker.unifi_direct.markdown
new file mode 100644
index 00000000000..d00d2259646
--- /dev/null
+++ b/source/_components/device_tracker.unifi_direct.markdown
@@ -0,0 +1,45 @@
+---
+layout: page
+title: "Ubiquiti Unifi direct AP"
+description: "Instructions how to use a Unifi WAP as a device tracker."
+date: 2017-11-17 14:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ubiquiti.png
+ha_category: Presence Detection
+ha_release: 0.59
+---
+
+
+This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](https://home-assistant.io/components/device_tracker.unifi/) because it doesn't require the Unifi controller software.
+
+To use this device tracker in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: unifi_direct
+ host: YOUR_AP_IP_ADDRESS
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+host:
+ description: The hostname or IP address of your Unifi AP.
+ required: true
+ type: string
+username:
+ description: The username used to connect to your Unifi AP.
+ required: true
+ type: string
+password:
+ description: The password used to connect to your Unifi AP.
+ required: true
+ type: string
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
+
diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown
index 62f9c0c1b34..18ac58261ce 100644
--- a/source/_components/discovery.markdown
+++ b/source/_components/discovery.markdown
@@ -35,6 +35,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi
* [SABnzbd downloader](https://home-assistant.io/components/sensor.sabnzbd/)
* [Samsung TVs](https://home-assistant.io/components/media_player.samsungtv/)
* [Sonos speakers](https://home-assistant.io/components/media_player.sonos/)
+ * [Telldus Live](https://home-assistant.io/components/tellduslive/)
* [Yamaha media player](https://home-assistant.io/components/media_player.yamaha/)
* [Yeelight Sunflower bulb](https://home-assistant.io/components/light.yeelightsunflower/)
@@ -77,6 +78,7 @@ Valid values for ignore are:
* `sabnzbd`: SABnzbd downloader
* `samsung_tv`: Samsung TVs
* `sonos`: Sonos speakers
+ * `tellduslive`: Telldus Live
* `yamaha`: Yamaha media player
* `yeelight`: Yeelight Sunflower bulb
@@ -94,7 +96,9 @@ If you are on Windows and you're using Python 3.5, download the [Netifaces](http
-If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
+If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, the discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
+
+For DSM/Synology, install via debian-chroot [see this forum post](https://community.home-assistant.io/t/error-starting-home-assistant-on-synology-for-first-time/917/15).
**Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**.
diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown
index fe8561afa32..9c48b6b4243 100644
--- a/source/_components/camera.onvif.markdown
+++ b/source/_components/camera.onvif.markdown
@@ -13,9 +13,9 @@ ha_release: 0.47
---
-The `ONVIF` platform allows you to use an ONVIF camera in Home Assistant. This requires FFmpeg component to be already configured.
+The `onvif` camera platform allows you to use an ONVIF camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured.
-To enable your ONVIF in your installation, add the following to your `configuration.yaml` file:
+To enable your ONVIF camera in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/canary.markdown b/source/_components/canary.markdown
new file mode 100644
index 00000000000..425055f48a4
--- /dev/null
+++ b/source/_components/canary.markdown
@@ -0,0 +1,53 @@
+---
+layout: page
+title: "Canary"
+description: "Instructions on how to integrate your Canary devices into Home Assistant."
+date: 2017-12-07 22:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: canary.png
+ha_category: Hub
+ha_release: "0.60"
+ha_iot_class: "Cloud Polling"
+---
+
+The `canary` component allows you to integrate your [Canary](https://canary.is) devices in Home Assistant.
+
+You will need your Canary login information (username, usually your email address, and password) to use this module.
+
+To set it up, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+canary:
+ username: you@example.com
+ password: secret
+```
+
+{% configuration %}
+ username:
+ description: The username for accessing your Canary account.
+ required: true
+ type: string
+ password:
+ description: The password for accessing your Canary account.
+ required: true
+ type: string
+ timeout:
+ description: Timeout to wait for connections.
+ required: false
+ type: int
+ default: 10
+{% endconfiguration %}
+
+
+
+Once loaded, your front end will have the following components:
+
+* A camera image triggered by motion for each camera.
+* An alarm control panel for each location.
+* A sensor per camera that reports temperature.
+* A sensor per camera that reports humidity.
+* A sensor per camera that reports air quality.
diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown
index e477044c300..180f67f04e7 100644
--- a/source/_components/climate.generic_thermostat.markdown
+++ b/source/_components/climate.generic_thermostat.markdown
@@ -32,12 +32,13 @@ Configuration variables:
- **target_sensor** (*Required*): `entity_id` for a temperature sensor, target_sensor.state must be temperature.
- **min_temp** (*Optional*): Set minimum set point available (default: 7)
- **max_temp** (*Optional*): Set maximum set point available (default: 35)
-- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup.
+- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59 it will retain the target temperature set before restart if this variable is not configured.
- **ac_mode** (*Optional*): Set the switch specified in the *heater* option to be treated as a cooling device instead of a heating device.
- **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in it's current state prior to being switched either off or on.
- **cold_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5.
- **hot_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5.
- **keep_alive** (*Optional*): Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while.
+- **initial_operation_mode** (*Optional*): Set the initial operation mode. Valid values are `off` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state.
A full configuration example looks like the one below. `min_cycle_duration` and `keep_alive` must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`.
@@ -57,4 +58,5 @@ climate:
seconds: 5
keep_alive:
minutes: 3
+ initial_operation_mode: "off"
```
diff --git a/source/_components/climate.hive.markdown b/source/_components/climate.hive.markdown
new file mode 100644
index 00000000000..a6c40b14623
--- /dev/null
+++ b/source/_components/climate.hive.markdown
@@ -0,0 +1,29 @@
+---
+layout: page
+title: "Hive Thermostat"
+description: "Instructions on how to integrate Hive thermostat(s) with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Climate
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' climate component integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**.
+
+The Hive climate component supports the following Hive products:
+- **Hive Active Heating**
+- **Hive Multizone**
+- **Hot water control**
+
+
+
-A physical Hue Bridge is required for the lights to function - this virtual bridge will not replace a physical bridge. +A physical Hue Bridge is required for Philips Hue lights to function - this virtual bridge will not replace a physical bridge. Instead, it allows Home Assistant to represent non-Philips Hue devices to Amazon Echo as Philips Hue devices, which Amazon Echo can control with built-in support.
diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 7acf1291e45..218a7c0da40 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -13,7 +13,7 @@ ha_version: 0.57 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2. The Air Purifier Pro isn't supported right now. +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S andd Air Purifier Pro. Currently, the supported features are diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index 40274f80623..92c0e8d8dd4 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -23,7 +23,7 @@ frontend: description: "Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " required: false type: string - default: es5 + default: auto themes: description: Allow to define different themes. See below for further details. required: false @@ -39,7 +39,11 @@ frontend: required: true type: [list, string] extra_html_url: - description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load." + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `latest` javascript mode." + required: false + type: list + extra_html_url_es5: + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `es5` javascript mode." required: false type: list development_repo: diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index aa28a32ae6d..95aee7b7974 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -13,14 +13,15 @@ featured: true ha_release: 0.56 --- -# Google Assistant Docs +The `google_assistant` component allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device. + The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
To use Google Assistant your Home Assistant configuration has to be externally accessible, with a hostname and SSL certificate. If you haven't already configured that you should do so before continuing.
-### {% linkable_title Configuration %} +To enable this, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -36,18 +37,15 @@ google_assistant: - group ``` -*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: +Configuration variables: -`cat /dev/urandom|fold -w 120|head -n 1|base64 -w 0|tr -dc '0-9A-Za-z'|cut -c -80` - -*Configuration Variables:* -* *expose_by_default* (Optional): Expose devices in all supported domains by default. -* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) -* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. -* *access_token* (Required): Another different long random URL safe string. -* *agent_user_id* (Optional): A string to identify the user, e.g., email address. If not provided, the component will generate one. -* *api_key* (Optional): An API Key generated for the project from Google Console which allows you to update devices without unlinking and relinking an account (see setup below). If not provided then the request_sync service is not exposed. -* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include: +- **expose_by_default** (*Optional*): Expose devices in all supported domains by default. +- **project_id** (*Required*): Project ID from the Google Developer console (looks like `words-2ab12`) +- **client_id** (*Required*): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. +- **access_token** (*Required*): Another different long random URL safe string. +- **agent_user_id** (*Optional*): A string to identify the user, e.g., email address. If not provided, the component will generate one. +- **api_key** (*Optional*): An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see setup below). If not provided then the request_sync service is not exposed. +- **exposed_domains** (*Optional*): An array of Home Assistant domains to expose to Google Assistant. Options include: - `switch` - `light` - `cover` @@ -56,6 +54,16 @@ google_assistant: - `fan` - `scene` - `script` + - `climate` + +It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: + +```bash +$ cat /dev/urandom | fold -w 120 | head -n 1 | base64 -w 0 | tr -dc '0-9A-Za-z' | cut -c -80 +``` + +If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. + You can also customize your devices similar to other components by adding keys to entities: @@ -74,11 +82,12 @@ homeassistant: google_assistant_type: light ``` -*Entity Customization Keys:* -* *google_assistant*: True exposes entity, false will hide it -* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. -* *google_assistant_type*: Can be used to override the domain/type of an entity. For example a switch can be treated as a light -* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. +Entity Customization Keys: + +- **google_assistant**: True exposes entity, false will hide it. +- **google_assistant_name**: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. +- **google_assistant_type**: Can be used to override the domain/type of an entity. For example a switch can be treated as a light +- **aliases**: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. ### {% linkable_title Setup %} @@ -111,15 +120,16 @@ homeassistant: 2. Go to Build under the Actions SDK box 3. Copy the command that looks like: `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` -4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions`). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions` if you're running on Linux). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. 5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. 6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. 1. Grant type: `Implicit` - 2. Client ID: Should be the same as `client_id` from your hass config above + 2. Client ID: The `client_id` from your Home Assistant configuration above 3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth` 4. Configure your client. Add scopes for `email` and `name` 5. Testing instructions: doesn't matter since you won't submit this app 7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window. +8. If you haven't already added the configuration to `configuration.yaml` and restarted Home Assistant, you'll be unable to continue until you have. 8. Open the Google Assistant app and go into `Settings > Home Control` 9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices. 10. If you want to allow other houshold users to control the devices: @@ -127,10 +137,17 @@ homeassistant: 2. Under the gear icon, click `Permissions` 3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role 4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7. -11. If you want to use the request_sync service in Home Assistant, then Enable Homegraph API for your project: - 1. Go to https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview +11. If you want to use the `google_assistant.request_sync` service in Home Assistant, then enable Homegraph API for your project: + 1. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) 2. Select your project and click Enable Homegraph API 3. Go to Credentials and select API Key from Create Credentials 4. Note down the generated API Key and use this in the configuration *Note:* The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. + +*Note:* The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [developer console](https://console.actions.google.com). Resolve this by: + 1. Removing your project on the [developer console](https://console.actions.google.com). + 2. Add a new project in the [cloud console](https://console.cloud.google.com). Here you get a new project_id. + 3. Enable Homegraph API to the new project. + 4. Generete a new API key. + 5. Again create a new project in the [developer console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this they share the same project_id. diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown new file mode 100644 index 00000000000..7c3d47a3c9f --- /dev/null +++ b/source/_components/hive.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Hive" +description: "Instructions on how to integrate Hive devices with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Hub +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +This Hive component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating. + +This component uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant. + +To add your Hive devices into your Home Assistant installation, using the default scan_interval, add the following to your 'configuration.yaml' file: + +```yaml +# Example configuration.yaml entry +hive: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: Your username from [https://my.hivehome.com](https://my.hivehome.com). + required: true + type: string +password: + description: Your password from [https://my.hivehome.com](https://my.hivehome.com). + required: true + type: string +scan_interval: + description: The time in minutes between Hive API calls + required: false + type: int + default: 2 +{% endconfiguration %} + + +The Hive Home Assistant platform currently supports the following Hive devices: + +- Hive Active Heating (including hot water and Hive Multizone) +- Hive Active Light Dimmable +- Hive Active Light Cool to Warm White +- Hive Active Plug +- Hive Window or Door Sensor +- Hive Motion Sensor diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 93cf903eb44..73287f74209 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -28,58 +28,69 @@ To set up the component, add the following information to your `configuration.ya ```yaml homematic: - hosts: + interfaces: wireless: - ip: 127.0.0.1 + host: 127.0.0.1 ``` Configuration variables (global): -- **hosts** (*Required*): Configuration for each host to integrate into Home Assistant. +- **interfaces** (*Required*): Configuration for each XML-RPC interface to integrate into Home Assistant. +- **hosts** (*Optional*): Configuration for each Hub (CCU/Homegear) to integrate into Home Assistant. - **local_ip** (*Optional*): IP of device running Home Assistant. Override auto-detected value for exotic network setups. - **local_port** (*Optional*): Port for connection with Home Assistant. By default it is randomly assigned. -Configuration variables (host): +Configuration variables (interface): -- **ip** (*Required*): IP address of CCU/Homegear device. +- **host** (*Required*): IP address or Hostname of CCU/Homegear device or Hass.io add-on. - **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292. - **callback_ip** (*Optional*): Set this, if Home Assistant is reachable under a different IP from the CCU (NAT, Docker etc.). - **callback_port** (*Optional*): Set this, if Home Assistant is reachable under a different port from the CCU (NAT, Docker etc.). - **resolvenames** (*Optional*): [`metadata`, `json`, `xml`] Try to fetch device names. Defaults to `false` if not specified. - **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. - **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. -- **primary** (*Optional*): Set to `true` when using multiple hosts and this host should provide the services and variables. -- **variables** (*Optional*): Set to `true` if you want to use CCU2/Homegear variables. Should only be enabled for the primary host. When using a CCU credentials are required. - **path** (*Optional*): Set to `/groups` when using port 9292. +Configuration variables (host): + +- **host** (*Required*): IP address of CCU/Homegear device. +- **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. +- **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. + #### Example configuration with multiple protocols and some other options set: ```yaml homematic: - hosts: + interfaces: rf: - ip: 127.0.0.1 + host: 127.0.0.1 resolvenames: json username: Admin password: secret primary: true variables: true wired: - ip: 127.0.0.1 + host: 127.0.0.1 port: 2000 resolvenames: json username: Admin password: secret ip: - ip: 127.0.0.1 + host: 127.0.0.1 port: 2010 groups: - ip: 127.0.0.1 + host: 127.0.0.1 port: 9292 resolvenames: json username: Admin password: secret path: /groups + hosts: + ccu2: + host: 127.0.0.1 + username: Admin + password: secret + ``` ### {% linkable_title The `resolvenames` option %} @@ -115,7 +126,7 @@ sensor: ### {% linkable_title Variables %} It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. -The states of the variables are available through the attributes of your hub entity (e.g. `homematic.rf`). Use templates (as mentioned above) to make your variables available to automations or as entities. +The states of the variables are available through the attributes of your hub entity (e.g. `homematic.ccu2`). Use templates (as mentioned above) to make your variables available to automations or as entities. The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed. ### {% linkable_title Events %} @@ -154,8 +165,8 @@ The name depends on if you chose to resolve names or not. If not, it will be the * *homematic.virtualkey*: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys. * *homematic.reconnect*: Reconnect to CCU/Homegear without restarting Home Assistant (useful when CCU has been restarted) -* *homematic.set_var_value*: Set the value of a system variable. -* *homematic.set_dev_value*: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC. +* *homematic.set_variable_value*: Set the value of a system variable. +* *homematic.set_device_value*: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC. #### {% linkable_title Examples %} Simulate a button being pressed @@ -184,9 +195,9 @@ Set boolean variable to true ```yaml ... action: - service: homematic.set_var_value + service: homematic.set_variable_value data: - entity_id: homematic.rf + entity_id: homematic.ccu2 name: Variablename value: true ``` @@ -200,7 +211,7 @@ Manually turn on a switch actor ```yaml ... action: - service: homematic.set_dev_value + service: homematic.set_device_value data: address: LEQ1234567 channel: 1 @@ -212,7 +223,7 @@ Manually set temperature on thermostat ```yaml ... action: - service: homematic.set_dev_value + service: homematic.set_device_value data: address: LEQ1234567 channel: 4 diff --git a/source/_components/hue.markdown b/source/_components/hue.markdown new file mode 100644 index 00000000000..3943f2d3c1f --- /dev/null +++ b/source/_components/hue.markdown @@ -0,0 +1,144 @@ +--- +layout: page +title: "Philips Hue" +description: "Instructions on setting up Philips Hue within Home Assistant." +date: 2017-11-29 23:51 +sidebar: true +comments: false +sharing: true +footer: true +logo: philips_hue.png +ha_category: Hub +ha_iot_class: "Local Polling" +featured: true +ha_release: 0.60 +--- + +Philips Hue support is integrated into Home Assistant as a Hub that can drive the light platform. The preferred way to setup the Philips Hue platform is by enabling the [discovery component](/components/discovery/). + +Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. + +When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. + +Once registration is complete you should see the Hue lights listed as "light" entities; if you don't you may have to restart Home Assistant once more. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. + +If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +hue: + bridges: + - host: DEVICE_IP_ADDRESS +``` + +Configuration variables: + +- **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. +- **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. +- **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. +- **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. +- **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. + +### {% linkable_title Migrating from older configuration %} + +In previous versions of the Hue component the configuration looked different: + +```yaml +# Example configuration.yaml entry +light: + - platform: hue + host: DEVICE_IP_ADDRESS +``` + +You will need to convert each bridge into an entry in the new configuration style. See above for an example. + +### {% linkable_title Multiple Hue bridges %} + +Multiple Hue bridges work transparently with discovery, you don't have to do anything. If you prefer to configure them manually and use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. + +Add `filename` to your Hue configuration entry in your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +hue: + bridges: + - host: BRIDGE1_IP_ADDRESS + filename: phue.conf + - host: BRIDGE2_IP_ADDRESS + filename: phue2.conf +``` + +### {% linkable_title Using Hue Groups in Home Assistant %} + +The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. + +These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. + +The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. + +Example: + +To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2 and 3, execute the following command: + +```bash +$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http://+ To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). +
+ +More information can be found on the [Philips Hue API documentation](https://www.developers.meethue.com/documentation/groups-api#22_create_group) website. + + +### {% linkable_title Using Hue Scenes in Home Assistant %} + +The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. + +To avoid user interface overload we don't expose scenes directly. Instead there is a hue.hue_activate_scene service which can be used by `automation` or `script` components. +This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. + +For instance: + +```yaml +script: + porch_on: + sequence: + - service: hue.hue_activate_scene + data: + group_name: "Porch" + scene_name: "Porch Orange" +``` + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `group_name` | no | The group/room name of the lights. Find this in the Hue official app. +| `scene_name` | no | The name of the scene. Find this in the Hue official app. + +*Note*: `group_name` is not linked to Home Assistant group name. + +### {% linkable_title Finding Group and Scene Names %} + +How do you find these names? + +The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. + +Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. + +### {% linkable_title Caveats %} + +The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. + +Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. + +The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index fc330b5f799..764138d2725 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -64,6 +64,7 @@ Choose "Webhooks" as service. You need to setup a unique trigger for each event you sent to IFTTT. +{% raw %} ```yaml # Example configuration.yaml Automation entry automation: @@ -75,9 +76,11 @@ automation: service: ifttt.trigger data: {"event":"TestHA_Trigger", "value1":"Hello World!"} ``` +{% endraw %} IFTTT can also be used in scripts and with `data_template`. Here is the above automation broken into an automation and script using variables and data_templates. +{% raw %} ```yaml # Example configuration.yaml Automation entry automation: @@ -89,10 +92,12 @@ automation: service: script.ifttt_notify data_template: value1: 'HA Status:' - value2: {% raw %}"{{ trigger.event.data.entity_id.split('_')[1] }} is "{% endraw %} - value3: {% raw %}"{{ trigger.event.data.to_state.state }}"{% endraw %} + value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is " + value3: "{{ trigger.event.data.to_state.state }}" ``` +{% endraw %} +{% raw %} ```yaml #Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP). ifttt_notify: @@ -100,6 +105,7 @@ ifttt_notify: - service: ifttt.trigger data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"} ``` +{% endraw %} ### {% linkable_title Sending events from IFTTT to Home Assistant %} diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 60bd6cac432..f2291bda29d 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -34,6 +34,8 @@ Configuration variables: - **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist. - **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. +- **max_retries** (*Optional*): Allow the component to retry if there was a network error when transmitting data +- **retry_queue_limit** (*Optional*): If retry enabled, specify how much calls are allowed to be queued for retry. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. - **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. - **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format. @@ -175,6 +177,7 @@ influxdb: password: MY_PASSWORD ssl: true verify_ssl: true + max_retries: 3 default_measurement: state exclude: entities: diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 9c041e1b7f3..ecb9824772c 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -39,27 +39,57 @@ input_number: mode: box ``` -Configuration variables: -- **[alias]** (*Required*): Alias for the input. Multiple entries are allowed. - - **min** (*Required*): Minimum value. - - **max** (*Required*): Maximum value. - - **name** (*Optional*): Friendly name of the input. - - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. - - **step** (*Optional*): Step value for the slider. Defaults to 1. - - **mode** (*Optional*): Can specify `box`, or `slider`. Defaults to `slider`. - - **unit_of_measurement** (*Optional*): Unit of measurement in which the value of the slider is expressed in. - - **icon** (*Optional*): Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. +{% configuration %} + input_number: + description: Alias for the input. Multiple entries are allowed. + required: true + type: map + keys: + min: + description: Minimum value. + required: true + type: float + max: + description: Maxium value. + required: true + type: float + name: + description: Friendly name of the input. + required: false + type: string + initial: + description: Initial value when Home Assistant starts. + required: false + type: float + default: 0 + step: + description: Step value for the slider. Smallest value `0.001`. + required: false + type: float + default: 1 + mode: + description: Can specify `box` or `slider`. + required: false + type: box | slider + default: slider + unit_of_measurement: + description: Unit of measurement in which the value of the slider is expressed in. + required: false + type: string + icon: + description: Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. + required: false + type: icon +{% endconfiguration %} ## {% linkable_title Automation Examples %} Here's an example of `input_number` being used as a trigger in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' as a trigger in an automation - -# Define input_number input_number: bedroom_brightness: name: Brightness @@ -67,8 +97,6 @@ input_number: min: 0 max: 254 step: 1 - -# Automation. automation: - alias: Bedroom Light - Adjust Brightness trigger: @@ -76,20 +104,18 @@ automation: entity_id: input_number.bedroom_brightness action: - service: light.turn_on -# Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable + # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable data_template: entity_id: light.bedroom - brightness: '{{ trigger.to_state.state | int }}' -{% endraw %} + brightness: "{{ trigger.to_state.state | int }}" ``` +{% endraw %} Another code example using `input_number`, this time being used in an action in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation - -# Define 'input_select' input_select: scene_bedroom: name: Scene @@ -101,8 +127,6 @@ input_select: - Relax - 'OFF' initial: 'Select' - -# Define input_number input_number: bedroom_brightness: name: Brightness @@ -110,8 +134,6 @@ input_number: min: 0 max: 254 step: 1 - -# Automation. automation: - alias: Bedroom Light - Custom trigger: @@ -120,21 +142,18 @@ automation: to: CUSTOM action: - service: light.turn_on -# Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. + # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. data_template: entity_id: light.bedroom - brightness: '{{ states.input_number.bedroom_brightness.state | int }}' -{% endraw %} + brightness: "{{ states('input_number.bedroom_brightness') | int }}" ``` - +{% endraw %} Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation - -# Define input_number input_number: target_temp: name: Target Heater Temperature Slider @@ -144,30 +163,31 @@ input_number: unit_of_measurement: step icon: mdi:target -# Automation. # This automation script runs when a value is received via MQTT on retained topic: setTemperature # It sets the value slider on the GUI. This slides also had its own automation when the value is changed. -- alias: Set temp slider - trigger: - platform: mqtt - topic: "setTemperature" - action: - service: input_number.set_value - data_template: - entity_id: input_number.target_temp - value: '{{ trigger.payload}}' +automation: + - alias: Set temp slider + trigger: + platform: mqtt + topic: 'setTemperature' + action: + service: input_number.set_value + data_template: + entity_id: input_number.target_temp + value: "{{ trigger.payload }}" - # This automation script runs when the target temperature slider is moved. - # It publishes its value to the same MQTT topic it is also subscribed to. -- alias: Temp slider moved - trigger: - platform: state - entity_id: input_number.target_temp - action: - service: mqtt.publish - data_template: - topic: "setTemperature" - retain: true - payload: '{{ states.input_number.target_temp.state | int }}' -{% endraw %} +# This automation script runs when the target temperature slider is moved. +# It publishes its value to the same MQTT topic it is also subscribed to. +automation: + - alias: Temp slider moved + trigger: + platform: state + entity_id: input_number.target_temp + action: + service: mqtt.publish + data_template: + topic: 'setTemperature' + retain: true + payload: "{{ states('input_number.target_temp') | int }}" ``` +{% endraw %} diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index 8cf050f2383..0b59c64b24e 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -34,12 +34,54 @@ Configuration variables: - **host** (*Required*): The host entry should be in full URL format, eg. http://192.168.10.100:80 - **username** (*Required*): The username that used to access the ISY interface. - **password** (*Required*): The password that used to access the ISY interface. -- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). +- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically. - **hidden_string** (*Optional*): The HIDDEN_STRING is a string that is used to identify which devices are to be hidden on Home Assistant's front page. This string will be stripped from the device's name before being used. By default, this value is '{HIDE ME}'. - **tls** (*Optional*): This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate. +### {% linkable_title Sensors %} + +An Insteon door/window sensor will show up as a single Binary Sensor rather than two discrete devices like it does in the ISY994 admin panel. Note that when in "Two Nodes" mode, the sensor will have an UNKNOWN state until the sensor changes for the first time since the last Home Assistant reboot. If you do not use Insteon scenes that are controlled directly from the door sensor, you may prefer to set the sensor to "One Node" mode using the ISY Admin Panel. + +Each Insteon leak sensor will also show up as a single Binary Sensor as opposed to the two nodes seen in the ISY994. The name of the device will be based on what the parent node is named in the ISY994, which is typically the one with "-Dry" at the end of the name. This may be confusing, because "On" means wet in Home Assistant. You can rename this node either in the ISY994 Admin Panel (which will change the entity_id in Home Assistant) or assign a `friendly_name` in the [Customization section](https://home-assistant.io/docs/configuration/customizing-devices/) of your configuration. + +If your leak or door/window sensor supports heartbeats, a new binary_sensor device will be added to Home Assistant to represent the battery state. The sensor will stay "Off" so long as the daily heartbeats occur. If a heartbeat is missed, the sensor will flip to "On". The name of this device will be based on the heartbeat node in the ISY. + +### {% linkable_title Handling Insteon Control Events %} + +A Home Assistant `isy994_control` event is emitted for every "control" event in the Insteon network. This allows you to write automations that trigger based on Insteon button presses. You can also trigger off of the unique Insteon events, such as double-presses, long-holds etc. + +```yaml +automation: + - alias: turn off living room on double tap lightswitch + trigger: + platform: event + event_type: isy994_control + event_data: + entity_id: light.lr_track_lights_front + control: 'DFOF' + action: + service: light.turn_off + entity_id: light.lr_track_lights_rear +``` + +All `isy994_control` events will have an `entity_id` and `control` parameter in its `event_data`. You'll need to refer to ISY994 documentation for the list of every possible control type, but the common ones are: + +- `DON`: On button +- `DOF`: Off button +- `DFON`: "Fast On", usually from double-tapping an On button +- `DFOF`: "Fast Off", usually from double-tapping an Off button +- `FDUP`: "Fade Up", usually while holding down an On button +- `FDDOWN`: "Fade Down", usually while holding down an Off button +- `FDSTOP`: "Fade Stop", when releasing a long-held button +- `BRT`: "Brighten", from controllers that issue a single command to slightly brighten a light +- `DIM`: "Dim", from controllers that issue a single command to slightly dim a light + +### {% linkable_title Insteon Scenes %} + +All Insteon scenes configured in the ISY994 will show up as switches in Home Assistant. + ### {% linkable_title Creating Custom Devices %} Using the Programs tab in the controller's Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains: diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index e27aa82e1a1..c0b94b2eb58 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -13,22 +13,21 @@ ha_release: "0.24" --- -The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. +The `joaoapps_join` component exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. In the `configuration.yaml` file you need to provide the api key and device id or name of the target device. You can find your device id and api key [here](https://joinjoaomgcd.appspot.com/). To set it up, add the following information to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - platform: joaoapps_join api_key: asd97823jb628a34fwsdfwefd5384345tf2d - device_id: d5asdfasdf54645h45h368761dfe5gt8a *optional - device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b *optional - device_names: Pixel, iPhone *optional - name: Phones *optional - - + device_id: d5asdfasdf54645h45h368761dfe5gt8a + device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b + device_names: Pixel, iPhone + name: Phones joaoapps_join: - name: android device_id: group.android @@ -42,20 +41,20 @@ Configuration variables: - **device_ids** (*Optional*): Comma separated list of device ids. - **device_names** (*Optional*): Comma separated list of device names. -The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: +The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: ```json {"message":"Hello from Home Assistant!","title":"Home Assistant","data":{"icon":"https://goo.gl/xeetdy", "vibration":"0,65,706,86,657,95,668,100"}} ``` -The services exposed in the joaoapps_join component can be used with the service data described below: +The services exposed in the `joaoapps_join` component can be used with the service data described below: | Service | Data | |------------------------------ |------------------------------------------------------------------ | | joaoapps_join/ring | | -| joaoapps_join/send_sms | {"number":"5553334444", "message":"Hello!"} | -| joaoapps_join/send_tasker | {"command":"test"} | -| joaoapps_join/send_url | {"url":"http://google.com"} | -| joaoapps_join/send_wallpaper | {"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"} | -| joaoapps_join/send_file | {"url":"http://download.thinkbroadband.com/5MB.zip"} | +| joaoapps_join/send_sms | `{"number":"5553334444", "message":"Hello!"}` | +| joaoapps_join/send_tasker | `{"command":"test"}` | +| joaoapps_join/send_url | `{"url":"http://google.com"}` | +| joaoapps_join/send_wallpaper | `{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}` | +| joaoapps_join/send_file | `{"url":"http://download.thinkbroadband.com/5MB.zip"}` | diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index b48642e7ce5..ff8c0786fcc 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -83,6 +83,7 @@ knx: - **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus - **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. - **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour. +- **time_address** (*Optional*): Broadcast current local time to KNX bus with configured group address. ### {% linkable_title Services %} diff --git a/source/_components/light.ads.markdown b/source/_components/light.ads.markdown new file mode 100644 index 00000000000..b5188cf33e8 --- /dev/null +++ b/source/_components/light.ads.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "ADS Light" +description: Instructions how to set up ADS lights within Home Assistant +date: 2017-10-25 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Light +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The `ads` light platform allows you to control your connecte ADS lights. + +To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +light: + - platform: ads + adsvar: GVL.enable_light + adsvar_brightness: GVL.brightness +``` + +{% configuration %} + adsvar: + required: true + description: The name of the boolean variable that switches the light on + type: string + adsvar_brightness: + required: false + description: The name of the variable that controls the brightness, use an unsigned integer on the PLC side + type: integer + name: + required: false + description: An identifier for the Light in the frontend + type: string +{% endconfiguration %} diff --git a/source/_components/light.hive.markdown b/source/_components/light.hive.markdown new file mode 100644 index 00000000000..7b9038ae169 --- /dev/null +++ b/source/_components/light.hive.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Hive Light" +description: "Instructions on how to integrate Hive lights with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Light +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' light component integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light. + +The Hive light component supports the following Hive products: +- **Hive Active Light Dimmable** +- **Hive Active Light Cool to Warm White** + + ++Full configuration details can be found on the main [Hive component](/components/hive/) page. +
+ + diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown index 871972d4f0c..d4d37548b6b 100644 --- a/source/_components/light.hue.markdown +++ b/source/_components/light.hue.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Philips Hue" -description: "Instructions how to setup Philips Hue within Home Assistant." +title: "Philips Hue Light" +description: "Instructions how to integrate Philips Hue lights into Home Assistant." date: 2015-03-23 20:09 sidebar: true comments: false @@ -14,119 +14,8 @@ featured: true ha_release: pre 0.7 --- -Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the [discovery component](/components/discovery/). +The Philips Hue light platform allows you to control your Philips Hue lights. -Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. +This component will automatically add `Lights` configured on your Hue bridges. -When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the IP Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. - -Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. - -If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: hue - host: DEVICE_IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. -- **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. -- **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. -- **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. -- **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. - -### {% linkable_title Multiple Hue bridges %} - -If you use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. - -Add `filename` to your Hue configuration entry in your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: hue - host: BRIDGE1_IP_ADDRESS - filename: phue.conf - - platform: hue - host: BRIDGE2_IP_ADDRESS - filename: phue2.conf -``` - -### {% linkable_title Using Hue Groups in Home Assistant %} - -The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. - -These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. - -The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. - -Example: - -To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2 and 3, execute the following command: - -```bash -$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http://- To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). -
- -More information can be found on the [Philips Hue API documentation](https://www.developers.meethue.com/documentation/groups-api#22_create_group) website. - - -### {% linkable_title Using Hue Scenes in Home Assistant %} - -The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. - -To avoid user interface overload we don't expose scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. -This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. - -For instance: - -```yaml -script: - porch_on: - sequence: - - service: light.hue_activate_scene - data: - group_name: "Porch" - scene_name: "Porch Orange" -``` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `group_name` | no | The group/room name of the lights. Find this in the Hue official app. -| `scene_name` | no | The name of the scene. Find this in the Hue official app. - -*Note*: `group_name` is not linked to Home Assistant group name. - -*** Finding Group and Scene Names *** - -How do you find these names? - -The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. - -Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. - -*** Caveats *** - -The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. - -Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. - -The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". +The requirement is that you have setup your [Philips Hue bridge](/components/hue/). diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown index 0bf8b817fe6..2902cb71be0 100644 --- a/source/_components/light.mochad.markdown +++ b/source/_components/light.mochad.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Mochad Light" -description: "Instructions how to integrate X10 Mochad switches into Home Assistant." +description: "Instructions how to integrate X10 Mochad lights into Home Assistant." date: 2017-07-14 11:29 sidebar: true comments: false @@ -11,7 +11,7 @@ ha_category: Light ha_release: 0.51 --- -The `mochad` switch platform lets you control an X10 enabled dimmer/light +The `mochad` light platform lets you control an X10 enabled dimmer/light device. To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file: @@ -28,5 +28,7 @@ light: Configuration variables: - **address** (*Required*): The X10 address of the light. -- **name** (*Optional*): The name of the switch. Default is: x10_light_dev_*address*. +- **name** (*Optional*): The name of the light. Default is: x10_light_dev_*address*. - **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. +- **brightness_levels** (*Optional*): The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max +value sent to the device will be n-1 because it starts at 0) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 99a1746623c..ba3041dde38 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -53,7 +53,7 @@ Configuration variables: - **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates. - **rgb_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value. - **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates. -- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. +- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. The template should match the payload "on" and "off" values, so if your light uses "power on" to turn on, your `state_value_template` string should return "power on" when the switch is on. For example if the message is just "on", your `state_value_template` should be `power {{ value }}`. - **white_value_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's white value. - **white_value_state_topic** (*Optional*): The MQTT topic subscribed to receive white value updates. - **white_value_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the white value. diff --git a/source/_components/light.template.markdown b/source/_components/light.template.markdown index 69f0315c940..8c5d5ab1545 100755 --- a/source/_components/light.template.markdown +++ b/source/_components/light.template.markdown @@ -42,7 +42,7 @@ light: {% endraw %} {% configuration %} - switches: + lights: description: List of your lights. required: true type: map diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 426b4754b0b..c082a8b2d8c 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -47,7 +47,7 @@ Per default the bulb limits the amount of requests per minute to 60, a limitatio ### {% linkable_title Initial setup %}Before trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( [Android](https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=fr), [IOS](https://itunes.apple.com/us/app/yeelight/id977125608?mt=8) ). -In the bulb property, you have to enable "Developer Mode" Developer mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. +In the bulb property, you have to enable "LAN Mode" (previously called "Developer mode"). LAN mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. Determine your bulb IP (using router, software, ping ...)
diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown index e14b908b871..b365e57f63d 100644 --- a/source/_components/logentries.markdown +++ b/source/_components/logentries.markdown @@ -11,7 +11,9 @@ footer: true ha_category: "History" --- -The `logentries` component makes it possible to log all state changes to [your Logentries account](http://logentries.com/) using Logentries Webhook endpoint and a token based log +The `logentries` component makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint. + +Open the **Add a Log** page and choose **Manual**. Enter a name for your log in **Log Name**, add a group in **Select Log Set**, set **Token TCP - logs are identified by a token.** and press **Create Log Token**. The generated token is required for the Home Assistant configuration. To use the `logentries` component in your installation, add the following to your `configuration.yaml` file: @@ -21,6 +23,10 @@ logentries: token: TOKEN ``` -Configuration variables: +{% configuration %} +token: + description: The token for the log to use. + required: true + type: string +{% endconfiguration %} -- **token** (*Required*): Your Logentries log token. diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown index c26cbe114bc..c9645e9fc59 100644 --- a/source/_components/maxcube.markdown +++ b/source/_components/maxcube.markdown @@ -30,7 +30,7 @@ A `maxcube` section must be present in the `configuration.yaml` file and contain ```yaml # Example configuration.yaml entry maxcube: - host: 192.168.0.20 + host: 192.168.0.20 ``` Configuration variables: - **host** (*Required*): The IP address of the eQ-3 MAX! Cube to use. diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index c9d7d2124d3..0e3dbcba7e0 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -53,5 +53,6 @@ Currently known supported models: - LC-60LE925UN - LC-60LE857U - LC-60EQ10U +- LC-60SQ15U 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/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.aquostv.markdown). diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown index a64c85c44b3..9d9e50da1d4 100644 --- a/source/_components/media_player.denonavr.markdown +++ b/source/_components/media_player.denonavr.markdown @@ -18,6 +18,7 @@ The `denonavr` platform allows you to control a [Denon Network Receivers](http:/ Supported devices: +- Denon AVR-X1300W - Denon AVR-X2000 - Denon AVR-X2100W - Denon AVR-X4100W diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 2caaf7b0778..a17ccb902c7 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -55,6 +55,7 @@ Currently known supported models: - U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K6500AF (port must be set to 8001) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) - UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) @@ -66,7 +67,7 @@ Currently tested but not working models: - JU7500 - Unable to see state and unable to control - JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) -- MU6170UXZG (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) +- MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) 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/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown index 9f54fa81732..3afe420ff4d 100644 --- a/source/_components/media_player.sonos.markdown +++ b/source/_components/media_player.sonos.markdown @@ -109,7 +109,7 @@ Clear the sleep timer on a speaker, if one is set. ### {% linkable_title Service `sonos_update_alarm` %} -Update an existing sonos alarm. +Update an existing Sonos alarm. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -119,3 +119,15 @@ Update an existing sonos alarm. | `volume` | yes | Float for volume level. | `enabled` | yes | Boolean for whether or not to enable this alarm. | `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players. + +### {% linkable_title Service `sonos_set_option` %} + +Set Sonos speaker options. + +Night Sound and Speech Enhancement modes are only supported on Sonos PLAYBAR and PLAYBASE speakers when playing from the TV source. Other speaker types will ignore these options. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of `entity_id`s that will have their options set. +| `night_sound` | yes | Boolean to control Night Sound mode. +| `speech_enhance` | yes | Boolean to control Speech Enhancement mode. diff --git a/source/_components/media_player.ue_smart_radio.markdown b/source/_components/media_player.ue_smart_radio.markdown new file mode 100644 index 00000000000..217b625b8d5 --- /dev/null +++ b/source/_components/media_player.ue_smart_radio.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Logitech UE Smart Radio" +description: "Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant." +date: 2017-12-09 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ueradio.png +ha_category: Media Player +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + + +The `ue_radio` platform allows you to control a [Logitech UE Smart Radio](https://www.uesmartradio.com) from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update. + +To add your UE Smart Radio player to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: ue_smart_radio + username: USERNAME + password: PASSWORD +``` + +{% configuration %} +username: + description: The email you use to log in to `uesmartradio.com`. + required: true + type: string +password: + description: The password you use to log in to `uesmartradio.com`. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown index 48d46311e67..106f114f780 100644 --- a/source/_components/media_player.universal.markdown +++ b/source/_components/media_player.universal.markdown @@ -14,7 +14,7 @@ featured: false Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center. -Multiple Media Player entities can be controlled from a Universal Media Player. Additionally, the Universal Media Player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver. +Multiple media player entities can be controlled from an universal media player. Additionally, the universal media player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver. A Universal Media Player is created in `configuration.yaml` as follows. @@ -47,31 +47,46 @@ media_player: state: ENTITY_ID|ATTRIBUTE ``` -Configuration variables: +{% configuration %} +name: + description: The name to assign the player. + required: true + type: string +children: + description: Ordered list of child media players this entity will control. + required: true + type: list +state_template: + description: "A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like switches or input booleans." + required: false + type: template +commands: + description: "Commands to be overwritten. Possible entries are `turn_on`, `turn_off`, `select_source`, `volume_set`, `volume_up`, `volume_down` and `volume_mute`." + required: false + type: string +attributes: + description: "Attributes that can be overwritten. Possible entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id should be provided." + required: false + type: string +{% endconfiguration %} -- **name** (*Required*): The name to assign the player -- **children** (*Required*): Ordered list of child media players this entity will control -- **state_template** (*Optional*): A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like Switches or Input Booleans. -- **commands** (*Optional*): Commands to be overwritten. Possible entries are *turn_on*, *turn_off*, *select_source*, *volume_set*, *volume_up*, *volume_down*, and *volume_mute*. -- **attributes** (*Optional*): Attributes that can be overwritten. Possible entries are *is_volume_muted*, *state*, *source*, *source_list, and *volume_level*. The values should be an entity id and state attribute separated by a bar (\|). If the entity id's state should be used, then only the entity id should be provided. +The Universal Media Player will primarily imitate one of its `children`. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the `children:` list must be media players, but the state template can contain any entity. -The Universal Media Player will primarily imitate one of its *children*. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the *children* list must be media players, but the state template can contain any entity. +It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on. -It is recommended that the command *turn_on*, the command *turn_off*, and the attribute *state* all be provided together. The *state* attribute indicates if the Media Player is on or off. If *state* indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and *state* is on, the Universal Media Player's state will be on. +It is also recommended that the command `volume_up`, the command `volume_down`, the command `volume_mute`, and the attribute `is_volume_muted` all be provided together. The attribute `is_volume_muted` should return either True or the on state when the volume is muted. The `volume_mute` service should toggle the mute setting. -It is also recommended that the command *volume_up*, the command *volume_down*, the command *volume_mute*, and the attribute *is_volume_muted* all be provided together. The attribute *is_volume_muted* should return either True or the on state when the volume is muted. The *volume_mute* service should toggle the mute setting. - -When providing *select_source* as a command, it is recommended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources. +When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources. ## {% linkable_title Usage examples %} #### {% linkable_title Chromecast & Kodi control with switches %} -In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The *turn_on* and *turn_off* commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The *select_source* command will be passed directly to an A/V receiver. - -The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status. +In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The `turn_on` and `turn_off` commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The `select_source` command will be passed directly to an A/V receiver. +The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status. +{% raw %} ```yaml media_player: platform: universal @@ -104,12 +119,12 @@ media_player: service: media_player.select_source data_template: entity_id: media_player.receiver - source: '{% raw %}{{ source }}{% endraw %}' + source: '{{ source }}' volume_set: service: media_player.volume_set data_template: entity_id: media_player.receiver - volume_level: '{% raw %}{{ volume_level }}{% endraw %}' + volume_level: '{{ volume_level }}' attributes: state: switch.living_room_tv @@ -117,21 +132,22 @@ media_player: volume_level: media_player.receiver|volume_level source: media_player.receiver|source source_list: media_player.receiver|source_list - ``` +{% endraw %} #### {% linkable_title Kodi CEC-TV control %} In this example, a [Kodi Media Player](/components/media_player.kodi/) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV. -We store the state of the attached TV in a hidden [Input Boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the Universal Media Player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). +We store the state of the attached TV in a hidden [input boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). -Because the Input Boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. +Because the input boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. -In an Apple HomeKit scene, we can now expose this Universal Media Player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. +In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. -The complete yaml config is: +The complete configuration is: +{% raw %} ```yaml homeassistant: customize: @@ -153,11 +169,11 @@ media_player: - platform: universal name: Kodi TV state_template: > - {% raw %}{% if (is_state('media_player.kodi', 'idle') and (is_state('input_boolean.kodi_tv_state', 'off') %} + {% if is_state('media_player.kodi', 'idle') and is_state('input_boolean.kodi_tv_state', 'off') %} off {% else %} {{ states('media_player.kodi') }} - {% endif %}{% endraw %} + {% endif %} children: - media_player.kodi commands: @@ -224,3 +240,4 @@ automation: - service: media_player.turn_off entity_id: media_player.kodi_tv ``` +{% endraw %} diff --git a/source/_components/media_player.ziggo_mediabox_xl.markdown b/source/_components/media_player.ziggo_mediabox_xl.markdown new file mode 100644 index 00000000000..5919b19b50b --- /dev/null +++ b/source/_components/media_player.ziggo_mediabox_xl.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Ziggo Mediabox XL" +description: "Instructions how to integrate the Ziggo Mediabox XL into Home Assistant." +date: 2017-11-10 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ziggo.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: "0.60" +--- + +The `ziggo_mediabox_xl` component allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. + +To add a Ziggo Mediabox XL to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: ziggo_mediabox_xl + host: 192.168.0.123 + name: Ziggo Mediabox +``` + +{% configuration %} + host: + description: The hostname or address of the device. + required: true + type: string + name: + description: The name of the device used in the frontend. + required: false + type: string +{% endconfiguration %} + +The channel information (numbers and names) are downloaded from ziggo.nl on startup. + +#### {% linkable_title Preparation of the Mediabox %} + +Makes sure to enable the Home Network ("mijn thuisnetwerk") service in the settings menu of the media box. Once you have set up the Media Library ("mediabiblotheek"), we can determine whether the device is turned on or off. Without this, the component will fail to start. diff --git a/source/_components/neato.markdown b/source/_components/neato.markdown index 6e0849e6f01..3a4c86cac01 100644 --- a/source/_components/neato.markdown +++ b/source/_components/neato.markdown @@ -28,6 +28,13 @@ Configuration variables: - **username** (*Required*): Username for the Neato account. - **password** (*Required*): Password for the Neato account. +The Home Assistant Neato platform has not been tested with all models of Botvac. + + | BotVac Model | Tested | + | --- | --- | + | Botvac Connected | SUCCESS | + | Botvac D7 Connected | SUCCESS | +-The Home Assistant Neato platform has only be tested with a Botvac Connected. There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time. +There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time.
diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index b3d376c50fc..7aa5adfb9c9 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -34,7 +34,7 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 9. Once the new product page opens the "Product ID" and "Product Secret" are located on the right side. These will be used as `client_id` and `client_secret` below. 10. Once Home Assistant is started, a configurator will pop up asking you to log into your Nest account and copy a PIN code into Home Assistant. -Connecting to the Nest Developer API requires outbound port 8553 on your firewall. The configuration will fail if this is not accessible. +Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible. ### {% linkable_title Configuration %} diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index a7b6a30a0c0..ebb254a3109 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -55,6 +55,3 @@ That's it. You can copy and paste your new `client id` and `client secret` in yo-The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rain meter. There is no support for the wind meter module at this time because developers does not own these modules. -
diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 8331ad249fd..8bf9a4c528e 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -21,14 +21,14 @@ To enable this platform, add the following lines to your `configuration.yaml` fi notify: - name: NOTIFIER_NAME platform: html5 - gcm_api_key: 'gcm-sender-key' + gcm_api_key: 'gcm-server-key' gcm_sender_id: 'gcm-sender-id' ``` Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **gcm_api_key** (*Required if pushing to Chrome*): The API key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. +- **gcm_api_key** (*Required if pushing to Chrome*): The API Server key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. - **gcm_sender_id** (*Required if pushing to Chrome*): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. ### {% linkable_title Getting ready for Chrome %} diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index 8adb8c094eb..cf50cffaa2e 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -12,17 +12,71 @@ ha_category: Notifications ha_release: 0.49 --- -This component allows to send notification to a LaMetric device. It need the LaMetric platform to be configured first. +The `lametric` notification platform allows to send notification to a LaMetric device. It needs the LaMetric platform to be configured first. + +To enable LaMetric notifications in your installation, add the following to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - name: lametric1 + name: NOTIFIER_NAME platform: lametric - display_time: 20 - icon: i555 ``` -- **name** (*Optional*): The name of the LaMetric device. Usually it is "My Lametric" -- **display_time** (*Optional*): Defines how long the message should be displayed (in seconds). -- **icon** (*Optional*): An icon or animation. Check out the list of all icons her: https://developer.lametric.com/icons -Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number. +{% configuration %} +name: + description: "The optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`." + required: false + type: string + default: notify +lifetime: + description: Defines how long the message remains in LaMetric notification queue (in seconds). + required: false + type: int + default: 10 +icon: + description: An icon or animation. + required: false + type: string +cycles: + description: Defines how often the notification is displayed. + required: false + type: int + default: 1 +{% endconfiguration %} + +Check out the list of all icons at [https://developer.lametric.com/icons](https://developer.lametric.com/icons). Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number! + +## {% linkable_title Examples %} + +### {% linkable_title Full configuration example %} + +```yaml +# Example configuration.yaml entry +notify: + name: NOTIFIER_NAME + platform: lametric + lifetime: 20 + icon: a7956 + cycles: 3 +``` + +### {% linkable_title Changing sounds and icons %} + +To add a notification sound or an icon override, it has to be done via service data. + +```yaml +- alias: "Send notification on arrival at school" + trigger: + platform: state + entity_id: device_tracker.son_mobile + from: 'not_home' + to: 'school' + action: + service: notify.lametric + data: + message: "Son has arrived at school!" + data: + sound: 'notification' + icon: 'i51' + ``` diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown index 3a91a7cba0e..79b3096a7de 100644 --- a/source/_components/notify.nfandroidtv.markdown +++ b/source/_components/notify.nfandroidtv.markdown @@ -14,9 +14,11 @@ ha_iot_class: "Local Polling" --- -Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google&hl=en) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). +Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). + The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. -The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. + +When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. To enable the notification platform, add the following to your `configuration.yaml` file: @@ -50,7 +52,7 @@ This is a fully customized JSON you can use to test how the final notification w "duration":2, "transparency":"0%", "color": "red", - "interrupt": 1 + "interrupt": 1, } } ``` diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index 0445d1df821..17a2e479859 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -42,7 +42,7 @@ Configuration variables: ### {% linkable_title Slack service data %} -The following attributes can be placed `data` for extended functionality. +The following attributes can be placed inside `data` for extended functionality. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index b1c5ec976bc..daba937a936 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -51,16 +51,18 @@ Configuration variables: ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. -Another good source of this data would be the [Mi Flora](https://home-assistant.io/components/sensor.miflora/) component. +Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. If the sensor data is within the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. ## Data Source -The main sources of the data will usually be a [MiFlora sensor](sensor.miflora) or a [MQTT sensor](sensor.mqtt) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). +The main sources of the data will usually be a [MiFlora sensor](/components/sensor.miflora/) or a [MQTT sensor](/components/sensor.miflora/) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors: + +{% raw %} ```yaml # Example configuration.yaml entry plant: @@ -99,5 +101,6 @@ sensor: state_topic: my_plant_topic value_template: '{{ value_json.brightness }}' ``` +{% endraw %} You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server. diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 6531fdf71a0..ae8aae4a490 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -119,7 +119,7 @@ action: Not all Python bindings for the chosen database engine can be installed directly. This section contains additional details which should help you to get it working. -### {% linkable_title MariDB and MySQL %} +### {% linkable_title MariaDB and MySQL %} For MariaDB you may have to install a few dependencies. On the Python side we use the `mysqlclient`: diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 804c3bbe4aa..70c3bbd7f32 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -17,7 +17,7 @@ The `rss_feed_template` component can export any information from Home Assistant For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry rss_feed_template: # Accessible on-Your system must have fail2ban installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the fail2ban log file. +Your system must have `fail2ban` installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the `fail2ban` log file.
To enable this sensor, add the following lines to your `configuration.yaml`: @@ -29,29 +29,38 @@ sensor: jails: - ssh - hass-iptables - file_path: /var/log/fail2ban.log ``` -Configuration variables: - -- **jails** (*Required*): List of configured jails you want to display (each jail is its own sensor). -- **name** (*Optional*): Name of the sensor. Defaults to `fail2ban`. -- **file_path** (*Optional*): Path to the fail2ban log. Defaults to `/var/log/fail2ban.log`. -- **scan_interval** (*Optional*): Used to limit how often log file is read and must be a positive integer (representing number of seconds to wait). Defaults to 120. +{% configuration %} +jails: + description: List of configured jails you want to display. + required: true + type: list +name: + description: Name of the sensor. + required: false + type: string + default: fail2ban +file_path: + description: Path to the fail2ban log. + required: false + type: string + default: /var/log/fail2ban.log +{% endconfiguration %} ### {% linkable_title Set up Fail2Ban %} -For most set-ups, you can follow [this tutorial](https://home-assistant.io/cookbook/fail2ban/) to set up fail2ban on your system. It will walk you through creating jails and filters, allowing you to monitor IPs that have been banned for too many failed ssh login attempts, as well as too many failed Home Assistant log in attempts. +For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `fail2ban` on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts. ### {% linkable_title Fail2Ban with Docker %}-These steps assume you already have the Home Assistant docker running behind nginx and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag. +These steps assume you already have the Home Assistant docker running behind NGINX and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag.
-For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind nginx. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. +For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind NGINX. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. -#### Set http logger +#### {% linkable_title Set http logger %} In your `configuration.yaml` file, add the following to the `logger` component to ensure that Home Assistant prints failed login attempts to the log. @@ -61,7 +70,7 @@ logger: homeassistant.components.http.ban: warning ``` -#### Edit the `jail.local` file +#### {% linkable_title Edit the `jail.local` file %} Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](https://home-assistant.io/cookbook/fail2ban/). @@ -76,7 +85,7 @@ logpath = /hass/home-assistant.log maxretry = 5 ``` -#### Create a filter for the Home Assistant jail +#### {% linkable_title Create a filter for the Home Assistant jail %} Now we need to create a filter for `fail2ban` so that it can properly parse the log. This is done with a `failregex`. Create a file called `hass.local` within the `filter.d` directory in `/mnt/user/appdata/letsencrypt/fail2ban` and add the following: @@ -93,7 +102,7 @@ ignoreregex = datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S ``` -#### Map log file directories +#### {% linkable_title Map log file directories %} First, we need to make sure that fail2ban log can be passed to Home Assistant and that the Home Assistant log can be passed to fail2ban. When starting the Let's Encrypt docker, you need to add the following argument (adjust paths based on your setup): @@ -110,20 +119,20 @@ Now do the same for the Home Assistant docker, but this time we'll be mapping th ``` -#### Send client IP to Home Assistant +#### {% linkable_title Send client IP to Home Assistant %} By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it. First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. -``` +```bash proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ``` This snippet should be added within your Home Assistant server config, so you have something like the following: -``` +```bash server { ... location / { @@ -158,7 +167,7 @@ http: At this point, once the Let's Encrypt and Home Assistant dockers are restarted, Home Assistant should be correctly logging the originating IP of any failed login attempt. Once that's done and verified, we can move onto the final step. -#### Add the fail2ban sensor +#### {% linkable_title Add the fail2ban sensor %} Now that we've correctly set everything up for Docker, we can add our sensors to `configuration.yaml` with the following: @@ -174,7 +183,7 @@ Assuming you've followed all of the steps, you should have one fail2ban sensor, ### {% linkable_title Other debug tips %} -If, after following these steps, you're unable to get the fail2ban sensor working, here are some other steps you can take that may help: +If, after following these steps, you're unable to get the `fail2ban` sensor working, here are some other steps you can take that may help: - Add `logencoding = utf-8` to the `[hass-iptables]` entry - Ensure the `failregex` you added to `filter.d/hass.local` matches the output within `home-assistant.log` diff --git a/source/_components/sensor.gearbest.markdown b/source/_components/sensor.gearbest.markdown new file mode 100644 index 00000000000..31803acb752 --- /dev/null +++ b/source/_components/sensor.gearbest.markdown @@ -0,0 +1,72 @@ +--- +layout: page +title: "Gearbest" +description: "Instructions on how to integrate a Gearbest sensor into Home Assistant." +date: 2017-11-13 09:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: gearbest.png +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: "0.60" +--- + + +The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: gearbest + currency: EUR + items: + - url: https://www.gearbest.com/.... +``` + +{% configuration %} +currency: + description: "The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or an URL must be present." + required: true + type: string +items: + description: List of products that should be tracked. + required: true + type: map + keys: + id: + description: The ID of the product. + required: false + type: int + url: + description: The URL of the product. + required: false + type: string + name: + description: The name of the item. If not set, it is parsed from the website. + required: false + type: string + currency: + description: Overwrite the currency for the current item. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Extended example %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: gearbest + currency: EUR + items: + - url: https://www.gearbest.com/3d-printers-3d-printer-kits/pp_779174.html?wid=21 + name: Creality CR-10 upgraded + currency: USD + - id: 779174 + name: Creality CR-10 upgraded #2 + currency: EUR +``` diff --git a/source/_components/sensor.hive.markdown b/source/_components/sensor.hive.markdown new file mode 100644 index 00000000000..3e7350e147c --- /dev/null +++ b/source/_components/sensor.hive.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Hive Sensor" +description: "Instructions on how to integrate Hive Sensors with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Sensor +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' sensor component can expose as a sensor the current online status of your Hive Hub. + + ++Full configuration details can be found on the main [Hive component](/components/hive/) page. +
+ + diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown index 486b10e5f2a..6417ee5e0a5 100644 --- a/source/_components/sensor.luftdaten.markdown +++ b/source/_components/sensor.luftdaten.markdown @@ -45,16 +45,6 @@ sensor: required: false default: Luftdaten Sensor type: string - resource: - description: The URL of the API endpoint. Usually this has not to be changed. - required: false - default: https://api.luftdaten.info/v1/sensor/ - type: string - verify_ssl: - description: Verify SSL connection. - required: false - default: true - type: boolean monitored_conditions: description: A list of conditions you want to monitor. required: true @@ -65,8 +55,15 @@ sensor: P2: description: Show the particle sensors (particles 2.5 microns and below). temperature: - description: Display the temperature from a weather sensor. + description: Display the temperature from the sensor. humidity: - description: Display the humidity from a weather sensor. + description: Display the humidity from the sensor. + pressure: + description: Display the pressure from the sensor. {% endconfiguration %} +Not all sensors provide all conditions. Also, it's possible that the sensor values are not available all the time. To check what a sensor is publishing use `curl`: + +```bash +$ curl https://api.luftdaten.info/v1/sensor/[sensorid]/ +``` diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 67f6ecd25f3..739ce1e2c0f 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -13,7 +13,7 @@ ha_release: 0.29 ha_iot_class: "Local Polling" --- -The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://www.aliexpress.com/item/Newest-Original-Xiaomi-Flora-Monitor-Digital-Plants-Flowers-Soil-Water-Light-Tester-Sensor-Monitor-for-Aquarium/32685750372.html) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. +The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. Start a scan to determine the MAC addresses of the sensor: diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index ca8be055d12..0fb3ab1175f 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -25,14 +25,40 @@ sensor: state_topic: "home/bedroom/temperature" ``` -Configuration variables: - -- **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values. -- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. -- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. -- **expire_after** (*Optional*): Defines the number of seconds after the value expires if it's not updated. Default is 0 (=never expire). -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +{% configuration %} +state_topic: + description: The MQTT topic subscribed to receive sensor values. + required: true + type: string +name: + description: Name of the MQTT sensor. + required: false + type: string + default: MQTT Sensor +qos: + description: The maximum QoS level of the state topic. + required: false + type: int + default: 0 +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +expire_after: + description: Defines the number of seconds after the value expires if it's not updated. + required: false + type: int + default: 0 +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +force_update: + description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. + reqired: false + type: boolean + default: False +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown index 9dc0e763c1c..f672ff07291 100644 --- a/source/_components/sensor.openweathermap.markdown +++ b/source/_components/sensor.openweathermap.markdown @@ -30,7 +30,7 @@ sensor: ``` {% configuration %} - apk_key: + api_key: description: Your API key for OpenWeatherMap. required: true type: string diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 9f3da04c7ca..c496c7a0e0e 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -36,19 +36,65 @@ sensor: payload: '{ "device" : "heater" }' ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **method** (*Optional*): The method of the request. Default is `GET`. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. -- **payload** (*Optional*): The payload to send with a POST request. Depends on the service, but usually formed as JSON. -- **name** (*Optional*): Name of the REST sensor. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to `True`. -- **authentication** (*Optional*): Type of the HTTP authentication. `basic` or `digest`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **headers** (*Optional*): The headers for the requests. +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: The method of the request. + required: false + type: string + default: GET +name: + description: Name of the REST sensor. + required: false + type: string + default: REST Sensor +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +payload: + description: The payload to send with a POST request. Depends on the service, but usually formed as JSON. + required: false + type: string +verify_ssl: + description: Verify the certification of the endpoint. + required: false + type: boolean + default: True +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +headers: + description: The headers for the requests. + required: false + type: list, string +json_attributes: + description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. + reqired: false + type: list, string +force_update: + description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. + reqired: false + type: boolean + default: False +{% endconfiguration %}Make sure that the URL exactly matches your endpoint or resource. @@ -67,9 +113,7 @@ In this section you find some real life examples of how to use this sensor. ### {% linkable_title External IP address %} -You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their http://ip.jsontest.com/ endpoint. - -To display the IP address, the entry for a sensor in the `configuration.yaml` file will look like this. +You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their [http://ip.jsontest.com/](http://ip.jsontest.com/) URL. ```yaml sensor: @@ -83,8 +127,6 @@ sensor: The [glances](/components/sensor.glances/) sensor is doing the exact same thing for all exposed values. -Add something similar to the entry below to your `configuration.yaml` file: - ```yaml sensor: - platform: rest @@ -154,3 +196,63 @@ sensor: User-Agent: Home Assistant REST sensor ``` +### {% linkable_title Fetch multiple JSON values and present them as attibutes %} + +[JSON Test](http://www.jsontest.com) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/). + +{% raw %} +```yaml +sensor: + - platform: rest + name: JSON time + json_attributes: + - date + - milliseconds_since_epoch + resource: http://date.jsontest.com/ + value_template: '{{ value_json.time }}' + - platform: template + sensors: + date: + friendly_name: 'Date' + value_template: '{{ states.sensor.json_time.attributes["date"] }}' + milliseconds: + friendly_name: 'milliseconds' + value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}' +``` +{% endraw %} + +This sample fetches a weather report from [OpenWeatherMap](http://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/components/sensor.template/) sensors that monitor the attributes and present the values in a usable form. + +{% raw %} +```yaml +sensor: + - platform: rest + name: OWM_report + json_attributes: + - main + - weather + value_template: '{{ value_json["weather"][0]["description"].title() }}' + resource: http://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY + - platform: template + sensors: + owm_weather: + value_template: '{{ states.sensor.owm_report.attributes.weather[0]["description"].title() }}' + icon_template: '{{ "http://openweathermap.org/img/w/"+states.sensor.owm_report.attributes.weather[0]["icon"]+".png" }}' + entity_id: sensor.owm_report + owm_temp: + friendly_name: 'Outside temp' + value_template: '{{ states.sensor.owm_report.attributes.main["temp"]-273.15 }}' + unit_of_measurement: "°C" + entity_id: sensor.owm_report + owm_pressure: + friendly_name: 'Outside pressure' + value_template: '{{ states.sensor.owm_report.attributes.main["pressure"] }}' + unit_of_measurement: "hP" + entity_id: sensor.owm_report + owm_humidity: + friendly_name: 'Outside humidity' + value_template: '{{ states.sensor.owm_report.attributes.main["humidity"] }}' + unit_of_measurement: "%" + entity_id: sensor.owm_report +``` +{% endraw %} diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index ffa7310c2e1..47680c4e1af 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -40,6 +40,7 @@ sensor: - 'queue_remaining' - 'disk_size' - 'disk_free' + - 'queue_count' ``` Configuration variables: @@ -56,6 +57,7 @@ Configuration variables: - **queue_remaining**: Remaining elements in the queue - **disk_size**: Disk size of the storage location - **disk_free**: Free disk space at the storage location + - **queue_count**: Number of items in the queue Note that this will create the following sensors: @@ -66,6 +68,7 @@ Note that this will create the following sensors: - sensor.sabnzbd_left - sensor.sabnzbd_disk - sensor.sabnzbd_disk_free + - sensor.sabnzdb_queue_count ``` As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface. diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown index 2ab59be72c6..41e77ec52be 100644 --- a/source/_components/sensor.scrape.markdown +++ b/source/_components/sensor.scrape.markdown @@ -45,6 +45,7 @@ In this section you find some real life examples of how to use this sensor. Ther The current release Home Assistant is published on [https://home-assistant.io/](https://home-assistant.io/) +{% raw %} ```yaml sensor: # Example configuration.yaml entry @@ -52,13 +53,15 @@ sensor: resource: https://home-assistant.io name: Release select: ".current-version h1" - value_template: '{% raw %}{{ value.split(":")[1] }}{% endraw %}' + value_template: '{{ value.split(":")[1] }}' ``` +{% endraw %} ### {% linkable_title Available implementations %} Get the counter for all our implementations from the [Component overview](/components/) page. +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -66,8 +69,9 @@ sensor: resource: https://home-assistant.io/components/ name: Home Assistant impl. select: 'a[href="#all"]' - value_template: '{% raw %}{{ value.split("(")[1].split(")")[0] }}{% endraw %}' + value_template: '{{ value.split("(")[1].split(")")[0] }}' ``` +{% endraw %} ### {% linkable_title Get a value out of a tag %} @@ -109,3 +113,20 @@ sensor: select: 'enclosure:nth-of-type(1)' attribute: url ``` + +### {% linkable_title Energy price %} + +This example tries to retrieve the price for electricity. + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: scrape + resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/ + name: Electricity price + select: ".elspot-content" + value_template: '{{ value.split(" ")[0] }}' + unit_of_measurement: "öre/kWh" +``` +{% endraw %} diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 283e302217f..0cc01b8ade6 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -67,6 +67,7 @@ The table contains types and their argument to use in your `configuration.yaml` | memory_free | sensor.ram_available | | memory_use_percent | sensor.ram_used | | processor_use | sensor.cpu_used | +| disk_use | sensor.disk_used | ## {% linkable_title Linux specific %} diff --git a/source/_components/sensor.tahoma.markdown b/source/_components/sensor.tahoma.markdown new file mode 100644 index 00000000000..80cf6bc4ebb --- /dev/null +++ b/source/_components/sensor.tahoma.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Tahoma Sensor" +description: "Instructions how to integrate Tahoma sensors into Home Assistant." +date: 2017-07-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tahoma.png +ha_category: Cover +ha_release: 0.59 +--- + +To use your tahoma sensors in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +sensor: + platform: tahoma +``` diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown index 37229ebed40..227cc42f80a 100644 --- a/source/_components/sensor.temper.markdown +++ b/source/_components/sensor.temper.markdown @@ -22,18 +22,30 @@ sensor: - platform: temper ``` -Configuration option: - -- **name** (*Optional*): The name you would like to give the sensor in Home Assistant. -- **scale** (*Optional*): The scale for the sensor. -- **offset** (*Optional*): The offset to fix reported vales. +{% configuration %} +offset: + description: The offset to fix reported vales. + required: false + type: int + default: o +scale: + description: The scale for the sensor. + required: false + type: int + default: 1 +name: + description: The name to use when displaying this switch. + required: false + type: string + default: myStrom Switch +{% endconfiguration %} Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. The calculation follows the formula `scale * sensor value + offset`. The TEMPer sensors can only be accessed as root by default. To fix the USB permissions on your system create the file `/etc/udev/rules.d/99-tempsensor.rules` and add the following line to it: -``` +```text SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="7401", MODE="666" ``` diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 0811978b617..c5d5aba6cee 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -27,6 +27,7 @@ sensor: sensors: solar_angle: friendly_name: "Sun angle" + entity_id: sun.sun unit_of_measurement: 'degrees' value_template: "{{ states.sun.sun.attributes.elevation }}" diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown index de79cc87bd3..8a55a78dda7 100644 --- a/source/_components/sensor.yahoo_finance.markdown +++ b/source/_components/sensor.yahoo_finance.markdown @@ -14,6 +14,10 @@ featured: false ha_release: 0.29 --- +
+ This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017. A repleacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/). +
+ The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market. To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file: diff --git a/source/_components/skybell.markdown b/source/_components/skybell.markdown index b160a879231..4a7a2cfdac6 100644 --- a/source/_components/skybell.markdown +++ b/source/_components/skybell.markdown @@ -13,11 +13,11 @@ ha_release: 0.56 ha_iot_class: "Cloud Polling" --- -The `skybell` implementation allows you to integrate your [Skybell.com](https://skybell.com) doorbells in Home Assistant. +The `skybell` implementation allows you to integrate your [Skybell.com](http://www.skybell.com/) doorbells in Home Assistant. Currently only the Skybell HD is supported by this platform. -To enable devices set up with your [Skybell.com](https://skybell.com/) account, add the following to your `configuration.yaml` file: +To enable devices set up with your [Skybell.com](http://www.skybell.com/) account, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -26,9 +26,15 @@ skybell: password: secret ``` -Configuration variables: - -- **username** (*Required*): The username for accessing your Skybell account. -- **password** (*Required*): The password for accessing your Skybell account. +{% configuration %} +username: + description: The username for accessing your Skybell account. + required: true + type: string +password: + description: The password for accessing your Skybell account. + required: true + type: string +{% endconfiguration %} Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation. diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index ef4b7d04295..642faabf93d 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -12,26 +12,40 @@ ha_category: Voice ha_release: 0.48 --- -The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on Privacy. It runs 100% on-device, and does not require an Internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. +The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. + +The latest documentation can be found here: [Snips Platform Documentation](https://github.com/snipsco/snips-platform-documentation/wiki).  -Snips takes voice or text as input, and produces *intents* as output, which are explicit representations of an intention behind an utterance, and which can subsequently be used by Home Assistant to perform appropriate actions. +Snips takes voice or text as input and produces *intents* as output, which are explicit representations of an intention behind an utterance and which can subsequently be used by Home Assistant to perform appropriate actions.  ## {% linkable_title The Snips Voice Platform %} -### Installation +### {% linkable_title Installation %} -The Snips Voice Platform is installed on Raspberry Pi with the following command: +The Snips Voice Platform is installed as a Docker image on Raspberry Pi with the following command: -```sh +```bash (pi) $ curl https://install.snips.ai -sSf | sh ``` -### Creating an assistant +Snips can also be installed on a Debian/Ubuntu machine as well: + +```bash +$ sudo apt-get update +$ sudo apt-get install -y dirmngr +$ sudo bash -c 'echo "deb https://debian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list' +$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455 + +$ sudo apt-get update +$ sudo apt-get install -y snips-platform-voice +``` + +### {% linkable_title Creating an assistant %}+Full configuration details can be found on the main [Hive component](/components/hive/) page. +
+ + diff --git a/source/_components/switch.hook.markdown b/source/_components/switch.hook.markdown index 42903c50c7a..3ba23b8c19a 100644 --- a/source/_components/switch.hook.markdown +++ b/source/_components/switch.hook.markdown @@ -24,15 +24,17 @@ Configure with either your username/password or your API token for the official ```yaml # Example configuration.yaml entry -- platform: hook - username:Make sure that the URL matches exactly your endpoint or resource. diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index 73902df97f2..434a4c45639 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -51,7 +51,7 @@ Configuration variables: - **fire_event** (*Optional*): Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations.
-This component and the [rfxtrx binary sensor](/components/binary_sensor/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`. +This component and the [rfxtrx binary sensor](/components/binary_sensor.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`.
diff --git a/source/_components/switch.tplink.markdown b/source/_components/switch.tplink.markdown index f54235fede7..ee56f356880 100644 --- a/source/_components/switch.tplink.markdown +++ b/source/_components/switch.tplink.markdown @@ -32,9 +32,22 @@ switch: host: IP_ADDRESS ``` -Configuration variables: - -- **host** (*Required*): The IP address of your TP-Link switch, eg. `192.168.1.32`. -- **name** (*Optional*): The name to use when displaying this switch. +{% configuration %} +name: + description: The name to use when displaying this switch. + required: false + type: string + default: Random Sensor +host: + description: "The IP address of your TP-Link switch, eg. `192.168.1.32`." + required: true + type: string +enable_leds: + description: If the LEDs on the switch (WiFi and power) should be lit. + required: false + type: boolean + default: true +{% endconfiguration %} + diff --git a/source/_components/tahoma.markdown b/source/_components/tahoma.markdown new file mode 100644 index 00000000000..e6e272d8b48 --- /dev/null +++ b/source/_components/tahoma.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Tahoma" +description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." +date: 2017-07-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tahoma.png +ha_category: Hub +ha_release: 0.59 +--- + + +The `Tahoma` component platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds actually covers and the sun sensor from tahoma platform. + +To use your Tahoma devices in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +tahoma: + username: YOUR_USERNAME + password: YOUR_PASSWORD + exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent] +``` + +{% configuration %} +username: + description: Username for tahomalink.com + required: true + type: string +password: + description: Password for tahomalink.com + required: true + type: string +exclude: + description: Excludes devices + required: false + type: list +{% endconfiguration %} \ No newline at end of file diff --git a/source/_components/telegram_bot.broadcast.markdown b/source/_components/telegram_bot.broadcast.markdown index d743f1d8916..ee9d4032328 100644 --- a/source/_components/telegram_bot.broadcast.markdown +++ b/source/_components/telegram_bot.broadcast.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.48 --- diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/telegram_bot.polling.markdown index a938dca5c5d..15c4d26eb0b 100644 --- a/source/_components/telegram_bot.polling.markdown +++ b/source/_components/telegram_bot.polling.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.42 --- diff --git a/source/_components/telegram_bot.webhooks.markdown b/source/_components/telegram_bot.webhooks.markdown index 8b88dcb77ae..7821b03c009 100644 --- a/source/_components/telegram_bot.webhooks.markdown +++ b/source/_components/telegram_bot.webhooks.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.42 --- diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index f273af65e74..735593a0b19 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -13,25 +13,24 @@ featured: false ha_release: 0.11 --- -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. +The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. -To get started using Telldus Live, you will have to obtain developer keys from the [developer page](https://api.telldus.com/keys/index). ++If you are upgrading from 0.58 or older, you need to remove all Telldus configuration from your `configuration.yaml` file before continuing. +
-To integrate your Telldus Live with Home Assistant, add the following section to your `configuration.yaml` file: +Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/components/discovery/) component is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. + +To manually integrate your Telldus Live with Home Assistant, e.g. if your device is on another network or in another location, add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry tellduslive: - public_key: ABCDEFGHJKLMNOPQRSTUVXYZ - private_key: ABCDEFGHJKLMNOPQRSTUVXYZ - token: ABCDEFGHJKLMNOPQRSTUVXYZ - token_secret: ABCDEFGHJKLMNOPQRSTUVXYZ ``` Configuration variables: -- **public_key** (*Required*): The public key for the Telldus Live service. -- **private_key** (*Required*): The private key for the Telldus Live service. -- **token** (*Required*): The token for the Telldus Live service. -- **token_secret** (*Required*): The token secret for the Telldus Live service. +- **host** (*Optional*): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. +- **update_interval** (*Optional*): Interval (in seconds) for polling the Telldus Live server (or the local server). +The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account. diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index 652e77a15c4..de69aaffc3b 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -21,9 +21,15 @@ To get started, add the devices to your `configuration.yaml` file. tellstick: ``` +```yaml +# Example configuration.yaml entry for hass.io with TellStick add-on +tellstick: + host: core-tellstick + port: [50800, 50801] +``` Configuration variables: - **signal_repetitions** (*Optional*): Because the tellstick sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. Therefore you can configure the switch and light to try to send each signal repeatedly. - **host** (*Optional*): If you run tellstick on a other server or with a hass.io add-on. -- **port** (*Optional*): If needed with host config option. +- **port** (*Optional*): If needed with host config option. Must be port pair, for example `[50800, 50801]`. diff --git a/source/_components/tts.baidu.markdown b/source/_components/tts.baidu.markdown new file mode 100644 index 00000000000..e8499742fd8 --- /dev/null +++ b/source/_components/tts.baidu.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "Baidu Text-to-Speech" +description: "Instructions how to setup Baidu TTS with Home Assistant." +date: 2017-11-21 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: baiducloud.png +ha_category: Text-to-speech +ha_release: 0.59 +--- + +The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. + +To get started, add the following lines to your `configuration.yaml`: + +```yaml +#Example configuration.yaml entry +tts: + - platform: baidu + app_id: YOUR_APPID + api_key: YOUR_APIKEY + secret_key: YOUR_SECRETKEY +``` + +{% configuration %} +app_id: + description: The App ID for the use this service, must be already registered on Baidu. + required: true + type: string +api_key: + description: The API key from Baidu. + required: true + type: string +secret_key: + description: The secret key from Baidu. + required: true + type: string +speed: + description: Audio speed from 0 to 9. + required: false + type: int + default: 5 +pitch: + description: Audio pitch from 0 to 9. + required: false + type: int + default: 5 +volume: + description: Audio volume from 0 to 15. + required: false + type: int + default: 5 +person: + description: Voice type. You choose one from 0, 1, 3 or 4. + required: false + type: int + default: 0 +{% endconfiguration %} + diff --git a/source/_components/tts.google.markdown b/source/_components/tts.google.markdown index 50321b01045..cbed90dadad 100644 --- a/source/_components/tts.google.markdown +++ b/source/_components/tts.google.markdown @@ -24,7 +24,8 @@ tts: Configuration variables: -- **language** (*Optional*): The language to use. Defaults to `en`. +- **language** (*Optional*): The language to use. Defaults to `en`. + - [Complete list of supported languages](https://cloud.google.com/speech/docs/languages). A full configuration sample: @@ -35,7 +36,7 @@ tts: language: 'de' ``` -If you are using SSL certificate or Docker, you may need to add the `base_url` configuration variable to your `html` component as follows: +If you are using SSL certificate or Docker, you may need to add the `base_url` configuration variable to your `http` component as follows: ```yaml #Example configuration.yaml entry diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown index b55acbd0fac..036dfed524e 100644 --- a/source/_components/tts.microsoft.markdown +++ b/source/_components/tts.microsoft.markdown @@ -2,7 +2,7 @@ layout: page title: "Microsoft Text-to-Speech" description: "Instructions how to setup Microsoft Text-to-Speech with Home Assistant." -date: 2017-10-23 11:00 +date: 2017-11-07 12:00 sidebar: true comments: false sharing: true @@ -27,10 +27,13 @@ tts: Configuration variables: - **api_key** (*Required*): Your API key. -- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. -- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female` -- **type** (*Optional*): The voice type you want to use. Accepted values are listed in the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS` - +- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. Note that if you set the language to anything other than the default of `en-us`, you will need to specify a matching voice type as well. +- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female`. +- **type** (*Optional*): The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS`. +- **rate** (*Optional*): Change the rate of speaking in percentage. Example values: `25`, `50`. Defaults to `0` (no change). +- **volume** (*Optional*): Change the volume of the output in percentage. Example values: `-20`, `70`. Defaults to `0` (no change). +- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change). +- **contour** (*Optional*): Change the contour of the output in percentages. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0,0) (100,100)`. A full configuration sample including optional configuration variables: @@ -39,7 +42,11 @@ A full configuration sample including optional configuration variables: tts: - platform: microsoft api_key: XXXXXXXXX - language: en-us - gender: male - type: BenjaminRUS + language: en-gb + gender: Male + type: George, Apollo + rate: 20 + volume: -50 + pitch: high + contour: (0, 0) (100, 100) ``` diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown index 86991b94d52..4a5b9777b35 100644 --- a/source/_components/updater.markdown +++ b/source/_components/updater.markdown @@ -11,7 +11,7 @@ logo: home-assistant.png ha_category: Other --- -The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. +The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. As [Hass.io](/hassio/) has it's own schedule for release it doesn't make sense to use this component on Hass.io. The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data, please check the [detailed overview](/docs/backend/updater/). diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 6fa7f05a2a5..e14e1506578 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -104,7 +104,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode. ## {% linkable_title Attributes %} In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes), -(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and +(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and `params`), the `xiaomi` platform introduces specific attributes. These are: - `cleaning_time` @@ -121,7 +121,7 @@ The following table shows the units of measurement for each attribute: | Attribute | Unit of measurement | Description | |---------------------------|---------------------|-------------------------------------------------------| | `do_not_disturb` | | DND mode on / off | -| `cleaning_time` | minutes | Last / actual cleaning time in minutes | +| `cleaning_time` | minutes | Last / actual cleaning time in minutes | | `cleaned_area` | square meter | Last / actual cleaned area in square meters | | `main_brush_left` | hours | Hours left until a change of the main brush is needed | | `side_brush_left` | hours | Hours left until a change of the side brush is needed | @@ -151,6 +151,36 @@ To fetch the token follow these instructions depending on your mobile phone plat 6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. 8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. +#### {% linkable_title Linux and Android (not rooted) %} + +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. + +Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. + +```bash +$ sudo apt-get install libffi-dev libssl-dev +``` + +If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +``` + +To fetch the token follow these instructions depending on your mobile phone platform. + +1. Configure the robot with the Mi-Home app. +2. Enable developer mode, USB debugging and plug the Android phone into the computer. +3. Get ADB e.g. `apt-get install android-tools-adb` or `apt-get install adb` +4. `adb devices` should list your device. Consult ADB manual if necessary. +5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone) +6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download) +7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted) +8. Untar the unpacked data: `tar -xvf unpacked.tar` +9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name = "Mi Robot Vacuum";'` returns the token for your Xiaomi vacuum bot. + + #### {% linkable_title Linux and Android (rooted!) %} Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. diff --git a/source/_components/vera.markdown b/source/_components/vera.markdown index 670d0292c84..264f39157f7 100644 --- a/source/_components/vera.markdown +++ b/source/_components/vera.markdown @@ -14,7 +14,7 @@ ha_release: pre 0.7 The [Vera](http://getvera.com) hub is a controller mainly connecting to Z-Wave devices. -Switches, Lights (inc Dimmers), Locks, Sensors and Binary sensors are supported - and will be automatically added when HA connects to your Vera controller. +Switches, Lights (inc Dimmers), Locks, Sensors, Binary sensors, and Scenes are supported - and will be automatically added when HA connects to your Vera controller. To use Vera devices in your installation, add the following to your configuration.yaml file using the IP and port number of your Vera controller: diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown index acd511a037c..20b8fc51106 100644 --- a/source/_components/volvooncall.markdown +++ b/source/_components/volvooncall.markdown @@ -65,4 +65,5 @@ Configuration variables: - **service_url** (*Optional*): The service URL to use for Volvo On Call. Normally not neccessary to specify. - **name** (*Optional*): Make it possible to provide a name for the vehicles. - **resources** (*Optional*): A list of resources to display (defaults to all available). +- **scandinavian_miles** (*Optional*): If set to yes, Scandinavian miles ("mil") are used for distances and fuel range (defaults to no). diff --git a/source/_components/weather.ecobee.markdown b/source/_components/weather.ecobee.markdown new file mode 100644 index 00000000000..0f328309630 --- /dev/null +++ b/source/_components/weather.ecobee.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Ecobee Weather" +description: "Instructions how to setup the Ecobee weather within Home Assistant." +date: 2017-11-29 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ecobee.png +ha_category: Weather +ha_release: 0.59 +ha_iot_class: "Local Push" +--- + +To get your Ecobee weather component working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index 2e132faa878..2b142c434c4 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -56,7 +56,7 @@ To enable {{ page.title }} in your installation, add the following to your `conf ### {% linkable_title One Gateway %} ```yaml -# You can leave mac empty if you only have one gateway. +# You can leave MAC empty if you only have one gateway. xiaomi_aqara: discovery_retry: 5 gateways: @@ -66,7 +66,7 @@ xiaomi_aqara: ### {% linkable_title Multiple Gateways %} ```yaml -# 12 characters mac can be obtained from the gateway. +# 12 characters MAC can be obtained from the gateway. xiaomi_aqara: gateways: - mac: xxxxxxxxxxxx @@ -106,7 +106,7 @@ xiaomi_aqara: type: string default: any host: - description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. + description: The host/IP address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. required: false type: string {% endconfiguration %} @@ -115,7 +115,7 @@ xiaomi_aqara: The gateway provides the following services: -#### {% linkable_title Service xiaomi_aqara.play_ringtone %} +#### {% linkable_title Service `xiaomi_aqara.play_ringtone` %} Play a specific ringtone. The version of the gateway firmware must be `1.4.1_145` at least. Take a look at the examples below. @@ -155,7 +155,7 @@ Allowed values of the `ringtone_id` are: - 29 - Thinker - Custom ringtones (uploaded by the Mi Home app) starting from 10001 -#### {% linkable_title Service xiaomi_aqara.stop_ringtone %} +#### {% linkable_title Service `xiaomi_aqara.stop_ringtone` %} Stops a playing ringtone immediately. @@ -163,13 +163,13 @@ Stops a playing ringtone immediately. |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.add_device %} +#### {% linkable_title Service `xiaomi_aqara.add_device` %} | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.add_device %} +#### {% linkable_title Service `xiaomi_aqara.add_device` %} Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new device can be added afterwards by pressing the pairing button once. @@ -177,7 +177,7 @@ Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new de |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.remove_device %} +#### {% linkable_title Service `xiaomi_aqara.remove_device` %} Removes a specific device. The removal is required if a device shall be paired with another gateway. @@ -190,7 +190,7 @@ Removes a specific device. The removal is required if a device shall be paired w ### {% linkable_title Long Press on Smart Button %} -This example plays the sound of a dog barking when the button is held down, and stops the sound when the button is pressed once. +This example plays the sound of a dog barking when the button is held down and stops the sound when the button is pressed once. *Note: The sound will stop playing automatically when it has ended.* @@ -226,7 +226,7 @@ This example plays the sound of a dog barking when the button is held down, and ### {% linkable_title Initial setup problem %} -If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5. +If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn't work on an OnePlus 3, but it worked with a Nexus 5. ### {% linkable_title Connection problem %} @@ -238,11 +238,12 @@ If you run into trouble initializing the gateway with your app, try another smar That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall. - Make sure you have [enabled LAN access](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz). - Turn off the firewall on the system where Home Assistant is running. -- Ensure your router supports multicast as this is a requirement of the Xiaomi GW +- Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway. - Try to leave the MAC address `mac:` blank. - Try to set `discovery_retry: 10`. - Try to disable and then enable LAN access. - Hard reset the gateway: Press the button of the gateway 30 seconds and start again from scratch. - If you are using Home Assistant in [Docker](/docs/installation/docker/), make sure to use `--net=host`. -- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternativly an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. -- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g. `sudo apt-get install python3-dev libssl-dev libffi-dev`). +- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. +- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). + diff --git a/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown b/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown new file mode 100644 index 00000000000..6c873a0808e --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by chriskacerguis" +description: "" +date: 2017-12-12 09:14 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/chriskacerguis/Home-AssistantConfig +--- diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown index b8f5f8d59b8..800f2f3378d 100644 --- a/source/_cookbook/custom_panel_using_react.markdown +++ b/source/_cookbook/custom_panel_using_react.markdown @@ -18,7 +18,7 @@ This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC] - It uses the user configuration for the component in the `configuration.yaml` file for rendering. - It allows toggling the sidebar. -All you need is available as a [custom panel](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Download the file and save it in `- If your template trigger has no `entity_id` listed, then it is evaluted on *every* state change for *every* entity. Instead you should create a [template sensor](/components/sensor.template/) or [template binary sensor](/components/binary_sensor.template/) and use that in your automation. -
- -Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). +Template triggers work by evaluating a [template] on every state change for all of the recognized entities. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`) ```yaml automation: trigger: platform: template - entity_id: device_tracker.paulus value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}" ``` diff --git a/source/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown index 9f67cbdb2b5..6605b6e10b9 100644 --- a/source/_docs/autostart/init.d.markdown +++ b/source/_docs/autostart/init.d.markdown @@ -142,3 +142,94 @@ case "$1" in echo "Usage: $0 {start|stop|restart|install|uninstall}" esac ``` + +### {% linkable_title Python virtual environment %} + +```bash +#!/bin/sh +### BEGIN INIT INFO +# Provides: hass +# Required-Start: $local_fs $network $named $time $syslog +# Required-Stop: $local_fs $network $named $time $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Home\ Assistant +### END INIT INFO + +# /etc/init.d Service Script for Home Assistant +# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh +PRE_EXEC="cd /srv/homeassistant && python3 -m venv . && source bin/activate &&" +# Typically /usr/bin/hass +HASS_BIN="hass" +RUN_AS="USER" +PID_FILE="/var/run/hass.pid" +CONFIG_DIR="/home/USER/.homeassistant" +FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" +REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" + +start() { + if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then + echo 'Service already running' >&2 + return 1 + fi + echo 'Starting service…' >&2 + local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;" + su -s /bin/bash -c "$CMD" $RUN_AS + echo 'Service started' >&2 +} + +stop() { + if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then + echo 'Service not running' >&2 + return 1 + fi + echo 'Stopping service…' >&2 + kill $(cat "$PID_FILE") + while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; + echo 'Service stopped' >&2 +} + +install() { + echo "Installing Home Assistant Daemon (hass-daemon)" + echo "999999" > $PID_FILE + chown $RUN_AS $PID_FILE + mkdir -p $CONFIG_DIR + chown $RUN_AS $CONFIG_DIR +} + +uninstall() { + echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " + local SURE + read SURE + if [ "$SURE" = "yes" ]; then + stop + rm -fv "$PID_FILE" + echo "Notice: The config directory has not been removed" + echo $CONFIG_DIR + update-rc.d -f hass-daemon remove + rm -fv "$0" + echo "Home Assistant Daemon has been removed. Home Assistant is still installed." + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + install) + install + ;; + uninstall) + uninstall + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|install|uninstall}" +esac +``` diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index f4d3b25ff83..e1e1b6b4669 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -28,7 +28,7 @@ A service file is needed to control Home Assistant with `systemd`. The template ``` [Unit] Description=Home Assistant -After=network.target +After=network-online.target [Service] Type=simple @@ -46,7 +46,7 @@ If you've setup Home Assistant in `virtualenv` following our [Python installatio ``` [Unit] Description=Home Assistant -After=network.target +After=network-online.target [Service] Type=simple @@ -128,7 +128,7 @@ Because the log can scroll quite quickly, you can select to view only the error $ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error' ``` -When working on Home Assitant, you can easily restart the system and then watch the log output by combining the above commands using `&&` +When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using `&&` ```bash $ sudo systemctl restart home-assistant@[your user] && sudo journalctl -f -u home-assistant@[your user] diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 09feb26aabd..584014521f4 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -63,7 +63,7 @@ light: There are some rules for packages that will be merged: -1. Component names may only use the basic form (e.g. `switch` and `switch 1` or `switch aa` is not accepted). +1. Component names may only use the basic form (e.g. `switch`, but not `switch 1` or `switch aa`). 2. Platform based components (`light`, `switch`, etc) can always be merged. 3. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index c02fbb7f2a2..40feade2473 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -78,6 +78,7 @@ Home Assistant adds extensions to allow templates to access all of the current s - `relative_time(timestamp)` will format the date time as relative time vs now (ie 7 seconds) - `float` will format the output as float. - `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format]. +- `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter. - Filter `round(x)` will convert the input to a number and round it to `x` decimals. - Filter `timestamp_local` will convert an UNIX timestamp to local time/data. - Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data. @@ -254,6 +255,8 @@ The following overview contains a couple of options to get the needed values: # Math {% raw %}{{ value_json | float * 1024 }}{% endraw %} {% raw %}{{ float(value_json) * (2**10) }}{% endraw %} +{% raw %}{{ value_json | log }}{% endraw %} +{% raw %}{{ log(1000, 10) }}{% endraw %} # Timestamps {% raw %}{{ value_json.tst | timestamp_local }}{% endraw %} diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index e2a8d23d68f..ca2a59f65e4 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -58,7 +58,7 @@ This is also fairly easy to achieve with Home Assistant automations, but we are Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class FlashyMotionLights(appapi.AppDaemon): @@ -79,7 +79,7 @@ This is starting to get a little more complex in Home Assistant automations, req Now let's extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Let's warn someone inside the house that there has been motion outside by flashing a lamp on and off ten times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1-second timer to run `flash_warning()`, which, when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after ten iterations. ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class MotionLights(appapi.AppDaemon): diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 632457f28a9..4b54abe2d32 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -14,9 +14,21 @@ redirect_from: /getting-started/installation/ Beginners should check our [Getting started guide](/getting-started/) first. This is for users that require advanced installations. -Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows, we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**. +Home Assistant provides multiple ways to be installed. A requirement is that you have [Python 3.5+](https://www.python.org/downloads/) installed.-Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets. -
- -The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Jessie (Stretch is not supported at this time) connected to your network. - --Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel). -
- -Irrespective of whether you use SSH to connect to the Pi from another computer or not, you need SSH to install Home Assistant. So go ahead and enable SSH. - -* Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip` -* Run the following command: -- This command is a one-liner and not run as sudo. + The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another [installation method](https://home-assistant.io/getting-started/).
- -```bash -$ curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh -``` - -Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry Pi hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: `/home/pi/fabric-home-assistant/installation_report.txt` The installer has been updated to simply log any errors encountered, but resume installing. Please consult the "installation report" if your install encountered issues. - -[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=VGl3KTrYo6s) explaining how to install Raspbian on your Raspberry Pi and install Home Assistant using the All-In-One Installer. - -Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at [http://your_raspberry_pi_ip:8123](http://your_raspberry_pi_ip:8123). - -The Home Assistant configuration is located at `/home/homeassistant/.homeassistant` (or `/home/hass/.homeassistant` if installed prior to December 2016). The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/homeassistant/homeassistant_venv`. As part of the secure installation, a new user (**homeassistant**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user. - -- *Windows users*: Setting up WinSCP to allow this seemlessly is at the end of this page. -
- -By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag `-n` to the end of the install command specified above. - -The All-In-One Installer script will do the following automatically: - -* Create all needed directories -* Create needed service accounts -* Install OS and Python dependencies -* Setup a python virtualenv to run Home Assistant and components inside. -* Run as `homeassistant` service account -* Install Home Assistant in a virtualenv -* Install Mosquitto with websocket support running on ports 1883 and 9001 -* Build and Install Python-openzwave in the Home Assistant virtualenv -* Build OpenZWave Control Panel in `/srv/homeassistant/src/open-zwave-control-panel` -* Add Home Assistant to systemd services to start at boot - -### {% linkable_title Upgrading %} - -To upgrade the All-In-One setup manually: - -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash homeassistant` -* Change to virtual environment `source /srv/homeassistant/homeassistant_venv/bin/activate` -* Update Home Assistant `pip3 install --upgrade homeassistant` -* Type `exit` to logout the hass user and return to the `pi` user. - -- If OZWCP is running really slow verify that your not running Home Assistant or have another page running OZWCP open or strange errors might occur. -
- --Don't check the USB box regardless of using a USB based device. -
- -### {% linkable_title Using the GPIOs %} - -The (**homeassistant**) user is added to the GPIO group as part of the install now. - -### {% linkable_title WinSCP %} - -If you are Windows users who is using [WinSCP](https://winscp.net/), please note that after running the installer, you will need to modify settings allowing you to "switch users" to edit your configuration files. - -First create a new session on WinSCP using Protocol **SCP** pointing to your Pi IP address and port 22 and then modify the needed setting by click on **Advanced...** -> **Environment** -> **SCP/Shell** -> **Shell** and selecting `sudo su -`. diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index 88279081331..a23aa31b27f 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -11,7 +11,7 @@ redirect_from: /getting-started/updating/ ----The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant). +The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
View what's new in the latest version and potential impacts on your system [here](https://github.com/home-assistant/home-assistant/releases). @@ -25,7 +25,7 @@ $ pip3 install --upgrade homeassistant After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well.-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSIO](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv). +To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/installation/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index ffcfff5c9ab..d6f26a0b063 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -9,99 +9,60 @@ sharing: true footer: true redirect_from: /getting-started/installation-virtualenv/ --- --Beginners should check our [getting started guide](/getting-started/) first. + +If you already have Python 3.5 or later installed, you can easily give Home Assistant a spin. + +It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most unix like systems. + +_(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`.)_ + +### {% linkable_title Install %} + + 1. Create a virtual environment in your current directory: + ``` + $ python3 -m venv homeassistant + ``` + 2. Open the virtual environment: + ``` + $ cd homeassistant + ``` + 3. Activate the virtual environment: + ``` + $ source bin/activate + ``` + 4. Install Home Assistant: + ``` + $ python3 -m pip install homeassistant + ``` + 5. Configure it to [autostart](docs/autostart/) + 6. Or run Home Assistant manually: + ``` + $ hass --open-ui + ``` + +### {% linkable_title Upgrade %} + + 1. Stop Home Assistant + + 2. Open the directory where the virtual environment is located: + ``` + $ cd homeassistant + ``` + 3. Activate the virtual environment: + ``` + $ source bin/activate + ``` + 4. Upgrade Home Assistant: + ``` + $ python3 -m pip install --upgrade homeassistant + ``` + 5. Start Home Assistant + +### {% linkable_title Notes %} + +- In the future, if you want to start Home Assistant manually again, follow step 2, 3 and 5. +- It's recommanded to run Home Assistant as a dedicated user. + +
+Looking for more advanced guides? Check our [Rasbian guide](/docs/installation/raspberry-pi/) or the [other installation guides](/docs/installation/].
- -There are several reasons why it makes sense to run Home Assistant in a virtual environment. A [virtualenv](https://virtualenv.pypa.io/en/latest/) encapsulates all aspect of a Python environment within a single directory tree. That means the Python packages you install for Home Assistant won't interact with the rest of your system and vice-versa. It means a random upgrade for some other program on your computer won't break Home Assistant, and it means you don't need to install Python packages as root. - -Virtualenvs are pretty easy to setup. We'll be using Debian in this example (as many Home Assistant users are running Raspbian on a Raspberry Pi), but all of the Python related steps should be the same on just about any platform. - -### {% linkable_title Basic guide %} - -The basic guide is for testing Home Assistant. Also check the advanced guide for instances used in production. - -## {% linkable_title Step 1: Install dependencies %} - -```bash -$ sudo apt-get update -$ sudo apt-get upgrade -$ sudo apt-get install python3-pip python3-dev -$ sudo pip3 install --upgrade virtualenv -``` - -## {% linkable_title Step 2: Setup virtualenv %} - -```bash -$ python3 -m venv $HOME/homeassistant -``` - -## {% linkable_title Step 3: Install or update Home Assistant %} - -```bash -$ source $HOME/homeassistant/bin/activate -(homeassistant)$ pip3 install --upgrade homeassistant -``` - -## {% linkable_title Step 4: Run Home Assistant %} - -```bash -$ $HOME/homeassistant/bin/hass -``` - -### {% linkable_title Advanced guide %} -## {% linkable_title Separate user & group for Home Assistant (Basic guide step 2) %} - -It's a good idea to give services like Home Assistant their own user. It gives you more granular control over permissions, and reduces the exposure to the rest of your system in the event there is a security related bug in Home Assistant. This is a reasonably Linux oriented step, and will look different on other operating systems (or even other Linux distributions). - -```bash -$ sudo adduser --system homeassistant -$ sudo addgroup homeassistant -``` - -Home Assistant stores its configuration in `$HOME/.homeassistant` by default, so in this case, it would be in `/home/homeassistant/.homeassistant`. - -If you plan to use a Z-Wave controller, you will need to add this user to the `dialout` group: - -```bash -$ sudo usermod -G dialout -a homeassistant -``` - -## {% linkable_title Custom installation directory for Home Assistant (Basic guide step 2) %} - -This can be anywhere you want. We chose to put it in `/srv`. You also need to change the ownership of the directory to the user you created above. - -```bash -$ sudo mkdir /srv/homeassistant -$ sudo chown homeassistant:homeassistant /srv/homeassistant -$ python3 -m venv /srv/homeassistant -``` - -## {% linkable_title Install or update Home Assistant %} - -This is obviously only necessary if you created a `homeassistant` user, but if you did, be sure to switch to that user whenever you install things in your virtualenv, otherwise you'll end up with mucked up permissions. - -```bash -$ sudo su -s /bin/bash homeassistant -``` - -The `su` command means 'switch' user. We use the '-s' flag because the `homeassistant` user is a system user and doesn't have a default shell by default (to prevent attackers from being able to log in as that user). - -```bash -$ source /srv/homeassistant/bin/activate -(homeassistant)$ pip3 install --upgrade homeassistant -``` - -## {% linkable_title Run Home Assistant (Basic guide step 4) %} - -There are two ways to launch Home Assistant. If you are **in** the virtualenv, you can just run `hass` and it will work as normal. If the virtualenv is not activated, you just use the `hass` executable in the `bin` directory mentioned earlier. There is one caveat... Because Home Assistant stores its configuration in the user's home directory, we need to be the user `homeassistant` or specify the configuration with `-c`. - -```bash -$ sudo -u homeassistant -H /srv/homeassistant/bin/hass -``` - -The `-H` flag is important. It sets the `$HOME` environment variable to `/home/homeassistant` so `hass` can find its configuration. - -## {% linkable_title Starting Home Assistant on boot %} - -The [autostart instructions](/getting-started/autostart/) will work just fine, just be sure to replace `/usr/bin/hass` with `/srv/homeassistant/bin/hass` and specify the `homeassistant` user where appropriate. diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown index 899040bc125..3554d44737a 100644 --- a/source/_docs/installation/windows.markdown +++ b/source/_docs/installation/windows.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python for https://www.python.org/downloads/windows/ and follow the instructions of the installer. +To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. Start @@ -23,5 +23,5 @@ For autostarting Home Assistant please refer to this [guide](https://community.h Check this [video](https://www.youtube.com/watch?v=X27eVvuqwnY) for the installation on Windows 10.-The Microsoft Windows platform is not a primary target to install home Assistant. Also, not all tools and third-party modules will work. +The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work.
diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 98c9ffc9008..c6a68fb3c65 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -20,7 +20,7 @@ Before configuring the Z-Wave setup, please take a moment and read [this article Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. -There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. +There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. There is also a limit of 4 hops for Z-Wave, so placing the controller as centrally as you can is important. The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits. diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index e3bf3fae81b..101fb4a6b27 100644 --- a/source/_docs/z-wave/adding.markdown +++ b/source/_docs/z-wave/adding.markdown @@ -28,7 +28,7 @@ When you add a device, it may initially appear without a specific entity ID (eg ## {% linkable_title Adding Secure Devices %} -Security Z-Wave devices require a network key - you must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. To add (include) a secure Z-Wave device: +Security Z-Wave devices require a network key. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a "theft protection" feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network. To add (include) a secure Z-Wave device: 1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend 2. Click the **Add Node Secure** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index b3eb7f50e8c..c33375f242b 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -54,7 +54,9 @@ This is a dropdown where you can select all the entities of this node. Once sele * **Refresh Entity** to refresh just that entity's values * **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc) -Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network. +Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. + +The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval. You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. @@ -110,6 +112,25 @@ You can set the *wakeup* interval (in seconds) of the device, this is shown for Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. +## {% linkable_title Node user codes %} + +If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Bellow the input you will see your actual code. For normal nodes this is as follows: +```yaml +\x30 = 0 +\x31 = 1 +\x32 = 2 +\x33 = 3 +\x34 = 4 +\x35 = 5 +\x36 = 6 +\x37 = 7 +\x38 = 8 +\x39 = 9 +``` +Some non compliant device like tag readers, have implemented to use raw hex code. +Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/ + + ## {% linkable_title OZW Log %} If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log. diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index e4661474918..22a4a6d89e8 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -61,6 +61,10 @@ $ sudo systemctl disable hciuart Finally, reboot to make those changes active. It's been reported that this is also required on the Pi2. ++ If you've installed the Z-Way software, you'll need to ensure you disable it before you install Home Assistant or you won't be able to access the board. Do this with `sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable`. +
+ ### {% linkable_title Aeon Minimote %} Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. @@ -74,7 +78,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 1 - - id: mini_1_held alias: 'Minimote Button 1 Held' trigger: @@ -83,7 +86,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 2 - - id: mini_2_pressed alias: 'Minimote Button 2 Pressed' trigger: @@ -92,7 +94,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 3 - - id: mini_2_held alias: 'Minimote Button 2 Held' trigger: @@ -101,7 +102,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 4 - - id: mini_3_pressed alias: 'Minimote Button 3 Pressed' trigger: @@ -110,7 +110,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 5 - - id: mini_3_held alias: 'Minimote Button 3 Held' trigger: @@ -119,7 +118,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 6 - - id: mini_4_pressed alias: 'Minimote Button 4 Pressed' trigger: @@ -128,7 +126,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 7 - - id: mini_4_held alias: 'Minimote Button 4 Held' trigger: @@ -211,7 +208,19 @@ Below is a table of the action/scenes for the Wallmote (as a reference for other **Action**|**scene\_id**|**scene\_data** :-----:|:-----:|:-----: -Button one single tap|1|TBC -Button two single tap|2|TBC -Button three single tap|3|TBC -Button four single tap|4|TBC +Button one single tap|1|0 +Button one hold|1|2 +Button one release|1|1 +Button two single tap|2|0 +Button two hold|2|2 +Button two release|2|1 +Button three single tap|3|0 +Button three hold|3|2 +Button three release|3|1 +Button four single tap|4|0 +Button four hold|4|2 +Button four release|4|1 + +### {% linkable_title Zooz Toggle Switches %} + +Some models of the Zooz Toggle switches ship with an instruction manual with incorrect instruction for Z-Wave inclusion/exclusion. The instructions say that the switch should be quickly switched on-off-on for inclusion and off-on-off for exclusion. However, the correct method is on-on-on for inclusion and off-off-off for exclusion. diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown index d18e7e39047..b5a597b4ebf 100644 --- a/source/_docs/z-wave/entities.markdown +++ b/source/_docs/z-wave/entities.markdown @@ -119,7 +119,7 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso - **254**: Deep sleep - **255**: Case open -If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: +If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: ``` binary_sensor: @@ -128,10 +128,10 @@ binary_sensor: YOUR_SENSOR: friendly_name: "Friendly name here" value_template: >- - {% raw %}{%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%} - on + {% raw %}{%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%} + true {%- else -%} - off + false {%- endif -%}{% endraw %} ``` @@ -147,7 +147,7 @@ binary_sensor: - **254**: Deep sleep - **255**: Case open -If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: +If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: ``` binary_sensor: @@ -157,9 +157,9 @@ binary_sensor: friendly_name: "Friendly name here" value_template: >- {% raw %}{%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%} - on + true {%- else -%} - off + false {%- endif -%}{% endraw %} ``` diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 4765ecb07be..15b87957cb0 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -159,7 +159,7 @@ To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add th ```yaml zwave: - usb_path: /dev/ttyACM0 + usb_path: /dev/ttyAMA0 ``` For some devices the `/dev/ttyAMA0` device is not detected by udev and is therefore not mapped by Docker. To explicitly set this device for mapping to Home-Assistant, execute the following command using the ssh add-on: @@ -188,6 +188,12 @@ An easy script to generate a random key: cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` +```yaml +# Example configuration.yaml entry for network_key +zwave: + network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c" +``` + Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. ## {% linkable_title First Run %} diff --git a/source/_posts/2017-11-29-hassio-virtual-machine.markdown b/source/_posts/2017-11-29-hassio-virtual-machine.markdown new file mode 100644 index 00000000000..2f53ef97d9d --- /dev/null +++ b/source/_posts/2017-11-29-hassio-virtual-machine.markdown @@ -0,0 +1,153 @@ +--- +layout: post +title: "Set up Hass.io on top of a virtual machine" +description: "A how-to about using Hass.io on x86_64 hardware in a virtualized way." +date: 2017-11-29 06:00:00 +0000 +date_formatted: "November 29, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: How-To +og_image: /images/blog/2017-11-hassio-virtual/social.png +--- + + +The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with [Hass.io](/hassio/). For a test or if you have a system which is already hosting virtual machines then the [**Hass.io installer**](/hassio/installation/#alternative-install-on-generic-linux-server) is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with [libvirt](https://libvirt.org/) support and the guest will be running Debian 9. Hass.io will be installed on the guest. + + + +Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally. + +```bash +$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer +``` + +We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system. + +```bash +$ sudo virt-builder debian-9 \ + --output /var/lib/libvirt/images/hassio.img \ + --format qcow2 \ + --size 10G \ + --root-password password:test123 \ + --hostname hassio \ + --firstboot-command "dpkg-reconfigure openssh-server" +[...] +[ 147.6] Finishing off + Output file: /var/lib/libvirt/images/hassio.img + Output size: 10.0G + Output format: qcow2 + Total usable space: 9.3G + Free space: 8.1G (87%) +``` + +Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`. + +```bash +$ sudo virt-install --name hassio --import --ram 1024 \ + --os-variant debian9 -w bridge=bridge0 \ + --autostart --disk /var/lib/libvirt/images/hassio.img +``` + +
+
+ Hass.io virtual machine in Virtual Machine Manager
+
+
+ Screenshot of the color wheel.
+
+
+ Screenshot of the of the Enitity Picker.
+