From d35cb010dc9331644c2f38c447dc723e6cde2edf Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 8 Oct 2018 13:21:52 +0200 Subject: [PATCH 01/96] Add device registry to MQTT binary sensor --- .../_components/binary_sensor.mqtt.markdown | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 114c974cbbf..84a578189a1 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -115,6 +115,35 @@ force_update: reqired: false type: boolean default: false +device: + description: 'Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `[["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list, tuple + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %} ## {% linkable_title Examples %} From 81ffdd1ff0d6bea3f394a016dfcdbaef4f2b5a6b Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 8 Oct 2018 15:10:19 +0200 Subject: [PATCH 02/96] Clarify connections --- source/_components/binary_sensor.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 84a578189a1..42b94292226 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -125,7 +125,7 @@ device: required: false type: list, string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `[["mac", "02:5b:26:a8:dc:12"]]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list, tuple manufacturer: From 9e87aa9ca45562d8974a66c5fd3f89734c3e8c3e Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 8 Oct 2018 15:41:32 +0200 Subject: [PATCH 03/96] Add device registry to MQTT fan --- source/_components/fan.mqtt.markdown | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown index f48971fde9c..60bc9ad1f87 100644 --- a/source/_components/fan.mqtt.markdown +++ b/source/_components/fan.mqtt.markdown @@ -146,6 +146,35 @@ unique_id: description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception. required: false type: string +device: + description: 'Information about the device this fan is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list, tuple + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %}

