From da54fd19c196db6628874e7762ef5f48c6aa567f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Sandstr=C3=B6m?= Date: Sat, 6 Oct 2018 21:16:35 +0200 Subject: [PATCH 1/6] Update verisure.markdown (#6558) --- source/_components/verisure.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown index 686ab4ed017..799c43e6c32 100644 --- a/source/_components/verisure.markdown +++ b/source/_components/verisure.markdown @@ -46,4 +46,4 @@ Configuration variables: - **door_window** (*Optional*): Set to 1 to show door and window sensors, 0 to disable. Default 1. - **code_digits** (*Optional*): Number of digits in PIN code. Default 4. - **giid** (*Optional*): The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run 'python verisure.py EMAIL PASSWORD installations' -- **polling_rate** (*Optional*): Polling rate in minutes, Default 1 +- **scan_interval** (*Optional*): Scan interval in ```hh:mm:ss``` format. Default ```00:01:00``` From 70ecfb8eb71e5c01827c7d310d3df5b92c70e55a Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Sun, 7 Oct 2018 02:21:55 -0700 Subject: [PATCH 2/6] Cleanup google assistant document (#6562) * Cleanup google assistant document * Add screenshot for google assistant account linking * Add migration guide * Update the additonal users step * Add note for HTML5 App * Minor fix * :pencil2: Tweaks * :pencil2: Tweaks --- source/_components/google_assistant.markdown | 103 +++++++++++------- .../google_assistant/accountlinking.png | Bin 0 -> 79373 bytes 2 files changed, 63 insertions(+), 40 deletions(-) create mode 100644 source/images/components/google_assistant/accountlinking.png diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 2badda04992..b4c686990fd 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -25,43 +25,74 @@ The Google Assistant component requires a bit more setup than most due to the wa To use Google Assistant, your Home Assistant configuration has to be externally accessible with a hostname and SSL certificate. If you haven't already configured that, you should do so before continuing.

+## {% linkable_title Migrate to release 0.80 and above %} + +Since release 0.80, the `Authorization Code` type of `OAuth` account linking is supported. To migrate your configuration, you need: + +1. Change your `Account linking` setting in [Actions on Google console](https://console.actions.google.com/), look for the `Advanced Options` in the bottom left of the sidebar. + - Change `Linking type` to `OAuth` and `Authorization Code`. + - In the `Client information` section: + - Change `Client ID` to `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important. + - Input any string you like into `Client Secret`, Home Assistant doesn't need this field. + - Change `Authorization URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize` (replace with your actual URL). + - Change `Token URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token` (replace with your actual URL). + - In the `Client information` section: + - Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`. + - Click 'Save' at the top right corner, then click 'Test' to generate a new draft version of the Test App. +2. Change your `configuration.yaml` file: + - Remove `client_id`, `access_token`, `agent_uer_id` config from `google_assistant:` since they are no longer needed. +3. Restart Home Assistant, open the `Google Assistant` app on your mobile phone then go to `Settings > Home Control`, re-link `[test] your app name`. +4. A browser will be open and asking you to login to your Home Assistant instance, it will edirect back to `Google Assistant` app right afterward. + +

+If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. +

+ ## {% linkable_title Setup %} -You need to create an API Key with the [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](/#troubleshooting-the-request_sync-service)). If you don't provide it the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. +You need to create an API Key with the [Google Cloud API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting-the-request_sync-service)). If you don't provide one, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. 1. Create a new project in the [Actions on Google console](https://console.actions.google.com/). - a. Add/Import project, give it a name - b. Click on `Home Control` card, select the `Smart home` recommendation. - c. Create an Action, under the build section. Add 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`. Then click on `Overview`, which will lead you back to the app details screen. -2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section - a. Leave it at the default `No, I only want to allow account creation on my website` and select Next - b. For the `Linking type` select `OAuth` and `Authorization Code` - c. Client ID: `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important - d. Client Secret: Anything you like, Home Assistant don't need this field - e. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`. - f. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`. - g. Configure your client. Add scopes for `email` and `name`. - h. Do NOT check `Google to transmit clientID and secret via HTTP basic auth header` - i. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. -3. Back on the overview page. Click `Simulator` under `TEST`. It will create a new draft version Test App. You don't have to actually test. + 1. Add/Import a project and give it a name. + 2. Click on the `Home Control` card, select the `Smart home` recommendation. + 3. Create an Action, under the build section. Add 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. + 4. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen. +2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section. + 1. Leave it at the default `No, I only want to allow account creation on my website` and select Next. + 2. For the `Linking type` select `OAuth` and `Authorization Code`. + 3. Client ID: `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important. + 4. Client Secret: Anything you like, Home Assistant doesn't need this field. + 5. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`. + 6. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`. + 7. Configure your client. Add scopes for `email` and `name`. + 8. Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`. + 9. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. + + Screenshot: Account linking + +3. Back on the overview page. Click `Simulator` under `TEST`. It will create a new draft version Test App. You don't have to actually test, but you need to generate this draft version Test App. 4. If you haven't already added the component configuration to `configuration.yaml` file and restarted Home Assistant, you'll be unable to continue until you have. -5. Open the Google Assistant app and go into `Settings > Home Control` +5. Open the Google Assistant app and go into `Settings > Home Control`. 6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices. +

+If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. +

7. If you want to allow other household users to control the devices: - a. Go to the settings for the project you created in point 1 in the developer console. - 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 3 + 1. Go to the settings for the project you created in the [Actions on Google console](https://console.actions.google.com/). + 2. Click `Test -> Simulator`, then click `Share` icon in the right top corner. Follow the on-screen instruction: + 1. Add team members: Got to `Settings -> Permission`, click `Add`, type the new user's e-mail address and choose `Project -> Viewer` role. + 2. Copy and share the link with the new user. + 3. New user clicks the link with their own Google account, it will enable our draft test app under their account. + 3. Have the new user go to their `Google Assistant` app to add `[test] your app name` to their account. 8. 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, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials - d. Note down the generated API Key and use this in the configuration + 1. Go to the [Google API 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, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials. + 4. Note down the generated API Key and use this in the configuration. ## {% linkable_title Configuration %} -To enable this, add the following lines to your `configuration.yaml` file: +Now add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -85,7 +116,7 @@ google_assistant: {% configuration %} project_id: - description: Project ID from the Google Developer console (looks like `words-2ab12`) + description: Project ID from the Actions on Google console (looks like `words-2ab12`) required: true type: string api_key: @@ -144,25 +175,17 @@ Currently, the following domains are available to be used with Google Assistant, - media_player (on/off/set volume (via set brightness)) - climate (temperature setting) -It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: - -```bash -$ cat /dev/urandom | fold -w 120 | head -n 1 | base64 -w 0 | tr -dc '0-9A-Za-z' | cut -c -80 -``` - -If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. - ### {% linkable_title Troubleshooting the request_sync service %} -The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. +The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443) from Home Control and relink. -The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [developer console](https://console.actions.google.com). Resolve this by: +The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [Actions on Google console](https://console.actions.google.com). Resolve this by: - 1. Removing your project from the [developer console](https://console.actions.google.com). - 2. Add a new project to the [cloud console](https://console.cloud.google.com). Here you get a new `project_id`. + 1. Removing your project from the [Actions on Google console](https://console.actions.google.com). + 2. Add a new project to the [Google Cloud API Console](https://console.cloud.google.com). Here you get a new `project_id`. 3. Enable Homegraph API to the new project. 4. Generate a new API key. - 5. Again, create a new project in the [developer console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. + 5. Again, create a new project in the [Actions on Google console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. ### {% linkable_title Troubleshooting with NGINX %} diff --git a/source/images/components/google_assistant/accountlinking.png b/source/images/components/google_assistant/accountlinking.png new file mode 100644 index 0000000000000000000000000000000000000000..ae3198cdd2a17fe2e509f200bf2656fc9848589e GIT binary patch literal 79373 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 Q2>d~58C|K-xEAq009K@T761SM literal 0 HcmV?d00001 From 1325606f3009fa49aec755f1ee5b8f32ef0f92dc Mon Sep 17 00:00:00 2001 From: Glenn Waters Date: Sun, 7 Oct 2018 16:55:54 -0400 Subject: [PATCH 3/6] Add Elk-M1 (#6587) * Add Elk-M1. * Fix PR comments. --- .../alarm_control_panel.elkm1.markdown | 22 ++ source/_components/elkm1.markdown | 253 ++++++++++++++++++ .../images/supported_brands/elkproducts.png | Bin 0 -> 3634 bytes 3 files changed, 275 insertions(+) create mode 100644 source/_components/alarm_control_panel.elkm1.markdown create mode 100644 source/_components/elkm1.markdown create mode 100644 source/images/supported_brands/elkproducts.png diff --git a/source/_components/alarm_control_panel.elkm1.markdown b/source/_components/alarm_control_panel.elkm1.markdown new file mode 100644 index 00000000000..89a57e26fe4 --- /dev/null +++ b/source/_components/alarm_control_panel.elkm1.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Elk-M1 Alarm Control Panel" +description: "Instructions how to integrate Elk M1 alarm control panel." +date: 2018-10-07 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elkproducts.png +ha_release: 0.81 +ha_category: Alarm +ha_iot_class: "Local Push" +--- + +The `elkm1` platform allows you to control your [Elk-M1](https://www.elkproducts.com/m1_controls.html). + +An Elk-M1 area (also known as partition) is represented as an `alarm_control_panel`. + +

+Full configuration details can be found on the main [Elk-M1 component](/components/elkm1/) page. +

diff --git a/source/_components/elkm1.markdown b/source/_components/elkm1.markdown new file mode 100644 index 00000000000..7e6bdb540ed --- /dev/null +++ b/source/_components/elkm1.markdown @@ -0,0 +1,253 @@ +--- +layout: page +title: "Elk-M1 Controller" +description: "Instructions to setup the Elk-M1 controller." +date: 2018-10-07 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elkproducts.png +ha_release: 0.81 +ha_category: Hub +ha_iot_class: "Local Push" +--- + +The Elk-M1 is a home security and automation controller that is capable of alarm control panel functions and automation. + +The Elk-M1 controller is manufactured by [Elk Products](https://www.elkproducts.com). + +## {% linkable_title Configuration %} + +To integrate Elk-M1 controller with Home Assistant, add the following +section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +elkm1: + host: elk://IP_ADDRESS +``` + +{% configuration %} +host: + description: Connection string to Elk of the form `://
[:port]`. `` is `elk` for non-secure connection, `elks` for secure connection, and `serial` for serial port connection. `
` is IP address or domain or for `serial` the serial port that the Elk is connected to. Optional `` is the port to connect to on the Elk, defaulting to 2101 for `elk` and 2601 for `elks`. + required: true + type: string +username: + description: Username to login to Elk. Only required if using `elks` connection method. + required: false + type: string +password: + description: Password to login to Elk. Only required if using `elks` connection method. + required: false + type: string +temperature_unit: + description: The temperature unit that the Elk panel uses. Valid values are `C` and `F`. + required: false + type: string + default: F +area: + description: Elk areas to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +counter: + description: Elk counters to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +keypad: + description: Elk keypads to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +output: + description: Elk outputs to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +setting: + description: Elk settings to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +task: + description: Elk tasks to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +thermostat: + description: Elk thermostats to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +plc: + description: Elk PLC lights to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +zone: + description: Elk zones to include in Home Assistant. + required: false + default: All included. + type: map + keys: + enabled: + description: Enable this configuration section. + type: boolean + required: false + default: true + include: + description: List to include in the form of either `` or `-` where `` is a postive integer or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: All included. + exclude: + description: List to exclude in the form of either `` or `-` where `` is a number or a X10 housecode. See configuration below for examples of ranges. + type: list + required: false + default: None excluded. +{% endconfiguration %} + +Example configuration of the above: +```yaml +elkm1: + host: elks://IP_ADDRESS + username: USERNAME + password: PASSWORD + area: + exclude: [5-8] + zone: + exclude: [11-16, 19-192, 199-208] + plc: + include: [a1-d16, 192] + exclude: [b12-d5] +``` diff --git a/source/images/supported_brands/elkproducts.png b/source/images/supported_brands/elkproducts.png new file mode 100644 index 0000000000000000000000000000000000000000..3f026c21b0e466259c48dab44b775ea9a0189692 GIT binary patch literal 3634 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 r1-YF{Im4%F3Zj9ZC(BeXN>-)3otuWoPWY%lV1N Date: Mon, 8 Oct 2018 12:08:54 +0200 Subject: [PATCH 4/6] Add documentation for Xiaomi Vibration Sensor (#6600) --- .../binary_sensor.xiaomi_aqara.markdown | 30 +++++++++++++++++++ source/_components/xiaomi_aqara.markdown | 1 + 2 files changed, 31 insertions(+) diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown index 6f33659f78b..e782c1e9e9a 100644 --- a/source/_components/binary_sensor.xiaomi_aqara.markdown +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -35,6 +35,7 @@ The requirement is that you have setup the [`xiaomi aqara` component](/component | Aqara Wireless Switch (Single) | 86sw1 | WXKG03LM | off (always) | `click` | `click_type` | `single` | | Aqara Wireless Switch (Double) | 86sw2 | WXKG02LM | off (always) | `click` | `click_type` | `single`, `both` | | Cube | cube | MFKZQ01LM | off (always) | `cube_action` | `action_type`, `action_value` (rotate) | `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall`, `rotate` (degrees at action_value) | +| Vibration Sensor | vibration | DJT11LM | off (always) | `xiaomi_aqara.movement` | `movement_type` | `vibrate`, `tilt`, `free_fall` | ### {% linkable_title Automation examples %} @@ -308,3 +309,32 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac service: light.turn_off entity_id: light.gateway_light_34xxxxxxxx13 ``` + +#### {% linkable_title Vibration Sensor %} + +This automation toggles the living room lamp on vibration/tilt. + +```yaml +- alias: Turn on Living Room Lamp on vibration + trigger: + platform: event + event_type: xiaomi_aqara.movement + event_data: + entity_id: binary_sensor.vibration_xxxx000000 + movement_type: vibrate + action: + service: light.toggle + data: + entity_id: light.living_room_lamp +- alias: Turn on Living Room Lamp on tilt + trigger: + platform: event + event_type: xiaomi_aqara.movement + event_data: + entity_id: binary_sensor.vibration_xxxx000000 + movement_type: tilt + action: + service: light.toggle + data: + entity_id: light.living_room_lamp +``` diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index d98517498f1..5c6fa1016ba 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -40,6 +40,7 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/ - Gateway (Light, Illumination Sensor, Ringtone play) - Intelligent Curtain - Water Leak Sensor +- Vibration Sensor - Battery #### {% linkable_title Unsupported Devices %} From d79cf8d8da588bf458d8195394e72657367bce24 Mon Sep 17 00:00:00 2001 From: kalkih Date: Mon, 8 Oct 2018 14:50:39 +0200 Subject: [PATCH 5/6] Add sensor card --- source/_lovelace/sensor.markdown | 79 +++++++++++++++++++++ source/images/lovelace/lovelace_sensor.png | Bin 0 -> 11319 bytes 2 files changed, 79 insertions(+) create mode 100644 source/_lovelace/sensor.markdown create mode 100644 source/images/lovelace/lovelace_sensor.png diff --git a/source/_lovelace/sensor.markdown b/source/_lovelace/sensor.markdown new file mode 100644 index 00000000000..d1d1b49e0bd --- /dev/null +++ b/source/_lovelace/sensor.markdown @@ -0,0 +1,79 @@ +--- +layout: page +title: "Sensor Card" +sidebar_label: Sensor +description: "The sensor card gives you information about the sensor state" +date: 2018-10-07 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time. + +

+ Screenshot of the sensor card + Screenshot of the sensor card. +

+ +{% configuration %} +type: + required: true + description: sensor + type: string +entity: + required: true + description: Entity id of `sensor` domain + type: string +icon: + required: false + description: The card icon + type: string +name: + required: false + description: The card name + type: string +graph: + required: false + description: Type of graph `none` or `line` + type: string +unit: + required: false + description: The unit of measurement + type: string +height: + required: false + description: Height of the graph + type: integer + default: 100 +line_width: + required: false + description: Width of the line stroke + type: integer + default: 5 +line_color: + required: false + description: Color of the line stroke + type: string +accuracy: + required: false + description: Amount of data points on the graph + type: integer + default: 10 +hours_to_show: + required: false + description: Hours to show in graph + type: integer + default: 24 +{% endconfiguration %} + +## {% linkable_title Example %} + +```yaml +- type: sensor + entity: sensor.illumination + name: Illumination + height: 75 + line_color: "#3498db" +``` diff --git a/source/images/lovelace/lovelace_sensor.png b/source/images/lovelace/lovelace_sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5f850ebf259c886a38da6b67e802ad9fe3328f GIT binary patch literal 11319 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 literal 0 HcmV?d00001 From da4fa7e23d8200671a6252bf926b4cc0de03818e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 8 Oct 2018 14:54:24 +0200 Subject: [PATCH 6/6] Update IFTTT docs (#6594) * Update IFTTT docs * :pencil2: Tweaks * Address comments --- source/_components/ifttt.markdown | 42 +++++++++++++----- .../images/components/ifttt/IFTTT_to_HA.png | Bin 33343 -> 0 bytes 2 files changed, 31 insertions(+), 11 deletions(-) delete mode 100644 source/images/components/ifttt/IFTTT_to_HA.png diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index 9f48303946c..511390b52a5 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -13,7 +13,37 @@ featured: true ha_iot_class: "Cloud Push" --- -[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it. +[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so-called "Applets". With the IFTTT component, you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). + +## {% linkable_title Sending events from IFTTT to Home Assistant %} + +To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). + +To set it up, go to the integrations page in the configuration screen and find IFTTT. Click on configure. Follow the instructions on the screen to configure IFTTT. + +Events coming in from IFTTT will be available as events in Home Assistant and are fired as `ifttt_webhook_received`. The data specified in IFTTT will be available as the event data. You can use this event to trigger automations. + +For example, set the body of the IFTTT webhook to: + +```json +{ "action": "call_service", "service": "light.turn_on", "entity_id": "light.living_room" } +``` + +You can then consume that information with the following automation: + +```yaml +automation: + trigger: + event: ifttt_webhook_received + event_data: + action: call_service + action: + service_template: '{% raw %}{{ trigger.event.data.service }}{% endraw %}' + data_template: + entity_id: '{% raw %}{{ trigger.event.data.entity_id }}{% endraw %}' +``` + +## {% linkable_title Sending events to IFTTT %} ```yaml # Example configuration.yaml entry @@ -107,16 +137,6 @@ ifttt_notify: ``` {% endraw %} -### {% linkable_title Sending events from IFTTT to Home Assistant %} - -To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web. This can be achieved by forwarding port 8123 from your router to the device running Home Assistant. If your ISP is giving you a new IP address from time to time, consider using [DuckDNS](https://duckdns.org). - -In the URL field, you can then put an [API URL](/developers/rest_api/). You probably want to use a POST action, so select `POST` as method. After your request line, you need to add your Home Assistant password, which you defined in the [http section of your config](/getting-started/basic/#password-protecting-the-web-interface), in the form of `?api_password=YOUR_PASSWORD`. For the message body, refer to the API page linked above. - -

- -

- ### {% linkable_title Additional Channel Examples %} Additional examples of using IFTTT channels can be found below. diff --git a/source/images/components/ifttt/IFTTT_to_HA.png b/source/images/components/ifttt/IFTTT_to_HA.png deleted file mode 100644 index 53a7573ec4c4923828f5f995454cfc8153d4bcdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33343 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