From 6bfd606ebaf66bc6857d3b6103a5bfac5ca8ed3e Mon Sep 17 00:00:00 2001 From: Luca Adrian Lindhorst Date: Wed, 7 Mar 2018 03:55:24 +0100 Subject: [PATCH 01/50] - Updated howto for google_assistant setup, the process is now easier, so some steps could be removed. --- source/_components/google_assistant.markdown | 76 +++++++------------- 1 file changed, 25 insertions(+), 51 deletions(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 50c311a624e..910008678dc 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -135,58 +135,32 @@ If you're not using Linux, you can use sites such as [this one](https://www.brow ### {% linkable_title Setup %} -1. Download the [gactions CLI](https://developers.google.com/actions/tools/gactions-cli) to be used later. You can download and run this anywhere and on any machine. Just remember where you put it for later and don't forget to run `chmod +x gactions` to make it executable on Mac or Linux. -2. Create a new file named `project.json` (in the same directory you downloaded `gactions` to) and replace the `[YOUR HOME ASSISTANT URL:PORT]` below with the URL you use to access Home Assistant. - Note: This must be an HTTPS URL to work. Don't forget to include the port number if you're not using port 443. - -```json -{ - "actions": [{ - "name": "actions.devices", - "deviceControl": { - }, - "fulfillment": { - "conversationName": "automation" - } - }], - "conversations": { - "automation": - { - "name": "automation", - "url": "https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant" - } - } -} -``` - -3. Create a new project in the [developer console](https://console.actions.google.com/). +1. Create a new project in the [developer console](https://console.actions.google.com/). a. Add/Import project - b. Go to Build under the Actions SDK box - c. 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 in a console 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 it on Linux or Windows). 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: 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`. If you have set `api_password:` add this password to the URL `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth?api_password=[YOUR API PASSWORD]`) - 4. Configure your client. Add scopes for `email` and `name`. - 5. Testing instructions: Enter anything. It 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 component 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 household users to control the devices: - 1. Go to the developer console using the address from point 4. - 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 `google_assistant.request_sync` service, to update devices without unlinking and relinking, 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 + b. Click on `BUILD` on the `Smart home` card + c. Type in your home assistant url: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable. + d. Click `Done` +2. 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. +3. The final item on that page `Account linking` is required for your app to interact with Home Assistant. + a. Grant type: `Implicit` + b. Client ID: The `client_id` from your Home Assistant configuration above + c. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth`. If you have set `api_password:` add this password to the URL `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth?api_password=[YOUR API PASSWORD]`) + d. Configure your client. Add scopes for `email` and `name`. + e. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. +4. 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). +5. If you haven't already added the component configuration to `configuration.yaml` and restarted Home Assistant, you'll be unable to continue until you have. +6. Open the Google Assistant app and go into `Settings > Home Control` +7. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you the screen where you can set rooms for your devices or nicknames for your devices. +8. If you want to allow other household users to control the devices: + a. Go to the developer console using the address from point 4. + b. Under the gear icon, click `Permissions` + c. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role + d. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point +9. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: + a. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) + b. Select your project and click Enable Homegraph API + c. Go to Credentials and select API Key from Create Credentials + d. Note down the generated API Key and use this in the configuration ### {% linkable_title Troubleshooting the request_sync service %} From fdcf17802dac8d047d28fbdff1f51a41b6bcae1f Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 9 Mar 2018 19:05:29 +0100 Subject: [PATCH 02/50] Xiaomi MiIO Light: Flag the device as unavailable if not reachable (#4699) * Configuration key "model" and "xiaomi_miio_set_delayed_turn_off" service added. * Service parameter renamed. * New device model (philips.light.zyceiling) added. * Service parameter updated. * Format of the services updated. Configuration schema added. * Missing supported device added. --- source/_components/light.xiaomi_miio.markdown | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index b1428017a5e..3af241a04e9 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -13,7 +13,7 @@ ha_version: 0.53 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp and Xiaomi Philips LED Ceiling Lamp. +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2. Currently, the supported features are `on`, `off`, `set_cct` (colortemp) , `set_bright` (brightness). @@ -28,12 +28,34 @@ light: name: Xiaomi Philips Smart LED Ball host: 192.168.130.67 token: YOUR_TOKEN + model: philips.light.bulb ``` Configuration variables: - **host** (*Required*): The IP of your light. - **token** (*Required*): The API token of your light. - **name** (*Optional*): The name of your light. +- **model** (*Optional*): The model of your light. Valid values are `philips.light.bulb`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. + +{% configuration %} +host: + description: The IP address of your device. + required: true + type: string +token: + description: The API token of your device. + required: true + type: string +name: + description: The name of your device. + required: false + type: string + default: Xiaomi Philips Light +model: + description: The model of your device. + required: false + type: string +{% endconfiguration %} ## {% linkable_title Platform Services %} @@ -43,5 +65,14 @@ Set one of the 4 available fixed scenes. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific light. Else targets all. | +| `entity_id` | yes | Only act on a specific light. Else targets all. | | `scene` | no | Scene, between 1 and 4. | + +### {% linkable_title Service `light.xiaomi_miio_set_delayed_turn_off` %} + +Delayed turn off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `time_period` | no | Time period for the delayed turn off. | From 82398a9bc9b75bc0207b441edb57962ba56fc1fe Mon Sep 17 00:00:00 2001 From: Bertbert <7685189+bertbert72@users.noreply.github.com> Date: Fri, 9 Mar 2018 18:07:09 +0000 Subject: [PATCH 03/50] =?UTF-8?q?Add=20=E2=80=98unit=5Fsystem=E2=80=99=20c?= =?UTF-8?q?onfiguration=20variable=20(#4469)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add ‘unit_system’ configuration variable * Update sensor.fitbit.markdown --- source/_components/sensor.fitbit.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/sensor.fitbit.markdown index 1da5a518367..4ea3e71cd4d 100644 --- a/source/_components/sensor.fitbit.markdown +++ b/source/_components/sensor.fitbit.markdown @@ -36,6 +36,7 @@ Configuration variables: - **monitored_resources** (*Optional*): Resource to monitor. Defaults to `activities/steps`. - **clock_format** (*Optional*): Format to use for `sleep/startTime` resource. Accepts `12H` or `24H`. Defaults to `24H`. +- **unit_system** (*Optional*): Unit system to use for measurements. Accepts `default`, `metric`, `en_US` or `en_GB`. Defaults to `default`. Below is the list of resources that you can add to `monitored_resources`. One sensor is exposed for every resource. From 19001f9e242cc9982192e83ea483c4d89e40d863 Mon Sep 17 00:00:00 2001 From: karlkar Date: Fri, 9 Mar 2018 19:07:41 +0100 Subject: [PATCH 04/50] Added support for multiple onvif profiles (#4445) * Added support for multiple onvif profiles Related to pull request https://github.com/home-assistant/home-assistant/pull/11651 * :pencil2: Spelling & grammar fixes * Removed info about profile data in attribute Removed information about profile data in attributes, as it is not going to be implemented. --- source/_components/camera.onvif.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index f4281405bc8..6b772dfda60 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -30,9 +30,12 @@ Configuration variables: - **name** (*Optional*): Override the name of your camera. - **username** (*Optional*): The username for the camera. - **password** (*Optional*): The password for the camera. -- **port** (*Optional*): The port for the camera. This defaults to 5000 +- **port** (*Optional*): The port for the camera. This defaults to 5000. +- **profile** (*Optional*): Video profile that will be used to obtain the stream. This defaults to 0. More details below. - **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g. image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg). +Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. + ### {% linkable_title Service `camera.onvif_ptz` %} If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera. From 6536b74aa4b50de4c76a246c6139d051e67d7657 Mon Sep 17 00:00:00 2001 From: Jeroen ter Heerdt Date: Fri, 9 Mar 2018 19:09:31 +0100 Subject: [PATCH 05/50] Redesign of Egardia component and platform. (#4803) * Updating docs related to PR #11994. * Update binary_sensor.egardia.markdown * Update binary_sensor.egardia.markdown * Update egardia.markdown * Update egardia.markdown --- .../alarm_control_panel.egardia.markdown | 56 +--------------- .../binary_sensor.egardia.markdown | 19 ++++++ source/_components/egardia.markdown | 67 +++++++++++++++++++ 3 files changed, 88 insertions(+), 54 deletions(-) create mode 100644 source/_components/binary_sensor.egardia.markdown create mode 100644 source/_components/egardia.markdown diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown index 3fdd4d57532..314a1fcd11b 100644 --- a/source/_components/alarm_control_panel.egardia.markdown +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -12,57 +12,5 @@ ha_release: 0.51 ha_category: Alarm --- -The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/[Woonveilig](http://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. - -You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account. - -To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: egardia - host: YOUR_HOST - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel. -- **username** (*Required*): Username for the Egardia/Woonveilig account. -- **password** (*Required*): Password for Egardia/Woonveilig account. -- **version** (*Optional*): The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. Defaults to `GATE-01`. -- **port** (*Optional*): The port of the alarm panel. Defaults to 80. -- **name** (*Optional*): Name to use for the alarm panel. Defaults to `Egardia`. -- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`. -- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 52010. -- **report_server_codes** list (*Optional*): List of codes for the different states. - -Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers. -You can change this, however, using the following procedure. This is a more advanced configuration. - -1. Log in into your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. -1. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. -1. On your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. You will need the codes to include in your configuration.yaml. Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage. **Before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** -1. Once you have the codes, update your `configuration.yaml`: - ```yaml - # Example configuration.yaml entry - alarm_control_panel: -  - platform: egardia -   host: YOUR_HOST -   username: YOUR_USERNAME -   password: YOUR_PASSWORD - report_server_enabled: True - report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010) - report_server_codes: - arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - home: XXXXXXXXXXXXXXXX - triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - ignore: XXXXXXXXXXXXXXXX - ``` - -Note that for *triggered*, *arm* and *disarm* multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as *ignore* (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur. - -5. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl). +The `egardia` platform allows you to integrate your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) alarm control panel in Home Assistant. +You will need to set up your [Egardia hub](/components/egardia/). diff --git a/source/_components/binary_sensor.egardia.markdown b/source/_components/binary_sensor.egardia.markdown new file mode 100644 index 00000000000..8df482bf5bf --- /dev/null +++ b/source/_components/binary_sensor.egardia.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Egardia Binary Sensor" +description: "Instructions how to integrate Egardia / Woonveilig binary sensors into Home Assistant." +date: 2018-03-02 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: egardia.png +ha_release: 0.65 +ha_category: Binary Sensor +ha_iot_class: "Polling" +--- + +The `egardia` platform allows you to get data from your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) binary sensors from within Home Assistant. +Currently only door contacts are supported. IR sensors are not supported and will probably never be since their status cannot be read outside of the alarm control panel. Smoke sensors and others might be added but currently are not supported. + +You will need to set up your [Egardia hub](/components/egardia/). diff --git a/source/_components/egardia.markdown b/source/_components/egardia.markdown new file mode 100644 index 00000000000..068920b8ab4 --- /dev/null +++ b/source/_components/egardia.markdown @@ -0,0 +1,67 @@ +--- +layout: page +title: "Egardia" +description: "Instructions how to setup Egardia / Woonveilig within Home Assistant." +date: 2018-03-02 09:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +ha_release: 0.65 +logo: egardia.png +--- + +The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/[Woonveilig](http://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default). + +You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account. + +To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +egardia: + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel. +- **username** (*Required*): Username for the Egardia/Woonveilig account. +- **password** (*Required*): Password for Egardia/Woonveilig account. +- **version** (*Optional*): The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. Defaults to `GATE-01`. +- **port** (*Optional*): The port of the alarm panel. Defaults to 80. +- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`. +- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 52010. +- **report_server_codes** list (*Optional*): List of codes for the different states. + +Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers. +You can change this, however, using the following procedure. This is a more advanced configuration. + +1. Log in to your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. +2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. +3. The Egardia component relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e. the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia component to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** +4. Once you have the codes, update your `configuration.yaml`: + ```yaml + # Example configuration.yaml entry + egardia: +   host: YOUR_HOST +   username: YOUR_USERNAME +   password: YOUR_PASSWORD + report_server_enabled: True + report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010) + report_server_codes: + arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + armhome: XXXXXXXXXXXXXXXX + triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + ignore: XXXXXXXXXXXXXXXX + ``` + +Note that for all code groups (*arm*,*disarm*, etc) multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as *ignore* (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur. + +5. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl). + + From 086811ddcf46ffb9ec2edac0ad46f544e2759059 Mon Sep 17 00:00:00 2001 From: Teemu R Date: Fri, 9 Mar 2018 19:28:40 +0100 Subject: [PATCH 06/50] Add sony songpal docs (#4570) * add sony songpal docs * use configuration, add a title for configuration section * remove oxford comma, add link to media_player's services * add entity_id desc for service * be more descriptive which devices are supported * Update songpal supported devices + bump version * discoverY * Update media_player.songpal.markdown * Fix invalid syntax --- .../_components/media_player.songpal.markdown | 68 ++++++++++++++++++ source/images/supported_brands/sony.png | Bin 0 -> 7152 bytes 2 files changed, 68 insertions(+) create mode 100644 source/_components/media_player.songpal.markdown create mode 100644 source/images/supported_brands/sony.png diff --git a/source/_components/media_player.songpal.markdown b/source/_components/media_player.songpal.markdown new file mode 100644 index 00000000000..65874f99b26 --- /dev/null +++ b/source/_components/media_player.songpal.markdown @@ -0,0 +1,68 @@ +--- +layout: page +title: "Sony SongPal compatible devices" +description: "Instructions how to integrate Sony Songpal devices into Home Assistant." +date: 2018-02-03 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: sony.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.65 +--- + +The `songpal` platform allows you to control Sony's Songpal ("[Audio Control API](https://developer.sony.com/develop/audio-control-api/)") compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant. + +Even when the API officially supports only a few devices (HT-ST5000, HT-MT500, HT-CT800, SRS-ZR5 and STR-DN1080), it has also been confirmed to work on others. [The list of supported devices](http://vssupport.sony.net/en_ww/device.html) from Sony's Songpal website lists devices which are likely to be compatible with this platform. + +If the platform works with your non-listed device, or you encounter bugs, please feel free to [report them upstream](https://github.com/rytilahti/python-songpal). + +A few notes: + +- The quick start-up mode has to be enabled in order to turn the device on. +- Supports currently only one output terminal, i.e. the volume control works only on the first volume controller as reported by the backend library. +- Some devices, e.g. HT-XT3, do not support decreasing the volume step-by-step correctly. +- Feel free to improve the available services! + +## {% linkable_title Configuration %} + +The platform will be loaded automatically by discovery component. If you want to manually configure it, add the following to your `configuration.yaml` file: + +```yaml +media_player: + - platform: songpal + name: my soundbar + endpoint: http://IP_ADDRESS:10000/sony +``` + +{% configuration %} +name: + description: The name to display for this device. + required: false + type: string +endpoint: + description: API endpoint of the device. + required: true + type: string +{% endconfiguration %} + +See [python-songpal's documentation](https://github.com/rytilahti/python-songpal#locating-the-endpoint) how to get your API endpoint. + +## {% linkable_title Services %} + +In addition to the general [media player services](https://home-assistant.io/components/media_player/#services), the following services are provided: + +### {% linkable_title Service `media_player/songpal_set_sound_setting` %} + +For a list of available settings and their values use [`songpal sound`](https://github.com/rytilahti/python-songpal#sound-settings) command. + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------| +| `entity_id` | yes | Target entity, leave unset for all devices | +| `name` | no | Configuration variable, e.g. `nightmode` | +| `value` | no | New configuration value, e.g. `on` | + + + diff --git a/source/images/supported_brands/sony.png b/source/images/supported_brands/sony.png new file mode 100644 index 0000000000000000000000000000000000000000..78a8e8440b1a2c18c03bf7c2791ac9de0f673b1d GIT binary patch literal 7152 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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 mI4v+aR4_F Date: Fri, 9 Mar 2018 10:33:56 -0800 Subject: [PATCH 07/50] Add Camera Proxy documentation (#4863) * Add Camera Proxy documentation * Minor typos * Update camera.proxy.markdown --- source/_components/camera.proxy.markdown | 61 ++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 source/_components/camera.proxy.markdown diff --git a/source/_components/camera.proxy.markdown b/source/_components/camera.proxy.markdown new file mode 100644 index 00000000000..41719935d39 --- /dev/null +++ b/source/_components/camera.proxy.markdown @@ -0,0 +1,61 @@ +--- +layout: page +title: "Camera Proxy" +description: "Instructions how to integrate a camera proxy within Home Assistant." +date: 2018-03-08 19:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Camera +ha_release: 0.65 +--- + + +The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. + +The current post-processing supports resizing the image/MJPEG as well as limiting the maximum refresh rate. + +The current proxy capabilities are intended to reduce the camera bandwidth for slower internet connections. + +To enable this camera in your installation, you must first have an existing working camera configured in Home Assistant. Next, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: proxy + entity_id: camera. + max_stream_width: 360 + max_image_width: 720 +``` + +Configuration variables: + +- **entity_id** (*Required*): The ID of another Home Assistant camera to post-process. +- **name** (*Optional*): This parameter allows you to override the name of your camera. +- **max_image_width** (*Optional*): The maximum width of single images taken from the camera (aspect ratio will be maintained). +- **max_stream_width** (*Optional*): The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained). +- **image_quality** (*Optional*): The quality level used for resulting JPEG for snapshots (default: 75). +- **stream_quality** (*Optional*): The quality level used for resulting MJPEG streams (default: 75). +- **image_refresh_rate** (*Optional*): The minimum time in seconds between generating successive image snapshots. +- **force_resize** (*Optional*): Resize the image even if the resulting image would take up more bandwidth than the original. +- **cache_images** (*Optional*): Preserve the last image and re-send in the case the camera is not responding. + + +## {% linkable_title Examples %} + +Example of using a Camera proxy along with a Foscam camera: + +```yaml +camera: + - platform: foscam + ip: 192.168.1.10 + username: foscam_camera + password: camera_password + name: mycamera + - platform: proxy + entity_id: camera.mycamera + max_stream_width: 360 + max_image_width: 480 + image_refresh_rate: 5.0 +``` From 074bc50664aaf2e344989472f6fda24a38179e7b Mon Sep 17 00:00:00 2001 From: Timmo <28114703+timmo001@users.noreply.github.com> Date: Sat, 10 Mar 2018 17:12:36 +0000 Subject: [PATCH 08/50] Added three new sensors (#4873) New sensor documentation for https://github.com/home-assistant/home-assistant/pull/13026 --- source/_components/sensor.glances.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown index 03b25369a74..77b87011468 100644 --- a/source/_components/sensor.glances.markdown +++ b/source/_components/sensor.glances.markdown @@ -58,6 +58,9 @@ sensor: - 'process_thread' - 'process_sleeping' - 'cpu_temp' + - 'docker_active' + - 'docker_cpu_use' + - 'docker_memory_use' ``` Configuration variables: @@ -81,5 +84,8 @@ Configuration variables: - **process_thread**: Number of threads - **process_sleeping**: Number of sleeping processes - **cpu_temp**: CPU Temperature (may not available on all platforms) + - **docker_active**: Count of active Docker containers + - **docker_cpu_use**: Total CPU usage in percent of Docker containers + - **docker_memory_use**: Total memory used of Docker containers Not all platforms are able to provide all metrics. For instance `cpu_temp` is requires installing and configuring `lmsensors` in Ubuntu, and may not be available at all in other platforms. From 80a42eb899c60f2a458de51f4b98e66a6e62c561 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 11 Mar 2018 15:37:02 -0700 Subject: [PATCH 09/50] Update the used Ruby version --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index 58073ef8d7f..35cee72dcbf 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.1 \ No newline at end of file +2.4.3 From 91b5ca95119e48e74566ecddf78c6a20675850fb Mon Sep 17 00:00:00 2001 From: c727 Date: Mon, 12 Mar 2018 11:54:41 +0100 Subject: [PATCH 10/50] Added instructions for custom UIs to show up in the HA dev info panel (#4903) * Update frontend_creating_custom_ui.markdown Added instructions for custom UIs to show up in the HA dev info panel https://github.com/home-assistant/home-assistant-polymer/pull/981 * Use note class * Update frontend_creating_custom_ui.markdown --- .../frontend_creating_custom_ui.markdown | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown index c9da0cf1e22..d28623e8da1 100644 --- a/source/developers/frontend_creating_custom_ui.markdown +++ b/source/developers/frontend_creating_custom_ui.markdown @@ -53,6 +53,20 @@ frontend: ``` +

+Some browsers don't support latest ECMAScript standards, these require a separate ES5 compatible file (`extra_html_url_es5`). +

For more possibilities, see the [Custom UI section](/cookbook/#user-interface) on our Examples page. From 0dbbfb785dfa5b773bfbdff89abb9f12344cc35c Mon Sep 17 00:00:00 2001 From: Federico Zivolo Date: Mon, 12 Mar 2018 20:33:13 +0100 Subject: [PATCH 11/50] docs: Added api_version doc for philips_js (#4904) * docs: Added api_version doc for philips_js * Update media_player.philips_js.markdown --- source/_components/media_player.philips_js.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.philips_js.markdown b/source/_components/media_player.philips_js.markdown index 2db2fe8ded3..e776db61a36 100644 --- a/source/_components/media_player.philips_js.markdown +++ b/source/_components/media_player.philips_js.markdown @@ -30,3 +30,4 @@ Configuration variables: - **host** (*Required*): IP address of TV. - **name** (*Optional*): The name you would like to give to the Philips TV. - **turn_on_action** (*Optional*): A script that will be executed to turn on the TV (can be used with wol). +- **api_version** (*Optional*): The JointSpace API version of your Philips TV, defaults to `1`. This is an experimental option and not all the functionalities are guaranteed to work with API versions different from `1`. From fec18d3a8f43dbb0908982609842a1b09c794006 Mon Sep 17 00:00:00 2001 From: themanieldaniel Date: Tue, 13 Mar 2018 16:38:31 -0400 Subject: [PATCH 12/50] Update backup_usb.markdown (#4634) * Update backup_usb.markdown * :pencil2: Minor improvements --- .../ecosystem/backup/backup_usb.markdown | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/source/_docs/ecosystem/backup/backup_usb.markdown b/source/_docs/ecosystem/backup/backup_usb.markdown index 6bd62768830..182c5b44c46 100644 --- a/source/_docs/ecosystem/backup/backup_usb.markdown +++ b/source/_docs/ecosystem/backup/backup_usb.markdown @@ -9,11 +9,12 @@ sharing: true footer: true --- -Backing up your Home Assistant configuration to USB drive. A good plus side is that you don't need to mask all your passwords since the backup is locally at your home/residence. +This will step you through the process of setting up a backup of your Home Assistant configuration to a USB device. This is a good method if you don't want to mask all of your passwords since the backup is kept locally at your home/residence. ### {% linkable_title Requirements %} -First you need a USB drive. Once you have one you need to prepare it to be used on your device. -Once connected you want to format/work with the drive. To know what path it is in, you can check with `dmesg`. + +First, you need a USB drive. It should be formatted properly for your device and connected to your device before beginning. Any type of partition will work, but Linux filesystems are preferred so that you can set permissions. +Once connected you want to mount the drive. To find the path where it is located, you can use the `dmesg` command. ```bash # dmesg | grep sd @@ -32,16 +33,17 @@ Once connected you want to format/work with the drive. To know what path it is i [726259.209004] sd 0:0:0:0: [sda] Attached SCSI removable disk ``` -Here we see we have a drive on `/dev/sda1`. We assume you created a partition on the drive to start with. This can be any type of partition. Preferred is a Linux filesystem type so you can set permissions! +The device here is `sda` and our partition is `sda1`. So our partition is located here `/dev/sda1`. Mount the drive (as root) to `/media` ```bash -# mount /dev/sda1 /media/ +# sudo mount /dev/sda1 /media/ ``` -### {% linkable_title Prepare USB Stick %} -Change into it and create a folder called `hassbackup` and change the ownership to the user that runs Home Assistant. In my case group and user are both `homeassistant`. +### {% linkable_title Prepare the USB Device %} + +Change to the `/media` directory and create a folder called `hassbackup`. Change the ownership to the user that runs Home Assistant. In this example case, the user and group are both `homeassistant`. ```bash # cd /media/ @@ -54,11 +56,10 @@ drwxr-xr-x 22 root root 4096 Mar 22 18:37 .. drwxr-xr-x 2 homeassistant homeassistant 4096 Apr 29 10:36 hassbackup drwx------ 2 root root 16384 Apr 29 10:18 lost+found ``` -You can ignore 'lost+found'. ### {% linkable_title Install Dependency %} -In order to preserve space on your drive we use zip. Install that too. +The script in the next section uses zip to preserve space on your drive. So we will install zip next. ```bash /media# apt-get install zip @@ -68,9 +69,9 @@ Building dependency tree Setting up zip (3.0-8) ... ``` -### {% linkable_title Install and run script %} +### {% linkable_title Download and Run Script %} -Become the `homeassistant` user and place the following [script](https://gist.github.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0) to a place of your liking. +Become the `homeassistant` user (or whatever user runs Home Assistant). Change to whatever directory you would like the [script](https://gist.github.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0) placed into and run the following command. ```bash # wget https://gist.githubusercontent.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0/raw/86727d4e72e9757da4f68f1c9d784720e72d0e99/usb_backup.sh @@ -82,7 +83,7 @@ Make the downloaded script executable. # chmod +x usb_backup.sh ``` -Open up the file and change the paths you want to use, then simply run the `./usb_backup.sh`. +Edit the script file using your preferred text editor (use nano if you are not advanced). Change the paths to reflect your configuration, then simply run `./usb_backup.sh`. ```bash $ .homeassistant/extraconfig/shell_code/usb_backup.sh @@ -91,26 +92,27 @@ $ .homeassistant/extraconfig/shell_code/usb_backup.sh [i] Keeping all files no prunning set ``` -### {% linkable_title Crontab %} -In order for this to automatically make a backup every night at 3 am, you can add a crontab for it as the `homeassistant` user. -Change below path to where you placed the `usb_backup.sh` and run the following line. +### {% linkable_title Set Up Crontab %} + +To automatically backup your configuration on a schedule, you can add a crontab for it as the `homeassistant` user. +Change the path below to the directory where you placed the `usb_backup.sh` and run the following line. This will backup every night at 3 am. ```bash (crontab -l 2>/dev/null; echo "0 3 * * * /home/homeassistant/.homeassistant/extraconfig/shell_code/usb_backup.sh") | crontab - ``` -### {% linkable_title Auto mount %} +### {% linkable_title Auto Mount the USB Device %} -This does not automatically mount your USB drive at boot. You need to do that manually or add a line to your `/etc/fstab` file. +NOTE: This does not automatically mount your USB drive at boot. You will need to manually mount your drive after each boot or add a line to your `/etc/fstab` file. -If your drive is on `/dev/sda1`, you could add an entry to your `/etc/fstab` like so: - -```text -/dev/sda1 /media ext4 defaults,noatime 0 1 -``` - -Manual step to mount the USB drive: +To manually mount a USB drive located at `/dev/sda1`, run the following line: ```bash # mount /dev/sda1 /media ``` + +Alternatively, auto-mount the drive by adding the following entry to your `/etc/fstab`: + +```text +/dev/sda1 /media ext4 defaults,noatime 0 1 +``` From 5a5d9c8d4e99178f8990915df895bfabc86792a3 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 13 Mar 2018 17:24:17 -0400 Subject: [PATCH 13/50] Remove Z-Wave old entity IDs (#4749) --- source/_docs/z-wave/control-panel.markdown | 2 -- source/_docs/z-wave/installation.markdown | 5 ----- 2 files changed, 7 deletions(-) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 400a6b6d4c6..8550f12679e 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -82,10 +82,8 @@ This will display the Z-Wave related information about the node: * **lastResponseRTT** The Round Trip Time of the response to the last request * **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave * **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher -* **new_entity_id** In 0.47, Home Assistant introduced a new naming convention for entities, this shows the new naming convention * **node_id** The unique node ID of this node * **node_name** The base name of this node, this is used to build the entity ID of all entities of this node -* **old_entity_id** If `new_entity_ids: false` has been configured, then this is the entity_id that will be used. Support for this will be removed in the future * **product_name** The product name of the device, as supplied by OpenZWave * **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details) * **receivedCnt** The number of messages received from the device diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 5974c16a201..3223208b9fb 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -77,11 +77,6 @@ debug: required: false type: boolean default: False -new_entity_ids: - description: Switch to new entity_id generation. - required: false - type: boolean - default: True device_config / device_config_domain / device_config_glob: description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. required: false From 6ee7e31359a9bc9f4d6f0a782194c10b0baa7753 Mon Sep 17 00:00:00 2001 From: JC Connell Date: Wed, 14 Mar 2018 03:18:08 -0400 Subject: [PATCH 14/50] Update sensor.spotcrime.markdown (#4840) * Update sensor.spotcrime.markdown Changes the documentation to reflect the user supplied API key requirement. * Change description and sample Added optional keys to description and removed optional keys from sample --- source/_components/sensor.spotcrime.markdown | 48 +++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/source/_components/sensor.spotcrime.markdown b/source/_components/sensor.spotcrime.markdown index 98e2b7ee409..b36d01b4b46 100644 --- a/source/_components/sensor.spotcrime.markdown +++ b/source/_components/sensor.spotcrime.markdown @@ -8,13 +8,13 @@ comments: false sharing: true footer: true ha_category: Sensor -ha_release: 0.64 +ha_release: 0.65 ha_iot_class: "Cloud Polling" --- The `spotcrime` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Spot Crime](http://spotcrime.com). Your regional emergency services may or may not report data. The sensor defaults to counting incidents within one day, but can be customized via configuration.yaml. -## Configuration +You will need to request an API key from [Spotcrime](mailto:pyrrhus@spotcrime.com). To enable this sensor, add the following lines to your `configuration.yaml`. Your `radius` should be of sufficient size to capture incidents in your area. 0.01 = 1 mile. @@ -23,23 +23,39 @@ sensor: - platform: spotcrime name: radius: - days: + api_key: <"your_api_key_here"> ``` -Configuration options for the Crime Reports Sensor: +{% configuration %} +name: + description: Name the sensor what you'd like. + required: true + type: string +radius: + description: Radius you'd like to search within. 0.01 = 1 mile. + required: true + type: float +api_key: + description: The API key to access the service. + required: true + type: string +days: + description: Number of days you'd like see to crime statistics for. + required: false + type: int +include: + description: Event types you want statistics for. + required: false + type: list +exclude: + description: Event types to ignore statistics for. + required: false + type: list +{% endconfiguration %} -- **name** (*Required*): Name the sensor whatever you want. -- **radius** (*Required*): Radius in miles. -- **days** (*Optional*): Defaults to 1 day. -- **latitude** (*Optional*): Defaults to your home zone latitude. -- **longitude** (*Optional*): Defaults to your home zone longitude. -- **include** (*Optional*): List of incident types to include. -- **exclude** (*Optional*): List of incident types to exclude. +## {% linkable_title Notes %} - -## Notes - -### Incident Types +### {% linkable_title Incident Types %} You can explicitly include or exclude incident types. Specifying `include`s restricts the incidents to those types. Specifying `exclude`s will return all incident types except those specified. @@ -55,6 +71,6 @@ These incident types are available: - Vandalism - Other -### Events +### {% linkable_title Events %} The `crimealerts` sensor fires a `crimealerts_incident` event when a new incident is detected, including the type, time, and location of the incident. From 3ddfa61ad5fcca01bf5879c8182304245395f9ae Mon Sep 17 00:00:00 2001 From: Mark Perdue Date: Wed, 14 Mar 2018 07:36:12 -0400 Subject: [PATCH 15/50] Add VeSync documentation and image (#4864) * Add VeSync documentation and image * Adds fix for TravisCI error endconfiguration * :pencil2: Tiny updates --- source/_components/switch.vesync.markdown | 36 ++++++++++++++++++++++ source/images/supported_brands/vesync.png | Bin 0 -> 52019 bytes 2 files changed, 36 insertions(+) create mode 100644 source/_components/switch.vesync.markdown create mode 100644 source/images/supported_brands/vesync.png diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown new file mode 100644 index 00000000000..d3b59716362 --- /dev/null +++ b/source/_components/switch.vesync.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "VeSync Switch" +description: "Instructions on how to set up Etekcity VeSync switches within Home Assistant." +date: 2018-03-09 02:11 +sidebar: true +comments: false +sharing: true +footer: true +logo: vesync.png +ha_category: Switch +ha_release: 0.66 +--- + +The `vesync` switch platform enabled integration with Etekcity VeSync smart switches. + +To use your VeSync switches, you must first register your switches with the VeSync app. Once registration is complete you must add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: vesync + username: username + password: password +``` + +{% configuration %} +username: + description: Username needed to log in to VeSync. + required: true + type: string +password: + description: Password needed to log in to VeSync. + required: true + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/vesync.png b/source/images/supported_brands/vesync.png new file mode 100644 index 0000000000000000000000000000000000000000..72aba904138e7c78967e93f0dfaefd5b9de896e6 GIT binary patch literal 52019 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 Date: Thu, 15 Mar 2018 01:04:01 +0200 Subject: [PATCH 16/50] Update downloader.markdown (#4916) * Update downloader.markdown Add description for new events that are emitted when download is requested. * :pencil2: Small fixes --- source/_components/downloader.markdown | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/_components/downloader.markdown b/source/_components/downloader.markdown index 53063587d69..469c13d2b79 100644 --- a/source/_components/downloader.markdown +++ b/source/_components/downloader.markdown @@ -42,3 +42,29 @@ This will download the file from the given URL. | `subdir` | yes | Download into subdirectory of **download_dir** | | `filename` | yes | Determine the filename. | | `overwrite` | yes | Whether to overwrite the file or not, defaults to `false`. | + +### {% linkable_title Download Status Events %} + +When a download finished successfully, Home Assistant will emit a 'downloader_download_completed' event to the event bus which you can use to write automations against. +In case download failed another event 'downloader_download_failed' is emitted to indicate that the download did not complete successfully. + +Along with the event the following payload parameters are available: + +| Parameter | Description | +|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `url` | The `url` that was requested.| +| `filename` | The `name` of the file that was being downloaded.| + +#### Example Automation: + +```yaml +- alias: Download Failed Notification + trigger: + platform: event + event_type: downloader_download_failed + action: + service: persistent_notification.create + data_template: + message: "{{trigger.event.data.filename}} download failed" + title: "Download Failed" + ``` From 9c20af02fac6aa5cf795507d80a2b6ae60efbfe9 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Thu, 15 Mar 2018 03:16:30 +0100 Subject: [PATCH 17/50] Homekit: Updated docs for Restructure PR (#4915) * Homekit: Updated docs for Restructure PR * Added considerations * Removed QR Code --- source/_components/homekit.markdown | 147 +++++++++++++++++++++++++--- 1 file changed, 131 insertions(+), 16 deletions(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index ebb4b6ccd44..4ed321f4bb5 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -12,7 +12,7 @@ ha_release: 0.64 logo: apple-homekit.png --- -The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they could be controlled from Apple `Home` app and `Siri`. +The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they could be controlled from Apple `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later. {% configuration %} homekit: @@ -20,18 +20,55 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap required: true type: map keys: - pincode: - description: Pin code required during setup of HomeKit Home Assistant accessory. The format needs to be 'XXX-XX-XXX' where X is a number between 0 and 9. + auto_start: + description: Flag if the HomeKit Server should start automatically after the Home Assistant Core Setup is done. ([Disable Auto Start](#disable-auto-start)) required: false - type: string - default: '"123-45-678"' + type: boolean + default: true port: description: Port for the HomeKit extension. required: false type: int - default: 51826 + default: 51827 + filter: + description: Filter entities to available in the `Home` app. ([Configure Filter](#configure-filter)) + required: false + type: map + keys: + include_domains: + description: Domains to be included. + required: false + type: list + include_entities: + description: Entities to be included. + required: false + type: list + exclude_domains: + description: Domains to be excluded. + required: false + type: list + exclude_entities: + description: Entities to be excluded. + required: false + type: list + entity_config: + description: Configuration for specific entities. All subordinate keys are the corresponding entity ids to the domains, e.g. `alarm_control_panel.alarm`. + required: false + type: map + keys: + alarm_control_panel: + description: Additional options for `alarm_control_panel` entities. + required: false + type: map + keys: + code: + description: Code to arm or disarm the alarm in the frontend. + required: false + type: string + default: '' {% endconfiguration %} + ## {% linkable_title Setup %} To enable the `HomeKit` component in Home Assistant, add the following to your configuration file: @@ -39,18 +76,78 @@ To enable the `HomeKit` component in Home Assistant, add the following to your c ```yaml # Example for HomeKit setup homekit: - pincode: '123-45-678' ``` -

It is not recommended to choose '123-45-678' as your pin code!

- -After Home Assistant has started, all supported entities (see the [list](#supported-components) below which components are already integrated) will be exposed to `HomeKit`. To add them: -1. Open the `Home` App. -2. Choose `Add Accessory` and then `Don't Have a Code or Can't Scan?`. -3. The `Home Assistant` Bridge should be listed there. Select it and follow the instructions to complete setup. +After Home Assistant has started, the entities specified by the filter are exposed to `HomeKit` if the are [supported](#supported-components). To add them: +1. Open the Home Assistant frontend. A new card will display the `pin code`. +1. Open the `Home` app. +2. Choose `Add Accessory`, than select `Don't Have a Code or Can't Scan?` and enter the `pin code`. +4. Confirm the you are adding an `Uncertified Accessory` by clicking on `Add Anyway`. +5. Follow the setup be clicking on `Next` and lastly `Done` in the top right hand corner. +6. The `Home Assistant` Bridge and the Accessories should now be listed in the `Home` app. After the setup is completed you should be able to control your Home Assistant components through `Home` and `Siri`. + +## {% linkable_title Considerations %} + + +### {% linkable_title Accessory ID %} + +Currently this component uses the `entity_id` to generate a unique `accessory id (aid)` for `HomeKit`. The `aid` is used to identify a device and save all configurations made for it. This however means that if you decide to change an `entity_id` all configurations for this accessory made in the `Home` app will be lost. + +### {% linkable_title Persistence Storage %} + +Unfortunately `HomeKit` doesn't support any kind of persistence storage, only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not setup, their config will be deleted. (State unknown or similar will not cause any issues.) + +A common situation might be if you decide to disable parts of the configuration for testing. Please make sure to disable `auto start` and `turn off` the `Start HomeKit` automation (if you have one). + + +## {% linkable_title Disable Auto Start %} + +Depending on your individual setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully setup when the `HomeKit` component is started, can be added. To start `HomeKit` when `auto_start: False`, you can call the service `homekit.start`. + +This can be automated using an `automation`. + +{% raw %} +```yaml +# Example for Z-Wave +homekit: + auto_start: False + +automation: + - alias: 'Start HomeKit' + trigger: + - platform: event + event_type: zwave.network_ready + action: + - service: homekit.start +``` +{% endraw %} + +{% raw %} +```yaml +# Example using a delay after start of Home Assistant +homekit: + auto_start: False + +automation: + - alias: 'Start HomeKit' + trigger: + - platform: homeassistant + event: start + action: + - delay: 00:05 # Waits 5 minutes + - service: homekit.start +``` +{% endraw %} + + +## {% linkable_title Configure Filter %} + +To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. By default no entity will be excluded. Keep in mind though that only supported components can be added. + + ## {% linkable_title Supported Components %} The following components are currently supported: @@ -59,8 +156,26 @@ The following components are currently supported: | --------- | --------- | ----------- | | alarm_control_panel | SecuritySystem | All security systems. | | climate | Thermostat | All climate devices. | -| cover | Window | All covers that support `set_cover_position`. | +| cover | WindowCovering | All covers that support `set_cover_position`. | | sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement`. | -| switch/remote | Switch | All switches or remotes (represented as switches). | +| switch / remote | Switch | All switches or remotes (represented as switches). | -

Currently only devices that are setup when Home Assistant is starting can be exposed to `HomeKit`. This means that especially `Z-Wave` components are currently not supported, since they will be setup afterwards. We are working on a solution for this problem.

+ +## {% linkable_title Error reporting %} + +If you encounter any issues or bug and want to report them on `GitHub`, please follow these steps to make it easier for others to help and get your issue solved. + +1. Enable debugging mode: +```yaml +logger: + default: warning + logs: + homeassistant.components.homekit: debug +``` +2. Reproduce the bug / problem you have encountered. +3. Stop Home Assistant and copy the log from the log file. That is necessary since some errors only get logged, when Home Assistant is being shutdown. +4. Follow this link: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component: homekit) and open a new issue. +5. Fill out all fields and especially include the following information: + - The configuration entries for `homekit` and the `component` that is causing the issue. + - The log / traceback you have generated before. + - Screenshots of the failing entity in the `states` panel. From e050bcaa61844388b570f9e4ceff32860ca4015a Mon Sep 17 00:00:00 2001 From: Kane610 Date: Thu, 15 Mar 2018 04:07:56 +0100 Subject: [PATCH 18/50] Document support for consumption and power sensors (#4917) --- source/_components/deconz.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index abebcec8039..184e553f194 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -32,9 +32,11 @@ deconz: #### {% linkable_title Supported Device types %} - [Zigbee Lights](/components/light.deconz/) +- [Consumption Sensors](/components/sensor.deconz/) - [Humidity Sensors](/components/sensor.deconz/) - [Light Level Sensors](/components/sensor.deconz/) - [OpenClose Detectors](/components/binary_sensor.deconz/) +- [Power Sensors](/components/sensor.deconz/) - [Presence Detectors](/components/binary_sensor.deconz/) - [Pressure Sensors](/components/sensor.deconz/) - [Switches (Remote Controls)](/components/sensor.deconz/) From fd27ef1749b3fef072db6d77cc7909a62edf033f Mon Sep 17 00:00:00 2001 From: PhracturedBlue Date: Wed, 14 Mar 2018 20:41:03 -0700 Subject: [PATCH 19/50] Use configuration template (#4920) --- source/_components/camera.proxy.markdown | 51 +++++++++++++++++++----- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/source/_components/camera.proxy.markdown b/source/_components/camera.proxy.markdown index 41719935d39..c5e92bc3d20 100644 --- a/source/_components/camera.proxy.markdown +++ b/source/_components/camera.proxy.markdown @@ -29,17 +29,46 @@ camera: max_image_width: 720 ``` -Configuration variables: - -- **entity_id** (*Required*): The ID of another Home Assistant camera to post-process. -- **name** (*Optional*): This parameter allows you to override the name of your camera. -- **max_image_width** (*Optional*): The maximum width of single images taken from the camera (aspect ratio will be maintained). -- **max_stream_width** (*Optional*): The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained). -- **image_quality** (*Optional*): The quality level used for resulting JPEG for snapshots (default: 75). -- **stream_quality** (*Optional*): The quality level used for resulting MJPEG streams (default: 75). -- **image_refresh_rate** (*Optional*): The minimum time in seconds between generating successive image snapshots. -- **force_resize** (*Optional*): Resize the image even if the resulting image would take up more bandwidth than the original. -- **cache_images** (*Optional*): Preserve the last image and re-send in the case the camera is not responding. +{% configuration %} + entity_id: + description: The ID of another Home Assistant camera to post-process. + required: true + type: string + name: + description: This parameter allows you to override the name of your camera. + required: false + type: string + max_image_width: + description: The maximum width of single images taken from the camera (aspect ratio will be maintained). + required: false + type: integer + max_stream_width: + description: The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained). + required: false + type: integer + image_quality: + description: The quality level used for resulting JPEG for snapshots. + required: false + type: integer + default: 75 + stream_quality: + description: The quality level used for resulting MJPEG streams. + required: false + type: integer + default: 75 + image_refresh_rate: + description: The minimum time in seconds between generating successive image snapshots. + required: false + type: float + force_resize: + description: Resize the image even if the resulting image would take up more bandwidth than the original. + required: false + type: boolean + cache_images: + description: Preserve the last image and re-send in the case the camera is not responding. + required: false + type: boolean +{% endconfiguration %} ## {% linkable_title Examples %} From 33e7be6bc313d99f6dd925bc08284cbb2fc7bdcb Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Thu, 15 Mar 2018 21:57:38 +0100 Subject: [PATCH 20/50] Added cover group platform (#4638) * Added doc for MultiCover * Added parameter description * entity_id_regex * Removed winter protection * Changed to 'group' platform * Changed 'Group Cover' to 'Cover Group' * :pencil2: Small grammar fix * :arrow_up: Updated ha_release. --- source/_components/cover.group.markdown | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 source/_components/cover.group.markdown diff --git a/source/_components/cover.group.markdown b/source/_components/cover.group.markdown new file mode 100644 index 00000000000..c29b4b46a1d --- /dev/null +++ b/source/_components/cover.group.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Cover Group" +description: "Instructions how to setup grouped covers in Home Assistant." +date: 2018-02-11 10:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Cover +ha_release: 0.66 +ha_iot_class: "Local Push" +logo: home-assistant.png +--- + +The `group` platform can create a cover that combines several cover entities into one. + +To enable `Cover Groups` in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +cover: + - platform: group + entities: + - cover.hall_window + - cover.living_room_window +``` + +{% configuration %} + name: + description: Name to use in the frontend. + required: false + type: string + default: "Cover Group" + entities: + description: List of all cover entities you want to control. + required: true + type: [string | list] +{% endconfiguration %} + +## {% linkable_title Functionality %} + +It works best if you group covers with the same supported features together (like support for `open`/`close`/`stop`/`position`/`tilt controls`), but is not limited to it. In case you have bundled covers with different features together, the controls will only affect those covers that support the actions. From e23f5de59017a29738eecd710d5a84c38890f132 Mon Sep 17 00:00:00 2001 From: Gerard Date: Thu, 15 Mar 2018 23:24:57 +0100 Subject: [PATCH 21/50] Documentation for extra sensors BMW Connected Drive (#4733) * Documentation for extra sensors BMW Connected Drive * Updates to logo, category and HA release * :arrow_up: ha_release * :arrow_up: ha_release --- ...binary_sensor.bmw_connected_drive.markdown | 20 +++++++++++++++++++ .../lock.bmw_connected_drive.markdown | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 source/_components/binary_sensor.bmw_connected_drive.markdown create mode 100755 source/_components/lock.bmw_connected_drive.markdown diff --git a/source/_components/binary_sensor.bmw_connected_drive.markdown b/source/_components/binary_sensor.bmw_connected_drive.markdown new file mode 100755 index 00000000000..6c38dc813ea --- /dev/null +++ b/source/_components/binary_sensor.bmw_connected_drive.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "BMW connected drive" +description: "Instructions on how to setup your BMW connected drive account with Home Assistant." +date: 2018-02-22 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bmw.png +ha_category: Binary Sensor +ha_release: 0.66 +--- + + +The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. + +The binary sensors will be automatically configured if 'bmw_connected_drive' component is configured. + +For more configuration information see the [bmw_connected_drive component](/components/bmw_connected_drive/) documentation. diff --git a/source/_components/lock.bmw_connected_drive.markdown b/source/_components/lock.bmw_connected_drive.markdown new file mode 100755 index 00000000000..2a7f6708126 --- /dev/null +++ b/source/_components/lock.bmw_connected_drive.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "BMW connected drive" +description: "Instructions on how to setup your BMW connected drive account with Home Assistant." +date: 2018-02-22 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bmw.png +ha_category: Lock +ha_release: 0.66 +--- + + +The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. + +The lock will be automatically configured if 'bmw_connected_drive' component is configured. + +For more configuration information see the [bmw_connected_drive component](/components/bmw_connected_drive/) documentation. From f8cdbdf880f55e9bb56ec11c0b1a91c6ebb6a83d Mon Sep 17 00:00:00 2001 From: Fabien Piuzzi Date: Fri, 16 Mar 2018 03:51:29 +0100 Subject: [PATCH 22/50] Foobot (#4670) * Foobot sensor device documentation * Tweaked documentation * :pencil2: Minor changes --- source/_components/sensor.foobot.markdown | 51 ++++++++++++++++++++++ source/images/supported_brands/foobot.png | Bin 0 -> 48418 bytes 2 files changed, 51 insertions(+) create mode 100644 source/_components/sensor.foobot.markdown create mode 100644 source/images/supported_brands/foobot.png diff --git a/source/_components/sensor.foobot.markdown b/source/_components/sensor.foobot.markdown new file mode 100644 index 00000000000..cf300fa7ac1 --- /dev/null +++ b/source/_components/sensor.foobot.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "Foobot Air Quality Monitor" +description: "Instructions on how to setup Foobot Air Quality sensor in Home Assistant." +date: 2018-02-14 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: foobot.png +ha_category: Health +ha_release: 0.66 +ha_iot_class: "Cloud Polling" +--- + +The `foobot` sensor platform will fetch air quality data from your or yours [Foobot device(s)](https://foobot.io/features/). + +This sensor requires an API token. Please obtain one at [Foobot API site](https://api.foobot.io/apidoc/index.html). + +## {% linkable_title Configuring the Platform %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: foobot + token: FOOBOT_SECRET_KEY + username: FOOBOT_USERNAME +``` + +{% configuration %} + token: + description: The token for the Foobot API. + required: true + type: string + username: + description: Your Foobot username, used to fetch devices associated with an account. + required: true + type: string +{% endconfiguration %} + +## {% linkable_title Available Metrics %} + +Every ten minutes, it'll fetch the last ten minutes average of the following measurements: + + * Temperature + * Humidity + * Co2 + * VOC + * PM2.5 + * [Index](https://help.foobot.io/hc/en-us/articles/204814371-What-does-central-number-mean-) diff --git a/source/images/supported_brands/foobot.png b/source/images/supported_brands/foobot.png new file mode 100644 index 0000000000000000000000000000000000000000..2d502c2cdac4a110bdbaa30a0a1b7f023c33a241 GIT binary patch literal 48418 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 nw*UL$|8d~|I}W^VBhlW|{PWR1Z|n Date: Fri, 16 Mar 2018 05:56:05 -0500 Subject: [PATCH 23/50] Added Stride notification component (#4921) * Added Stride notification component * :pencil2: Implement configuration tags --- source/_components/notify.stride.markdown | 63 ++++++++++++++++++++++ source/images/supported_brands/stride.png | Bin 0 -> 8776 bytes 2 files changed, 63 insertions(+) create mode 100644 source/_components/notify.stride.markdown create mode 100644 source/images/supported_brands/stride.png diff --git a/source/_components/notify.stride.markdown b/source/_components/notify.stride.markdown new file mode 100644 index 00000000000..0c79c446673 --- /dev/null +++ b/source/_components/notify.stride.markdown @@ -0,0 +1,63 @@ +--- +layout: page +title: "Stride" +description: "Instructions how to add Stride notifications to Home Assistant." +date: 2018-03-14 15:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: stride.png +ha_category: Notifications +ha_release: 0.66 +--- + +The `stride` platform allows you to send notifications from Home Assistant to [Stride](https://stride.com/). + +You need to obtain a [Stride API token](https://developer.atlassian.com/cloud/stride/security/authentication/#using-room-tokens) to be able to send notifications. When creating the token, you'll see a section labeled "Use this conversation URL to post messages" - it will look something like "https://api.atlassian.com/site/55872e9f-047e-a619-b32c-19d37fbc6038/conversation/26c98c26-0ffd-a11e-3a55-1b397cb71fe0/message". The first set of numbers and letters (`55872e9f-047e-a619-b32c-19d37fbc6038`) is the Cloud ID, and the second set (`26c98c26-0ffd-a11e-3a55-1b397cb71fe0`) is the Room ID. + +To enable the Stride notification in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: stride + cloudid: CLOUD-ID + token: TOKEN + room: ROOM-ID +``` + +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +cloudid: + description: The Stride Cloud ID to use for sending Stride notification. + required: true + type: string +token: + description: The Stride API token to use for sending Stride notifications. + required: true + type: string +room: + description: The default room to post to if no room is explicitly specified when sending the notification. + required: true + type: string +panel: + description: Setting panel will override the default panel type (`None`) for the notification. By default not setting this will post to Stride without using a panel type. Valid options are 'None', 'info', 'note', 'tip', 'warning'. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Stride service data %} + +The following attributes can be placed `data` for extended functionality. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `room` | yes | (int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. +| `panel` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/images/supported_brands/stride.png b/source/images/supported_brands/stride.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9825c808c58e63a594a22cf6d03b21f0ea644c GIT binary patch literal 8776 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 literal 0 HcmV?d00001 From 9b8feb64b5d90b88436b15b8f666e26ec7cb9771 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Fri, 16 Mar 2018 12:09:12 +0100 Subject: [PATCH 24/50] Added additional supported devices (#4925) --- source/_components/homekit.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 4ed321f4bb5..f9e8e84b9eb 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -157,8 +157,10 @@ The following components are currently supported: | alarm_control_panel | SecuritySystem | All security systems. | | climate | Thermostat | All climate devices. | | cover | WindowCovering | All covers that support `set_cover_position`. | +| light | Light | Support for `on / off`, `brightness` and `rgb_color`. | | sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement`. | -| switch / remote | Switch | All switches or remotes (represented as switches). | +| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` | +| switch / remote / input_boolean / script | Switch | All represented as switches. | ## {% linkable_title Error reporting %} From 434f6f25107e0b0de041f304283fba254b87b3e7 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 16 Mar 2018 15:50:56 +0100 Subject: [PATCH 25/50] Xiaomi Miio Fan: Undocumented service (fan.set_speed) added (#4928) * Undocumented service (fan.set_speed) added. * :pencil2: Micro change --- source/_components/fan.xiaomi_miio.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 99adf8ff4e3..20cc4573500 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -71,6 +71,15 @@ name: ## {% linkable_title Platform Services %} +### {% linkable_title Service `fan.set_speed` %} + +Set the fan speed/operation mode. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `speed` | no | Fan speed. Valid values are 'Auto', 'Silent', 'Favorite' and 'Idle' | + ### {% linkable_title Service `fan.xiaomi_miio_set_buzzer_on` %} Turn the buzzer on. From 041553ed86bd74a9628db71fa77ec2f099064381 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 16 Mar 2018 21:47:45 +0100 Subject: [PATCH 26/50] Xiaomi Power Strip services added. (#4931) --- .../_components/switch.xiaomi_miio.markdown | 70 +++++++++++++++++-- 1 file changed, 66 insertions(+), 4 deletions(-) diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown index 7212a742872..21cd7d4ebad 100644 --- a/source/_components/switch.xiaomi_miio.markdown +++ b/source/_components/switch.xiaomi_miio.markdown @@ -13,12 +13,38 @@ ha_version: 0.56 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip. - -Currently, the supported features are `on`, `off`. If the device provides the current load, it will be reported. +The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Smart WiFi Socket aka Plug, Xiaomi Smart Power Strip and Xiaomi Chuangmi Plug V1. Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. +## Features + +### Xiaomi Smart WiFi Socket + +* Power (on, off) +* Attributes + - Temperature + +### Xiaomi Chuangmi Plug V1 + +* Power (on, off) +* USB (on, off) +* Attributes + - Temperature + +### Xiaomi Smart Power Strip + +* Power (on, off) +* Wifi LED (on, off) +* Power Price (0...999) +* Power Mode (green, normal) (Power Strip V1 only) +* Attributes + - Temperature + - Current + - Load power + - Wifi LED + - Mode (Power Strip V1 only) + To add a plug to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -35,7 +61,7 @@ Configuration variables: - **host** (*Required*): The IP of your miio device. - **token** (*Required*): The API token of your miio device. - **name** (*Optional*): The name of your miio device. -- **model** (*Optional*): The model of your miio device. Valid values are chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1` and `chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. +- **model** (*Optional*): The model of your miio device. Valid values are `chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1` and `chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. {% configuration %} host: @@ -56,3 +82,39 @@ model: required: false type: string {% endconfiguration %} + +## {% linkable_title Platform Services %} + +### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_on` %} (Power Strip only) + +Turn the wifi led on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | + +### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_off` %} (Power Strip only) + +Turn the wifi led off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | + +### {% linkable_title Service `switch.xiaomi_miio_set_power_price` %} (Power Strip) + +Set the power price. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------| +| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `price` | no | Power price, between 0 and 999. | + +### {% linkable_title Service `switch.xiaomi_miio_set_power_mode` %} (Power Strip V1 only) + +Set the power mode. + +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------------------| +| `entity_id` | yes | Only act on a specific xiaomi miio entity. Else targets all. | +| `mode` | no | Power mode, valid values are 'normal' and 'green' | From bc95183753df95030496c9129c3029601bc11eca Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 16 Mar 2018 22:14:40 +0100 Subject: [PATCH 27/50] Xiaomi MiIO Sensor: Xiaomi Air Quality Monitor (PM2.5) integration (#4780) * Xiaomi MiIO Sensor: Xiaomi Air Quality Monitor (PM2.5) integration. * Turn on/off service removed. * :arrow_up: Updates ha_release --- .../_components/sensor.xiaomi_miio.markdown | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/_components/sensor.xiaomi_miio.markdown diff --git a/source/_components/sensor.xiaomi_miio.markdown b/source/_components/sensor.xiaomi_miio.markdown new file mode 100644 index 00000000000..3e30131fff3 --- /dev/null +++ b/source/_components/sensor.xiaomi_miio.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Xiaomi Air Quality Monitor" +description: "Instructions how to integrate your Xiaomi Mi Air Quality Monitor within Home Assistant." +date: 2018-02-28 08:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Sensor +ha_version: 0.66 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monitor (PM2.5) and reporting the air quality index. + +Currently, the supported features are: + +* Air Quality Index (AQI) +* Attributes + - power + - charging + - battery + - time_stat + +Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token. + +To add a Xiaomi Mi Air Quality Monitor to your installation, add the following to your `configuration.yaml` file: + +```yaml +sensor: +# Example configuration.yaml entry +sensor: + - platform: xiaomi_miio + name: Xiaomi Air Quality Monitor + host: 192.168.130.73 + token: YOUR_TOKEN +``` + +{% configuration %} +host: + description: The IP address of your miio device. + required: true + type: string +token: + description: The API token of your miio device. + required: true + type: string +name: + description: The name of your miio device. + required: false + type: string + default: Xiaomi Miio Sensor +{% endconfiguration %} From cdbdfea05d061e3ac53ecd664224b7371db8f782 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Sat, 17 Mar 2018 20:30:05 +0100 Subject: [PATCH 28/50] Xiaomi MiIO light: Philips Eyecare Smart Lamp 2 integration (#4825) * Xiaomi Philips Eyecare Smart Lamp 2 features added. * New device added. * Marker removed --- source/_components/light.xiaomi_miio.markdown | 99 ++++++++++++++++++- 1 file changed, 96 insertions(+), 3 deletions(-) diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index 3af241a04e9..d73600c8680 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -13,9 +13,54 @@ ha_version: 0.53 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2. +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2. -Currently, the supported features are `on`, `off`, `set_cct` (colortemp) , `set_bright` (brightness). +## Features + +### Philips LED Ball Lamp and Philips Zhirui LED Candle Lamp + +* Power (on, off) +* Brightness +* Color temperature (175...333 mireds) +* Scene (1, 2, 3, 4) +* Delayed turn off (Resolution in seconds) +* Attributes + - model + - scene + - delayed_turn_off + +### Philips LED Ceiling Lamp + +* Power (on, off) +* Brightness +* Color temperature (175...370 mireds) +* Scene (1, 2, 3, 4) +* Night light mode (on, off) +* Delayed turn off (Resolution in seconds) +* Attributes + - model + - scene + - delayed_turn_off + - night_light_mode + - automatic_color_temperature + +### Philips Eyecare Smart Lamp 2 + +* Eyecare light (on, off) +* Ambient light (on, off) +* Brightness (of each light) +* Scene (1, 2, 3, 4) +* Night light mode (on, off) +* Delayed turn off (Resolution in seconds) +* Eye fatigue reminder / notification (on, off) +* Eyecare mode (on, off) +* Attributes + - model + - scene + - delayed_turn_off + - night_light_mode + - reminder + - eyecare_mode Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. @@ -35,7 +80,7 @@ Configuration variables: - **host** (*Required*): The IP of your light. - **token** (*Required*): The API token of your light. - **name** (*Optional*): The name of your light. -- **model** (*Optional*): The model of your light. Valid values are `philips.light.bulb`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. +- **model** (*Optional*): The model of your light. Valid values are `philips.light.bulb`, `philips.light.candle2`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. {% configuration %} host: @@ -76,3 +121,51 @@ Delayed turn off. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on a specific light. Else targets all. | | `time_period` | no | Time period for the delayed turn off. | + +### {% linkable_title Service `light.xiaomi_miio_reminder_on` %} (Eyecare Smart Lamp 2 only) + +Enable the eye fatigue reminder/notification. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | + +### {% linkable_title Service `light.xiaomi_miio_reminder_off` %} (Eyecare Smart Lamp 2 only) + +Disable the eye fatigue reminder/notification. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | + +### {% linkable_title Service `light.xiaomi_miio_night_light_mode_on` %} (Eyecare Smart Lamp 2 only) + +Turn the smart night light mode on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | + +### {% linkable_title Service `light.xiaomi_miio_night_light_mode_off` %} (Eyecare Smart Lamp 2 only) + +Turn the smart night light mode off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | + +### {% linkable_title Service `light.xiaomi_miio_eyecare_mode_on` %} (Eyecare Smart Lamp 2 only) + +Turn the eyecare mode on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | + +### {% linkable_title Service `light.xiaomi_miio_eyecare_mode_off` %} (Eyecare Smart Lamp 2 only) + +Turn the eyecare mode off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on a specific light. Else targets all. | From 2a440b16b4a0f9543bdadbaaca94b5cd252b680b Mon Sep 17 00:00:00 2001 From: Igor Bernstein Date: Sun, 18 Mar 2018 12:18:19 -0400 Subject: [PATCH 29/50] add doc for zha fans (#4626) * add doc for zha fans * add ha_release --- source/_components/fan.zha.markdown | 16 ++++++++++++++++ source/_components/zha.markdown | 1 + 2 files changed, 17 insertions(+) create mode 100644 source/_components/fan.zha.markdown diff --git a/source/_components/fan.zha.markdown b/source/_components/fan.zha.markdown new file mode 100644 index 00000000000..536d9c78bd1 --- /dev/null +++ b/source/_components/fan.zha.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "ZigBee Home Automation Fan" +description: "Instructions how to setup ZigBee Home Automation fans within Home Assistant." +date: 2018-02-10 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zigbee.png +ha_category: Fan +ha_iot_class: "Local Polling" +ha_release: 0.66 +--- + +To get your ZigBee fans working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index 2a6b6355f2f..11667fc8d74 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -22,6 +22,7 @@ There is currently support for the following device types within Home Assistant: - [Sensor](../sensor.zha) (e.g. temperature sensors) - [Light](../light.zha) - [Switch](../switch.zha) +- [Fan](../fan.zha) Known working ZigBee radios: From d44266b2bb9c8cfb4fdd1532c9a956b9191a7761 Mon Sep 17 00:00:00 2001 From: maxclaey Date: Sun, 18 Mar 2018 18:30:29 +0100 Subject: [PATCH 30/50] Documentation for IFTTT alarm control panel (#4878) * Documentation for IFTTT alarm control panel * Update alarm_control_panel.ifttt.markdown * Call service instead of direct state change * Update alarm_control_panel.ifttt.markdown * HAS -> HASS * Update alarm_control_panel.ifttt.markdown * :ambulance: Adds ha_release tag * :pencil2: Minor changes --- .../alarm_control_panel.ifttt.markdown | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 source/_components/alarm_control_panel.ifttt.markdown diff --git a/source/_components/alarm_control_panel.ifttt.markdown b/source/_components/alarm_control_panel.ifttt.markdown new file mode 100644 index 00000000000..13f67bafc5d --- /dev/null +++ b/source/_components/alarm_control_panel.ifttt.markdown @@ -0,0 +1,64 @@ +--- +layout: page +title: "IFTTT Alarm Control Panel" +description: "Instructions on how to integrate IFTTT-controlled security systems into Home Assistant." +date: 2018-03-10 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ifttt.png +ha_category: Alarm +ha_release: 0.66 +--- + +The `ifttt` platform allows you to integrate security systems that have no open API but can be controlled through [IFTTT](https://ifttt.com/discover). + +This platform depends on the [IFTTT](https://home-assistant.io/components/ifttt/) Home Assistant component. See the component's documentation to set it up. + +

+It is important to note that this platform fully relies on IFTTT to receive updates when the security system's state changes. Therefore, this platform shows an assumed state. +

+ +To enable this, setup the required IFTTT applets as listed below and add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +ifttt: + key: YOUR_WEBHOOK_KEY + +alarm_control_panel: + - platform: ifttt + name: YOUR_ALARM_NAME + code: YOUR_ALARM_CODE +``` + +

+It is strongly discouraged to use this platform when you don't use encryption; otherwise, your API password will be send unprotected through the IFTTT Webhooks. It is adviced to [setup encryption using Let's Encrypt](https://home-assistant.io/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/). +

+ +{% linkable_title Required IFTTT applets %} + +This platform supports the services `alarm_disarm`, `alarm_arm_away`, `alarm_arm_home` and `alarm_arm_night`. For each of these services, an IFTTT webhook will be triggered. + +For this system to operate correctly, the following IFTTT applets have to be setup. Obviously, if your alarm device does not support some states, no applets have to be provided for those. +* **IF** Webhook event `alarm_disarm` is called, **THEN** disarm the alarm system. +* **IF** Webhook event `alarm_arm_home` is called, **THEN** set the alarm system to armed home. +* **IF** Webhook event `alarm_arm_away` is called, **THEN** set the alarm system to armed away. +* **IF** Webhook event `alarm_arm_night` is called, **THEN** set the alarm system to armed night. +* **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. +* **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. +* **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. +* **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. + + +{% configuration %} + name: + description: The name of your Home Assistant alarm control panel. + required: false + type: string + code: + description: The code for the alarm control panel. + required: false + type: string +{% endconfiguration %} From 084d69cd98cc312c364833c361a90eb251474a84 Mon Sep 17 00:00:00 2001 From: Mattias Welponer Date: Sun, 18 Mar 2018 18:42:00 +0100 Subject: [PATCH 31/50] Add initial support fo HomematicIP components (#4850) * Add initial support fo HomematicIP components * :pencil2: Spelling updates --- source/_components/homematicip.markdown | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 source/_components/homematicip.markdown diff --git a/source/_components/homematicip.markdown b/source/_components/homematicip.markdown new file mode 100644 index 00000000000..c6e374ee099 --- /dev/null +++ b/source/_components/homematicip.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "HomematicIP" +description: "Instructions for integrating HomematicIP into Home Assistant." +date: 2018-03-06 20:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: homematicip.png +ha_category: Hub +ha_iot_class: "Cloud Polling" +ha_release: 0.66 +featured: false +--- + +The [HomematicIP](http://www.homematicip.com/) component platform is used as an interface to the cloud server. +For for communication [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used. + +To set up the component: + +- **generate the authentication token**: +```yaml +generate_auth_token.py +``` + +- ** add the information to your `configuration.yaml` file: + +```yaml +homematicip: + - name: NAME + accesspoint: IDENTIFIER + authtoken: AUTHTOKEN +``` + +Configuration variables (global): + +- **name** (*Required*): Name to identify your access point, this will be + used to prefix your device names. +- **accesspoint** (*Required*): This is the access point id (SGTIN) +- **authtoken** (*Required*): Authentification token generated with +`generate_auth_token.py`. + From df4739885a98911b3ff7d2bb6fe6a7c26c5a8219 Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Sun, 18 Mar 2018 17:54:38 +0000 Subject: [PATCH 32/50] Added Time SMA (#4926) * Added Time SMA * bump version * update * :pencil2: Minor tweaks * :ambulance: Fixes/Restores ha_release tag * :ambulance: Corrected type --- source/_components/sensor.filter.markdown | 31 +++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/source/_components/sensor.filter.markdown b/source/_components/sensor.filter.markdown index 07f5b33e3a5..5ce3132af15 100644 --- a/source/_components/sensor.filter.markdown +++ b/source/_components/sensor.filter.markdown @@ -15,7 +15,7 @@ logo: home-assistant.png The `filter` platform enables sensors that process the states of other entities. -`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. +`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. The next image depicts an original sensor and the filter sensor of that same sensor using the [History Graph]({{site_roor}}/components/history_graph/) component.

@@ -37,6 +37,9 @@ sensor: - filter: lowpass time_constant: 10 precision: 2 + - filter: time_simple_moving_average + window_size: 00:05 + precision: 2 ``` Filters can be chained and are applied according to the order present in the configuration file. @@ -53,17 +56,17 @@ name: filters: description: Filters to be used. required: true - type: map + type: list keys: filter: - description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier` and `throttle`. + description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier`, `throttle` and `time_simple_moving_average`. required: true type: string window_size: - description: Size of the window of previous states. + description: Size of the window of previous states. Time based filters such as `time_simple_moving_average` will require a time period (size in time), while other filters such as `outlier` will require an integer (size in number of states) required: false - type: int - default: 5 + type: [int, time] + default: 1 precision: description: See [_lowpass_](#low-pass) filter. Defines the precision of the filtered state, through the argument of round(). required: false @@ -78,14 +81,19 @@ filters: description: See [_outlier_](#outlier) filter. Band radius from median of previous states. required: false type: float - default: 2.0 + default: 2.0 + type: + description: See [_time_simple_moving_average_](#time-simple-moving-average) filter. Defines the type of Simple Moving Average. + required: false + type: string + default: last {% endconfiguration %} ## {% linkable_title Filters %} ### {% linkable_title Low-pass %} -The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcuting peaks and valleys. +The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcutting peaks and valleys. The included Low-pass filter is very basic and is based on a moving average, in which the previous data point is weighted with the new data point. @@ -120,3 +128,10 @@ To adjust the rate you need to set the window_size. To throttle a sensor down to This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes. +### {% linkable_title Time Simple Moving Average %} + +The Time SMA filter (`time_simple_moving_average`) is based on the paper [Algorithms for Unevenly Spaced Time Series: Moving Averages and Other Rolling Operators](http://www.eckner.com/papers/Algorithms%20for%20Unevenly%20Spaced%20Time%20Series.pdf) by Andreas Eckner. + +The paper defines three types/versions of the Simple Moving Average (SMA): *last*, *next* and *linear*. Currently only *last* is implemented. + +Theta, as described in the paper, is the `window_size` parameter, and can be expressed using time notation (e.g., 00:05 for a five minutes time window). From 40602962f4f5aab59c5c6b6c44f33b2d2b0d071b Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Mon, 19 Mar 2018 08:14:44 -0400 Subject: [PATCH 33/50] New hue/sat field on light.turn_on schema (#4881) * New hue/sat field on light.turn_on schema * :pencil2: Small language corrections --- source/_components/light.markdown | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 43706748906..39ace8da60b 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -19,26 +19,27 @@ The light component supports multiple entries in configuration.yaml Turns one light on or multiple lights on using [groups]({{site_root}}/components/group/). -Most lights do not support all attributes. You can check the platform documentation of your particular light for hints but in general you will have to try things out and see what works. +Most lights do not support all attributes. You can check the platform documentation of your particular light for hints, but in general, you will have to try things out and see what works. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. -| `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. -| `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. +| `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. +| `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma-separated floats that represent the color in XY. You can find a great chart here: [Hue Color Chart](https://developers.meethue.com/documentation/core-concepts#color_gets_more_complicated). +| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB. Note that the specified RGB value will not change the light brightness, only the color. | `white_value` | yes | Integer between 0 and 255 for how bright a dedicated white LED should be. | `color_temp` | yes | An integer in mireds representing the color temperature you want the light to be. | `kelvin` | yes | Alternatively, you can specify the color temperature in Kelvin. -| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. +| `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100). | `flash` | yes | Tell light to flash, can be either value `short` or `long`. | `effect`| yes | Applies an effect such as `colorloop` or `random`.

-In order to apply attributes to an entity you will need to add `data:` to the configuration. See example below +In order to apply attributes to an entity, you will need to add `data:` to the configuration. See example below

```yaml From 13ac22cb087c230fd5a449ed54cf3bfb2a32372e Mon Sep 17 00:00:00 2001 From: nielstron Date: Mon, 19 Mar 2018 13:25:51 +0100 Subject: [PATCH 34/50] Syncthru Printer description (#4707) * Added syncthru platform description * Spelling * Cleaned up the code * Clarified configuration entry * Updated version, removed logo * :art: Added existing logo * :pencil2: Small fixes * :arrow_up: Sets ha_release * Add description for every single key * :ambulance: Removed duplicate endconfiguration tag --- source/_components/sensor.syncthru.markdown | 89 +++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 source/_components/sensor.syncthru.markdown diff --git a/source/_components/sensor.syncthru.markdown b/source/_components/sensor.syncthru.markdown new file mode 100644 index 00000000000..19b2e5d1399 --- /dev/null +++ b/source/_components/sensor.syncthru.markdown @@ -0,0 +1,89 @@ +--- +layout: page +title: "Samsung SyncThru Printer" +description: "Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant." +date: 2018-02-19 23:33 +sidebar: true +comments: false +sharing: true +footer: true +logo: samsung.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.66 +--- + +The Samsung SyncThru Printer platform allows you to read current data from your local Samsung printer. + +It usually provides information about the device's state, the left amount of ink or toner and the state of paper trays. +The platform automatically monitors every supported part. + +If you wish not to include certain monitored values specify the values that you would like to see in the front-end via the `monitored_conditions` setting. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: syncthru + resource: http://my-printer.address + name: My Awesome Printer + monitored_conditions: + - toner_black + - output_tray_0 +``` + +{% configuration %} + resource: + description: The address for connecting to the printer. Equal to the SyncThru Webservice address. + required: true + default: false + type: url + name: + description: A user specified name for the printer. Defaults to "Samsung Printer" and the friendly name will be the name of the printer model. + required: false + default: Samsung Printer + type: string + monitored_conditions: + description: Conditions to display in the frontend. + required: false + default: all values + type: list + keys: + toner_black: + description: Black toner fill level + toner_cyan: + description: Cyan toner fill level + toner_magenta: + description: Magenta toner fill level + toner_yellow: + description: Yellow toner fill level + drum_black: + description: Black drum state + drum_cyan: + description: Cyan drum state + drum_magenta: + description: Magenta drum state + drum_yellow: + description: Yellow drum state + tray_1: + description: First paper input tray state + tray_2: + description: Second paper input tray state + tray_3: + description: Third paper input tray state + tray_4: + description: Fourth paper input tray state + tray_5: + description: Fifth paper input tray state + output_tray_0: + description: First paper output tray state + output_tray_1: + description: Second paper output tray state + output_tray_2: + description: Third paper output tray state + output_tray_3: + description: Fourth paper output tray state + output_tray_4: + description: Fifth paper output tray state + output_tray_5: + description: Sixth paper output tray state +{% endconfiguration %} From c5f2f5770f52e34cdfddecf00ee0ecfd402ab3fc Mon Sep 17 00:00:00 2001 From: Qxlkdr <33372537+Qxlkdr@users.noreply.github.com> Date: Mon, 19 Mar 2018 22:08:38 +0100 Subject: [PATCH 35/50] Add Trafikverket WeatherStation documentation (#4562) * Create sensor.trafikverket_weatherstation.markdown.markdown * Add trafikverket.png trafikverket.png used for trafikverket_weatherstation sensor platform. * api_key Updated from api to api_key due to CONF_API_KEY. * Removed text Removed text which I used on GitHub for the custom component. Now needed to have for the official release. * Example picture Added an example picture to better understand how to get the weather station. * Added example picture Added an example picture to better understand how to get the weather station. What the user needs to copy and add to the YAML file. * Added usage information Added examples of the usage (why needing the data). * linkable_title Changed from normal titles to linkable_title in order to follow the documentation standards. * Updated based on feedback Done - Rewrote "Usage" into "Potential use cases" - Linked to Trafikverket homepage - Description instead of static links * Configuration variables Updated to use "{% configuration %}" instead of "Configuration variables" as plain text. * HA release 0.64.0 Updated ha_release to 0.64.0 instead. * HA release 0.65.0 Updated ha_release to 0.65.0 since it wasn't merged in 0.64.0 release. * :pencil2: Tiny improvements * ha_release and note Updated ha_release to 0.66.0 and removed a note about using secrets.yaml for all your API keys, usernames and passwords. --- ...ensor.trafikverket_weatherstation.markdown | 86 ++++++++++++++++++ ...t_trafikverket_weather_station_example.png | Bin 0 -> 159671 bytes .../images/supported_brands/trafikverket.png | Bin 0 -> 30431 bytes 3 files changed, 86 insertions(+) create mode 100644 source/_components/sensor.trafikverket_weatherstation.markdown create mode 100644 source/images/screenshots/get_trafikverket_weather_station_example.png create mode 100644 source/images/supported_brands/trafikverket.png diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/sensor.trafikverket_weatherstation.markdown new file mode 100644 index 00000000000..76885964f39 --- /dev/null +++ b/source/_components/sensor.trafikverket_weatherstation.markdown @@ -0,0 +1,86 @@ +--- +layout: page +title: "Trafikverket WeatherStation" +description: "Instructions how to integrate Trafikverket WeatherStation within Home Assistant." +date: 2018-02-01 12:06 +sidebar: true +comments: false +sharing: true +footer: true +logo: trafikverket.png +ha_category: Sensor +ha_release: 0.66.0 +--- + +Showing weather information for air and road temperature provided by [Trafikverket](https://www.trafikverket.se/) in Sweden. + +Potential use cases: +- Get weather data in general +- You live near a weather station and want to know the current temperature at home +- Setup automations for your car heating system. If the road is frozen along the way to work, you might want the car heating system to start earlier. + +##### {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`. + +```yaml +sensor: + - platform: trafikverket_weatherstations + name: Trafikverket Road WeatherStation Kungälv + api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX + station: Kungälv + type: road +``` + +{% configuration %} +name: + description: Unique name of the device in the frontend. + required: true + type: string +api_key: + description: API key from Trafikverket. + required: true + type: string +station: + description: Name of the weather station. + required: true + type: string +type: + description: Defines which temperature you want (`air` or `road`). + required: true + type: string +scan_interval: + description: How frequently to query for new data (in seconds). + required: false + type: int + default: 300 +{% endconfiguration %} + +##### {% linkable_title Obtaining API key %} + +Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obtain the API key. + +##### {% linkable_title Weather stations %} + +Click [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=1/606442.17/6886316.22/&Layers=RoadWeather%2b) to get a map of valid weather stations. Once a station is found, copy the name according to the below picture and paste it in your `configuration.yaml` file as the `station` variable. + +

+ +

+ +##### {% linkable_title Examples %} + +```yaml +sensor: + - platform: trafikverket_weatherstations + name: Trafikverket Road WeatherStation Kungälv + api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX + station: Kungälv + type: road + - platform: trafikverket_weatherstations + name: Trafikverket Air WeatherStation Lanna + api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX + station: Lanna + type: air + scan_interval: 600 +``` diff --git a/source/images/screenshots/get_trafikverket_weather_station_example.png b/source/images/screenshots/get_trafikverket_weather_station_example.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0d7535fe13afd5f1286efaf4d6c2bab31d1d71 GIT binary patch literal 159671 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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⪻zrGky4lRqjEo4^O=_CV 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 _bacQtbhc~-PGV(3oHGy876 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

@@ -42,10 +46,10 @@ It is strongly discouraged to use this platform when you don't use encryption; o This platform supports the services `alarm_disarm`, `alarm_arm_away`, `alarm_arm_home` and `alarm_arm_night`. For each of these services, an IFTTT webhook will be triggered. For this system to operate correctly, the following IFTTT applets have to be setup. Obviously, if your alarm device does not support some states, no applets have to be provided for those. -* **IF** Webhook event `alarm_disarm` is called, **THEN** disarm the alarm system. -* **IF** Webhook event `alarm_arm_home` is called, **THEN** set the alarm system to armed home. -* **IF** Webhook event `alarm_arm_away` is called, **THEN** set the alarm system to armed away. -* **IF** Webhook event `alarm_arm_night` is called, **THEN** set the alarm system to armed night. +* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** disarm the alarm system. +* **IF** Webhook event `YOUR_ARM_HOME_EVENT` is called, **THEN** set the alarm system to armed home. +* **IF** Webhook event `YOUR_ARM_NIGHT_EVENT` is called, **THEN** set the alarm system to armed away. +* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** set the alarm system to armed night. * **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. * **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. * **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. @@ -61,4 +65,29 @@ For this system to operate correctly, the following IFTTT applets have to be set description: The code for the alarm control panel. required: false type: string + event_arm_away: + description: IFTTT webhook event to call when the state is set to armed away. + required: false + type: string + default: alarm_arm_away + event_arm_home: + description: IFTTT webhook event to call when the state is set to armed home. + required: false + type: string + default: alarm_arm_home + event_arm_night: + description: IFTTT webhook event to call when the state is set to armed night. + required: false + type: string + default: alarm_arm_night + event_disarm: + description: IFTTT webhook event to call when the state is set to disarmed. + required: false + type: string + default: alarm_disarm + optimistic: + description: Specify if the state will be updated by a ifttt_push_alarm_state call (false) or can be set immediately (true). + required: false + type: boolean + default: false {% endconfiguration %} From 5e73866af081e60b9e737bf38d4b3737f8712cc7 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Thu, 22 Mar 2018 08:35:11 +0100 Subject: [PATCH 39/50] Typo fixed (#4975) --- source/_components/switch.xiaomi_miio.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown index 21cd7d4ebad..6334c41d2b4 100644 --- a/source/_components/switch.xiaomi_miio.markdown +++ b/source/_components/switch.xiaomi_miio.markdown @@ -91,7 +91,7 @@ Turn the wifi led on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | ### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_off` %} (Power Strip only) @@ -99,7 +99,7 @@ Turn the wifi led off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | ### {% linkable_title Service `switch.xiaomi_miio_set_power_price` %} (Power Strip) @@ -107,7 +107,7 @@ Set the power price. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | | `price` | no | Power price, between 0 and 999. | ### {% linkable_title Service `switch.xiaomi_miio_set_power_mode` %} (Power Strip V1 only) @@ -116,5 +116,5 @@ Set the power mode. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio entity. Else targets all. | +| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | | `mode` | no | Power mode, valid values are 'normal' and 'green' | From 2781c1f89aa5e5f86d4099b42b781041c485e970 Mon Sep 17 00:00:00 2001 From: cgtobi Date: Thu, 22 Mar 2018 20:01:43 +0100 Subject: [PATCH 40/50] Add language parameter to darksky sensor. (#4955) * Add language parameter to darksky sensor. * Add language codes rather than link to the API docs. This is a shameless copy of @syssi's PR #4982. --- source/_components/sensor.darksky.markdown | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index aebe2326e44..6b110a6c726 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -41,6 +41,46 @@ Configuration variables: - **api_key** (*Required*): Your API key. - **name** (*Optional*): Additional name for the sensors. Default to platform name. - **forecast** array (*Optional*): List of days in the 7 day forecast you would like to receive data on, starting with tomorrow as day 1. Any `monitored_condition` with a daily forecast by DarkSky will generate a sensor tagged with `_`. +- **language** (*Optional*): The desired language of the summary properties. Valid options are + - `ar`: Arabic + - `az`: Azerbaijani + - `be`: Belarusian + - `bg`: Bulgarian + - `bs`: Bosnian + - `ca`: Catalan + - `cs`: Czech + - `da`: Danish + - `de`: German + - `el`: Greek + - `en`: English (which is the default) + - `es`: Spanish + - `et`: Estonian + - `fi`: Finnish + - `fr`: French + - `hr`: Croatian + - `hu`: Hungarian + - `id`: Indonesian + - `is`: Icelandic + - `it`: Italian + - `ja`: Japanese + - `ka`: Georgian + - `kw`: Cornish + - `nb`: Norwegian Bokmål + - `nl`: Dutch + - `pl`: Polish + - `pt`: Portuguese + - `ro`: Romanian + - `ru`: Russian + - `sk`: Slovak + - `sl`: Slovenian + - `sr`: Serbian + - `sv`: Swedish + - `tet`: Tetum + - `tr`: Turkish + - `uk`: Ukrainian + - `x-pig-latin`: Igpay Atinlay + - `zh`: simplified Chinese + - `zh-tw`: traditional Chinese - **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified), defaults to coordinates defined in your `configuration.yaml` - **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified), defaults to coordinates defined in your `configuration.yaml` - **monitored_conditions** array (*Required*): Conditions to display in the frontend. From 62985bd21ebe8f7f59bff3f7b769fcd2f850029f Mon Sep 17 00:00:00 2001 From: Gummientchen Date: Fri, 23 Mar 2018 11:27:04 +0100 Subject: [PATCH 41/50] Add example configuration to cookbook (#4991) --- .../configuration_yaml_by_gummientchen.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 source/_cookbook/configuration_yaml_by_gummientchen.markdown diff --git a/source/_cookbook/configuration_yaml_by_gummientchen.markdown b/source/_cookbook/configuration_yaml_by_gummientchen.markdown new file mode 100644 index 00000000000..3205562886f --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_gummientchen.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Gummientchen" +description: "" +date: 2018-03-23 09:13 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/Gummientchen/Home-AssistantConfig +--- From 6f63554f8cba39e7887504c5563c622728e77668 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 23 Mar 2018 20:07:18 +0100 Subject: [PATCH 42/50] Add send_sticker and update the existing content (#4996) * Add send_sticker and update the existing content * :pencil2: Minor fixes --- source/_components/telegram_bot.markdown | 98 +++++++++++++++--------- 1 file changed, 60 insertions(+), 38 deletions(-) diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index 0c5ef3e5026..32397d0fbee 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -19,10 +19,12 @@ This component creates notification services to send, or edit previously sent, m If you don't need to receive messages, you can use the [broadcast](/components/telegram_bot.broadcast/) platform instead. -### {% linkable_title Notification services %} -Available services: `send_message`, `send_photo`, `send_document`, `send_location`, `edit_message`, `edit_replymarkup`, `edit_caption`, `answer_callback_query`. +## {% linkable_title Notification services %} + +Available services: `send_message`, `send_photo`, `send_document`, `send_location`, `send_sticker`, `edit_message`, `edit_replymarkup`, `edit_caption` and `answer_callback_query`. + +### {% linkable_title Service `telegram_bot.send_message` %} -#### {% linkable_title Service `telegram_bot/send_message` %} Send a notification. | Service data attribute | Optional | Description | @@ -36,7 +38,8 @@ Send a notification. | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/send_photo` %} +### {% linkable_title Service `telegram_bot.send_photo` and `telegram_bot.send_sticker` %} + Send a photo. | Service data attribute | Optional | Description | @@ -44,16 +47,16 @@ Send a photo. | `url` | no | Remote path to an image. | | `file` | no | Local path to an image. | | `caption` | yes | The title of the image. | -| `username` | yes | Username for a URL which require HTTP basic authentication. | -| `password` | yes | Password for a URL which require HTTP basic authentication. | +| `username` | yes | Username for a URL which requires HTTP basic authentication. | +| `password` | yes | Password for a URL which requires HTTP basic authentication. | | `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | +### {% linkable_title Service `telegram_bot.send_video` %} -#### {% linkable_title Service `telegram_bot/send_video` %} Send a video. | Service data attribute | Optional | Description | @@ -69,7 +72,8 @@ Send a video. | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/send_document` %} +### {% linkable_title Service `telegram_bot.send_document` %} + Send a document. | Service data attribute | Optional | Description | @@ -77,15 +81,16 @@ Send a document. | `url` | no | Remote path to a document. | | `file` | no | Local path to a document. | | `caption` | yes | The title of the document. | -| `username` | yes | Username for a URL which require HTTP basic authentication. | -| `password` | yes | Password for a URL which require HTTP basic authentication. | +| `username` | yes | Username for a URL which requires HTTP basic authentication. | +| `password` | yes | Password for a URL which requires HTTP basic authentication. | | `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/send_location` %} +### {% linkable_title Service `telegram_bot.send_location` %} + Send a location. | Service data attribute | Optional | Description | @@ -97,7 +102,8 @@ Send a location. | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/edit_message` %} +### {% linkable_title Service `telegram_bot.edit_message` %} + Edit a previously sent message in a conversation. | Service data attribute | Optional | Description | @@ -110,7 +116,8 @@ Edit a previously sent message in a conversation. | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/edit_caption` %} +### {% linkable_title Service `telegram_bot.edit_caption` %} + Edit the caption of a previously sent message. | Service data attribute | Optional | Description | @@ -121,8 +128,9 @@ Edit the caption of a previously sent message. | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/edit_replymarkup` %} -Edit the inline keyboard of a previusly sent message. +### {% linkable_title Service `telegram_bot.edit_replymarkup` %} + +Edit the inline keyboard of a previously sent message. | Service data attribute | Optional | Description | |---------------------------|----------|--------------------------------------------------| @@ -131,7 +139,8 @@ Edit the inline keyboard of a previusly sent message. | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -#### {% linkable_title Service `telegram_bot/answer_callback_query` %} +### {% linkable_title Service `telegram_bot.answer_callback_query` %} + Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. | Service data attribute | Optional | Description | @@ -140,7 +149,7 @@ Respond to a callback query originated by clicking on an online keyboard button. | `callback_query_id` | no | Unique id of the callback response. In the `telegram_callback` event data: `{{ trigger.event.data.id }}` | | `show_alert` | yes | True/false for show a permanent notification. Defaults to False. | -#### {% linkable_title Service `telegram_bot/delete_message` %} +### {% linkable_title Service `telegram_bot.delete_message` %} Delete a previously sent message in a conversation. | Service data attribute | Optional | Description | @@ -148,12 +157,12 @@ Delete a previously sent message in a conversation. | `message_id` | no | Id of the message to delete. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. You can use `"last"` to refer to the last message sent to `chat_id`. | | `chat_id` | no | The chat_id where to delete the message. | -### {% linkable_title `Telegram` notification platform %} +## {% linkable_title `telegram` notification platform %} - -The [Telegram notification platform](/components/notify.telegram/) requires the `telegram_bot` component to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. +The [`telegram` notification platform](/components/notify.telegram/) requires the `telegram_bot` component to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. The required yaml configuration now reduces to: + ```yaml notify: - name: NOTIFIER_NAME @@ -161,8 +170,7 @@ notify: chat_id: USER_CHAT_ID ``` -### {% linkable_title Event triggering %} - +## {% linkable_title Event triggering %} A command looks like `/thecommand`, or `/othercommand with some args`. @@ -189,7 +197,7 @@ chat_id: "" chat: "" ``` -if the message is sent from a [press from an inline button](https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), for example, a callback query is received, and Home Assistant will fire a `telegram_callback` event with: +If the message is sent from a [press from an inline button](https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), for example, a callback query is received, and Home Assistant will fire a `telegram_callback` event with: ```yaml data: "" @@ -204,7 +212,6 @@ chat_id: "" ### {% linkable_title Configuration samples %} - Simple ping pong example. ```yaml @@ -221,7 +228,7 @@ action: message: 'pong' ``` -Example that show keyboard interaction with `notify.telegram` +An example that shows keyboard interaction with `notify.telegram` ```yaml trigger: @@ -256,8 +263,9 @@ action: entity_id: switch.vision_zm1601eu5_battery_operated_siren_switch_9_0 ``` -An example to show the use of event_data in the action: +An example to show the use of event_data in action: +{% raw %} ```yaml - alias: 'Kitchen Telegram Speak' trigger: @@ -269,17 +277,21 @@ An example to show the use of event_data in the action: - service: notify.kitchen_echo data_template: message: > - Message from {% raw %}{{ trigger.event.data["from_first"] }}. {% for state in trigger.event.data["args"] %} {{ state }} {% endfor %}{% endraw %} + Message from {{ trigger.event.data["from_first"] }}. {% for state in trigger.event.data["args"] %} {{ state }} {% endfor %} ``` +{% endraw %} ### {% linkable_title Sample automations with callback queries and inline keyboards %} -Quick example to show some of the callback capabilities of inline keyboards with a dumb automation consisting in a simple repeater of normal text that presents an inline keyboard with 3 buttons: 'EDIT', 'NO' and 'REMOVE BUTTON': +A quick example to show some of the callback capabilities of inline keyboards with a dumb automation consisting in a simple repeater of normal text that presents an inline keyboard with 3 buttons: 'EDIT', 'NO' and 'REMOVE BUTTON': + - Pressing 'EDIT' changes the sent message. - Pressing 'NO' only shows a brief notification (answering the callback query). - Pressing 'REMOVE BUTTON' changes the inline keyboard removing that button. Text repeater: + +{% raw %} ```yaml - alias: 'Telegram bot that repeats text' hide_entity: true @@ -290,15 +302,18 @@ Text repeater: - service: telegram_bot.send_message data_template: title: '*Dumb automation*' - target: {% raw %}'{{ trigger.event.data.user_id }}'{% endraw %} - message: 'You said: {% raw %}{{ trigger.event.data.text }}{% endraw %}' + target: '{{ trigger.event.data.user_id }}' + message: 'You said: {{ trigger.event.data.text }}' disable_notification: true inline_keyboard: - "Edit message:/edit_msg, Don't:/do_nothing" - "Remove this button:/remove button" ``` +{% endraw %} Message editor: + +{% raw %} ```yaml - alias: 'Telegram bot that edits the last sent message' hide_entity: true @@ -315,19 +330,22 @@ Message editor: show_alert: true - service: telegram_bot.edit_message data_template: - message_id: {% raw %}'{{ trigger.event.data.message.message_id }}'{% endraw %} - chat_id: {% raw %}'{{ trigger.event.data.chat_id }}'{% endraw %} + message_id: '{{ trigger.event.data.message.message_id }}' + chat_id: '{{ trigger.event.data.chat_id }}' title: '*Message edit*' inline_keyboard: - "Edit message:/edit_msg, Don't:/do_nothing" - "Remove this button:/remove button" message: > - {% raw %}Callback received from {% raw %}{{ trigger.event.data.from_first }}{% endraw %}. - Message id: {% raw %}{{ trigger.event.data.message.message_id }}{% endraw %}. - Data: {% raw %}{{ trigger.event.data.data }}{% endraw %} + Callback received from {{ trigger.event.data.from_first }}. + Message id: {{ trigger.event.data.message.message_id }}. + Data: {{ trigger.event.data.data }} ``` +{% endraw %} Keyboard editor: + +{% raw %} ```yaml - alias: 'Telegram bot that edits the keyboard' hide_entity: true @@ -339,17 +357,20 @@ Keyboard editor: action: - service: telegram_bot.answer_callback_query data_template: - callback_query_id: {% raw %}'{{ trigger.event.data.id }}'{% endraw %} + callback_query_id: '{{ trigger.event.data.id }}' message: 'Callback received for editing the inline keyboard!' - service: telegram_bot.edit_replymarkup data_template: message_id: 'last' - chat_id: {% raw %}'{{ trigger.event.data.chat_id }}'{% endraw %} + chat_id: '{{ trigger.event.data.chat_id }}' inline_keyboard: - "Edit message:/edit_msg, Don't:/do_nothing" ``` +{% endraw %} Only acknowledges the 'NO' answer: + +{% raw %} ```yaml - alias: 'Telegram bot that simply acknowledges' hide_entity: true @@ -361,9 +382,10 @@ Only acknowledges the 'NO' answer: action: - service: telegram_bot.answer_callback_query data_template: - callback_query_id: {% raw %}'{{ trigger.event.data.id }}'{% endraw %} + callback_query_id: '{{ trigger.event.data.id }}' message: 'OK, you said no!' ``` +{% endraw %} For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/docs/ecosystem/appdaemon/tutorial/) is advised. From 3c45088ac3b2f7ba4a58fe12867180914bee3593 Mon Sep 17 00:00:00 2001 From: c727 Date: Fri, 23 Mar 2018 20:34:10 +0100 Subject: [PATCH 43/50] Fix code for custom UI version (#4945) * Fix code for custom UI version if you don't put the code in `{ }` `const`s are global * Update frontend_creating_custom_ui.markdown * Update frontend_creating_custom_ui.markdown * Update frontend_creating_custom_ui.markdown --- .../frontend_creating_custom_ui.markdown | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown index d28623e8da1..3012f43e60f 100644 --- a/source/developers/frontend_creating_custom_ui.markdown +++ b/source/developers/frontend_creating_custom_ui.markdown @@ -42,7 +42,22 @@ frontend: `www/custom_ui/state-card-my-custom-light.html`: -```javascript +```html +

!pTVx{mvwIq&2Qby>rYI%7d0@Mag|3@A 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
JOF)ekKyPgT#kr;+BsdJ>NO7 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
IYM>#^z51JbzE#Su~JX3*0VCRaz-{H4yB#By`b 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 literal 0 HcmV?d00001 From 48d08be9078667d31eaa83a3672f7edfa23678ef Mon Sep 17 00:00:00 2001 From: Ryan McLean Date: Mon, 19 Mar 2018 21:26:22 +0000 Subject: [PATCH 36/50] Add Documentation for plex client cleanup options (#4907) * Add Documentation for plex client cleanup options * Added removal option --- source/_components/media_player.plex.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index ddaf3a611bf..ba255c2e1eb 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -69,6 +69,8 @@ media_player: show_all_controls: false use_custom_entity_ids: true use_episode_art: true + remove_unavailable_clients: true + client_remove_interval: 600 ``` - **entity_namespace** (*Optional*): Prefix for entity ID's. Defaults to `null`. Useful when using overlapping components (ex. Apple TV and Plex components when you have Apple TV's you use as Plex clients). Go from _media_player.playroom2_ to _media_player.plex_playroom_ - **include_non_clients** (*Optional*): Display non-recontrollable clients (ex. remote clients, PlexConnect Apple TV's). Defaults to `false`. @@ -76,6 +78,8 @@ media_player: - **show_all_controls** (*Optional*): Forces all controls to display. Defaults to `false`. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect. - **use_custom_entity_ids** (*Optional*): Name Entity ID's by client ID's instead of friendly names. Defaults to `false`. HA assigns entity ID's on a first come first serve basis. When you have identically named devices connecting (ex. media_player.plex_web_safari, media_player.plex_web_safari2), you can't reliably distinguish and or predict which device is which. This option avoids this issue by using unique client ID's (ex. media_player.dy4hdna2drhn). - **use_episode_art** (*Optional*): Display TV episode art instead of TV show art. Defaults to `false`. +- **remove_unavailable_clients** (*Optional*): Remove stale plex clients from UI after interval. Defaults to `true`. +- **client_remove_interval** (*Optional*): How long a client is to be unavailable for before it is cleaned up. Defaults to `600 seconds (10min)`. ### {% linkable_title Service `play_media` %} From 58a304401d939ac1fc3ae3b2f44a80081fa563a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 20 Mar 2018 09:35:38 +0100 Subject: [PATCH 37/50] Update sensor.tibber.markdown (#4948) * Update sensor.tibber.markdown * :pencil2: Removed some newlines and small other stuff * Update sensor.tibber.markdown * Add raw --- source/_components/sensor.tibber.markdown | 31 +++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.tibber.markdown b/source/_components/sensor.tibber.markdown index 6ebcc84bcf0..81d11c7ac2b 100644 --- a/source/_components/sensor.tibber.markdown +++ b/source/_components/sensor.tibber.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Tibber" -description: "Instructions how to integrate Tibber within Home Assistant." +description: "Instructions on how to integrate Tibber within Home Assistant." date: 2017-10-03 17:00 sidebar: true comments: false @@ -13,7 +13,6 @@ ha_release: 0.55 ha_iot_class: "Cloud Polling" --- - The `tibber` sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer. To add Tibber to your installation, add the following to your `configuration.yaml` file: @@ -31,3 +30,31 @@ sensor: required: true type: string {% endconfiguration %} + +## {% linkable_title Examples %} + +In this section, you will find some real-life examples of how to use this sensor. + +### {% linkable_title Electricity price %} + +The electricity price can be used to make automations. The sensor has a `max_price` and `min_price` attribute, with max and min price for the current day. Here is an example to get a notification when the price is above 90% of the maximum price for the day: + +{% raw %} +```yaml +- alias: "Electricity price" + trigger: + platform: time + # Matches every hour at 1 minutes past whole + minutes: 1 + seconds: 00 + condition: + condition: template + value_template: '{{ float(states.sensor.electricity_price_hamretunet_10.state) > 0.9 * float(states.sensor.electricity_price_hamretunet_10.attributes.max_price) }}' + action: + - service: notify.pushbullet + data: + title: "Electricity price" + target: "device/daniel_telefon_cat" + message: "The electricity price is now {{ states.sensor.electricity_price_hamretunet_10.state }}" +``` +{% endraw %} From aba21eeca68d02b6b8bd52fbe7fcc3eaeabc415a Mon Sep 17 00:00:00 2001 From: maxclaey Date: Wed, 21 Mar 2018 20:41:45 +0100 Subject: [PATCH 38/50] Update alarm_control_panel.ifttt.markdown (#4970) * Update alarm_control_panel.ifttt.markdown * Update alarm_control_panel.ifttt.markdown --- .../alarm_control_panel.ifttt.markdown | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/source/_components/alarm_control_panel.ifttt.markdown b/source/_components/alarm_control_panel.ifttt.markdown index 13f67bafc5d..9fcd58e2d39 100644 --- a/source/_components/alarm_control_panel.ifttt.markdown +++ b/source/_components/alarm_control_panel.ifttt.markdown @@ -31,6 +31,10 @@ alarm_control_panel: - platform: ifttt name: YOUR_ALARM_NAME code: YOUR_ALARM_CODE + event_arm_away: YOUR_ARM_AWAY_EVENT + event_arm_home: YOUR_ARM_HOME_EVENT + event_arm_night: YOUR_ARM_NIGHT_EVENT + event_disarm: YOUR_DISARM_EVENT ```