From f19b75670ac41163840d8520da11b815d403e986 Mon Sep 17 00:00:00 2001 From: Glenn Waters Date: Mon, 8 Oct 2018 11:34:21 -0400 Subject: [PATCH 04/96] Add Elk light doc (#6590) --- source/_components/light.elkm1.markdown | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 source/_components/light.elkm1.markdown diff --git a/source/_components/light.elkm1.markdown b/source/_components/light.elkm1.markdown new file mode 100644 index 00000000000..2dfa79a4114 --- /dev/null +++ b/source/_components/light.elkm1.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Elk-M1 Light" +description: "Instructions how to integrate Elk-M1 light." +date: 2018-10-07 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: elkproducts.png +ha_release: 0.81 +ha_category: Light +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 light (which can be X10, Insteon, UPB) is represented as a `light`. + +

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

From 21472419df4700bc16c3ab245c9643b2d7a0b3ac Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 8 Oct 2018 20:16:29 +0200 Subject: [PATCH 05/96] Add webhook trigger docs (#6610) --- source/_docs/automation/templating.markdown | 9 +++++++++ source/_docs/automation/trigger.markdown | 15 +++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 74f0427f48c..a34d46cc3c6 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -126,6 +126,15 @@ The following tables show the available trigger data per platform. | `trigger.platform` | Hardcoded: `time` | `trigger.now` | DateTime object that triggered the time trigger. +### {% linkable_title webhook %} + +| Template variable | Data | +| ---- | ---- | +| `trigger.platform` | Hardcoded: `webhook` +| `trigger.webhook_id` | The webhook ID that was triggered. +| `trigger.json` | The JSON data of the request (if it had a JSON content type). +| `trigger.data` | The form data of the request (if it had a form data content type). + ### {% linkable_title zone %} | Template variable | Data | diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index e682a20c389..734799268b6 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -125,7 +125,7 @@ automation: offset: '-00:45:00' ``` -Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. +Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. {% raw %} ```yaml @@ -190,9 +190,20 @@ automation 3: seconds: 00 ```

- Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute. + Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute.

+### {% linkable_title Webhook trigger %} + +Webhook triggers are triggered by web requests made to the webhook endpoint: `/api/webhook/`. This endpoint does not require authentication besides knowing the webhook id. You can either send encoded form or JSON data, available in the template as either `trigger.json` or `trigger.data`. + +```yaml +automation: + trigger: + platform: webhook + webhook_id: +``` + ### {% linkable_title Zone trigger %} Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). From 6a0427d2c26c0cbaa88d4ad169ee37a35a07beb9 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Mon, 8 Oct 2018 21:14:47 +0200 Subject: [PATCH 06/96] MQTT Light: Add documentation of hs-formatted color support (#6377) * Update light.mqtt.markdown * Update light.mqtt.markdown --- source/_components/light.mqtt.markdown | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index b6409f10043..888f0001e0e 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -88,6 +88,21 @@ effect_list: description: The list of effects the light supports. required: false type: string list +hs_command_topic: + description: "The MQTT topic to publish commands to change the light's color state in HS format (Hue Saturation). + Range for Hue: 0° .. 360°, Range of Saturation: 0..100. + Note: Brightness is sent separately in the `brightness_command_topic`." + required: false + type: string +hs_state_topic: + description: "The MQTT topic subscribed to receive color state updates in HS format. + Note: Brightness is received separately in the `brightness_state_topic`." + required: false + type: string +hs_value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the HS value." + required: false + type: string on_command_type: description: "Defines when on the payload_on is sent. Using `last` (the default) will send any style (brightness, color, etc) topics first and then a `payload_on` to the `command_topic`. Using `first` will send the `payload_on` and then any style topics. Using `brightness` will only send brightness commands instead of the `payload_on` to turn the light on." required: false @@ -200,7 +215,7 @@ payload_not_available: | RGB Color | ✔ | ✔ | ✔ | | Transitions | ✘ | ✔ | ✔ | | XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | +| HS Color | ✔ | ✔ | ✘ | | White Value | ✔ | ✔ | ✔ | ## {% linkable_title Examples %} From 6c7d0a244afa626385a4c6d3b0a0a000b4729519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari=20Ylim=C3=A4inen?= Date: Mon, 8 Oct 2018 22:16:59 +0300 Subject: [PATCH 07/96] Add documentation for temp_step (#6084) * Add documentation for temp_step * Revert file permission change --- source/_components/climate.mqtt.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index 96f98766b54..41da3c077cc 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -201,6 +201,11 @@ max_temp: description: Maximum set point available type: number required: false +temp_step: + description: Step size for temperature set point + type: number + required: false + default: 1 {% endconfiguration %} #### {% linkable_title Optimistic mode %} From 1e62ae25eb525abf2a0162420d43efc6d140a6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Hellstr=C3=B6m?= Date: Tue, 9 Oct 2018 07:43:41 +0200 Subject: [PATCH 08/96] SMHI weather service (#6375) * SMHI weather service * Added logo * Added component docs as well * :pencil2: Spelling & grammar * Changed realease to 0.81 and removed redundant information --- source/_components/smhi.markdown | 54 +++++++++++++++++++++++ source/_components/weather.smhi.markdown | 21 +++++++++ source/images/supported_brands/smhi.png | Bin 0 -> 1687 bytes 3 files changed, 75 insertions(+) create mode 100644 source/_components/smhi.markdown create mode 100644 source/_components/weather.smhi.markdown create mode 100644 source/images/supported_brands/smhi.png diff --git a/source/_components/smhi.markdown b/source/_components/smhi.markdown new file mode 100644 index 00000000000..e2a7d2dd440 --- /dev/null +++ b/source/_components/smhi.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "SMHI" +description: "Instructions on how to integrate SMHI forecasts within Home Assistant." +date: 2018-09-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +featured: true +logo: smhi.png +ha_category: Hub +ha_release: 0.81 +ha_iot_class: "Cloud Polling" +--- + +The `smhi` component adds support for the [SMHI.se](https://www.smhi.se/) web service as a source for meteorological data for your location. + +## {% linkable_title Configuration %} + +The SMHI weather service is free under the Creative Commons Attribution 4.0, international license. Weather data will be pulled once every 30 minutes. + +To add SMHI weather forecast to your installation, go to the Integrations page inside the config panel and add a location by providing the longitude and latitude of your location. + +If the location is configured in Home Assistant, it will be selected as the default location. After that, you can add additional locations. + +

+You can only add locations through the integrations page, not in configuration files. +

+ +

+Only location close to Sweden can be added. See [SMHI.se area](http://opendata.smhi.se/apidocs/metfcst/geographic_area.html) for more details what locations are supported. +

+ + +{% configuration %} +latitude: + description: Manually specify latitude. + required: false + type: number + default: Provided by Home Assistant configuration +longitude: + description: Manually specify longitude. + required: false + type: number + default: Provided by Home Assistant configuration +name: + description: Name to use in the frontend. + required: false + type: string + default: Home +{% endconfiguration %} + +Details about the API are available in the [SMHI API documentation](http://opendata.smhi.se/apidocs/metfcst/index.html). diff --git a/source/_components/weather.smhi.markdown b/source/_components/weather.smhi.markdown new file mode 100644 index 00000000000..4eb17355a5b --- /dev/null +++ b/source/_components/weather.smhi.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "SMHI Weather" +description: "Instructions on how to integrate SMHI forecasts within Homeassistant." +date: 2018-09-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +featured: true +logo: smhi.png +ha_category: Weather +ha_release: 0.81 +ha_iot_class: "Cloud Polling" +--- + +The `smhi` platform uses the [SMHI.se](https://www.smhi.se/) web service as a source for meteorological data for your location. + +## {% linkable_title Configuration %} + +Please see the [component](/components/smhi/) documentation for details and configuration. \ No newline at end of file diff --git a/source/images/supported_brands/smhi.png b/source/images/supported_brands/smhi.png new file mode 100644 index 0000000000000000000000000000000000000000..4608ecd8b2a4b16fc1d0e51b403c784c08e914ac GIT binary patch literal 1687 zcmV;I259+-P)(#Q1n4m)EDtVA4G~Ec_;|RuNT2;iwaV;X-i|UYSL(m4J5X=g zKNcN8FYqt&qnaFJzl;Qi3G6&8A;uqNhOJ8)r2{gfjFf37T8CHO92YsUBU;i9hr7DQaT!Gr!>65Ig1jYOeY!iS4K4~fRZSP5L@L4Pg@ z?#7RG#i0&AE*kW1+J}3F91>gy^pxRV7b6pWAJ7r(!##r#oV6z_8wx-tdY9)LK0Smk zlJ;f6jijGTR}AWbJ01I;1@-}dBk9NX1bH9hZxLBqFo+c&^QiBfp@8IXcdr^A{&eVhhnaOg1G&$(0Sicx=Qd`&$@F(ux&um3M@&G`4(ATJgc1Z>7qg0 zbP=7Nb?1uU)0TZ2fY%J=#@1dmM4WJ-~l4a-RmD&G^YO zsVEZM#9Xp{AZ?Jf26$3)z8urh5`2XF;`k2CqSvb}^`0=084Yx=Gt@U_asOYHXLnif z_j#mV@c&N7h#@v2r8>7I$k~p+BL*_dfb)r8T`J-bc0*BaTy%lC{~<1D1HJ^FCOXAu zJN}vw3^K**NR$$SCoS&ZjMSXXdlZ15ft@M!)B~>r+t3$<+0KFgG?Z&2IfDjLNcWHB zGvvaGi>pa5c+%Gmd(_#Ve3NoE(N{|g>68OnLZk2(|Ad)hz5gcF? zncwd6pua0PY%vK8c(^~z4m-LPt~lhDV371>7x1QsdpzLK$0x!4!RLf!zg!axvhKST zS>v@0P*k|A)s7<-6}k;vw)iplv?VxAkkyMMV8X{kDRer)WT#p$k__p??T>DA=rbOC z4qz4~M_~r3J^_1z7X^n4#?c3fWsl6`ELg>EU;}Oz6;-4j2bJJ77)ENwzMS^Za`9A!Ni%IZh!D$K3g#`n=13YRV zKf|oc%L>!XF74F_P6>5y(l+2_;sdX1@n1a=#<=o*lyvpU{mS>MCb)=ak!i&iO0!QJ zfR8nOd}BP+b{&V0GIw3MDhbwEYbUTBag+Ok&&z|O90(IUKyt;14tqlFstmH?-0?!- zmU2Ca0$&y!Cb(*+Nm;@r1E#ZJ7x=K?8o>!Tk}Oh!N+P%g`<1YYLY4#{$1RI>BGmqa zQqq$!L21E&3&AkYi|?`|_!-<>oQ}-!Mz%Mz99kfzPpffm#tdf^FS& zf5dqgE55*?PsJb$f_DOs;l5o|N3d-q9Ugy+s1ckJeZXd9?(Djo(1!*4BzWGt=%^j} zHaG=51>DE%eDhopJQX8fl@`1i*$MYGbNBO_U;=r+)@tAl=KizzBzPEeat4SFrmBwM z@Lr-8q~PvmW)~KgAe+4EkRN{t31W5tpAr3|Eyb-OVg&vBrdMEAfpVJJorhs8r*zjv h5?tQTTruy9{vXY$!A?#Ry7vG8002ovPDHLkV1lSz|2_Z! literal 0 HcmV?d00001 From c4b511bd3e4ed63a577aa80480e58524d360ae36 Mon Sep 17 00:00:00 2001 From: marcolertora Date: Tue, 9 Oct 2018 10:13:27 +0200 Subject: [PATCH 09/96] Added recswitch platform documentation (#6548) * Added recswitch documentation * remove integration scale, change ha version, fix description --- source/_components/switch.recswitch.markdown | 47 ++++++++++++++++++ .../supported_brands/ankuoo_recswitch.png | Bin 0 -> 8313 bytes 2 files changed, 47 insertions(+) create mode 100644 source/_components/switch.recswitch.markdown create mode 100644 source/images/supported_brands/ankuoo_recswitch.png diff --git a/source/_components/switch.recswitch.markdown b/source/_components/switch.recswitch.markdown new file mode 100644 index 00000000000..c47ca9eee95 --- /dev/null +++ b/source/_components/switch.recswitch.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "Ankuoo Rec Switch" +logo: ankuoo_recswitch.png +description: "Instructions on how to integrate Ankuoo Rec Switch into Home Assistant." +date: 2018-10-05 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_release: "0.81" +ha_category: Switch +ha_iot_class: "Local Polling" +--- + +The `recswitch` switch platform allows you to control the Ankuoo Rec Switch devices. + +Supported devices (tested): +- Ankuoo RecSwitch MS6126 +- Lumitek CSW201 NEO WiFi + +### {% linkable_title Configuration %} + +To enable this switch, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +switch: + - platform: recswitch + host: 'IP_ADDRESS' + mac: 'MAC_ADDRESS' +``` + +{% configuration %} +host: + description: IP address or hostname of the device. + required: true + type: string +mac: + description: MAC address of the device. + required: true + type: string +name: + description: Name to use in the frontend. + required: false + type: string +{% endconfiguration %} \ No newline at end of file diff --git a/source/images/supported_brands/ankuoo_recswitch.png b/source/images/supported_brands/ankuoo_recswitch.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc7012e5458e6a5c0f97e7cfd200b9aeeee3a21 GIT binary patch literal 8313 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 DB)Fdq literal 0 HcmV?d00001 From 0b19d8ebd5fab9cda27276358b42f6a0b7c9b5ab Mon Sep 17 00:00:00 2001 From: rmacklin <1863540+rmacklin@users.noreply.github.com> Date: Tue, 9 Oct 2018 02:45:22 -0700 Subject: [PATCH 10/96] Improve accessibility of the home page (#6626) * Add alt text to images * Add title attribute to social links --- source/_includes/custom/footer.html | 10 ++++---- source/_includes/custom/grid_item_left.html | 28 ++++++++++----------- source/_includes/custom/header.html | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/source/_includes/custom/footer.html b/source/_includes/custom/footer.html index 1a2e590320c..ad8df9a0553 100644 --- a/source/_includes/custom/footer.html +++ b/source/_includes/custom/footer.html @@ -1,13 +1,13 @@