From 7042ef1c0d0989ed1ee525b6c2f0ec0be42e8f23 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Thu, 23 Jan 2020 11:35:50 -0500 Subject: [PATCH 01/18] Improve Alexa Smart Home Documentation. --- sass/custom/_paulus.scss | 42 + source/_integrations/alexa.markdown | 7 +- .../_integrations/alexa.smart_home.markdown | 822 +++++++++++++++++- .../alexa/alexa_app_cover_position.png | Bin 0 -> 42261 bytes .../alexa/alexa_app_doorbell_announcement.png | Bin 0 -> 83976 bytes .../alexa/alexa_app_garage_door_pin.png | Bin 0 -> 90559 bytes .../alexa/alexa_app_person_detection.png | Bin 0 -> 76944 bytes .../alexa/alexa_app_security_system_pin.png | Bin 0 -> 87298 bytes 8 files changed, 830 insertions(+), 41 deletions(-) create mode 100644 source/images/integrations/alexa/alexa_app_cover_position.png create mode 100644 source/images/integrations/alexa/alexa_app_doorbell_announcement.png create mode 100644 source/images/integrations/alexa/alexa_app_garage_door_pin.png create mode 100644 source/images/integrations/alexa/alexa_app_person_detection.png create mode 100644 source/images/integrations/alexa/alexa_app_security_system_pin.png diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 09d7e804da71..bd832d87ea08 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -556,4 +556,46 @@ code { border: 1px solid #ddd; border-radius: 0.4em; padding: .1em .4em +} + +kbd, samp { + + & > p { + font-family: Georgia, "Times New Roman", Times, serif; + font-style: italic; + + & kbd { + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-decoration: underline; + color: #1990b8; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + + } + + } + + & em, & q { + quotes: '\201C' '\201D'; + font-family: Georgia, "Times New Roman", Times, serif; + font-style: italic; + } + + & em:before { + content: '\201C'; + } + + & em:after { + content: '\201D'; + } +} + +kbd em > i { + color: #1990b8; + +} + +samp > p { + color: #4A993E; } \ No newline at end of file diff --git a/source/_integrations/alexa.markdown b/source/_integrations/alexa.markdown index a01cd306120c..054ef92f738d 100644 --- a/source/_integrations/alexa.markdown +++ b/source/_integrations/alexa.markdown @@ -21,9 +21,12 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na There are a few ways that you can use Amazon Alexa and Home Assistant together. -- [Build custom commands](/integrations/alexa.intent/) +- [Create an Alexa Smart Home Skill to control lights, etc.](/integrations/alexa.smart_home/) + - Supports utterances without requiring the skill name, such as "Alexa, turn off the light." + - Support for controlling devices through Alexa routines. + - Support for viewing and controlling devices with the Alexa mobile app. +- [Create a Custom Alexa Skill to build custom commands](/integrations/alexa.intent/) - [Create a new Flash Briefing source](/integrations/alexa.flash_briefings/) -- [Use the Smart Home API to control lights, etc.](/integrations/alexa.smart_home/) - Alternative: use the [Emulated Hue integration][emulated-hue-component] to trick Alexa into thinking Home Assistant is a Philips Hue hub. ### Requirements diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 330ad3bd066c..d752f6ad16fd 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -6,23 +6,21 @@ ha_category: - Voice ha_release: "0.54" --- +Amazon Alexa provides a Smart Home API for richer home automation control and supports the ability to use simple intuitive utterances without saying the skill name, such as: -## Amazon Alexa Smart Home + + +_Alexa, turn off the light._ +_Alexa, set the thermostat to cool._ +_Alexa, is the garage door open?_ -While the Skills API described above allows for arbitrary intents, all -utterances must begin with "Alexa, tell $invocation_name ..." + + -The [Emulated Hue integration][emulated-hue-component] provides a simpler -interface such as, "Alexa, turn on the kitchen light". However, it has some -limitations since everything looks like a light bulb. -Amazon provides a Smart Home API for richer home automation control. It takes -considerable effort to configure. The easy solution is to use -[Home Assistant Cloud](/integrations/cloud/). +It takes considerable effort to configure. Your Home Assistant instance must be accessible from Internet, and you need to create Amazon Developer account and an Amazon Web Services (AWS) account. An easier solution is to use [Home Assistant Cloud](/integrations/cloud/). -However, config Amazon Alexa Smart Home Skill is not an easy job, you have to allow -your Home Assistant accessible from Internet, and you need to create Amazon Developer -account and an Amazon Web Service account. +The [Emulated Hue integration][emulated-hue-component] provides a simpler alternative to use utterances such as, _Alexa, turn on the kitchen light._ However, it has some limitations since everything looks like a light bulb.
@@ -33,11 +31,28 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na
+## Amazon Alexa Smart Home + +##### Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant +- [Requirements](#requirements) +- [Create your Amazon Alexa Smart Home Skill](#create-your-amazon-alexa-smart-home-skill) +- [Create your Lambda function](#create-your-lambda-function) + - [Create an IAM Role for Lambda](#create-an-iam-role-for-lambda) + - [Add the code for your Lambda function](#add-the-code-for-your-lambda-function) + - [Test the Lambda function](#test-the-lambda-function) +- [Configure the smart home service endpoint](#configure-the-smart-home-service-endpoint) +- [Account linking](#account-linking) +- [Alexa Smart Home Component Configuration](#alexa-smart-home-component-configuration) +- [Supported integrations](#supported-integrations) +- [Alexa web-based app](#alexa-web-based-app) +- [Troubleshooting](#troubleshooting) +- [Debugging](#debugging) + ### Requirements -- Amazon Developer Account. You can sign on [here](https://developer.amazon.com). -- An [AWS account](https://aws.amazon.com/free/) is need if you want to use Smart Home Skill API. Part of your Smart Home Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However you don't need worry the cost, AWS Lambda allow free to use up to 1 millions requests and 1GB outbound data transfer per month. -- The Smart Home API also needs your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport), this is so account linking can take place. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- The Alexa Smart Home API requires your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a SSL/TLS certificate. A self-signed certificate will work but a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport) is recommended. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- Amazon Developer Account. Sign up [here](https://developer.amazon.com). +- An [Amazon Web Services (AWS)](https://aws.amazon.com/free/) account is required to host the Lambda function for your Alexa Smart Home Skill. [AWS Lambda](https://aws.amazon.com/lambda/pricing/) is free to use for up to 1-million requests and 1GB outbound data transfer per month. ### Create Your Amazon Alexa Smart Home Skill @@ -46,9 +61,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na - Input `Skill name` as you like, select your skill's `Default language`. - Select `Smart Home` and `Provision your own`, then click `Create skill` button at top right corner. -

- Screenshot: Create Smart Home skill -

+ - In next screen, make sure *v3* is selected in `Payload version`. - Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alex Developer Console opened, we need change the skill configuration later. @@ -59,7 +72,7 @@ Alexa Smart Home skill will trigger a AWS Lambda function to process the request
-There already are some great tutorials and solutions in our community to achieve same goal "Create your Alexa Smart Home Skill to connect Home Assistant", for example: [Haaska](https://github.com/mike-grant/haaska/wiki). +There already are some great tutorials and solutions in our community to achieve same goal "Create your Alexa Smart Home Skill to connect Home Assistant", for example: [haaska](https://github.com/mike-grant/haaska/wiki). You can follow this document or others, but you cannot mixed-match different solutions since they may have different design. @@ -84,7 +97,7 @@ First thing you need to do after sing in [AWS console](https://console.aws.amazo - You can skip `Add tags` page, click `Next: Review`. - Give your new role a name, such as `AWSLambdaBasicExecutionRole-SmartHome`, then click `Create role` button. You should be able to find your new role in the roles list now. -#### Create a Lambda function and add code +#### Add the Code for your Lambda function Next you need create a Lambda function. @@ -117,7 +130,7 @@ Next you need create a Lambda function. #### Test the Lambda function -Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-component-configuration) if you want more control of the exposure. +Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-smart-home-component-configuration) if you want more control of the exposure. ```yaml alexa: @@ -154,7 +167,7 @@ Now, you can login to your Home Assistant and [generate a long-lived access toke This time, you will get a list of your devices as the response. 🎉 -### Config the Smart Home Service Endpoint +### Configure the Smart Home Service Endpoint Now removed the long-lived access token if you want, copied the ARN of your Lambda function, then back to [Alexa Developer Console][alexa-dev-console]. You will finish the configuration of the Smart Home skill. @@ -198,9 +211,9 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom * A new window will open to direct you to your Home Assistant's login screen. * After you success login, you will be redirected back to Alexa app. * You can discovery your devices now. -- Now, you can ask your Echo or in Alexa App, *turn on bedroom* 🎉 +- Now, you can ask your Echo or in Alexa App, _Alexa, turn on bedroom_ 🎉 -### Alexa Component Configuration +### Alexa Smart Home Component Configuration Example configuration: @@ -209,8 +222,8 @@ alexa: smart_home: locale: en-US endpoint: https://api.amazonalexa.com/v3/events - client_id: !secret alexa_client_id - client_secret: !secret alexa_client_secret + client_id: YOUR_SKILL_CLIENT_ID + client_secret: YOUR_SKILL_CLIENT_SECRET filter: include_entities: - light.kitchen @@ -221,13 +234,96 @@ alexa: - switch.outside entity_config: light.kitchen: - name: Custom Name for Alexa - description: The light in the kitchen + name: "Custom Name for Alexa" + description: "The light in the kitchen" switch.stairs: display_categories: LIGHT ``` - -Set the `locale` to the locale of your Alexa devices. Supported locales are: `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. Default is `en-US`. +{% configuration %} +alexa: + description: Alexa configuration + required: true + type: map + keys: + smart_home: + description: Alexa Smart Home configuration + required: true + type: map + keys: + locale: + description: The locale of your Alexa devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. See [Alexa Locale](#alexa-locale) for additional information. + required: false + type: string + endpoint: + description: >- + To enable proactive events you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. + * North America: `https://api.amazonalexa.com/v3/events` + * Europe: `https://api.eu.amazonalexa.com/v3/events` + * Far East: `https://api.fe.amazonalexa.com/v3/events` + required: false + type: string + client_id: + description: See [Proactive Events](#proactive-events) for more information. + required: false + type: string + client_secret: + description: See [Proactive Events](#proactive-events) for more information. + required: false + type: string + filter: + description: Filter domains and entities for Alexa. + required: true + type: map + keys: + include_domains: + description: List of domains to include (e.g., `light`). + required: false + type: list + exclude_domains: + description: List of domains to exclude (e.g., `light`). + required: false + type: list + include_entities: + description: List of entities to include (e.g., `light.attic`). + required: false + type: list + exclude_entities: + description: List of entities to include (e.g., `light.attic`). + required: false + type: list + entity_config: + description: Configuration for specific entities. All subordinate keys are the corresponding entity ids or the domains, e.g., `alarm_control_panel.woowoo`. + required: false + type: map + keys: + '``': + description: Additional options for specific entities. + required: false + type: map + keys: + name: + description: Name of the entity to show in Amazon Alexa App. + required: false + type: string + description: + description: Description of the entity to show in Amazon Alexa App. + required: false + type: string + display_categories: + description: >- + Display category and iconography each entity is shown in the Alexa app. Separate each category with a comma. First category is primary. e.g., `MUSIC_SYSTEM,STREAMING_DEVICE,SPEAKER`. See [Alexa Display Categories](#alexa-display-categories) for a list of available categories. + required: false + type: string +{% endconfiguration %} + + +#### Alexa Locale +The `locale` should match the location and language used for your Amazon echo devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. + +See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. + + +#### Proactive Events The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: @@ -235,19 +331,667 @@ The `endpoint`, `client_id` and `client_secret` are optional, and are only requi - The `client_id` and `client_secret` are not the ones used by the skill that have been set up using "Login with Amazon" (in the [Alexa Developer Console][amazon-dev-console]: Build > Account Linking), but rather from the "Alexa Skill Messaging" (in the Alexa Developer Console: Build > Permissions > Alexa Skill Messaging). To get them, you need to enable the "Send Alexa Events" permission. - If the "Send Alexa Events" permission was not enabled previously, you need to unlink and relink the skill using the Alexa App, or else Home Assistant will show the following error: "Token invalid and no refresh token available. Also, you need to restart your Home Assistant after each disabling/enabling the skill in Alexa." -### Alexa web-based app +#### Configure Filter + +By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind only [supported components](#supported-integrations) can be added. + +{% raw %} +```yaml +# Example filter to include specified domains and exclude specified entities +alexa: + smart_home: + filter: + include_domains: + - alarm_control_panel + - light + exclude_entities: + - light.kitchen_light +``` +{% endraw %} + +Filters are applied as follows: + +1. No includes or excludes - pass all entities +2. Includes, no excludes - only include specified entities +3. Excludes, no includes - only exclude specified entities +4. Both includes and excludes: + * Include domain specified + - if domain is included, and entity not excluded, pass + - if domain is not included, and entity not included, fail + * Exclude domain specified + - if domain is excluded, and entity not included, fail + - if domain is not excluded, and entity not excluded, pass + - if both include and exclude domains specified, the exclude domains are ignored + * Neither include or exclude domain specified + - if entity is included, pass (as #2 above) + - if entity include and exclude, the entity exclude is ignored + +See the [troubleshooting](#troubleshooting) if for issues setting up the integration. + + +#### Alexa Display Categories +Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices. + +```yaml +light.kitchen_light: + display_categories: LIGHT,SWITCH +``` + +
+Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the display category provided by Home Assistant will limit features provided by Amazon Alexa. +
+ +See [Alexa Display Categories][alexa-display-categories] for a complete list + +### Supported Integrations + +Home Assistant supports the following integrations through Alexa using a Smart Home Skill. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). + +The following integrations are currently supported: +- [Alarm Control Panel](#alarm-control-panel) +- [Alert](#alert-automation-group-input-boolean) +- [Automation](#alert-automation-group-input-boolean) +- [Binary Sensor](#binary-sensor) + - [Doorbell Announcement](#doorbell-announcement) + - [Presence Detection](#presence-detection-with-binary-sensor) +- [Climate](#climate) +- [Cover](#cover) + - [Garage Doors](#garage-doors) +- [Fan](#fan) + - [Fan Speed](#fan-speed) + - [Fan Direction](#fan-direction) + - [Fan Oscillation](#fan-oscillation) +- [Group](#alert-automation-group-input-boolean) +- [Input Boolean](#alert-automation-group-input-boolean) +- [Input Number](#input-number) +- [Image Processing](#image-processing) +- [Light](#light) +- [Lock](#lock) +- [Media Player](#media-player) + - [Channels](#change-channel) + - [Speakers](#speaker-volume) + - [Sound Mode & Equalizers](#equalizer-mode) + - [Inputs](#inputs) + - [Payback Control](#seek) +- [Scene](#scene) +- [Script](#script) +- [Sensor](#sensor) +- [Switch](#switch) +- [Timer](#timer) +- [Vacuum](#vacuum) + +#### Alarm Control Panel +Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alarm Control Panel entity. + + + +_Alexa, arm my home in away mode._ +_Alexa, arm my home._ +_Alexa, disarm my home._ +_Alexa, is my home armed?_ + + + +##### Arming +Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming. e.g. switching from `armed_home` to `armed_night`. + +The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and is treated as `armed_home`. + +
+ +Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true` the entity will not be exposed during discovery. +
+The Alarm Control Panel may default the `code_arm_required` attribute to `true` even if the platform does not support or require it. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override `code_arm_required` to `false` and expose the Alarm Control Panel during discovery. + +
+ +##### Disarming +Users must opt in to the disarm by voice feature in the Alexa App. Alexa will require a 4 digit voice personal identification number (PIN) for disarming. Configure a 4 digit PIN in the Alexa app, or use an existing 4 digit PIN code configured for the Alarm Control Panel. + +

+ + Screenshot: Alexa App Security System PIN +

+ +To use the exiting code configured for the Alarm Control Panel the `code` must be 4 digits and the `code_format` attribute must be `FORMAT_NUMBER`. After discovery the Alexa app will offer the ability to use the existing `code`, or create an additional 4 digit PIN to use with Alexa. + +The existing code is never communicated to Alexa from Home Assistant. During disarming, Alexa will ask for a PIN. The PIN spoken to Alexa is relayed to Home Assistant and passed to the `alarm_control_panel.alarm_disarm` service. If the `alarm_control_panel.alarm_disarm` service fails for any reason, it is assumed the PIN was incorrect and reported to Alexa as an invalid PIN. + +#### Alert, Automation, Group, Input Boolean +Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switches. + + + +_Alexa, turn on the front door alert._ +_Alexa, turn off energy saving automations._ +_Alexa, Downstairs to on._ + + + + +#### Binary Sensor +Requires [Proactive Events](#proactive-events) enabled. + +Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. + +|`device_class`|Alexa Sensor Type| +| :---: | :---: | +|`door`|Contact| +|`garage_door`|Contact| +|`opening`|Contact| +|`window`|Contact| +|`motion`|Motion| +|`presense`|Motion| + +Ask Alexa for the state of a contact sensor. + + + +_Alexa, is the bedroom window open?_ + + + +##### Routines +Requires [Proactive Events](#proactive-events) enabled. + +Alexa Routines can be triggered with Binary Sensors exposed as contact or motion sensors. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. + +##### Doorbell Announcement +Requires [Proactive Events](#proactive-events) enabled. + +Configure a `binary_sensor` with `display_category` of `DOORBELL` in the [`entity_config`](#entity_config) to gain access to the doorbell notification settings in the Alexa App. + +```yaml +alexa: + smart_home: + entity_config: + binary_sensor.alexa_doorbell: + name: "Front Door" + description: "Doorbell Binary Sensor" + display_categories: DOORBELL +``` + +Alexa will announce on all echo devices _Someone is at the [entity name]_. when a `binary_sensor` state changes from `off` to `on`. + +
+Each Amazon Echo device will need the communication and announcements setting enabled, and the Do Not Disturb feature turned off. +
+ + +

+ + Screenshot: Alexa App Doorbell Notification +

+ + +##### Presence Detection with Binary Sensor +Requires [Proactive Events](#proactive-events) enabled. +Configure a `binary_sensor` that has a `device_class` attribute of `motion` or `presence` and configure `display_category` to `CAMERA` in the [`entity_config`](#entity_config) to gain access the presence detected notification settings in the Alexa App. + +```yaml +alexa: + smart_home: + entity_config: + binary_sensor.driveway_presence: + name: "Driveway" + description: "Driveway Presence Sensor" + display_categories: CAMERA +``` + +Alexa will announce on all echo devices Person detected at [entity name]. + +
+ +Each Echo device will need the communication and Announcements setting enabled, and the Do Not Disturb feature turned off. + +
+ +

+ + Screenshot: Alexa App Person Detection Notification +

+ +[Image Processing](#image-processing) entities also support this notification. + +#### Climate +Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). + +##### Set Thermostat Temperature + + +Alexa, set thermostat to 20. +Alexa, set the AC to 75. +Alexa, make it warmer in here. +Alexa, make it cooler in here. + + + +##### Thermostat Mode + + +_Alexa, set living room thermostat to automatic._ + + + +- `DRY` is shown in Alexa app as `DEHUMIDIFY` +- `ECO` is handled as a `preset` in Home Assistant, and will not display in the Alexa app. +- `FAN_ONLY` is not supported by the Alexa voice model and is shown as `OFF` in the Alexa App. + +To change the thermostat mode the exact utterance must be used: + + + +_Alexa, set [entity name] to [mode utterance]._ + + + +If the climate entity supports on/off, use _turn on_ and _turn off_ utterances with the entity name or the mode utterance. + + + +_Alexa, turn on the [mode utterance]._ +_Alexa, turn off the [entity name]._ + + + +Alexa supports the following utterances value for climate thermostat mode: + +|HA Climate Mode | Alexa Mode Utterances | +|--- |--- | +|`AUTO` | _auto_, _automatic_| +|`COOL` | _cool_, _cooling_| +|`HEAT` | _heat_, _heating_| +|`ECO` | _eco_, _economical_| +|`DRY` | _dehumidify_| +|`OFF` | _off_| + +#### Cover +Covers should be configured with the appropriate `device_class`. + +Covers with a `device_class` of `blind`, `shade`, `curtin` are shown as an Interior Blind in the Alexa App and Covers with a `window`, `awning`, or `shutter` will show as an Exterior Blind. + +Covers with the `device_class` of `garage` are shown as a [Garage Door](#garage-doors) and support the Open by Voice PIN feature. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to correctly expose a `cover` to Alexa. + +##### Open/Close/Raise/Lower +Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _turn on_ / _turn off_ utterances will also work. + + + +_Alexa, open the garage door._ +_Alexa, close the curtain._ +_Alexa, lower the shades._ +_Alexa, raise the roof!_ + + + +The _raise_, _lower_, _open_, _close_ semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, _open/close_ semantics are assigned to the tilt functionality, and _raise/lower_ semantics are assigned to the position functionality. + +If the cover does not support tilt, all semantics _raise_, _lower_, _open_, _close_ are assigned to the position functionality. + + + +##### Set Cover Position +Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. + + + +_Alexa, set the [entity name] position to thirty percent._ +_Alexa, increase [entity name] position by ten percent._ +_Alexa, decrease [entity name] position by twenty percent._ + + + +|Locale|Friendly Name Synonyms| +|---|---| +|`en-US`|_position_, _opening_| + +Currently Alexa only supports friendly name synonyms for the `en-US` locale. + +##### Set Cover Tilt +Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. + + + +_Alexa, set the [entity name] tilt to thirty percent._ +_Alexa, increase [entity name] tilt by ten percent._ +_Alexa, decrease [entity name] tilt by twenty percent._ + + + + +|Locale|Friendly Name Synonyms| +|---|---| +|`en-US`|_tilt_, _angle_, _direction_| + +Currently Alexa only supports friendly name synonyms for the `en-US` locale. + +##### Garage Doors +Covers with a `device_class` of `garage` support the Open by Voice PIN feature in the Alexa app. Configure a 4 digit PIN code to open the garage door in the Alexa app. + +

+ + Screenshot: Alexa App Garage Door Open by voice +

+ +#### Fan + +Control fan speed, direction, and oscillation. + +##### Fan Speed +The fan device must support the `speed` attribute. `speed` can be set using a percentage or a range value determined from the `speed_list` attribute. + + + +_Alexa, set the fan speed to three._ +_Alexa, set the fan speed to fifty percent._ +_Alexa, set the fan power level to fifty percent._ +_Alexa, turn up the speed on the tower fan._ +_Alexa, set the air speed on the tower fan to maximum._ + + + +The `speed_list` attribute is used to determine the range value. For example, using a `speed_list` consisting of `[off, low, medium, high]` the range values would be `0:off`, `1:low`, `2:medium`, `3:high`. + +The following table lists the possible friendly name synonyms available for a fan with `speed_list: [off, low, medium, high]`. + +|Fan Range|Friendly Name Synonyms| +|---|---| +|0|_zero_, _off_| +|1|_one_, _thirty three percent_, _low_, _minimum_, _min_| +|2|_two_, _sixty six percent_, _medium_| +|3|_three_, _one hundred percent_, _high_, _maximum_, _max_| + +The following synonyms can be used for _fan speed_ + +|Locale|Friendly Name Synonyms| +|---|---| +|`en-US`|_fan speed_, _airflow speed_, _wind speed_, _air speed_, _air velocity_, _power level_| + +Currently Alexa only supports friendly name synonyms for the `en-US` locale. + +##### Fan Direction +The fan device must support the `direction` attribute. + + + +_Alexa, set the fan direction to forward._ +_Alexa, set the fan direction to reverse._ + + + + + +##### Fan Oscillation +The fan device must support the `oscillating` attribute. + + + +_Alexa, is oscillate on for the tower fan?_ +_Alexa, turn on swivel for the tower fan._ +_Alexa, turn on oscillation mode for the table fan._ + + + +|Locale|Friendly Name Synonyms| +|---|---| +|`en-US`|_oscillate_, _swivel_, _oscillation_, _spin_, _back and forth_| + +Currently Alexa only supports friendly name synonyms for the `en-US` locale. + +#### Image Processing +Requires [Proactive Events](#proactive-events) enabled. + +##### Presence Detection Notification +All `image_processing` entities support the presence detected notification settings in the Alexa App. Any state change will trigger the notification. + +Alexa will announce on all echo devices Person detected at [entity name]. + +

+ + Screenshot: Alexa App Person Detection Notification +

+ +
+ +Display category will default to `CAMERA` to enable presence detected notification settings in the Alexa App. Each Echo device will need the communication and Announcements setting enabled, and the Do Not Disturbed feature turned off. + +
+ +#### Input Number +Control an `input_number` entity with Alexa. Configures Alexa with the `min`, `max`, `step`, and `unit_of_measurement` attributes for the entity. + + + +_Alexa, set [entity name] to forty five [unit of measurement]._ +_Alexa, increase the [entity name] by two._ +_Alexa, set the [entity name] to maximum._ + + + +The following table lists the possible friendly name synonyms available for a Input Number with `min: -90, max: 90, step: 45, unit_of_measurement: degrees`. + +|Fan Range|Friendly Name Synonyms| +|---|---| +|-90|_negative ninety_, _minimum_, _min_| +|-45|_negative forty five_| +|0|_zero_| +|45|_forty five_| +|90|_ninety_, _maximum_, _max_| + +#### Light + + + +_Alexa, dim the bathroom light._ +_Alexa, set the bedroom light to fifty percent._ + + + +#### Lock + + + +_Alexa, lock my front door._ +_Alexa, unlock the dungeon._ + + + +##### Locking + + +##### Unlocking +To unlock, Alexa will require a 4 digit voice personal identification number (PIN) for unlocking. Configure a 4 digit PIN in the Alexa app to unlock locks. + +#### Media Player + + +##### Change Channel + + + +_Alexa, change the channel to 200 on the Living Room TV._ +_Alexa, change the channel to PBS on the TV._ +_Alexa, next channel on the Living Room TV._ +_Alexa, channel up on the TV._ +_Alexa, channel down on the TV._ + + + +##### Speaker Volume + + + +_Alexa, set the volume of the speakers to 50._ +_Alexa, turn the volume down on the stereo by 20._ +_Alexa, turn the volume down on Living Room TV._ +_Alexa, mute speakers._ +_Alexa, unmute speakers._ +_Alexa, lower the volume on the stereo._ +_Alexa, volume up 20 on the speakers._ + + + +##### Equalizer Mode +Supports changing the Media Player `sound_mode` from the preset `sound_mode_list`. + + + +_Alexa, set mode to movie on the TV._ + + + +Alexa only supports the following modes: `movie`, `music`, `night`, `sport`, `tv`. + +##### Inputs +Supports changing the Media Player `source` from the preset `source_list`. + + + +_Alexa, change the input to DVD on the Living Room TV._ + + + +Home Assistant will attempt to translate the the `media_player` `source_list` into a valid `source` name for Alexa. Alexa only supports the following input names: + +`AUX 1`, `AUX 2`, `AUX 3`, `AUX 4`, `AUX 5`, `AUX 6`, `AUX 7`, `BLURAY`, `CABLE`, `CD`, `COAX 1`, `COAX 2`, `COMPOSITE 1`, `DVD`, `GAME`, `HD RADIO`, `HDMI 1`, `HDMI 2`, `HDMI 3`, `HDMI 4`, `HDMI 5`, `HDMI 6`, `HDMI 7`, `HDMI 8`, `HDMI 9`, `HDMI 10`, `HDMI ARC`, `INPUT 1`, `INPUT 2`, `INPUT 3`, `INPUT 4`, `INPUT 5`, `INPUT 6`, `INPUT 7`, `INPUT 8`, `INPUT 9`, `INPUT 10`, `IPOD`, `LINE 1`, `LINE 2`, `LINE 3`, `LINE 4`, `LINE 5`, `LINE 6`, `LINE 7`, `MEDIA PLAYER`, `OPTICAL 1`, `OPTICAL 2`, `PHONO`, `PLAYSTATION`, `PLAYSTATION 3`, `PLAYSTATION 4`, `SATELLITE`, `SMARTCAST`, `TUNER`, `TV`, `USB DAC`, `VIDEO 1`, `VIDEO 2`, `VIDEO 3`, `XBOX` + + + + +##### Playback State +Requires [Proactive Events](#proactive-events) enabled. + +##### Seek + + +_Alexa, skip 30 seconds on device._ +_Alexa, go back 10 seconds on device._ + + + +#### Scene +Activate scenes with scene name, or turn on utterance. Home Assistant does not support deactivate or turn off for scenes at this time. + + + +_Alexa, Party Time._ +_Alexa, turn on Party Time._ + + + +#### Script +Run script with script name, or turn on utterance. Deactivate a running script with turn off utterance. + + + +_Alexa, Party Time._ +_Alexa, turn on Party Time._ +_Alexa, turn off Party Time._ + + + +#### Sensor +Requires [Proactive Events](#proactive-events) enabled. + +Only temperature sensors are configured at this time. + + + +_Alexa, what's the temperature in the kitchen?_ +_Alexa, what's the upstairs temperature?_ +_Alexa, what's the temperature of my ex-girlfriend's heart?_ + + + +#### Switch +Support turn on and turn off utterances. + + + +_Alexa, turn on the vacuum._ +_Alexa, turn off the lights._ + + + +#### Timer +Start, Pause, and Restart Timer entities in Home Assistant. + + + +_Alexa, pause the microwave._ +_Alexa, hold the sous vide._ +_Alexa, restart the microwave._ + + + +
+To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name. +
+ +#### Vacuum +Support turn on and turn off utterances. Pause and Resume + + + +_Alexa, turn on the vacuum._ +_Alexa, pause the vacuum._ +_Alexa, restart the vacuum._ + + + +### Alexa web-based app The following is a list of regions and the corresponding URL for the web-based Alexa app: + * United States: `https://alexa.amazon.com` + * United Kingdom: `https://alexa.amazon.co.uk` + * Germany: `https://alexa.amazon.de` + * Japan: `https://alexa.amazon.co.jp` + * Canada: `https://alexa.amazon.ca` + * Australia: `https://alexa.amazon.com.au` + * India: `https://alexa.amazon.in` + * Spain: `https://alexa.amazon.es` + +### Troubleshooting + +#### Binary Sensor not available in Routine Trigger +Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. + +Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. + +#### Token invalid and no refresh token available +Disable and re-enable the skill using the Alexa App; then restart Home Assistant. + +### Debugging + +The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the the relevant line below to the `configuration.yaml`: + +If using an Alexa with a Alexa Smart Home Skill and Lambda Function such as haaska: + +```yaml +logger: + default: info + logs: + homeassistant.components.alexa: debug +``` + +If using Home Assistant Cloud you also need to debug `hass_nubucasa.iot`: + +```yaml +logger: + default: info + logs: + homeassistant.components.alexa: debug + hass_nabucasa.iot: debug +``` -* United States: -* United Kingdom: -* Germany: -* Japan: -* Canada: -* Australia: -* India: -* Spain: + [alexa-dev-console]: https://developer.amazon.com/alexa/console/ask [emulated-hue-component]: /integrations/emulated_hue/ [generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token +[alexa-display-categories]: https://developer.amazon.com/docs/alexa/device-apis/alexa-discovery.html#display-categories +[alexa-supported-locales]: https://developer.amazon.com/docs/alexa/device-apis/list-of-interfaces.html \ No newline at end of file diff --git a/source/images/integrations/alexa/alexa_app_cover_position.png b/source/images/integrations/alexa/alexa_app_cover_position.png new file mode 100644 index 0000000000000000000000000000000000000000..4fde3a0d51d93846c8b20f6281f3b73b3b318dbf GIT binary patch literal 42261 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%0AyYuJBL@5}2FQW!UgPCWx>|>`+ioIdNZdq5}i- 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 literal 0 HcmV?d00001 diff --git a/source/images/integrations/alexa/alexa_app_garage_door_pin.png b/source/images/integrations/alexa/alexa_app_garage_door_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..f13dc78de655863c79049f327ff8b8540f9b0d9e GIT binary patch literal 90559 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

Zpa_f%1>hY#289bYZCW;{ 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

@}oPf-Tp`Cb3W&m^4iwI!tMRXhHj4Q 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 MUHx3vIVCg!0PA4eKL7v# literal 0 HcmV?d00001 From 800045aed3b934b229c595c5c6e90250df81a147 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Thu, 23 Jan 2020 13:11:33 -0500 Subject: [PATCH 02/18] Reverted create_a_new_skill.png image. --- source/_integrations/alexa.smart_home.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index d752f6ad16fd..77bb8527f114 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -61,7 +61,9 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na - Input `Skill name` as you like, select your skill's `Default language`. - Select `Smart Home` and `Provision your own`, then click `Create skill` button at top right corner. - +

+ Screenshot: Create Smart Home skill +

- In next screen, make sure *v3* is selected in `Payload version`. - Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alex Developer Console opened, we need change the skill configuration later. From c8382f9d4e3214b1da41c0b7e6c00175214fa1f5 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 15:04:28 -0500 Subject: [PATCH 03/18] Apply suggestions from code review Co-Authored-By: Franck Nijhof --- .../_integrations/alexa.smart_home.markdown | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 77bb8527f114..c62aec823138 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -6,7 +6,8 @@ ha_category: - Voice ha_release: "0.54" --- -Amazon Alexa provides a Smart Home API for richer home automation control and supports the ability to use simple intuitive utterances without saying the skill name, such as: + +Amazon Alexa provides a Smart Home API for richer home automation control and supports the ability to use simple, intuitive utterances without saying the skill name, such as: @@ -18,9 +19,9 @@ _Alexa, is the garage door open?_ -It takes considerable effort to configure. Your Home Assistant instance must be accessible from Internet, and you need to create Amazon Developer account and an Amazon Web Services (AWS) account. An easier solution is to use [Home Assistant Cloud](/integrations/cloud/). +It takes considerable effort to configure. Your Home Assistant instance must be accessible from the Internet, and you need to create an Amazon Developer account and an Amazon Web Services (AWS) account. An easier solution is to use [Home Assistant Cloud](/integrations/cloud/). -The [Emulated Hue integration][emulated-hue-component] provides a simpler alternative to use utterances such as, _Alexa, turn on the kitchen light._ However, it has some limitations since everything looks like a light bulb. +The [Emulated Hue integration][emulated-hue-component] provides a simpler alternative to use utterances such as _"Alexa, turn on the kitchen light"_. However, it has some limitations since everything looks like a light bulb.
@@ -50,7 +51,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na ### Requirements -- The Alexa Smart Home API requires your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a SSL/TLS certificate. A self-signed certificate will work but a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport) is recommended. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- The Alexa Smart Home API requires your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using an SSL/TLS certificate. A self-signed certificate will work, but a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport) is recommended. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. - Amazon Developer Account. Sign up [here](https://developer.amazon.com). - An [Amazon Web Services (AWS)](https://aws.amazon.com/free/) account is required to host the Lambda function for your Alexa Smart Home Skill. [AWS Lambda](https://aws.amazon.com/lambda/pricing/) is free to use for up to 1-million requests and 1GB outbound data transfer per month. @@ -132,7 +133,7 @@ Next you need create a Lambda function. #### Test the Lambda function -Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-smart-home-component-configuration) if you want more control of the exposure. +Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-smart-home-component-configuration) if you want more control of the exposure. ```yaml alexa: @@ -213,7 +214,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom * A new window will open to direct you to your Home Assistant's login screen. * After you success login, you will be redirected back to Alexa app. * You can discovery your devices now. -- Now, you can ask your Echo or in Alexa App, _Alexa, turn on bedroom_ 🎉 +- Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 ### Alexa Smart Home Component Configuration @@ -258,7 +259,7 @@ alexa: type: string endpoint: description: >- - To enable proactive events you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. + To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. * North America: `https://api.amazonalexa.com/v3/events` * Europe: `https://api.eu.amazonalexa.com/v3/events` * Far East: `https://api.fe.amazonalexa.com/v3/events` @@ -320,11 +321,11 @@ alexa: #### Alexa Locale + The `locale` should match the location and language used for your Amazon echo devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. - #### Proactive Events The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: @@ -372,7 +373,8 @@ See the [troubleshooting](#troubleshooting) if for issues setting up the integra #### Alexa Display Categories -Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices. + +Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices. ```yaml light.kitchen_light: @@ -423,6 +425,7 @@ The following integrations are currently supported: - [Vacuum](#vacuum) #### Alarm Control Panel + Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alarm Control Panel entity. @@ -434,8 +437,9 @@ _Alexa, is my home armed?_ -##### Arming -Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming. e.g. switching from `armed_home` to `armed_night`. +##### Arming + +The Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming. e.g. switching from `armed_home` to `armed_night`. The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and is treated as `armed_home`. @@ -448,18 +452,20 @@ The Alarm Control Panel may default the `code_arm_required` attribute to `true`
##### Disarming -Users must opt in to the disarm by voice feature in the Alexa App. Alexa will require a 4 digit voice personal identification number (PIN) for disarming. Configure a 4 digit PIN in the Alexa app, or use an existing 4 digit PIN code configured for the Alarm Control Panel. + +Users must opt-in to the disarm by voice feature in the Alexa App. Alexa will require a 4 digit voice personal identification number (PIN) for disarming. Configure a 4 digit PIN in the Alexa app, or use an existing 4 digit PIN code configured for the Alarm Control Panel.

Screenshot: Alexa App Security System PIN

-To use the exiting code configured for the Alarm Control Panel the `code` must be 4 digits and the `code_format` attribute must be `FORMAT_NUMBER`. After discovery the Alexa app will offer the ability to use the existing `code`, or create an additional 4 digit PIN to use with Alexa. +To use the exiting code configured for the Alarm Control Panel the `code` must be 4 digits and the `code_format` attribute must be `FORMAT_NUMBER`. After discovery, the Alexa app will offer the ability to use the existing `code`, or create an additional 4 digit PIN to use with Alexa. The existing code is never communicated to Alexa from Home Assistant. During disarming, Alexa will ask for a PIN. The PIN spoken to Alexa is relayed to Home Assistant and passed to the `alarm_control_panel.alarm_disarm` service. If the `alarm_control_panel.alarm_disarm` service fails for any reason, it is assumed the PIN was incorrect and reported to Alexa as an invalid PIN. -#### Alert, Automation, Group, Input Boolean +#### Alert, Automation, Group, Input Boolean + Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switches. @@ -472,6 +478,7 @@ _Alexa, Downstairs to on._ #### Binary Sensor + Requires [Proactive Events](#proactive-events) enabled. Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. @@ -494,6 +501,7 @@ _Alexa, is the bedroom window open?_ ##### Routines + Requires [Proactive Events](#proactive-events) enabled. Alexa Routines can be triggered with Binary Sensors exposed as contact or motion sensors. @@ -501,6 +509,7 @@ Alexa Routines can be triggered with Binary Sensors exposed as contact or motion Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. ##### Doorbell Announcement + Requires [Proactive Events](#proactive-events) enabled. Configure a `binary_sensor` with `display_category` of `DOORBELL` in the [`entity_config`](#entity_config) to gain access to the doorbell notification settings in the Alexa App. @@ -515,20 +524,19 @@ alexa: display_categories: DOORBELL ``` -Alexa will announce on all echo devices _Someone is at the [entity name]_. when a `binary_sensor` state changes from `off` to `on`. +Alexa will announce on all echo devices _"Someone is at the [entity name]"_ when a `binary_sensor` state changes from `off` to `on`.
Each Amazon Echo device will need the communication and announcements setting enabled, and the Do Not Disturb feature turned off.
-

Screenshot: Alexa App Doorbell Notification

- ##### Presence Detection with Binary Sensor + Requires [Proactive Events](#proactive-events) enabled. Configure a `binary_sensor` that has a `device_class` attribute of `motion` or `presence` and configure `display_category` to `CAMERA` in the [`entity_config`](#entity_config) to gain access the presence detected notification settings in the Alexa App. @@ -996,4 +1004,4 @@ logger: [emulated-hue-component]: /integrations/emulated_hue/ [generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token [alexa-display-categories]: https://developer.amazon.com/docs/alexa/device-apis/alexa-discovery.html#display-categories -[alexa-supported-locales]: https://developer.amazon.com/docs/alexa/device-apis/list-of-interfaces.html \ No newline at end of file +[alexa-supported-locales]: https://developer.amazon.com/docs/alexa/device-apis/list-of-interfaces.html From 37bebbc6cbb3c7681c266a38bf87a4ce10dcbc44 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 16:47:36 -0500 Subject: [PATCH 04/18] Revert Style Changes. --- sass/custom/_paulus.scss | 42 ---------------------------------------- 1 file changed, 42 deletions(-) diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index bd832d87ea08..09d7e804da71 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -556,46 +556,4 @@ code { border: 1px solid #ddd; border-radius: 0.4em; padding: .1em .4em -} - -kbd, samp { - - & > p { - font-family: Georgia, "Times New Roman", Times, serif; - font-style: italic; - - & kbd { - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-decoration: underline; - color: #1990b8; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - - } - - } - - & em, & q { - quotes: '\201C' '\201D'; - font-family: Georgia, "Times New Roman", Times, serif; - font-style: italic; - } - - & em:before { - content: '\201C'; - } - - & em:after { - content: '\201D'; - } -} - -kbd em > i { - color: #1990b8; - -} - -samp > p { - color: #4A993E; } \ No newline at end of file From fd79ab90aa53bfbb45e7f5931df9c86b8e5212a3 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 16:56:27 -0500 Subject: [PATCH 05/18] Line formatting, whitespace fixes, utterances as lists. --- .../_integrations/alexa.smart_home.markdown | 410 +++++++----------- 1 file changed, 154 insertions(+), 256 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index c62aec823138..c3509eddca3a 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -7,18 +7,12 @@ ha_category: ha_release: "0.54" --- -Amazon Alexa provides a Smart Home API for richer home automation control and supports the ability to use simple, intuitive utterances without saying the skill name, such as: +Amazon Alexa provides a Smart Home API for richer home automation control without requiring the the user to say the skill name, such as: - - -_Alexa, turn off the light._ -_Alexa, set the thermostat to cool._ -_Alexa, is the garage door open?_ - - +* _"Alexa, turn off the light."_ +* _"Alexa, set the thermostat to cool."_ +* _"Alexa, is the garage door open?"_ - - It takes considerable effort to configure. Your Home Assistant instance must be accessible from the Internet, and you need to create an Amazon Developer account and an Amazon Web Services (AWS) account. An easier solution is to use [Home Assistant Cloud](/integrations/cloud/). The [Emulated Hue integration][emulated-hue-component] provides a simpler alternative to use utterances such as _"Alexa, turn on the kitchen light"_. However, it has some limitations since everything looks like a light bulb. @@ -35,6 +29,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na ## Amazon Alexa Smart Home ##### Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant + - [Requirements](#requirements) - [Create your Amazon Alexa Smart Home Skill](#create-your-amazon-alexa-smart-home-skill) - [Create your Lambda function](#create-your-lambda-function) @@ -85,7 +80,7 @@ Amazon also provided a [step-by-step guide](https://developer.amazon.com/docs/sm OK, let's go. You first need sign in your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tire benefit. You don't need worry the cost if your account already pass the first 12 months, AWS provides up to 1 million Lambda request, 1GB outbound data and all inbound data for free, every month, all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. -#### Create an IAM Role for Lambda +#### Create an IAM Role for Lambda First thing you need to do after sing in [AWS console](https://console.aws.amazon.com/) is to create an IAM Role for Lambda execution. AWS has very strict access control, you have to specific define and assign the permissions. @@ -122,7 +117,7 @@ Next you need create a Lambda function. * BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. * NOT_VERIFY_SSL *(optional)*: you can set it to *True* to ignore the SSL issue, if you don't have a valid SSL certificate or you are using self-signed certificate. * DEBUG *(optional)*: set to *True* to log the debug message - * LONG_LIVED_ACCESS_TOKEN *(optional, not recommend)*: you will connect your Alexa Smart Home skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to read token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.) + * LONG_LIVED_ACCESS_TOKEN *(optional, not recommend)*: you will connect your Alexa Smart Home skill with your Home Assistant user account in the later steps, so that you don't need to use long-lived access token here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convinces, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to read token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.)

Screenshot: Environment variables in Lambda function @@ -168,7 +163,7 @@ Click `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, you will get a Now, you can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you put your long-lived access token to the `Environment variable`, do not forget click `Save` button before you `Test` again. -This time, you will get a list of your devices as the response. 🎉 +This time, you will get a list of your devices as the response. 🎉 ### Configure the Smart Home Service Endpoint @@ -194,7 +189,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - https://pitangui.amazon.com/ if you are in US - https://layla.amazon.com/ if you are in EU - https://alexa.amazon.co.jp/ if you are in JP and AU (not verified yet) - + The trailing slash is important here. * `Client Secret`: input anything you like, Home Assistant does not check this field @@ -214,7 +209,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom * A new window will open to direct you to your Home Assistant's login screen. * After you success login, you will be redirected back to Alexa app. * You can discovery your devices now. -- Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 +- Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 ### Alexa Smart Home Component Configuration @@ -262,7 +257,7 @@ alexa: To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. * North America: `https://api.amazonalexa.com/v3/events` * Europe: `https://api.eu.amazonalexa.com/v3/events` - * Far East: `https://api.fe.amazonalexa.com/v3/events` + * Far East: `https://api.fe.amazonalexa.com/v3/events` required: false type: string client_id: @@ -319,7 +314,6 @@ alexa: type: string {% endconfiguration %} - #### Alexa Locale The `locale` should match the location and language used for your Amazon echo devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. @@ -368,9 +362,8 @@ Filters are applied as follows: * Neither include or exclude domain specified - if entity is included, pass (as #2 above) - if entity include and exclude, the entity exclude is ignored - -See the [troubleshooting](#troubleshooting) if for issues setting up the integration. +See the [troubleshooting](#troubleshooting) if for issues setting up the integration. #### Alexa Display Categories @@ -383,16 +376,16 @@ light.kitchen_light:

Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the display category provided by Home Assistant will limit features provided by Amazon Alexa. -
+
See [Alexa Display Categories][alexa-display-categories] for a complete list - + ### Supported Integrations Home Assistant supports the following integrations through Alexa using a Smart Home Skill. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). The following integrations are currently supported: -- [Alarm Control Panel](#alarm-control-panel) +- [Alarm Control Panel](#alarm-control-panel) - [Alert](#alert-automation-group-input-boolean) - [Automation](#alert-automation-group-input-boolean) - [Binary Sensor](#binary-sensor) @@ -428,14 +421,10 @@ The following integrations are currently supported: Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alarm Control Panel entity. - - -_Alexa, arm my home in away mode._ -_Alexa, arm my home._ -_Alexa, disarm my home._ -_Alexa, is my home armed?_ - - +* _"Alexa, arm my home in away mode."_ +* _"Alexa, arm my home."_ +* _"Alexa, disarm my home."_ +* _"Alexa, is my home armed?"_ ##### Arming @@ -445,7 +434,7 @@ The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and
-Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true` the entity will not be exposed during discovery. +Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true` the entity will not be exposed during discovery.
The Alarm Control Panel may default the `code_arm_required` attribute to `true` even if the platform does not support or require it. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override `code_arm_required` to `false` and expose the Alarm Control Panel during discovery. @@ -468,14 +457,9 @@ The existing code is never communicated to Alexa from Home Assistant. During dis Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switches. - - -_Alexa, turn on the front door alert._ -_Alexa, turn off energy saving automations._ -_Alexa, Downstairs to on._ - - - +* _"Alexa, turn on the front door alert."_ +* _"Alexa, turn off energy saving automations."_ +* _"Alexa, Downstairs to on."_ #### Binary Sensor @@ -494,11 +478,7 @@ Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class Ask Alexa for the state of a contact sensor. - - -_Alexa, is the bedroom window open?_ - - +* _"Alexa, is the bedroom window open?"_ ##### Routines @@ -512,8 +492,7 @@ Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#cus Requires [Proactive Events](#proactive-events) enabled. -Configure a `binary_sensor` with `display_category` of `DOORBELL` in the [`entity_config`](#entity_config) to gain access to the doorbell notification settings in the Alexa App. - +Configure a `binary_sensor` with `display_category` of `DOORBELL` in the [`entity_config`](#entity_config) to gain access to the doorbell notification settings in the Alexa App. ```yaml alexa: smart_home: @@ -551,7 +530,7 @@ alexa: display_categories: CAMERA ``` -Alexa will announce on all echo devices Person detected at [entity name]. +Alexa will announce on all echo devices _"Person detected at [entity name]"_.
@@ -564,202 +543,169 @@ Each Echo device will need the communication and Announcements setting enabled, Screenshot: Alexa App Person Detection Notification

-[Image Processing](#image-processing) entities also support this notification. +[Image Processing](#image-processing) entities also support this notification. #### Climate -Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). +Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). ##### Set Thermostat Temperature - - -Alexa, set thermostat to 20. -Alexa, set the AC to 75. -Alexa, make it warmer in here. -Alexa, make it cooler in here. - +Alexa, set thermostat to 20. +Alexa, set the AC to 75. +Alexa, make it warmer in here. +Alexa, make it cooler in here. ##### Thermostat Mode - - -_Alexa, set living room thermostat to automatic._ - +* _"Alexa, set living room thermostat to automatic."_ -- `DRY` is shown in Alexa app as `DEHUMIDIFY` -- `ECO` is handled as a `preset` in Home Assistant, and will not display in the Alexa app. -- `FAN_ONLY` is not supported by the Alexa voice model and is shown as `OFF` in the Alexa App. +- `DRY` is shown in Alexa app as `DEHUMIDIFY` +- `ECO` is handled as a `preset` in Home Assistant, and will not display in the Alexa app. +- `FAN_ONLY` is not supported by the Alexa voice model and is shown as `OFF` in the Alexa App. -To change the thermostat mode the exact utterance must be used: +To change the thermostat mode the exact utterance must be used: - - -_Alexa, set [entity name] to [mode utterance]._ - - +* _"Alexa, set [entity name] to [mode utterance]."_ -If the climate entity supports on/off, use _turn on_ and _turn off_ utterances with the entity name or the mode utterance. +If the climate entity supports on/off, use _turn on_ and _turn off_ utterances with the entity name or the mode utterance. - +* _"Alexa, turn on the [mode utterance]."_ +* _"Alexa, turn off the [entity name]."_ -_Alexa, turn on the [mode utterance]._ -_Alexa, turn off the [entity name]._ - - - -Alexa supports the following utterances value for climate thermostat mode: +Alexa supports the following utterances value for climate thermostat mode: |HA Climate Mode | Alexa Mode Utterances | |--- |--- | -|`AUTO` | _auto_, _automatic_| -|`COOL` | _cool_, _cooling_| -|`HEAT` | _heat_, _heating_| -|`ECO` | _eco_, _economical_| -|`DRY` | _dehumidify_| -|`OFF` | _off_| +|`AUTO` | _auto_, _automatic_| +|`COOL` | _cool_, _cooling_| +|`HEAT` | _heat_, _heating_| +|`ECO` | _eco_, _economical_| +|`DRY` | _dehumidify_| +|`OFF` | _off_| #### Cover -Covers should be configured with the appropriate `device_class`. -Covers with a `device_class` of `blind`, `shade`, `curtin` are shown as an Interior Blind in the Alexa App and Covers with a `window`, `awning`, or `shutter` will show as an Exterior Blind. +Covers should be configured with the appropriate `device_class`. + +Covers with a `device_class` of `blind`, `shade`, `curtin` are shown as an Interior Blind in the Alexa App and Covers with a `window`, `awning`, or `shutter` will show as an Exterior Blind. -Covers with the `device_class` of `garage` are shown as a [Garage Door](#garage-doors) and support the Open by Voice PIN feature. +Covers with the `device_class` of `garage` are shown as a [Garage Door](#garage-doors) and support the Open by Voice PIN feature. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to correctly expose a `cover` to Alexa. ##### Open/Close/Raise/Lower -Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _turn on_ / _turn off_ utterances will also work. - - - -_Alexa, open the garage door._ -_Alexa, close the curtain._ -_Alexa, lower the shades._ -_Alexa, raise the roof!_ - - -The _raise_, _lower_, _open_, _close_ semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, _open/close_ semantics are assigned to the tilt functionality, and _raise/lower_ semantics are assigned to the position functionality. +Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _turn on_ / _turn off_ utterances will also work. -If the cover does not support tilt, all semantics _raise_, _lower_, _open_, _close_ are assigned to the position functionality. +* _"Alexa, open the garage door."_ +* _"Alexa, close the curtain."_ +* _"Alexa, lower the shades."_ +* _"Alexa, raise the roof!"_ +The _raise_, _lower_, _open_, _close_ semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, _open/close_ semantics are assigned to the tilt functionality, and _raise/lower_ semantics are assigned to the position functionality. +If the cover does not support tilt, all semantics _raise_, _lower_, _open_, _close_ are assigned to the position functionality. ##### Set Cover Position -Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. - +Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. -_Alexa, set the [entity name] position to thirty percent._ -_Alexa, increase [entity name] position by ten percent._ -_Alexa, decrease [entity name] position by twenty percent._ - - +* _"Alexa, set the [entity name] position to thirty percent."_ +* _"Alexa, increase [entity name] position by ten percent."_ +* _"Alexa, decrease [entity name] position by twenty percent."_ |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_position_, _opening_| +|`en-US`|_position_, _opening_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. ##### Set Cover Tilt -Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. - - - -_Alexa, set the [entity name] tilt to thirty percent._ -_Alexa, increase [entity name] tilt by ten percent._ -_Alexa, decrease [entity name] tilt by twenty percent._ - +Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. +* _"Alexa, set the [entity name] tilt to thirty percent."_ +* _"Alexa, increase [entity name] tilt by ten percent."_ +* _"Alexa, decrease [entity name] tilt by twenty percent."_ |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_tilt_, _angle_, _direction_| +|`en-US`|_tilt_, _angle_, _direction_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. ##### Garage Doors + Covers with a `device_class` of `garage` support the Open by Voice PIN feature in the Alexa app. Configure a 4 digit PIN code to open the garage door in the Alexa app.

Screenshot: Alexa App Garage Door Open by voice

- + #### Fan Control fan speed, direction, and oscillation. ##### Fan Speed -The fan device must support the `speed` attribute. `speed` can be set using a percentage or a range value determined from the `speed_list` attribute. - +The fan device must support the `speed` attribute. `speed` can be set using a percentage or a range value determined from the `speed_list` attribute. -_Alexa, set the fan speed to three._ -_Alexa, set the fan speed to fifty percent._ -_Alexa, set the fan power level to fifty percent._ -_Alexa, turn up the speed on the tower fan._ -_Alexa, set the air speed on the tower fan to maximum._ - - +* _"Alexa, set the fan speed to three."_ +* _"Alexa, set the fan speed to fifty percent."_ +* _"Alexa, set the fan power level to fifty percent."_ +* _"Alexa, turn up the speed on the tower fan."_ +* _"Alexa, set the air speed on the tower fan to maximum."_ -The `speed_list` attribute is used to determine the range value. For example, using a `speed_list` consisting of `[off, low, medium, high]` the range values would be `0:off`, `1:low`, `2:medium`, `3:high`. +The `speed_list` attribute is used to determine the range value. For example, using a `speed_list` consisting of `[off, low, medium, high]` the range values would be `0:off`, `1:low`, `2:medium`, `3:high`. The following table lists the possible friendly name synonyms available for a fan with `speed_list: [off, low, medium, high]`. |Fan Range|Friendly Name Synonyms| |---|---| -|0|_zero_, _off_| -|1|_one_, _thirty three percent_, _low_, _minimum_, _min_| -|2|_two_, _sixty six percent_, _medium_| -|3|_three_, _one hundred percent_, _high_, _maximum_, _max_| +|0|_zero_, _off_| +|1|_one_, _thirty three percent_, _low_, _minimum_, _min_| +|2|_two_, _sixty six percent_, _medium_| +|3|_three_, _one hundred percent_, _high_, _maximum_, _max_| -The following synonyms can be used for _fan speed_ +The following synonyms can be used for _fan speed_ |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_fan speed_, _airflow speed_, _wind speed_, _air speed_, _air velocity_, _power level_| +|`en-US`|_fan speed_, _airflow speed_, _wind speed_, _air speed_, _air velocity_, _power level_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. ##### Fan Direction -The fan device must support the `direction` attribute. - - - -_Alexa, set the fan direction to forward._ -_Alexa, set the fan direction to reverse._ - - +The fan device must support the `direction` attribute. +* _"Alexa, set the fan direction to forward."_ +* _"Alexa, set the fan direction to reverse."_ ##### Fan Oscillation -The fan device must support the `oscillating` attribute. - - -_Alexa, is oscillate on for the tower fan?_ -_Alexa, turn on swivel for the tower fan._ -_Alexa, turn on oscillation mode for the table fan._ +The fan device must support the `oscillating` attribute. - +* _"Alexa, is oscillate on for the tower fan?"_ +* _"Alexa, turn on swivel for the tower fan."_ +* _"Alexa, turn on oscillation mode for the table fan."_ |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_oscillate_, _swivel_, _oscillation_, _spin_, _back and forth_| +|`en-US`|_oscillate_, _swivel_, _oscillation_, _spin_, _back and forth_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. #### Image Processing + Requires [Proactive Events](#proactive-events) enabled. ##### Presence Detection Notification + All `image_processing` entities support the presence detected notification settings in the Alexa App. Any state change will trigger the notification. -Alexa will announce on all echo devices Person detected at [entity name]. +Alexa will announce on all echo devices _"Person detected at [entity name]"_.

@@ -773,188 +719,140 @@ Display category will default to `CAMERA` to enable presence detected notificati

#### Input Number -Control an `input_number` entity with Alexa. Configures Alexa with the `min`, `max`, `step`, and `unit_of_measurement` attributes for the entity. - - -_Alexa, set [entity name] to forty five [unit of measurement]._ -_Alexa, increase the [entity name] by two._ -_Alexa, set the [entity name] to maximum._ +Control an `input_number` entity with Alexa. Configures Alexa with the `min`, `max`, `step`, and `unit_of_measurement` attributes for the entity. - +* _"Alexa, set [entity name] to forty five [unit of measurement]."_ +* _"Alexa, increase the [entity name] by two."_ +* _"Alexa, set the [entity name] to maximum."_ The following table lists the possible friendly name synonyms available for a Input Number with `min: -90, max: 90, step: 45, unit_of_measurement: degrees`. |Fan Range|Friendly Name Synonyms| |---|---| -|-90|_negative ninety_, _minimum_, _min_| -|-45|_negative forty five_| -|0|_zero_| -|45|_forty five_| -|90|_ninety_, _maximum_, _max_| +|-90|_negative ninety_, _minimum_, _min_| +|-45|_negative forty five_| +|0|_zero_| +|45|_forty five_| +|90|_ninety_, _maximum_, _max_| #### Light - - -_Alexa, dim the bathroom light._ -_Alexa, set the bedroom light to fifty percent._ - - +* _"Alexa, dim the bathroom light."_ +* _"Alexa, set the bedroom light to fifty percent."_ #### Lock - - -_Alexa, lock my front door._ -_Alexa, unlock the dungeon._ - - +* _"Alexa, lock my front door."_ +* _"Alexa, unlock the dungeon."_ ##### Locking - ##### Unlocking + To unlock, Alexa will require a 4 digit voice personal identification number (PIN) for unlocking. Configure a 4 digit PIN in the Alexa app to unlock locks. #### Media Player - ##### Change Channel - - -_Alexa, change the channel to 200 on the Living Room TV._ -_Alexa, change the channel to PBS on the TV._ -_Alexa, next channel on the Living Room TV._ -_Alexa, channel up on the TV._ -_Alexa, channel down on the TV._ - - +* _"Alexa, change the channel to 200 on the Living Room TV."_ +* _"Alexa, change the channel to PBS on the TV."_ +* _"Alexa, next channel on the Living Room TV."_ +* _"Alexa, channel up on the TV."_ +* _"Alexa, channel down on the TV."_ ##### Speaker Volume - - -_Alexa, set the volume of the speakers to 50._ -_Alexa, turn the volume down on the stereo by 20._ -_Alexa, turn the volume down on Living Room TV._ -_Alexa, mute speakers._ -_Alexa, unmute speakers._ -_Alexa, lower the volume on the stereo._ -_Alexa, volume up 20 on the speakers._ - - +* _"Alexa, set the volume of the speakers to 50."_ +* _"Alexa, turn the volume down on the stereo by 20."_ +* _"Alexa, turn the volume down on Living Room TV."_ +* _"Alexa, mute speakers."_ +* _"Alexa, unmute speakers."_ +* _"Alexa, lower the volume on the stereo."_ +* _"Alexa, volume up 20 on the speakers."_ ##### Equalizer Mode -Supports changing the Media Player `sound_mode` from the preset `sound_mode_list`. - - -_Alexa, set mode to movie on the TV._ +Supports changing the Media Player `sound_mode` from the preset `sound_mode_list`. - +* _"Alexa, set mode to movie on the TV."_ Alexa only supports the following modes: `movie`, `music`, `night`, `sport`, `tv`. ##### Inputs -Supports changing the Media Player `source` from the preset `source_list`. - - -_Alexa, change the input to DVD on the Living Room TV._ +Supports changing the Media Player `source` from the preset `source_list`. - +* _"Alexa, change the input to DVD on the Living Room TV."_ Home Assistant will attempt to translate the the `media_player` `source_list` into a valid `source` name for Alexa. Alexa only supports the following input names: `AUX 1`, `AUX 2`, `AUX 3`, `AUX 4`, `AUX 5`, `AUX 6`, `AUX 7`, `BLURAY`, `CABLE`, `CD`, `COAX 1`, `COAX 2`, `COMPOSITE 1`, `DVD`, `GAME`, `HD RADIO`, `HDMI 1`, `HDMI 2`, `HDMI 3`, `HDMI 4`, `HDMI 5`, `HDMI 6`, `HDMI 7`, `HDMI 8`, `HDMI 9`, `HDMI 10`, `HDMI ARC`, `INPUT 1`, `INPUT 2`, `INPUT 3`, `INPUT 4`, `INPUT 5`, `INPUT 6`, `INPUT 7`, `INPUT 8`, `INPUT 9`, `INPUT 10`, `IPOD`, `LINE 1`, `LINE 2`, `LINE 3`, `LINE 4`, `LINE 5`, `LINE 6`, `LINE 7`, `MEDIA PLAYER`, `OPTICAL 1`, `OPTICAL 2`, `PHONO`, `PLAYSTATION`, `PLAYSTATION 3`, `PLAYSTATION 4`, `SATELLITE`, `SMARTCAST`, `TUNER`, `TV`, `USB DAC`, `VIDEO 1`, `VIDEO 2`, `VIDEO 3`, `XBOX` - - - ##### Playback State + Requires [Proactive Events](#proactive-events) enabled. ##### Seek - - -_Alexa, skip 30 seconds on device._ -_Alexa, go back 10 seconds on device._ - +* _"Alexa, skip 30 seconds on device."_ +* _"Alexa, go back 10 seconds on device."_ #### Scene -Activate scenes with scene name, or turn on utterance. Home Assistant does not support deactivate or turn off for scenes at this time. - - -_Alexa, Party Time._ -_Alexa, turn on Party Time._ +Activate scenes with scene name, or turn on utterance. Home Assistant does not support deactivate or turn off for scenes at this time. - +* _"Alexa, Party Time."_ +* _"Alexa, turn on Party Time."_ #### Script -Run script with script name, or turn on utterance. Deactivate a running script with turn off utterance. - - -_Alexa, Party Time._ -_Alexa, turn on Party Time._ -_Alexa, turn off Party Time._ +Run script with script name, or turn on utterance. Deactivate a running script with turn off utterance. - +* _"Alexa, Party Time."_ +* _"Alexa, turn on Party Time."_ +* _"Alexa, turn off Party Time."_ #### Sensor + Requires [Proactive Events](#proactive-events) enabled. Only temperature sensors are configured at this time. - - -_Alexa, what's the temperature in the kitchen?_ -_Alexa, what's the upstairs temperature?_ -_Alexa, what's the temperature of my ex-girlfriend's heart?_ - - +* _"Alexa, what's the temperature in the kitchen?"_ +* _"Alexa, what's the upstairs temperature?"_ +* _"Alexa, what's the temperature of my ex-girlfriend's heart?"_ #### Switch -Support turn on and turn off utterances. - +Support turn on and turn off utterances. -_Alexa, turn on the vacuum._ -_Alexa, turn off the lights._ - - +* _"Alexa, turn on the vacuum."_ +* _"Alexa, turn off the lights."_ #### Timer -Start, Pause, and Restart Timer entities in Home Assistant. - - -_Alexa, pause the microwave._ -_Alexa, hold the sous vide._ -_Alexa, restart the microwave._ +Start, Pause, and Restart Timer entities in Home Assistant. - +* _"Alexa, pause the microwave."_ +* _"Alexa, hold the sous vide."_ +* _"Alexa, restart the microwave."_
To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name.
#### Vacuum -Support turn on and turn off utterances. Pause and Resume - - -_Alexa, turn on the vacuum._ -_Alexa, pause the vacuum._ -_Alexa, restart the vacuum._ +Support turn on and turn off utterances. Pause and Resume - +* _"Alexa, turn on the vacuum."_ +* _"Alexa, pause the vacuum."_ +* _"Alexa, restart the vacuum."_ ### Alexa web-based app + The following is a list of regions and the corresponding URL for the web-based Alexa app: * United States: `https://alexa.amazon.com` * United Kingdom: `https://alexa.amazon.co.uk` @@ -968,12 +866,14 @@ The following is a list of regions and the corresponding URL for the web-based A ### Troubleshooting #### Binary Sensor not available in Routine Trigger + Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. #### Token invalid and no refresh token available -Disable and re-enable the skill using the Alexa App; then restart Home Assistant. + +Disable and re-enable the skill using the Alexa App; then restart Home Assistant. ### Debugging @@ -998,8 +898,6 @@ logger: hass_nabucasa.iot: debug ``` - - [alexa-dev-console]: https://developer.amazon.com/alexa/console/ask [emulated-hue-component]: /integrations/emulated_hue/ [generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token From 052061258b94f8de26799e92df83a1ca304656b1 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 17:10:33 -0500 Subject: [PATCH 06/18] Add default locale to configuration. Format supported locales list. --- source/_integrations/alexa.smart_home.markdown | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index c3509eddca3a..9676bd71c31f 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -252,6 +252,7 @@ alexa: description: The locale of your Alexa devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. See [Alexa Locale](#alexa-locale) for additional information. required: false type: string + default: en-US endpoint: description: >- To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. @@ -316,7 +317,21 @@ alexa: #### Alexa Locale -The `locale` should match the location and language used for your Amazon echo devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. +The `locale` should match the location and language used for your Amazon echo devices. + +The supported locales are: +- `de-DE` +- `en-AU` +- `en-CA` +- `en-GB` +- `en-IN` +- `en-US` +- `es-ES` +- `es-MX` +- `fr-CA` +- `fr-FR` +- `it-IT` +- `ja-JP` See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. From f60e8d8866600f2844f9f2a5c229e14ac518fb9f Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 23:29:02 -0500 Subject: [PATCH 07/18] Reformatted and restructured headings. Utterance formatting updates. --- .../_integrations/alexa.smart_home.markdown | 154 +++++++++--------- 1 file changed, 75 insertions(+), 79 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 9676bd71c31f..0c77196c0578 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -26,31 +26,29 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na
-## Amazon Alexa Smart Home - -##### Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant +**Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant** - [Requirements](#requirements) -- [Create your Amazon Alexa Smart Home Skill](#create-your-amazon-alexa-smart-home-skill) -- [Create your Lambda function](#create-your-lambda-function) +- [Create an Amazon Alexa Smart Home Skill](#create-an-amazon-alexa-smart-home-skill) +- [Create an AWS Lambda Function](#create-an-aws-lambda-function) - [Create an IAM Role for Lambda](#create-an-iam-role-for-lambda) - - [Add the code for your Lambda function](#add-the-code-for-your-lambda-function) - - [Test the Lambda function](#test-the-lambda-function) -- [Configure the smart home service endpoint](#configure-the-smart-home-service-endpoint) -- [Account linking](#account-linking) + - [Add Code to the Lambda Function](#add-code-to-the-lambda-function) + - [Test the Lambda Function](#test-the-lambda-function) +- [Configure the Smart Home Service Endpoint](#configure-the-smart-home-service-endpoint) +- [Account Linking](#account-linking) - [Alexa Smart Home Component Configuration](#alexa-smart-home-component-configuration) -- [Supported integrations](#supported-integrations) -- [Alexa web-based app](#alexa-web-based-app) +- [Supported Integrations](#supported-integrations) +- [Alexa Web-Based App](#alexa-web-based-app) - [Troubleshooting](#troubleshooting) - [Debugging](#debugging) -### Requirements +## Requirements - The Alexa Smart Home API requires your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using an SSL/TLS certificate. A self-signed certificate will work, but a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport) is recommended. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. - Amazon Developer Account. Sign up [here](https://developer.amazon.com). - An [Amazon Web Services (AWS)](https://aws.amazon.com/free/) account is required to host the Lambda function for your Alexa Smart Home Skill. [AWS Lambda](https://aws.amazon.com/lambda/pricing/) is free to use for up to 1-million requests and 1GB outbound data transfer per month. -### Create Your Amazon Alexa Smart Home Skill +## Create an Amazon Alexa Smart Home Skill - Sign in [Alexa Developer Console][alexa-dev-console], you can create your free account on the sign in page. - Go to `Alexa Skills` page if you are not, click `Create Skill` button to start the process. @@ -64,7 +62,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na - In next screen, make sure *v3* is selected in `Payload version`. - Now, you have created a skeleton of Smart Home skill. Next step we will do some "real" developer work. You can keep Alex Developer Console opened, we need change the skill configuration later. -### Create Your Lambda Function +## Create an AWS Lambda Function Alexa Smart Home skill will trigger a AWS Lambda function to process the request, we will write a small piece of code hosted as an Lambda function basically redirect the request to your Home Assistant instance, then Alexa integration integration in Home Assistant will process the request and send back the response. Your Lambda function will delivery the response back to Alexa. @@ -80,7 +78,7 @@ Amazon also provided a [step-by-step guide](https://developer.amazon.com/docs/sm OK, let's go. You first need sign in your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tire benefit. You don't need worry the cost if your account already pass the first 12 months, AWS provides up to 1 million Lambda request, 1GB outbound data and all inbound data for free, every month, all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for details. -#### Create an IAM Role for Lambda +### Create an IAM Role for Lambda First thing you need to do after sing in [AWS console](https://console.aws.amazon.com/) is to create an IAM Role for Lambda execution. AWS has very strict access control, you have to specific define and assign the permissions. @@ -95,7 +93,7 @@ First thing you need to do after sing in [AWS console](https://console.aws.amazo - You can skip `Add tags` page, click `Next: Review`. - Give your new role a name, such as `AWSLambdaBasicExecutionRole-SmartHome`, then click `Create role` button. You should be able to find your new role in the roles list now. -#### Add the Code for your Lambda function +### Add Code to the Lambda Function Next you need create a Lambda function. @@ -111,7 +109,7 @@ Next you need create a Lambda function. - Click `Create function`, then you can config detail of Lambda function. - Under `Configuration` tab, expand `Designer`, then click `Alexa Smart Home` in the left part of the panel to add a Alexa Smart Home trigger to your Lambda function. - Scroll down little bit, you need input the `Skill ID` from the skill you created in previous step. (tips: you may need switch back to Alexa Developer Console to copy the `Skill ID`. -- Click your Lambda Function icon in the middle of the diagram, scroll down you will see a `Function code` window. +- Click your Lambda function icon in the middle of the diagram, scroll down you will see a `Function code` window. - Clear the example code, copy the Python script from: [https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b](https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b) (modified code to support Alexa's proactive mode, see details below) - Scroll down a little bit, you will find `Environment variables`, you need add 4 environment variables: * BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. @@ -126,7 +124,7 @@ Next you need create a Lambda function. - Now scroll up to the top, click `Save` button. - You need copy the ARN displayed in the top of the page, which is the identify of this Lambda function. You will need this ARN to continue Alexa Smart Home skill configuration later. -#### Test the Lambda function +### Test the Lambda Function Now, you have created the Lambda function, before you can test it, you have to set up your Home Assistant. Put following minimal configuration to your configuration.yaml, it will exposures all of your supported device and automation to Alexa. Check the [configuration section](#alexa-smart-home-component-configuration) if you want more control of the exposure. @@ -165,7 +163,7 @@ Now, you can login to your Home Assistant and [generate a long-lived access toke This time, you will get a list of your devices as the response. 🎉 -### Configure the Smart Home Service Endpoint +## Configure the Smart Home Service Endpoint Now removed the long-lived access token if you want, copied the ARN of your Lambda function, then back to [Alexa Developer Console][alexa-dev-console]. You will finish the configuration of the Smart Home skill. @@ -174,7 +172,7 @@ Now removed the long-lived access token if you want, copied the ARN of your Lamb - Click `SMART HOME` in the left navigation bar of build page. - Fill in `Default endpoint` under `2. Smart Home service endpoint` using the `ARN` you copied from your Lambda function configuration. -### Account Linking +## Account Linking Alexa can link your Amazon account to your Home Assistant account. Therefore Home Assistant can make sure only authenticated Alexa request be able to access your home's devices. In order to link the account, you have to make sure your Home Assistant can be accessed from Internet. @@ -211,7 +209,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom * You can discovery your devices now. - Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 -### Alexa Smart Home Component Configuration +## Alexa Smart Home Component Configuration Example configuration: @@ -315,7 +313,7 @@ alexa: type: string {% endconfiguration %} -#### Alexa Locale +### Alexa Locale The `locale` should match the location and language used for your Amazon echo devices. @@ -335,7 +333,7 @@ The supported locales are: See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. -#### Proactive Events +### Proactive Events The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: @@ -343,7 +341,7 @@ The `endpoint`, `client_id` and `client_secret` are optional, and are only requi - The `client_id` and `client_secret` are not the ones used by the skill that have been set up using "Login with Amazon" (in the [Alexa Developer Console][amazon-dev-console]: Build > Account Linking), but rather from the "Alexa Skill Messaging" (in the Alexa Developer Console: Build > Permissions > Alexa Skill Messaging). To get them, you need to enable the "Send Alexa Events" permission. - If the "Send Alexa Events" permission was not enabled previously, you need to unlink and relink the skill using the Alexa App, or else Home Assistant will show the following error: "Token invalid and no refresh token available. Also, you need to restart your Home Assistant after each disabling/enabling the skill in Alexa." -#### Configure Filter +### Configure Filter By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind only [supported components](#supported-integrations) can be added. @@ -380,7 +378,7 @@ Filters are applied as follows: See the [troubleshooting](#troubleshooting) if for issues setting up the integration. -#### Alexa Display Categories +### Alexa Display Categories Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices. @@ -395,7 +393,7 @@ Devices such as cameras, doorbells, garage doors, and alarm control panels requi See [Alexa Display Categories][alexa-display-categories] for a complete list -### Supported Integrations +## Supported Integrations Home Assistant supports the following integrations through Alexa using a Smart Home Skill. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). @@ -432,7 +430,7 @@ The following integrations are currently supported: - [Timer](#timer) - [Vacuum](#vacuum) -#### Alarm Control Panel +### Alarm Control Panel Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alarm Control Panel entity. @@ -441,7 +439,7 @@ Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alar * _"Alexa, disarm my home."_ * _"Alexa, is my home armed?"_ -##### Arming +#### Arming The Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming. e.g. switching from `armed_home` to `armed_night`. @@ -455,7 +453,7 @@ The Alarm Control Panel may default the `code_arm_required` attribute to `true` -##### Disarming +#### Disarming Users must opt-in to the disarm by voice feature in the Alexa App. Alexa will require a 4 digit voice personal identification number (PIN) for disarming. Configure a 4 digit PIN in the Alexa app, or use an existing 4 digit PIN code configured for the Alarm Control Panel. @@ -468,7 +466,7 @@ To use the exiting code configured for the Alarm Control Panel the `code` must b The existing code is never communicated to Alexa from Home Assistant. During disarming, Alexa will ask for a PIN. The PIN spoken to Alexa is relayed to Home Assistant and passed to the `alarm_control_panel.alarm_disarm` service. If the `alarm_control_panel.alarm_disarm` service fails for any reason, it is assumed the PIN was incorrect and reported to Alexa as an invalid PIN. -#### Alert, Automation, Group, Input Boolean +### Alert, Automation, Group, Input Boolean Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switches. @@ -476,7 +474,7 @@ Turn on and off Alerts, Automations, Groups, and Input Boolean entities as switc * _"Alexa, turn off energy saving automations."_ * _"Alexa, Downstairs to on."_ -#### Binary Sensor +### Binary Sensor Requires [Proactive Events](#proactive-events) enabled. @@ -495,7 +493,7 @@ Ask Alexa for the state of a contact sensor. * _"Alexa, is the bedroom window open?"_ -##### Routines +#### Routines Requires [Proactive Events](#proactive-events) enabled. @@ -503,7 +501,7 @@ Alexa Routines can be triggered with Binary Sensors exposed as contact or motion Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. -##### Doorbell Announcement +#### Doorbell Announcement Requires [Proactive Events](#proactive-events) enabled. @@ -529,7 +527,7 @@ Each Amazon Echo device will need the communication and announcements setting en Screenshot: Alexa App Doorbell Notification

-##### Presence Detection with Binary Sensor +#### Presence Detection with Binary Sensor Requires [Proactive Events](#proactive-events) enabled. @@ -560,17 +558,17 @@ Each Echo device will need the communication and Announcements setting enabled, [Image Processing](#image-processing) entities also support this notification. -#### Climate +### Climate Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). -##### Set Thermostat Temperature +#### Set Thermostat Temperature Alexa, set thermostat to 20. Alexa, set the AC to 75. Alexa, make it warmer in here. Alexa, make it cooler in here. -##### Thermostat Mode +#### Thermostat Mode * _"Alexa, set living room thermostat to automatic."_ @@ -582,7 +580,7 @@ To change the thermostat mode the exact utterance must be used: * _"Alexa, set [entity name] to [mode utterance]."_ -If the climate entity supports on/off, use _turn on_ and _turn off_ utterances with the entity name or the mode utterance. +If the climate entity supports on/off, use _"turn on"_ and _"turn off"_ utterances with the entity name or the mode utterance. * _"Alexa, turn on the [mode utterance]."_ * _"Alexa, turn off the [entity name]."_ @@ -598,7 +596,7 @@ Alexa supports the following utterances value for climate thermostat mode: |`DRY` | _dehumidify_| |`OFF` | _off_| -#### Cover +### Cover Covers should be configured with the appropriate `device_class`. @@ -608,9 +606,9 @@ Covers with the `device_class` of `garage` are shown as a [Garage Door](#garage- Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to correctly expose a `cover` to Alexa. -##### Open/Close/Raise/Lower +#### Open/Close/Raise/Lower -Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _turn on_ / _turn off_ utterances will also work. +Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _"turn on"_ / _"turn off"_ utterances will also work. * _"Alexa, open the garage door."_ * _"Alexa, close the curtain."_ @@ -621,7 +619,7 @@ The _raise_, _lower_, _open_, _close_ semantics are assigned based on the featur If the cover does not support tilt, all semantics _raise_, _lower_, _open_, _close_ are assigned to the position functionality. -##### Set Cover Position +#### Set Cover Position Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. @@ -635,7 +633,7 @@ Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. Currently Alexa only supports friendly name synonyms for the `en-US` locale. -##### Set Cover Tilt +#### Set Cover Tilt Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. @@ -649,7 +647,7 @@ Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. Currently Alexa only supports friendly name synonyms for the `en-US` locale. -##### Garage Doors +#### Garage Doors Covers with a `device_class` of `garage` support the Open by Voice PIN feature in the Alexa app. Configure a 4 digit PIN code to open the garage door in the Alexa app. @@ -658,11 +656,11 @@ Covers with a `device_class` of `garage` support the Open by Voice PIN feature i Screenshot: Alexa App Garage Door Open by voice

-#### Fan +### Fan Control fan speed, direction, and oscillation. -##### Fan Speed +#### Fan Speed The fan device must support the `speed` attribute. `speed` can be set using a percentage or a range value determined from the `speed_list` attribute. @@ -691,14 +689,14 @@ The following synonyms can be used for _fan speed_ Currently Alexa only supports friendly name synonyms for the `en-US` locale. -##### Fan Direction +#### Fan Direction The fan device must support the `direction` attribute. * _"Alexa, set the fan direction to forward."_ * _"Alexa, set the fan direction to reverse."_ -##### Fan Oscillation +#### Fan Oscillation The fan device must support the `oscillating` attribute. @@ -712,11 +710,11 @@ The fan device must support the `oscillating` attribute. Currently Alexa only supports friendly name synonyms for the `en-US` locale. -#### Image Processing +### Image Processing Requires [Proactive Events](#proactive-events) enabled. -##### Presence Detection Notification +#### Presence Detection Notification All `image_processing` entities support the presence detected notification settings in the Alexa App. Any state change will trigger the notification. @@ -733,7 +731,7 @@ Display category will default to `CAMERA` to enable presence detected notificati -#### Input Number +### Input Number Control an `input_number` entity with Alexa. Configures Alexa with the `min`, `max`, `step`, and `unit_of_measurement` attributes for the entity. @@ -751,25 +749,23 @@ The following table lists the possible friendly name synonyms available for a In |45|_forty five_| |90|_ninety_, _maximum_, _max_| -#### Light +### Light * _"Alexa, dim the bathroom light."_ * _"Alexa, set the bedroom light to fifty percent."_ -#### Lock +### Lock * _"Alexa, lock my front door."_ * _"Alexa, unlock the dungeon."_ -##### Locking - -##### Unlocking +#### Unlocking To unlock, Alexa will require a 4 digit voice personal identification number (PIN) for unlocking. Configure a 4 digit PIN in the Alexa app to unlock locks. -#### Media Player +### Media Player -##### Change Channel +#### Change Channel * _"Alexa, change the channel to 200 on the Living Room TV."_ * _"Alexa, change the channel to PBS on the TV."_ @@ -777,7 +773,7 @@ To unlock, Alexa will require a 4 digit voice personal identification number (PI * _"Alexa, channel up on the TV."_ * _"Alexa, channel down on the TV."_ -##### Speaker Volume +#### Speaker Volume * _"Alexa, set the volume of the speakers to 50."_ * _"Alexa, turn the volume down on the stereo by 20."_ @@ -787,7 +783,7 @@ To unlock, Alexa will require a 4 digit voice personal identification number (PI * _"Alexa, lower the volume on the stereo."_ * _"Alexa, volume up 20 on the speakers."_ -##### Equalizer Mode +#### Equalizer Mode Supports changing the Media Player `sound_mode` from the preset `sound_mode_list`. @@ -795,7 +791,7 @@ Supports changing the Media Player `sound_mode` from the preset `sound_mode_list Alexa only supports the following modes: `movie`, `music`, `night`, `sport`, `tv`. -##### Inputs +#### Inputs Supports changing the Media Player `source` from the preset `source_list`. @@ -805,31 +801,31 @@ Home Assistant will attempt to translate the the `media_player` `source_list` in `AUX 1`, `AUX 2`, `AUX 3`, `AUX 4`, `AUX 5`, `AUX 6`, `AUX 7`, `BLURAY`, `CABLE`, `CD`, `COAX 1`, `COAX 2`, `COMPOSITE 1`, `DVD`, `GAME`, `HD RADIO`, `HDMI 1`, `HDMI 2`, `HDMI 3`, `HDMI 4`, `HDMI 5`, `HDMI 6`, `HDMI 7`, `HDMI 8`, `HDMI 9`, `HDMI 10`, `HDMI ARC`, `INPUT 1`, `INPUT 2`, `INPUT 3`, `INPUT 4`, `INPUT 5`, `INPUT 6`, `INPUT 7`, `INPUT 8`, `INPUT 9`, `INPUT 10`, `IPOD`, `LINE 1`, `LINE 2`, `LINE 3`, `LINE 4`, `LINE 5`, `LINE 6`, `LINE 7`, `MEDIA PLAYER`, `OPTICAL 1`, `OPTICAL 2`, `PHONO`, `PLAYSTATION`, `PLAYSTATION 3`, `PLAYSTATION 4`, `SATELLITE`, `SMARTCAST`, `TUNER`, `TV`, `USB DAC`, `VIDEO 1`, `VIDEO 2`, `VIDEO 3`, `XBOX` -##### Playback State +#### Playback State Requires [Proactive Events](#proactive-events) enabled. -##### Seek +#### Seek * _"Alexa, skip 30 seconds on device."_ * _"Alexa, go back 10 seconds on device."_ -#### Scene +### Scene -Activate scenes with scene name, or turn on utterance. Home Assistant does not support deactivate or turn off for scenes at this time. +Activate scenes with scene name, or _"turn on"_ utterance. Home Assistant does not support deactivate or _"turn off"_ for scenes at this time. * _"Alexa, Party Time."_ * _"Alexa, turn on Party Time."_ -#### Script +### Script -Run script with script name, or turn on utterance. Deactivate a running script with turn off utterance. +Run script with script name, or _"turn on"_ utterance. Deactivate a running script with _"turn off"_ utterance. * _"Alexa, Party Time."_ * _"Alexa, turn on Party Time."_ * _"Alexa, turn off Party Time."_ -#### Sensor +### Sensor Requires [Proactive Events](#proactive-events) enabled. @@ -839,14 +835,14 @@ Only temperature sensors are configured at this time. * _"Alexa, what's the upstairs temperature?"_ * _"Alexa, what's the temperature of my ex-girlfriend's heart?"_ -#### Switch +### Switch -Support turn on and turn off utterances. +Support _"turn on"_ and _"turn off"_ utterances. * _"Alexa, turn on the vacuum."_ * _"Alexa, turn off the lights."_ -#### Timer +### Timer Start, Pause, and Restart Timer entities in Home Assistant. @@ -858,15 +854,15 @@ Start, Pause, and Restart Timer entities in Home Assistant. To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name. -#### Vacuum +### Vacuum -Support turn on and turn off utterances. Pause and Resume +Support _"turn on"_ and _"turn off"_ utterances. Pause and Resume * _"Alexa, turn on the vacuum."_ * _"Alexa, pause the vacuum."_ * _"Alexa, restart the vacuum."_ -### Alexa web-based app +## Alexa Web-Based App The following is a list of regions and the corresponding URL for the web-based Alexa app: * United States: `https://alexa.amazon.com` @@ -878,23 +874,23 @@ The following is a list of regions and the corresponding URL for the web-based A * India: `https://alexa.amazon.in` * Spain: `https://alexa.amazon.es` -### Troubleshooting +## Troubleshooting -#### Binary Sensor not available in Routine Trigger +### Binary Sensor not available in Routine Trigger Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa. -#### Token invalid and no refresh token available +### Token Invalid and no Refresh Token Available Disable and re-enable the skill using the Alexa App; then restart Home Assistant. -### Debugging +## Debugging The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the the relevant line below to the `configuration.yaml`: -If using an Alexa with a Alexa Smart Home Skill and Lambda Function such as haaska: +If using an Alexa with a Alexa Smart Home Skill and Lambda function such as haaska: ```yaml logger: From 4c22bee1771ba0573f05c2652acdd5c02d38e8ad Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 27 Jan 2020 23:43:45 -0500 Subject: [PATCH 08/18] Utterance formatting updates. --- source/_integrations/alexa.smart_home.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 0c77196c0578..5b161226ecbc 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -161,7 +161,7 @@ Click `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, you will get a Now, you can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you put your long-lived access token to the `Environment variable`, do not forget click `Save` button before you `Test` again. -This time, you will get a list of your devices as the response. 🎉 +This time, you will get a list of your devices in the response. 🎉 ## Configure the Smart Home Service Endpoint @@ -563,10 +563,10 @@ Each Echo device will need the communication and Announcements setting enabled, Single, double, and triple set-point thermostats are supported. The temperature value from the thermostat will also be exposed at a separate [temperature sensor](#sensor). #### Set Thermostat Temperature -Alexa, set thermostat to 20. -Alexa, set the AC to 75. -Alexa, make it warmer in here. -Alexa, make it cooler in here. +* _"Alexa, set thermostat to 20."_ +* _"Alexa, set the AC to 75."_ +* _"Alexa, make it warmer in here."_ +* _"Alexa, make it cooler in here."_ #### Thermostat Mode From f8d66353af7d70933d77ee5fc9e6934027467fae Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Tue, 28 Jan 2020 00:12:35 -0500 Subject: [PATCH 09/18] Utterance formatting updates. --- .../_integrations/alexa.smart_home.markdown | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 5b161226ecbc..199049aa6972 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -101,7 +101,7 @@ Next you need create a Lambda function. - **IMPORTANT** Your current region will be displayed on the top right corner, make sure you select right region base on your Amazon account's country: * **US East (N.Virginia)** region for English (US) or English (CA) skills * **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills - * **US West (Oregon)** region for Japanese and English (AU) skills. + * **US West (Oregon)** region for Japanese and English (AU) skills. - Click `Functions` in the left navigation bar, display list of your Lambda functions. - Click `Create function`, select `Author from scratch`, then input a `Function name`. - Select *Python 3.6* or *Python 3.7* as `Runtime`. @@ -206,7 +206,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom * Click `Enable`. * A new window will open to direct you to your Home Assistant's login screen. * After you success login, you will be redirected back to Alexa app. - * You can discovery your devices now. + * You can discovery your devices now. - Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 ## Alexa Smart Home Component Configuration @@ -253,7 +253,7 @@ alexa: default: en-US endpoint: description: >- - To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. + To enable proactive events, you send a message to the Alexa event gateway, send it to the event endpoint that aligns with the geographic availability of your smart home skill. Following is the list of endpoints and the regions they cover. See [Proactive Events](#proactive-events) for more information. * North America: `https://api.amazonalexa.com/v3/events` * Europe: `https://api.eu.amazonalexa.com/v3/events` * Far East: `https://api.fe.amazonalexa.com/v3/events` @@ -261,7 +261,7 @@ alexa: type: string client_id: description: See [Proactive Events](#proactive-events) for more information. - required: false + required: false type: string client_secret: description: See [Proactive Events](#proactive-events) for more information. @@ -315,9 +315,9 @@ alexa: ### Alexa Locale -The `locale` should match the location and language used for your Amazon echo devices. +The `locale` should match the location and language used for your Amazon echo devices. -The supported locales are: +The supported locales are: - `de-DE` - `en-AU` - `en-CA` @@ -388,7 +388,7 @@ light.kitchen_light: ```
-Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the display category provided by Home Assistant will limit features provided by Amazon Alexa. +Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the display category provided by Home Assistant will limit features provided by Amazon Alexa.
See [Alexa Display Categories][alexa-display-categories] for a complete list @@ -401,8 +401,8 @@ The following integrations are currently supported: - [Alarm Control Panel](#alarm-control-panel) - [Alert](#alert-automation-group-input-boolean) - [Automation](#alert-automation-group-input-boolean) -- [Binary Sensor](#binary-sensor) - - [Doorbell Announcement](#doorbell-announcement) +- [Binary Sensor](#binary-sensor) + - [Doorbell Announcement](#doorbell-announcement) - [Presence Detection](#presence-detection-with-binary-sensor) - [Climate](#climate) - [Cover](#cover) @@ -589,12 +589,12 @@ Alexa supports the following utterances value for climate thermostat mode: |HA Climate Mode | Alexa Mode Utterances | |--- |--- | -|`AUTO` | _auto_, _automatic_| -|`COOL` | _cool_, _cooling_| -|`HEAT` | _heat_, _heating_| -|`ECO` | _eco_, _economical_| -|`DRY` | _dehumidify_| -|`OFF` | _off_| +|`AUTO` | _"auto"_, _"automatic"_| +|`COOL` | _"cool"_, _"cooling"_| +|`HEAT` | _"heat"_, _"heating"_| +|`ECO` | _"eco"_, _"economical"_| +|`DRY` | _"dehumidify"_| +|`OFF` | _"off"_| ### Cover @@ -608,20 +608,20 @@ Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#cus #### Open/Close/Raise/Lower -Home Assistant configures covers with semantics that provide _raise_, _lower_, _open_, _close_ utterances for covers. In addition to semantics _"turn on"_ / _"turn off"_ utterances will also work. +Home Assistant configures covers with semantics that provide _"raise"_, _"lower"_, _"open"_, _"close"_ utterances for covers. In addition to semantics _"turn on"_ / _"turn off"_ utterances will also work. * _"Alexa, open the garage door."_ * _"Alexa, close the curtain."_ * _"Alexa, lower the shades."_ * _"Alexa, raise the roof!"_ -The _raise_, _lower_, _open_, _close_ semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, _open/close_ semantics are assigned to the tilt functionality, and _raise/lower_ semantics are assigned to the position functionality. +Semantics are assigned based on the features supported by the cover. If the cover supports tilt functionality, the semantics _"open"_ and _"close"_ are assigned to the tilt functionality, and the semantics _"raise"_ and _"lower"_ are assigned to the position functionality. -If the cover does not support tilt, all semantics _raise_, _lower_, _open_, _close_ are assigned to the position functionality. +If the cover does not support tilt, all semantics _"raise"_, _"lower"_, _"open"_, _"close"_ are assigned to the position functionality. #### Set Cover Position -Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. +Covers that support a set position can be controlled using percentages. * _"Alexa, set the [entity name] position to thirty percent."_ * _"Alexa, increase [entity name] position by ten percent."_ @@ -629,13 +629,13 @@ Covers that `SUPPORT_SET_POSITION` can be controlled using percentages. |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_position_, _opening_| +|`en-US`|_"position"_, _"opening"_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. #### Set Cover Tilt -Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. +Covers that support tilt position can be controlled using percentages. * _"Alexa, set the [entity name] tilt to thirty percent."_ * _"Alexa, increase [entity name] tilt by ten percent."_ @@ -643,7 +643,7 @@ Covers that `SUPPORT_SET_POSITION_TILT` can be controlled using percentages. |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_tilt_, _angle_, _direction_| +|`en-US`|_"tilt"_, _"angle"_, _"direction"_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. @@ -676,16 +676,16 @@ The following table lists the possible friendly name synonyms available for a fa |Fan Range|Friendly Name Synonyms| |---|---| -|0|_zero_, _off_| -|1|_one_, _thirty three percent_, _low_, _minimum_, _min_| -|2|_two_, _sixty six percent_, _medium_| -|3|_three_, _one hundred percent_, _high_, _maximum_, _max_| +|0|_"zero"_, _"off"_| +|1|_"one"_, _"thirty three percent"_, _"low"_, _"minimum"_, _"min"_| +|2|_"two"_, _"sixty six percent"_, _"medium"_| +|3|_"three"_, _"one hundred percent"_, _"high"_, _"maximum"_, _"max"_| -The following synonyms can be used for _fan speed_ +The following synonyms can be used for _"fan speed"_ |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_fan speed_, _airflow speed_, _wind speed_, _air speed_, _air velocity_, _power level_| +|`en-US`|_"fan speed"_, _"airflow speed"_, _"wind speed"_, _"air speed"_, _"air velocity"_, _"power level"_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. @@ -706,7 +706,7 @@ The fan device must support the `oscillating` attribute. |Locale|Friendly Name Synonyms| |---|---| -|`en-US`|_oscillate_, _swivel_, _oscillation_, _spin_, _back and forth_| +|`en-US`|_"oscillate"_, _"swivel"_, _"oscillation"_, _"spin"_, _"back and forth"_| Currently Alexa only supports friendly name synonyms for the `en-US` locale. @@ -743,11 +743,11 @@ The following table lists the possible friendly name synonyms available for a In |Fan Range|Friendly Name Synonyms| |---|---| -|-90|_negative ninety_, _minimum_, _min_| -|-45|_negative forty five_| -|0|_zero_| -|45|_forty five_| -|90|_ninety_, _maximum_, _max_| +|-90|_"negative ninety"_, _"minimum"_, _"min"_| +|-45|_"negative forty five"_| +|0|_"zero"_| +|45|_"forty five"_| +|90|_"ninety"_, _"maximum"_, _"max"_| ### Light @@ -851,7 +851,7 @@ Start, Pause, and Restart Timer entities in Home Assistant. * _"Alexa, restart the microwave."_
-To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name. +To avoid issues with Alexa built in timer functionality. The timer entity can not include the word "timer" in the friendly name.
### Vacuum From f554e7354a962d6b5053af13f98b09ca549b464e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 28 Jan 2020 18:10:38 +0100 Subject: [PATCH 10/18] Round of spelling fixes (#11899) --- source/_integrations/sentry.markdown | 3 ++- source/_integrations/withings.markdown | 2 +- .../2016-07-06-pocketchip-running-home-assistant.markdown | 2 +- source/_posts/2017-11-18-release-58.markdown | 4 ++-- source/_posts/2017-12-17-release-60.markdown | 2 +- source/_posts/2018-01-27-release-62.markdown | 2 +- source/_posts/2018-02-10-release-63.markdown | 2 +- source/_posts/2018-03-30-release-66.markdown | 2 +- source/_posts/2018-08-17-release-76.markdown | 8 ++++---- source/_posts/2018-08-29-release-77.markdown | 8 ++++---- source/_posts/2018-12-12-release-84.markdown | 2 +- source/_posts/2019-01-09-release-85.markdown | 2 +- source/_posts/2019-02-20-release-88.markdown | 8 ++++---- source/_posts/2019-03-13-release-89.markdown | 2 +- source/_posts/2019-04-03-release-91.markdown | 6 +++--- source/_posts/2019-08-07-release-97.markdown | 2 +- source/_posts/2019-08-28-release-98.markdown | 2 +- source/_posts/2019-10-10-release-100.markdown | 2 +- source/lovelace/changelog.markdown | 8 ++++---- 19 files changed, 35 insertions(+), 34 deletions(-) diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown index cba271d572c0..6991dc9e7557 100644 --- a/source/_integrations/sentry.markdown +++ b/source/_integrations/sentry.markdown @@ -43,8 +43,9 @@ environment: ### Getting the DSN Follow these steps to get the DSN: + - Go to **Projects**. - Click **Create project**. - Fill out **Give your project a name** and **choose Assign a Team** fields and click Create project button. - Click **Get your DSN** link in top of the page. -- Your DSN is now visable and looks like https://sdasdasdasdsadsadas@sentry.io/sdsdfsdf +- Your DSN is now visible and looks like diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 8e0ce0826144..561afaa2349c 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -53,7 +53,7 @@ Withings supports multiple profiles per account. Each profile has a person's nam - On the Withings site, choose the profile of the data you want to sync. - Authorize the application. Your browser will redirect you to the redirect uri you provided during account setup. - Note: If you get a browser error saying the site is inaccessible, you can modify the - `http://domain` portion of the URL to something you know is accessible, locally or publically. For example, `http://localhost:8123`. + `http://domain` portion of the URL to something you know is accessible, locally or publicly. For example, `http://localhost:8123`. This occurs when the base URL provided by Home Assistant to Withings is not accessible to the outside world. Changing the domain will not affect how data is synchronized. - Once authorized, the tab/window will close and the integration page will prompt to select a profile. Select the profile you chose while on the withings site. diff --git a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown b/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown index da50f1aed529..4e59abc3cbf0 100644 --- a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown +++ b/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown @@ -21,7 +21,7 @@ Thanks to [Next Thing Co.](https://www.nextthing.co/) and their CHIP which is ac Size comparison of a Cubieboard, OrangePi One, and CHIP.

-If you start using a PocketCHIP you will definitely look like a Blackberry or a GameBoy user. Typing is done with your thumbs :-) +If you start using a PocketCHIP you will definitely look like a Blackberry or a Game Boy user. Typing is done with your thumbs :-) First a couple of tweaks like setting up `sudo`, upgrading the existing installation, change passwords, enabling ssh, and removal of the annoying stuff then installation of Home Assistant. There is not much to tell...it's straight-forward. For the sake of completeness below the notes about what I did. diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown index 2fb8a97bfdce..23d5576758fe 100644 --- a/source/_posts/2017-11-18-release-58.markdown +++ b/source/_posts/2017-11-18-release-58.markdown @@ -135,7 +135,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Adapt to new yarl API ([@tinloaf] - [#10527]) ([tts.google docs]) - Update nederlandse_spoorwegen.py to include platform information ([@hmmbob] - [#10494]) ([sensor.nederlandse_spoorwegen docs]) - Pin yarl ([@tinloaf] - [#10528]) -- Support configuration of region (no service url neccessary ([@molobrakos] - [#10513]) ([volvooncall docs]) +- Support configuration of region (no service url necessary ([@molobrakos] - [#10513]) ([volvooncall docs]) - Fix import in tests ([@andrey-git] - [#10525]) - Update axis.py ([@Kane610] - [#10412]) ([axis docs]) - Add attribute to show who last un/set alarm (SPC) ([@mbrrg] - [#9906]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) @@ -186,7 +186,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change generic thermostat to control heating on mode change Off -> Auto ([@milanvo] - [#10601]) ([climate.generic_thermostat docs]) - Improve WUnderground config validation ([@milanvo] - [#10573]) ([sensor.wunderground docs]) - update hbmqtt to 0.9.1 ([@masarliev] - [#10611]) -- Allow to pass YandexTTS options via sevice call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) +- Allow to pass YandexTTS options via service call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) - Snapcast: bump version and enable reconnect. ([@janLo] - [#10626]) ([media_player.snapcast docs]) - Fix async missing decorators ([@armills] - [#10628]) - Alexa slot synonym fix ([@devspacenine] - [#10614]) diff --git a/source/_posts/2017-12-17-release-60.markdown b/source/_posts/2017-12-17-release-60.markdown index 5f1c4dede425..0a25d85c0fa9 100644 --- a/source/_posts/2017-12-17-release-60.markdown +++ b/source/_posts/2017-12-17-release-60.markdown @@ -56,7 +56,7 @@ Yahoo! has discontinued their financial service. To fill this gap we have now th - Fix allday events in custom_calendars ([@maxlaverse] - [#11272]) ([calendar.caldav docs]) - Fix unpredictable entity names in concord232 binary_sensor ([@rwa] - [#11292]) ([binary_sensor.concord232 docs]) - Fix leak sensors always showing Unknown until Wet ([@OverloadUT] - [#11313]) ([binary_sensor.isy994 docs]) -- Don't block on sevice call for alexa ([@pvizeli] - [#11358]) ([alexa.smart_home docs]) +- Don't block on service call for alexa ([@pvizeli] - [#11358]) ([alexa.smart_home docs]) - iOS 10 should be served javascript_version:es5 ([@mnoorenberghe] - [#11387]) ## If you need help... diff --git a/source/_posts/2018-01-27-release-62.markdown b/source/_posts/2018-01-27-release-62.markdown index 76c0f78059a9..05e377734f51 100644 --- a/source/_posts/2018-01-27-release-62.markdown +++ b/source/_posts/2018-01-27-release-62.markdown @@ -116,7 +116,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Service for setting a fixed scene of Xiaomi MIIO lights ([@syssi] - [#10819]) ([light.xiaomi_miio docs]) - Homematic ip tilt covers ([@steffenslavetinsky] - [#11650]) ([cover.homematic docs]) - plant - check history for min_brightness ([@ChristianKuehnel] - [#9534]) ([plant docs]) -- add generic rollershutter agian, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) +- add generic rollershutter again, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) - Additional attributes and services of the Xiaomi Air Purifier introduced ([@syssi] - [#11249]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) - flux led version 0.20 ([@danielhiversen] - [#11791]) - Hyperion: fix ([@starkillerOG] - [#11793]) ([light.hyperion docs]) diff --git a/source/_posts/2018-02-10-release-63.markdown b/source/_posts/2018-02-10-release-63.markdown index bf4ffa649a22..dcf388d94af4 100644 --- a/source/_posts/2018-02-10-release-63.markdown +++ b/source/_posts/2018-02-10-release-63.markdown @@ -188,7 +188,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - added media_stop ([@jodur] - [#12100]) ([media_player.vlc docs]) - Goalfeed channel ([@craigjmidwinter] - [#12086]) ([goalfeed docs]) - Update jinja2 to 2.10 ([@arsaboo] - [#12118]) -- Downgrade Sonarr and Radarr 'Host is not avaliable' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Downgrade Sonarr and Radarr 'Host is not available' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) - Fixes away_mode error on startup ([@ciotlosm] - [#12121]) ([climate.generic_thermostat docs]) - except vol.MultipleInvalid in Broadlink #11795 ([@danielhiversen] - [#12107]) ([sensor.broadlink docs]) - Adds SUPPORT_TARGET_TEMPERATURE_HIGH and SUPPORT_TARGET_TEMPERATURE_LOW support ([@hawk259] - [#12110]) ([climate.ecobee docs]) diff --git a/source/_posts/2018-03-30-release-66.markdown b/source/_posts/2018-03-30-release-66.markdown index 8b54fe163096..bf0ec721ad69 100644 --- a/source/_posts/2018-03-30-release-66.markdown +++ b/source/_posts/2018-03-30-release-66.markdown @@ -91,7 +91,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Remove crazy JSON encoding things that are no longer used ([@balloob] - [#13029]) ([http docs]) ([websocket_api docs]) - Disable Monkey Patch for 3.6.3+ ([@OttoWinter] - [#13150]) - Upgrade Sphinx to 1.7.1 ([@fabaff] - [#13127]) -- upgrade tibber libary to 0.4.0 to use aiohttp 3.0 ([@danielhiversen] - [#13164]) ([sensor.tibber docs]) +- upgrade tibber library to 0.4.0 to use aiohttp 3.0 ([@danielhiversen] - [#13164]) ([sensor.tibber docs]) - Change iglo port to cv.port validator ([@jesserockz] - [#13163]) ([light.iglo docs]) - deConz rewrite to use async await syntax ([@Kane610] - [#13151]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) - Upgrade holidays to 0.9.4 ([@OttoWinter] - [#13167]) ([binary_sensor.workday docs]) diff --git a/source/_posts/2018-08-17-release-76.markdown b/source/_posts/2018-08-17-release-76.markdown index a75dff644afd..95cd8c508b5d 100644 --- a/source/_posts/2018-08-17-release-76.markdown +++ b/source/_posts/2018-08-17-release-76.markdown @@ -17,7 +17,7 @@ This release includes a database migration to allow us to store context in the d -The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatability modus turned on. If you want to get ahead of the pack, you can already easily enable it now: +The auth system is entering release candidate status 🎉. If nothing major is found, it will be enabled by default starting the next release (0.77) with backwards compatibility modus turned on. If you want to get ahead of the pack, you can already easily enable it now: ```yaml homeassistant: @@ -28,7 +28,7 @@ homeassistant: # - type: legacy_api_password ``` -For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatability mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. +For iOS users, your frontend should be a lot faster. We had an issue that forced us to serve the frontend in compatibility mode, which is slower. We haven't been able to solve [the issue](https://bugs.webkit.org/show_bug.cgi?id=174629), but found a workaround. Race on 🏎. Warning. If you are using the internal MQTT broker, we've had to make a change how the password is set. In the past it would automatically start the broker with the user `homeassistant` and a password equal to the API password. This is no longer the case and you need to configure it yourself now: @@ -90,7 +90,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Keenetic NDMS: user needs to have access to the TelNet interface ([@foxel] - [#15511]) ([device_tracker docs]) (breaking change) - openweathermap: wind speed is now correctly in km/h (fixes #15710) ([@fabaff] - [#15740]) ([weather.openweathermap docs]) (breaking change) -- Remove Telstra notifiy component: This API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- Remove Telstra notifiy component: This API has been decommissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) - deCONZ - support for power plugs. Power plugs that are of type "On/Off plug-in unit" and "Smart plug" (Osram and Innr among others) will now be switches instead of lights. Entities will be found as switch.entity_id instead of light.entity_id. ([@Kane610] - [#15752]) ([deconz docs]) ([light.deconz docs]) ([switch.deconz docs]) (breaking change) (new-platform) - HTTP: Make sure use_x_forward_for and trusted_proxies must be configured together ([@awarecan] - [#15804]) ([http docs]) (breaking change) - Velbus: Breaking changes include auto-discovery support so that you don't need to specify modules manually anymore in the configuration file, but just load the velbus component which will automatically load the switch and binary_sensor platforms. In addition, the fan and light platforms are removed since these should be modeled with template platform based on velbus switches. ([@thomasdelaet] - [#13742]) ([velbus docs]) ([binary_sensor.velbus docs]) ([switch.velbus docs]) (breaking change) @@ -129,7 +129,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Round precipitation forecast to 1 decimal place ([@priiduonu] - [#15759]) ([weather.openweathermap docs]) - Add a "Reviewed by Hound" badge ([@salbertson] - [#15767]) - Upgrade Mastodon.py to 1.3.1 ([@fabaff] - [#15766]) ([notify docs]) -- This component API has been decomissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) +- This component API has been decommissioned on the 31st of May 2018 by Telstra ([@dgomes] - [#15757]) ([notify docs]) (breaking change) - Fix docstrings ([@fabaff] - [#15770]) - Update pynetgear to 0.4.1 (bugfixes) ([@MatMaul] - [#15768]) ([device_tracker docs]) - Opensky altitude ([@ioangogo] - [#15273]) ([sensor.opensky docs]) diff --git a/source/_posts/2018-08-29-release-77.markdown b/source/_posts/2018-08-29-release-77.markdown index 0f0673edbab4..29f03486b5a7 100644 --- a/source/_posts/2018-08-29-release-77.markdown +++ b/source/_posts/2018-08-29-release-77.markdown @@ -130,7 +130,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - remove hangouts.users state, simplifies hangouts.conversations ([@hobbypunk90] - [#16191]) ([hangouts docs]) (beta fix) - Update aiohttp to version 3.4.0. ([@Swamp-Ig] - [#16198]) (beta fix) - Revert changes to platforms using self.device ([@Kane610] - [#16209]) (beta fix) -- homematic: Make device avilable again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) +- homematic: Make device available again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) - Change auth warning ([@balloob] - [#16216]) ([http docs]) (beta fix) - rewrite hangouts to use intents instead of commands ([@hobbypunk90] - [#16220]) ([conversation docs]) ([hangouts docs]) (beta fix) - Fix device telldus ([@balloob] - [#16224]) ([tellduslive docs]) (beta fix) @@ -142,7 +142,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change log level to error when auth provider failed loading ([@awarecan] - [#16235]) (beta fix) - Blow up startup if init auth providers or modules failed ([@awarecan] - [#16240]) (beta fix) - Tweak MFA login flow ([@awarecan] - [#16254]) (beta fix) -- def device shouldnt call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) +- def device should not call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) ## All changes @@ -244,7 +244,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - remove hangouts.users state, simplifies hangouts.conversations ([@hobbypunk90] - [#16191]) ([hangouts docs]) (beta fix) - Update aiohttp to version 3.4.0. ([@Swamp-Ig] - [#16198]) (beta fix) - Revert changes to platforms using self.device ([@Kane610] - [#16209]) (beta fix) -- homematic: Make device avilable again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) +- homematic: Make device available again when UNREACH becomes False ([@klada] - [#16202]) ([homematic docs]) (beta fix) - Change auth warning ([@balloob] - [#16216]) ([http docs]) (beta fix) - rewrite hangouts to use intents instead of commands ([@hobbypunk90] - [#16220]) ([conversation docs]) ([hangouts docs]) (beta fix) - Fix device telldus ([@balloob] - [#16224]) ([tellduslive docs]) (beta fix) @@ -256,7 +256,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Change log level to error when auth provider failed loading ([@awarecan] - [#16235]) (beta fix) - Blow up startup if init auth providers or modules failed ([@awarecan] - [#16240]) (beta fix) - Tweak MFA login flow ([@awarecan] - [#16254]) (beta fix) -- def device shouldnt call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) +- def device should not call it self but self._device ([@Kane610] - [#16255]) ([media_player.plex docs]) (beta fix) [#14516]: https://github.com/home-assistant/home-assistant/pull/14516 [#14557]: https://github.com/home-assistant/home-assistant/pull/14557 diff --git a/source/_posts/2018-12-12-release-84.markdown b/source/_posts/2018-12-12-release-84.markdown index baa185b9a891..fe2b3f6e6ffa 100644 --- a/source/_posts/2018-12-12-release-84.markdown +++ b/source/_posts/2018-12-12-release-84.markdown @@ -11,7 +11,7 @@ og_image: /images/blog/2018-12-release-84/components.png -Time for the last release of the year. We were hoping to end the year with an enourmous bang and make Lovelace the default UI. However, in our final stretch we realized that to get to the experience that we wanted, we had to make more last minute changes than we felt comfortable making. If you are a Lovelace tester, please read the section for existing testers below. +Time for the last release of the year. We were hoping to end the year with an enormous bang and make Lovelace the default UI. However, in our final stretch we realized that to get to the experience that we wanted, we had to make more last minute changes than we felt comfortable making. If you are a Lovelace tester, please read the section for existing testers below. We want to wish everybody happy holidays and want to thank all our contributors to the code, the documentation and all the ones in the chat for making up our amazing community. We had a great year with a lot of accomplishments and are looking forward to see all the great stuff you all come up with in 2019. Cheers! 🥂 diff --git a/source/_posts/2019-01-09-release-85.markdown b/source/_posts/2019-01-09-release-85.markdown index e34cb14c9bfc..0a6972d6f56c 100644 --- a/source/_posts/2019-01-09-release-85.markdown +++ b/source/_posts/2019-01-09-release-85.markdown @@ -78,7 +78,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes -- Targetting all entities in a domain by not sending an entity_id to a service is now deprecated. Instead, send `entity_id: all` if you want to target all. The old method will work for a couple of releases more, but will print a warning. Please migrate. ([@balloob] - [#19006]) (breaking change) +- Targeting all entities in a domain by not sending an entity_id to a service is now deprecated. Instead, send `entity_id: all` if you want to target all. The old method will work for a couple of releases more, but will print a warning. Please migrate. ([@balloob] - [#19006]) (breaking change) - The default interval of the weather component was aligned with the sensor component and is now 30 seconds instead of 15 seconds. ([@fabaff] - [#19186]) ([weather docs]) (breaking change) - In order to fix the below bug, default entity_ids will change (for example, `sensor.17track_packages_delivered` will change to `sensor.seventeentrack_packages_delivered)`. ([@bachya] - [#19213]) ([sensor.seventeentrack docs]) (breaking change) - Change `STATE_AUTO` to `STATE_HEAT` and `STATE_AWAY` to `STATE_ECO` to conform to climate DOMAIN standards. Change made to fix Alexa/Google Assistant support for this component. ([@marchingphoenix] - [#19242]) ([climate.eq3btsmart docs]) (breaking change) diff --git a/source/_posts/2019-02-20-release-88.markdown b/source/_posts/2019-02-20-release-88.markdown index 7c676456642f..1258a22bef64 100644 --- a/source/_posts/2019-02-20-release-88.markdown +++ b/source/_posts/2019-02-20-release-88.markdown @@ -164,11 +164,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - SmartThings Component Enhancements/Fixes ([@andrewsayre] - [#21085]) ([smartthings docs]) (beta fix) - Fix SmartThings Translation Error ([@andrewsayre] - [#21103]) ([smartthings docs]) (beta fix) - Fix track_change error in utility_meter ([@dgomes] - [#21134]) ([utility_meter docs]) (beta fix) -- Update pyEight for Python 3.7 Compatability ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) +- Update pyEight for Python 3.7 Compatibility ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) - Add power source to device and clean up zha listeners ([@dmulcahey] - [#21174]) ([zha docs]) (beta fix) - Fix for #19072 ([@sjabby] - [#21175]) ([light.flux_led docs]) (beta fix) - Upgrade aioimaplib for Python 3.7 compatibility ([@amelchio] - [#21197]) ([sensor.imap docs]) (beta fix) -- ordered by last occurence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) +- ordered by last occurrence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) - Set aioharmony version to 0.1.8 ([@ehendrix23] - [#21213]) ([harmony docs]) (breaking change) (beta fix) - Push pyads to 3.0.7 ([@carstenschroeder] - [#21216]) ([ads docs]) (beta fix) - Refactor ZHA listeners into channels ([@dmulcahey] - [#21196]) ([zha docs]) (beta fix) @@ -350,11 +350,11 @@ Experiencing issues introduced by this release? Please report them in our [issue - SmartThings Component Enhancements/Fixes ([@andrewsayre] - [#21085]) ([smartthings docs]) (beta fix) - Fix SmartThings Translation Error ([@andrewsayre] - [#21103]) ([smartthings docs]) (beta fix) - Fix track_change error in utility_meter ([@dgomes] - [#21134]) ([utility_meter docs]) (beta fix) -- Update pyEight for Python 3.7 Compatability ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) +- Update pyEight for Python 3.7 Compatibility ([@mezz64] - [#21161]) ([eight_sleep docs]) (beta fix) - Add power source to device and clean up zha listeners ([@dmulcahey] - [#21174]) ([zha docs]) (beta fix) - Fix for #19072 ([@sjabby] - [#21175]) ([light.flux_led docs]) (beta fix) - Upgrade aioimaplib for Python 3.7 compatibility ([@amelchio] - [#21197]) ([sensor.imap docs]) (beta fix) -- ordered by last occurence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) +- ordered by last occurrence ([@dgomes] - [#21200]) ([system_log docs]) (beta fix) - Set aioharmony version to 0.1.8 ([@ehendrix23] - [#21213]) ([harmony docs]) (breaking change) (beta fix) - Push pyads to 3.0.7 ([@carstenschroeder] - [#21216]) ([ads docs]) (beta fix) - Refactor ZHA listeners into channels ([@dmulcahey] - [#21196]) ([zha docs]) (beta fix) diff --git a/source/_posts/2019-03-13-release-89.markdown b/source/_posts/2019-03-13-release-89.markdown index 9999d3ed86bd..74b8d5715cd2 100644 --- a/source/_posts/2019-03-13-release-89.markdown +++ b/source/_posts/2019-03-13-release-89.markdown @@ -351,7 +351,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Avoid recorder thread crashing ([@balloob] - [#21668]) (beta fix) - check we have a tb ([@dgomes] - [#21670]) ([system_log docs]) (beta fix) - Fix ADS race condition ([@carstenschroeder] - [#21677]) ([ads docs]) (beta fix) -- resync hass that changes have occured ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix) +- resync hass that changes have occurred ([@fredrike] - [#21705]) ([tellduslive docs]) (beta fix) - Upgrade toonapilib to 3.2.1 ([@frenck] - [#21706]) ([toon docs]) (beta fix) [#18091]: https://github.com/home-assistant/home-assistant/pull/18091 diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 2949fc1e9bac..7e6886ff03fd 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -24,7 +24,7 @@ We're still in the process of updating more cameras to support the stream compon A BIG shout to [@awarecan], who has migrated our CI infrastructure to [CircleCI](https://www.circleci.com) and [Codecov](https://codecov.io/). CircleCI's advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested. -And in case you missed the announcement, we will soon start working on [an official Android app](/blog/2019/04/01/android/). And in case it wasn't clear, our other announcement, that we would [occassionally show ads in the UI](https://twitter.com/home_assistant/status/1112752645763223552), was an April fools joke 😁. +And in case you missed the announcement, we will soon start working on [an official Android app](/blog/2019/04/01/android/). And in case it wasn't clear, our other announcement, that we would [occasionally show ads in the UI](https://twitter.com/home_assistant/status/1112752645763223552), was an April fools joke 😁. ## Notable breaking change @@ -272,7 +272,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Tibber, Add price level ([@Danielhiversen] - [#22085]) ([tibber docs]) - Fix AttributeError traceback with darksky ([@iamtpage] - [#22101]) ([darksky docs]) - Add service description for services. ([@cgtobi] - [#21897]) -- Handle occassional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) ([simplisafe docs]) +- Handle occasional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) ([simplisafe docs]) - Loosen field retrieval from Pollen.com ([@bachya] - [#22132]) ([pollen docs]) - Handle possible exception during Ambient PWS reconnect ([@bachya] - [#22134]) ([ambient_station docs]) - Additional sensors and fixed icons, attributes and device classes. ([@endor-force] - [#22139]) ([trafikverket_weatherstation docs]) @@ -303,7 +303,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - add ZHA channel name property ([@Adminiuga] - [#22218]) ([zha docs]) - Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) ([google_assistant docs]) - Change .now() to .utcnow() ([@rdbahm] - [#22233]) ([season docs]) -- Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) +- Upgrade tibber library, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) - Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) ([recorder docs]) ([sql docs]) - Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) ([plex docs]) - Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) ([androidtv docs]) diff --git a/source/_posts/2019-08-07-release-97.markdown b/source/_posts/2019-08-07-release-97.markdown index f6b3bb31ccb1..048c7490ce3b 100644 --- a/source/_posts/2019-08-07-release-97.markdown +++ b/source/_posts/2019-08-07-release-97.markdown @@ -81,7 +81,7 @@ We wrote about how we use Azure DevOps to automate the development of Home Assis ## Release 0.97.1 - August 9 -A new breaking change was introduced with 0.97.1 to accomodate for the HaveIBeenPwned shutting down v2 of their API on August 18. The integration has been migrated to using v3. +A new breaking change was introduced with 0.97.1 to accommodate for the HaveIBeenPwned shutting down v2 of their API on August 18. The integration has been migrated to using v3. - Update HIBP sensor to use API v3 and API Key ([@aetaric] - [#25699]) ([haveibeenpwned docs]) (breaking change) - Update Cisco Mobility Express module version ([@fbradyirl] - [#25770]) ([cisco_mobility_express docs]) diff --git a/source/_posts/2019-08-28-release-98.markdown b/source/_posts/2019-08-28-release-98.markdown index 1a83a6e67d2c..d9e5434ade03 100644 --- a/source/_posts/2019-08-28-release-98.markdown +++ b/source/_posts/2019-08-28-release-98.markdown @@ -71,7 +71,7 @@ For more background on this decision, see [ADR-006](https://github.com/home-assi With this release we have deprecated integrations that rely on webscraping. These will be removed from Home Assistant in a future release. Our [scrape](/integrations/scrape/) integration will remain part of Home Assistant. -Webscraping is fragile, breaks often requires frequent updates and there have been occassions where websites have banned our users. +Webscraping is fragile, breaks often requires frequent updates and there have been occasions where websites have banned our users. Users that rely on these integrations can continue using them as custom components. diff --git a/source/_posts/2019-10-10-release-100.markdown b/source/_posts/2019-10-10-release-100.markdown index 8ff99288b0f5..8c6adc848300 100644 --- a/source/_posts/2019-10-10-release-100.markdown +++ b/source/_posts/2019-10-10-release-100.markdown @@ -279,7 +279,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - **OpenTherm** - Move climate entity state to hvac_action attribute to comply with climate 1.0. May break e.g. automations. - ([@mvn23] - [#25931]) ([opentherm_gw docs]) - **Genius Hub** - Users connecting to a Hub via the v1 API will need to specify a valid MAC address for the hub (see example YAML, below). Those using the v3 API will be unaffected. - This change is in preperation for for further changes, so the geniushub entities can be given more appropriate `entity_ids`. + This change is in preparation for for further changes, so the geniushub entities can be given more appropriate `entity_ids`. Some Sensor entities fro GeniusHub Issues have been renamed, and so will get a new entity ID: diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index 1e455f522c59..116020509db7 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -30,10 +30,10 @@ description: "Changelog of the Lovelace UI." - ❤️ [horizontal stack card]: New `title` option [#3839](https://github.com/home-assistant/home-assistant-polymer/pull/3839) @iantrich - ❤️ New `double_tap_action` option [#3879](https://github.com/home-assistant/home-assistant-polymer/pull/3879) @iantrich - ❤️ New `confirmation` option for actions [#4006](https://github.com/home-assistant/home-assistant-polymer/pull/4006) @iantrich -- ❤️ Theming: New CSS switch sytle: `switch-checked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich -- ❤️ Theming: New CSS switch sytle: `switch-unchecked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich -- ❤️ Theming: New CSS switch sytle: `switch-unchecked-button-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich -- ❤️ Theming: New CSS switch sytle: `switch-unchecked-track-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch style: `switch-checked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch style: `switch-unchecked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch style: `switch-unchecked-button-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch style: `switch-unchecked-track-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich - 📣 Upgrade MDI icons to 4.5.95 [#3977](https://github.com/home-assistant/home-assistant-polymer/pull/3977) @bonanitech - 📣 Display card errors in YAML instead of JSON [#4018](https://github.com/home-assistant/home-assistant-polymer/pull/4018) @iantrich - ⚠️ revert lovelace selectable text [#4095](https://github.com/home-assistant/home-assistant-polymer/pull/4095) @iantrich From b617bcef79094a68744cf8c5bae49425ca93b8a3 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 28 Jan 2020 21:26:01 +0100 Subject: [PATCH 11/18] Spelling and Markdown fixes: Part 3 --- .../splitting_configuration.markdown | 17 ++-- .../configuration/troubleshooting.markdown | 31 +++---- source/_docs/z-wave/installation.markdown | 33 ++++--- source/_integrations/apple_tv.markdown | 8 +- source/_integrations/beewi_smartclim.markdown | 2 +- .../binary_sensor.mysensors.markdown | 37 ++++---- .../_integrations/climate.mysensors.markdown | 31 +++---- source/_integrations/cover.mysensors.markdown | 25 +++--- source/_integrations/deconz.markdown | 90 +++++++++---------- .../device_tracker.mysensors.markdown | 17 ++-- source/_integrations/envisalink.markdown | 4 +- source/_integrations/flic.markdown | 16 ++-- source/_integrations/foursquare.markdown | 4 +- source/_integrations/knx.markdown | 3 +- source/_integrations/light.mysensors.markdown | 31 +++---- source/_integrations/limitlessled.markdown | 4 +- source/_integrations/miflora.markdown | 4 +- source/_integrations/mikrotik.markdown | 7 +- source/_integrations/mitemp_bt.markdown | 2 +- .../_integrations/notify.mysensors.markdown | 15 ++-- source/_integrations/roku.markdown | 4 +- source/_integrations/sensibo.markdown | 9 +- .../_integrations/sensor.mysensors.markdown | 75 ++++++++-------- source/_integrations/spaceapi.markdown | 2 +- .../_integrations/switch.mysensors.markdown | 53 ++++++----- source/_integrations/tts.markdown | 4 +- source/_integrations/watson_tts.markdown | 2 +- source/_integrations/wunderlist.markdown | 12 +-- source/_integrations/yeelight.markdown | 22 ++--- 29 files changed, 277 insertions(+), 287 deletions(-) diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index b09e0015afb1..a7763020f9fb 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -6,7 +6,7 @@ redirect_from: /topics/splitting_configuration/ So you've been using Home Assistant for a while now and your configuration.yaml file brings people to tears or you simply want to start off with the distributed approach, here's how to "split the configuration.yaml" into more manageable (read: humanly readable) pieces. -First off, several community members have sanitized (read: without api keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). +First off, several community members have sanitized (read: without API keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). As commenting code doesn't always happen, please read on for the details. @@ -56,6 +56,7 @@ zwave: mqtt: broker: 127.0.0.1 ``` + As with the core snippet, indentation makes a difference. The integration headers (`mqtt:`) should be fully left aligned (aka no indent), and the parameters (`broker:`) should be indented two (2) spaces. While some of these integrations can technically be moved to a separate file they are so small or "one off's" where splitting them off is superfluous. Also, you'll notice the # symbol (hash/pound). This represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact. @@ -148,18 +149,20 @@ That about wraps it up. If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away. -### Debugging multiple configuration files +## Debugging multiple configuration files If you have many configuration files, the `check_config` script allows you to see how Home Assistant interprets them: + - Listing all loaded files: `hass --script check_config --files` - Viewing a component's config: `hass --script check_config --info light` - Or all components' config: `hass --script check_config --info all` You can get help from the command line using: `hass --script check_config --help` -### Advanced Usage +## Advanced Usage We offer four advanced options to include whole directories at once. Please note that your files must have the `.yaml` file extension; `.yml` is not supported. + - `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list. The list entries are ordered based on the alphanumeric ordering of the names of the files. - `!include_dir_named` will return the content of a directory as a dictionary which maps filename => content of file. - `!include_dir_merge_list` will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list. @@ -182,7 +185,7 @@ These work recursively. As an example using `!include_dir_* automation`, will in └── configuration.yaml (not included) ``` -#### Example: `!include_dir_list` +### Example: `!include_dir_list` `configuration.yaml` @@ -244,7 +247,7 @@ It is important to note that each file must contain only **one** entry when usin It is also important to note that if you are splitting a file after adding -id: to support the automation UI, the -id: line must be removed from each of the split files. -#### Example: `!include_dir_named` +### Example: `!include_dir_named` `configuration.yaml` @@ -321,7 +324,7 @@ speech: {% endif %}{% endraw %} ``` -#### Example: `!include_dir_merge_list` +### Example: `!include_dir_merge_list` `configuration.yaml` @@ -376,7 +379,7 @@ automation: !include_dir_merge_list automation/ It is important to note that when using `!include_dir_merge_list`, you must include a list in each file (each list item is denoted with a hyphen [-]). Each file may contain one or more entries. -#### Example: `!include_dir_merge_named` +### Example: `!include_dir_merge_named` `configuration.yaml` diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 9817a4ac1161..a3e61e721088 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -10,22 +10,22 @@ Before we dive into common issues, make sure you know where your configuration d Whenever an integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. -### My integration does not show up +## My integration does not show up When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. If you have incorrect entries in your configuration files you can use the [`check_config`](/docs/tools/check_config/) script to assist in identifying them: `hass --script check_config`. If you need to provide the path for your configuration you can do this using the `-c` argument like this: `hass --script check_config -c /path/to/your/config/dir`. -#### Problems with the configuration +### Problems with the configuration -One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. - - - You can test your configuration using the command line with: `hass --script check_config`. - - On Hass.io you can use the [hassio command](/hassio/commandline/#home-assistant): `hassio homeassistant check`. - - On Docker you can use `docker exec home-assistant python -m homeassistant --script check_config --config /config` - where `home-assistant` is the name of the container. - - The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. - - You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). +One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. + +- You can test your configuration using the command line with: `hass --script check_config`. + - On Hass.io you can use the [`hassio` command](/hassio/commandline/#home-assistant): `hassio homeassistant check`. + - On Docker you can use `docker exec home-assistant python -m homeassistant --script check_config --config /config` - where `home-assistant` is the name of the container. +- The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. +- You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). +- To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). `configuration.yaml` does not allow multiple sections to have the same name. If you want to load multiple platforms for one component, you can append a [number or string](/getting-started/devices/#style-2-list-each-device-separately) to the name or nest them using [this style](/getting-started/devices/#style-1-collect-every-entity-under-the-parent): @@ -55,13 +55,14 @@ It can happen that some integrations either do not work right away or stop worki #### Multiple files -If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. +If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. ```yaml light: !include devices/lights.yaml sensor: !include devices/sensors.yaml ``` -Contents of `lights.yaml` (notice it does not contain `light: `): + +Contents of `lights.yaml` (notice it does not contain `light:`): ```yaml - platform: hyperion @@ -89,8 +90,8 @@ Whenever you report an issue, be aware that we are volunteers who do not have ac The only characters valid in entity names are: -* Lowercase letters -* Numbers -* Underscores +- Lowercase letters +- Numbers +- Underscores If you create an entity with other characters then Home Assistant may not generate an error for that entity. However you will find that attempts to use that entity will generate errors (or possibly fail silently). diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 60281c21b635..fa4de6f11e2e 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -88,8 +88,9 @@ device_config / device_config_domain / device_config_glob: Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. An easy script to generate a random key: + ```bash -$ cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` You can also use sites like [this one](https://www.random.org/cgi-bin/randbyte?nbytes=16&format=h) to generate the required data, just remember to put `0x` before each pair of characters: @@ -116,10 +117,10 @@ You do not need to install any software to use Z-Wave. If the path of `/dev/ttyACM0` doesn't work, look in the *System* section of the *Hass.io* menu. There you'll find a *Hardware* button which will list all the hardware found. -You can also check what hardware has been found using the [hassio command](/hassio/commandline/#hardware): +You can also check what hardware has been found using the [`hassio` command](/hassio/commandline/#hardware): ```bash -$ hassio hardware info +hassio hardware info ``` If you did an alternative install of Hass.io on Linux (e.g. installing Ubuntu, then Docker, then Hass.io) then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled in the host OS. Failure to do so will result in random failures of those components, e.g. dead or unreachable Z-Wave nodes, most notably right after Home Assistant restarts. Connect to your host OS via SSH, then you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` (commands are for Debian/Ubuntu). @@ -131,7 +132,7 @@ You do not need to install any software to use Z-Wave. To enable access to the Z-Wave stick, add `--device=/dev/ttyACM0` to the `docker` command that starts your container, for example: ```bash -$ docker run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host --device=/dev/ttyACM0 homeassistant/raspberrypi3-homeassistant +docker run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host --device=/dev/ttyACM0 homeassistant/raspberrypi3-homeassistant ``` If the path of `/dev/ttyACM0` doesn't work then you can find the path of the stick by disconnecting and then reconnecting it, and running the following in the Docker host: @@ -153,7 +154,7 @@ On the Raspberry Pi you will need to enable the serial interface in the `raspi-c On Debian Linux platforms there are dependencies you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): ```bash -$ sudo apt-get install libudev-dev build-essential +sudo apt-get install libudev-dev build-essential ``` You may also have to install the Python development libraries for your version of Python. For example `libpython3.6-dev`, and possibly `python3.6-dev` if you're using Python 3.6. @@ -183,17 +184,18 @@ dmesg | grep USB If Home Assistant (`hass`) runs with another user (e.g., *homeassistant*) you need to give access to the stick with: ```bash -$ sudo usermod -aG dialout homeassistant +sudo usermod -aG dialout homeassistant ``` The output from `ls -ltr` above contains the following information: -* The device type is `c` (character special) -* The permissions are `rw-rw----`, meaning only the owner and group can read and write to it -* There is only `1` link to the file -* It is owned by `root` and can be accessed by members of the group `dialout` -* It has a major device number of `204`, and a minor device number of `64` -* The device was connected at `10:25` on `21 September` -* The device is `/dev/ttyUSB0`. + +- The device type is `c` (character special). +- The permissions are `rw-rw----`, meaning only the owner and group can read and write to it. +- There is only `1` link to the file. +- It is owned by `root` and can be accessed by members of the group `dialout`. +- It has a major device number of `204`, and a minor device number of `64`. +- The device was connected at `10:25` on `21 September`. +- The device is `/dev/ttyUSB0`. #### macOS @@ -218,6 +220,7 @@ If your device path changes when you restart, see [this guide](http://hintshop.l ### Random unreachable Z-Wave nodes: ModemManager interference If this applies to your situation: + - Some or all Z-Wave nodes are unreachable after restarting Home Assistant; not necessarily after every restart but seemingly random. - The Z-Wave stick stops responding, needs to be re-plugged or Home Assistant needs a restart to get Z-Wave back. - Your host OS is Debian-based/Ubuntu (for example: you installed Ubuntu, then Docker, then Hass.io). @@ -267,7 +270,9 @@ sudo usermod -aG dialout homeassistant If you're getting errors like: - openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory +```txt +openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory +``` Then the problem is that you're missing `libudev-dev` (or the equivalent for your distribution), please [install it](/docs/z-wave/installation/#linux). diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown index a06ec891a1da..0428288424a3 100644 --- a/source/_integrations/apple_tv.markdown +++ b/source/_integrations/apple_tv.markdown @@ -26,7 +26,7 @@ Currently, you must have Home Sharing enabled for this to work. Support for pair To use this component, you must first install some system libraries and a compiler. For Debian or a similar system, this should be enough: ```shell -$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev +sudo apt-get install build-essential libssl-dev libffi-dev python-dev ``` If you want to discover new devices automatically, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add one or more Apple TVs to your installation, add the following to your `configuration.yaml` file: @@ -78,7 +78,7 @@ In order to connect to the device, you need a *login id*. The easiest way to obt Make sure Home Sharing is enabled on the Apple TV. -To scan for devices and determine the `login_id`, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. +To scan for devices and determine the `login_id`, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. @@ -106,9 +106,9 @@ Just copy and paste the `login_id` from the device you want to add. For more det If you, when playing media with `play_url`, get the following error message: -*“This AirPlay connection requires iOS 7.1 or later, OS X 10.10 or later, or iTunes 11.2 or later.”* +“This AirPlay connection requires iOS 7.1 or later, macOS 10.10 or later, or iTunes 11.2 or later.” -then device authentication is required, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. +then device authentication is required, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**. diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index b83c99089295..9380153b7a72 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -21,7 +21,7 @@ Depending on the operating system you're running, you have to configure the prop - On other Linux systems: - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. -- Windows and MacOS are currently not supported by the `btlewrap` library. +- Windows and macOS are currently not supported by the `btlewrap` library. ## Configuration diff --git a/source/_integrations/binary_sensor.mysensors.markdown b/source/_integrations/binary_sensor.mysensors.markdown index 8b42a3c55048..28f196361644 100644 --- a/source/_integrations/binary_sensor.mysensors.markdown +++ b/source/_integrations/binary_sensor.mysensors.markdown @@ -9,31 +9,31 @@ ha_release: 0.14 ha_iot_class: Local Push --- -Integrates MySensors binary sensors into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors binary sensors into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following sensor types are supported: -#### MySensors version 1.4 and higher +## MySensors version 1.4 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_DOOR | V_TRIPPED -S_MOTION | V_TRIPPED -S_SMOKE | V_TRIPPED +| S_TYPE | V_TYPE | +| -------- | --------- | +| S_DOOR | V_TRIPPED | +| S_MOTION | V_TRIPPED | +| S_SMOKE | V_TRIPPED | -#### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE ----------------|---------------------------------- -S_SPRINKLER | V_TRIPPED -S_WATER_LEAK | V_TRIPPED -S_SOUND | V_TRIPPED -S_VIBRATION | V_TRIPPED -S_MOISTURE | V_TRIPPED +| S_TYPE | V_TYPE | +| ------------ | --------- | +| S_SPRINKLER | V_TRIPPED | +| S_WATER_LEAK | V_TRIPPED | +| S_SOUND | V_TRIPPED | +| S_VIBRATION | V_TRIPPED | +| S_MOISTURE | V_TRIPPED | -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### Example sketch +## Example sketch ```cpp /** @@ -80,6 +80,3 @@ void loop() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/climate.mysensors.markdown b/source/_integrations/climate.mysensors.markdown index 542e21a4d562..9200dffac11a 100644 --- a/source/_integrations/climate.mysensors.markdown +++ b/source/_integrations/climate.mysensors.markdown @@ -9,24 +9,24 @@ ha_release: 0.29 ha_iot_class: Local Push --- -Integrates MySensors HVAC into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors HVAC into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE --------|----------------------------------------------------------------------------- -S_HVAC | V_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP +| S_TYPE | V_TYPE | +| ------ | ------------------------------------------------------------------------------------ | +| S_HVAC | V_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP | V_HVAC_FLOW_STATE is mapped to the state of the Climate integration in Home Assistant as follows: -Home Assistant State | MySensors State ----------------------|---------------- -HVAC_MODE_COOL | CoolOn -HVAC_MODE_HEAT | HeatOn -HVAC_MODE_AUTO | AutoChangeOver -HVAC_MODE_OFF | Off +| Home Assistant State | MySensors State | +| -------------------- | --------------- | +| HVAC_MODE_COOL | CoolOn | +| HVAC_MODE_HEAT | HeatOn | +| HVAC_MODE_AUTO | AutoChangeOver | +| HVAC_MODE_OFF | Off | Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible. @@ -36,9 +36,9 @@ You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC. You can use V_TEMP to send the current temperature from the node to Home Assistant. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### Example sketch for MySensors 2.x +## Example sketch for MySensors 2.x ```cpp /* @@ -183,7 +183,7 @@ void sendHeatpumpCommand() { } ``` -### Example sketch for MySensors 1.x +## Example sketch for MySensors 1.x ```cpp /* @@ -255,6 +255,3 @@ void incomingMessage(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/cover.mysensors.markdown b/source/_integrations/cover.mysensors.markdown index 075f99a2e108..917983aae89d 100644 --- a/source/_integrations/cover.mysensors.markdown +++ b/source/_integrations/cover.mysensors.markdown @@ -9,27 +9,27 @@ ha_release: "0.30" ha_iot_class: Local Push --- -Integrates MySensors covers into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors covers into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.4 +## MySensors version 1.4 -S_TYPE | V_TYPE ---------|-------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] +| S_TYPE | V_TYPE | +| ------- | ------------------------------------------- | +| S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] | -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE ---------|------------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS] +| S_TYPE | V_TYPE | +| ------- | ------------------------------------------------ | +| S_COVER | V_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS] | All V_TYPES above are required. Use V_PERCENTAGE (or V_DIMMER) if you know the exact position of the cover in percent, use V_STATUS (or V_LIGHT) if you don't. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download/serial_api_20) of MySensors. -### Example sketch +## Example sketch ```cpp /* @@ -149,6 +149,3 @@ void receive(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download/serial_api_20 diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index f552501aa319..cb72d42e125d 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -63,7 +63,7 @@ logger: ## Troubleshooting -If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](http://deconz.dresden-elektronik.de/deconz-firmware/?C=M;O=D). +If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](http://deconz.dresden-elektronik.de/deconz-firmware/?C=M;O=D). ## Device services @@ -73,11 +73,11 @@ Available services: `configure` and `deconz.device_refresh`. Set attribute of device in deCONZ using [REST-API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). -| Service data attribute | Optional | Description | -|-----------|----------|-------------| -| `field` | No | String representing a specific device in deCONZ. | -| `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | -| `data` | No | Data is a JSON object with what data you want to alter. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------- | +| `field` | No | String representing a specific device in deCONZ. | +| `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | +| `data` | No | Data is a JSON object with what data you want to alter. | Either `entity` or `field` must be provided. If both are present, `field` will be interpreted as a subpath under the device path corresponding to the specified `entity`: @@ -109,12 +109,12 @@ Remote controls (ZHASwitch category) will not be exposed as regular entities, bu Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. -| Switch code | Description | -|-------------|-------------| -| 1XXX | Button #1 up to #8 | -| XXX1 | Button hold | -| XXX2 | Button short release | -| XXX3 | Button long release | +| Switch code | Description | +| ----------- | -------------------- | +| 1XXX | Button #1 up to #8 | +| XXX1 | Button hold | +| XXX2 | Button short release | +| XXX3 | Button long release | Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button. @@ -122,17 +122,17 @@ For the IKEA Tradfri remote the first digit equals, 1 for the middle button, 2 f Specific gestures for the Aqara Magic Cube are: -| Gesture | Description | -|---------|-------------| -| 0 | Awake | -| 1 | Shake | -| 2 | Free fall | -| 3 | Flip 90 | -| 4 | Flip 180 | -| 5 | Move on any side | -| 6 | Double tap on any side | -| 7 | Turn clockwise | -| 8 | Turn counter clockwise | +| Gesture | Description | +| ------- | ---------------------- | +| 0 | Awake | +| 1 | Shake | +| 2 | Free fall | +| 3 | Flip 90 | +| 4 | Flip 180 | +| 5 | Move on any side | +| 6 | Double tap on any side | +| 7 | Turn clockwise | +| 8 | Turn counter clockwise | ### Finding your events @@ -313,7 +313,7 @@ class RemoteControl(hass.Hass): {% endraw %} -#### Appdaemon remote template +#### Appdaemon Ikea Tradfri remote template Community app from [Teachingbirds](https://community.home-assistant.io/u/teachingbirds/summary). This app uses an Ikea Tradfri remote to control Sonos speakers with play/pause, volume up and down, next and previous track. @@ -402,7 +402,7 @@ Note that devices in the climate platform identify as sensors, so there is a man The `entity_id` name will be `climate.device_name`, where `device_name` is defined in deCONZ. -#### Verified supported climate devices +### Verified supported climate devices - Bitron Thermostat 902010/32 - Eurotronic SPZB0001 @@ -443,8 +443,8 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define - Philips Hue White Ambiance A19 - Philips Hue Hue White ambiance Milliskin (recessed spotlight) LTW013 - Philips Hue LightStrip Plus -- Busch Jaeger ZigBee Light Link univ. relai (6711 U) with ZigBee Light Link control element 6735-84 -- Xiaomi Aqara Smart Led Bulb (white) E27 ZNLDP12LM +- Busch Jaeger Zigbee Light Link univ. relai (6711 U) with Zigbee Light Link control element 6735-84 +- Xiaomi Aqara Smart Led Bulb (white) E27 ZNLDP12LM ## Scene @@ -484,24 +484,24 @@ The `entity_id` name will be `sensor.device_name`, where `device_name` is define ### deCONZ Daylight Sensor -The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from https://github.com/mourner/suncalc, on which the deCONZ implementation is based): - -| Sensor State | Description | -|--------------|-------------| -| sunrise_start | sunrise (top edge of the sun appears on the horizon) | -| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) | -| golden_hour_1 | morning golden hour (soft light, the best time for photography) | -| solar_noon | solar noon (sun is in the highest position) | -| golden_hour_2 | evening golden hour | -| sunset_start | sunset starts (bottom edge of the sun touches the horizon) | -| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) | -| dusk | dusk (evening nautical twilight starts) | -| nautical_dusk | nautical dusk (evening astronomical twilight starts) | -| night_start | night starts (dark enough for astronomical observations) | -| nadir | nadir (darkest moment of the night, the sun is in the lowest position) | -| night_end | night ends (morning astronomical twilight starts) | -| nautical_dawn | nautical dawn (morning nautical twilight starts) | -| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) | +The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from , on which the deCONZ implementation is based): + +| Sensor State | Description | +| ------------- | ------------------------------------------------------------------------ | +| sunrise_start | sunrise (top edge of the sun appears on the horizon) | +| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) | +| golden_hour_1 | morning golden hour (soft light, the best time for photography) | +| solar_noon | solar noon (sun is in the highest position) | +| golden_hour_2 | evening golden hour | +| sunset_start | sunset starts (bottom edge of the sun touches the horizon) | +| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) | +| dusk | dusk (evening nautical twilight starts) | +| nautical_dusk | nautical dusk (evening astronomical twilight starts) | +| night_start | night starts (dark enough for astronomical observations) | +| nadir | nadir (darkest moment of the night, the sun is in the lowest position) | +| night_end | night ends (morning astronomical twilight starts) | +| nautical_dawn | nautical dawn (morning nautical twilight starts) | +| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) | The sensor also has an attribute called "daylight" that has the value `true` when the sensor's state is `golden_hour_1`, `solar_noon`, or `golden_hour_2`, and `false` otherwise. diff --git a/source/_integrations/device_tracker.mysensors.markdown b/source/_integrations/device_tracker.mysensors.markdown index 88d645f68b65..20f477790f0e 100644 --- a/source/_integrations/device_tracker.mysensors.markdown +++ b/source/_integrations/device_tracker.mysensors.markdown @@ -9,19 +9,19 @@ ha_release: 0.38 ha_iot_class: Local Push --- -Integrates MySensors device trackers into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors device trackers into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following sensor types are supported: -##### MySensors version 2.0 and higher +## MySensors version 2.0 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_GPS | V_POSITION +| S_TYPE | V_TYPE | +| ------ | ---------- | +| S_GPS | V_POSITION | -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### MySensors 2.x example sketch +## MySensors 2.x example sketch ```cpp /** @@ -95,6 +95,3 @@ void loop() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index 129e921eb4eb..96b4bece4d16 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -22,7 +22,7 @@ There is currently support for the following device types within Home Assistant: This is a fully event-based component. Any event sent by the Envisalink device will be immediately reflected within Home Assistant. -As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. +As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer Z-Wave / Zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. An `envisalink` section must be present in the `configuration.yaml` file and contain the following options as required: @@ -136,6 +136,6 @@ The following services are supported by Envisalink and can be used to script or - **alarm_arm_home**: Arms the alarm in home mode. - **alarm_arm_away**: Arms the alarm in standard away mode. - **alarm_arm_night**: Arms the alarm in night mode. -- **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. +- **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer Z-Wave / Zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. - **alarm_keypress**: Sends a string of up to 6 characters to the alarm. *Works with DSC panels, and confirmed to work with Honeywell Vista-20P (aka First Alert FA-168)* - **invoke_custom_function**: Invokes a custom PGM function. *DSC alarms only* diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown index 6218c34b118b..8bcdfd843e03 100644 --- a/source/_integrations/flic.markdown +++ b/source/_integrations/flic.markdown @@ -12,13 +12,13 @@ The `flic` platform allows you to receive click events from [flic](https://flic. The platform does not directly interact with the buttons, *but communicates with a flic service* that manages the buttons. The service can run on the same instance as Home Assistant or any other reachable machine. -#### Service setup +## Service setup If you are using Hass.io, you can run the service locally by [installing](/hassio/installing_third_party_addons/) the flicd add-on from [pschmitt's repository](https://github.com/pschmitt/hassio-addons). -For instructions on how to install the service manually, visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). +For instructions on how to install the service manually, visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [macOS](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). -#### Configuration +## Configuration To use your flic buttons in your installation, add the following to your `configuration.yaml` file: @@ -55,15 +55,15 @@ timeout: default: 3 {% endconfiguration %} -#### Discovery +## Discovery If discovery is enabled, you can add a new button by pressing it for at least 7 seconds. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. -#### Timeout +## Timeout - When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. -#### Events +## Events The flic integration fires `flic_click` events on the bus. You can capture the events and respond to them in automation scripts like this: @@ -105,6 +105,6 @@ automation: message: {% raw %}"flic {{ trigger.event.data.button_name }} was {{ trigger.event.data.click_type }} clicked"{% endraw %} ``` -##### Ignoring Click Types +### Ignoring Click Types For some purposes it might make sense to exclude a specific click type from triggering click events. For example when ignoring double clicks, pressing the button twice fast results in two `single` instead of a `double` click event. This is very useful for applications where you want to click fast. diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index 0a8c8b863d20..41dd04d2e7dd 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -30,7 +30,7 @@ push_secret: type: string {% endconfiguration %} -#### Getting the access token #### +## Getting the access token After you have registered your APP on your [My Apps Page](https://foursquare.com/developers/apps) you get a `CLIENT_ID` and you have specified a `REDIRECT_URL` which can be any URL you like, but since it will get your access token via an HTTP GET request, it should be a URL which will ignore the `access_token` HTTP GET variable. A good idea is to choose the URL of your Home Assistant. @@ -71,7 +71,7 @@ Parameters: - **eventId** (*Optional*): The event the user is checking in to. - **shout** (*Optional*): A message about your check-in. The maximum length of this field is 140 characters. - **mentions** (*Optional*): Mentions in your check-in. This parameter is a semicolon-delimited list of mentions. A single mention is of the form "start,end,userid", where start is the index of the first character in the shout representing the mention, end is the index of the first character in the shout after the mention, and userid is the userid of the user being mentioned. If userid is prefixed with "fbu-", this indicates a Facebook userid that is being mention. Character indices in shouts are 0-based. -- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." +- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, Twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." - **ll** (*Optional*): Latitude and longitude of the user's location. Only specify this field if you have a GPS or other device reported location for the user at the time of check-in. - **llAcc** (*Optional*): Accuracy of the user's latitude and longitude, in meters. - **alt** (*Optional*): Altitude of the user's location, in meters. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 056ad86f69b5..fd722ff0fa70 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -43,6 +43,7 @@ Optional, recommended for large KNX installations (>100 devices) and/or if you w knx: config_file: '/path/to/xknx.yaml' ``` + {% configuration %} config_file: description: The path for XKNX configuration file. @@ -108,7 +109,7 @@ fire_event: type: boolean default: false fire_event_filter: - description: If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. + description: If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the Home Assistant event bus. required: inclusive type: [list, string] state_updater: diff --git a/source/_integrations/light.mysensors.markdown b/source/_integrations/light.mysensors.markdown index 4cfa6de14037..8d3ff74d05e2 100644 --- a/source/_integrations/light.mysensors.markdown +++ b/source/_integrations/light.mysensors.markdown @@ -9,31 +9,31 @@ ha_release: 0.13 ha_iot_class: Local Push --- -Integrates MySensors lights into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors lights into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. The following actuator types are supported: -##### MySensors version 1.4 +## MySensors version 1.4 -S_TYPE | V_TYPE ----------|-------------- -S_DIMMER | V_DIMMER\*, V_LIGHT\* +| S_TYPE | V_TYPE | +| -------- | --------------------- | +| S_DIMMER | V_DIMMER\*, V_LIGHT\* | -##### MySensors version 1.5 and higher +## MySensors version 1.5 and higher -S_TYPE | V_TYPE -------------|------------- -S_DIMMER | [V_DIMMER\* or V_PERCENTAGE\*], [V_LIGHT\* or V_STATUS\*] -S_RGB_LIGHT | V_RGB*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] -S_RGBW_LIGHT | V_RGBW*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] +| S_TYPE | V_TYPE | +| ------------ | -------------------------------------------------------------- | +| S_DIMMER | [V_DIMMER\* or V_PERCENTAGE\*], [V_LIGHT\* or V_STATUS\*] | +| S_RGB_LIGHT | V_RGB*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] | +| S_RGBW_LIGHT | V_RGBW*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] | V_TYPES with a star (\*) denote V_TYPES that should be sent at sketch startup. For an S_DIMMER, send both a V_DIMMER/V_PERCENTAGE and a V_LIGHT/V_STATUS message. For an S_RGB_LIGHT, send both a V_RGB and a V_LIGHT/V_STATUS message with a V_DIMMER/V_PERCENTAGE message being optional. Same principal applies for S_RGBW_LIGHT and V_RGBW. Sketch should acknowledge a command sent from controller with the same type. If command invokes a change to off state (including a V_PERCENTAGE, V_RGB, or V_RGBW message of zero), only a V_STATUS of zero message should be sent. See sketches below for examples. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. -### MySensors 1.x example sketch +## MySensors 1.x example sketch ```cpp /* @@ -108,7 +108,7 @@ void incomingMessage(const MyMessage &message) { } ``` -### MySensors 2.x example sketch +## MySensors 2.x example sketch ```cpp /* @@ -241,6 +241,3 @@ void send_status_message() } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index 48292275fe46..59597a5494f9 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -16,9 +16,9 @@ Note: you can assign an `rgbw`, `rgbww`, `white` and `dimmer` group to the same An archive of the extensive API can be found [here](https://github.com/Fantasmos/LimitlessLED-DevAPI). -### Setup +## Setup -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([Android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown index 390adfaa6d5d..d37335c10a55 100644 --- a/source/_integrations/miflora.markdown +++ b/source/_integrations/miflora.markdown @@ -24,7 +24,7 @@ Before configuring Home Assistant you need a Bluetooth backend and the MAC addre - On other Linux systems: - Preferred solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to install the library in the right one.  - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` -- On Windows and MacOS there is currently no support for the [miflora library](https://github.com/open-homeautomation/miflora/). +- On Windows and macOS there is currently no support for the [miflora library](https://github.com/open-homeautomation/miflora/). ## Scan for devices @@ -120,7 +120,7 @@ sensor: - platform: miflora mac: 'xx:xx:xx:xx:xx:xx' name: Flower 1 - force_update: true + force_update: true median: 3 monitored_conditions: - moisture diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index f23d31212bf5..c87a6e3eef20 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -27,11 +27,10 @@ set api disabled=no port=8728 Web Frontend: -Go to **IP** -> **Services** -> **api** and enable it. +Go to **IP** -> **Services** -> **API** and enable it. Make sure that port 8728 or the port you choose is accessible from your network. - To use a MikroTik router in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -86,7 +85,7 @@ arp_ping: As of version 6.43 of RouterOS Mikrotik introduced a new login method (plain) in addition to the old login method (token). With Version 6.45.1 the old token login method got deprecated. In order to support both login mechanisms, the new config option `login_method` has been introduced. If this option is not set, the component will try to login with the plain method first and the token method if that fails. - That can cause log entries on the router like `login failure for user homeassistant from 192.168.23.10 via api` but doesn't keep the component from working. + That can cause log entries on the router like `login failure for user homeassistant from 192.168.23.10 via api` but doesn't keep the component from working. To get rid of these entries, set the `login_method` to `plain` for Routers with OS versions > 6.43 or `token` for routers with OS versions < 6.43. @@ -120,7 +119,7 @@ To use this device tracker you need restricted privileges only. To enhance the s /user set password="YOUR_PASSWORD" homeassistant ``` -## Using the additional configuration to the `mikrotik` entry in your `configuration.yaml` file: +## Using the additional configuration to the `mikrotik` entry in your `configuration.yaml` file ```yaml mikrotik: diff --git a/source/_integrations/mitemp_bt.markdown b/source/_integrations/mitemp_bt.markdown index 64d736ea20cf..cea293437fe1 100644 --- a/source/_integrations/mitemp_bt.markdown +++ b/source/_integrations/mitemp_bt.markdown @@ -19,7 +19,7 @@ Depending on the operating system you're running, you have to configure the prop - On other Linux systems: - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. -- Windows and MacOS are currently not supported by the `btlewrap` library. +- Windows and macOS are currently not supported by the `btlewrap` library. ## Configuration diff --git a/source/_integrations/notify.mysensors.markdown b/source/_integrations/notify.mysensors.markdown index 7dc8aeac6190..b5f9628e0ed2 100644 --- a/source/_integrations/notify.mysensors.markdown +++ b/source/_integrations/notify.mysensors.markdown @@ -9,11 +9,11 @@ ha_release: 0.36 ha_iot_class: Local Push --- -Integrates MySensors notifications into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors notifications into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. Setting the `target` key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: "[Sketch name] [Node id] [Child id]". -### Automation example +## Automation example ```yaml ... @@ -28,11 +28,11 @@ The following sensor types are supported: ##### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT +| S_TYPE | V_TYPE | +| ------ | ------ | +| S_INFO | V_TEXT | -For more information, visit the [api] page of MySensors. +For more information, visit the [API](https://www.mysensors.org/download/) page of MySensors. ### Example sketch @@ -91,6 +91,3 @@ For more information, visit the [api] page of MySensors. } } ``` - -[main component]: /integrations/mysensors/ -[api]: https://www.mysensors.org/download/ diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index f640d668d8b9..b11c0569b9e4 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -90,7 +90,7 @@ data: When the Home Assistant Roku integration is enabled and has found a Roku device, in the Home Assistant GUI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device. This action can also be automated, but it requires you to acquire an extra piece of information; the ```appID``` for the channel specific to your Roku. Although this information is gathered by the Roku integration, at the moment it is not exposed to the end user. This item might be added in a future release. For now though, you can easily get the information yourself. All you need to do is a simple GET API call on the same network as your device. -The api calls are like this: +The API calls are like this: ```txt GET http:// ROKU_IP:8060/query/apps @@ -102,7 +102,7 @@ POST http://YOUR_ROKU_IP:8060/launch/837?contentID=YOUR_YOUTUBE_VIDEOS_CONTENT_I More details can be found on the [Roku dev pages](https://developer.roku.com/docs/developer-program/discovery/external-control-api.md) -To use this in Home Assistant, for instance in an automation, the format is as follows. Note that ```source: ``` is the appID you discovered in the API call: +To use this in Home Assistant, for instance in an automation, the format is as follows. Note that `source:` is the appID you discovered in the API call: ```yaml action: diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 35627385e292..70dce13f6e19 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -23,7 +23,7 @@ climate: {% configuration %} api_key: - description: Your Sensibo API key (To get your API key visit ). + description: Your Sensibo API key (To get your API key visit `https://home.sensibo.com/me/api`). required: true type: string id: @@ -38,7 +38,8 @@ then in the Sensibo app log you will be able to distinguish between actions done in the app and actions done by Home Assistant. -### Full config example +## Full config example + ```yaml climate: - platform: sensibo @@ -48,11 +49,12 @@ climate: - id2 ``` -### Adding a quick switch example +## Adding a quick switch example If you want a "Quick Switch" to turn your AC On / Off, you can do that using the following `Switch Template`: {% raw %} + ```yaml switch: - platform: template @@ -71,4 +73,5 @@ switch: entity_id: climate.ac hvac_mode: off ``` + {% endraw %} diff --git a/source/_integrations/sensor.mysensors.markdown b/source/_integrations/sensor.mysensors.markdown index 6b84c8422da8..908228b1d3ca 100644 --- a/source/_integrations/sensor.mysensors.markdown +++ b/source/_integrations/sensor.mysensors.markdown @@ -9,7 +9,7 @@ ha_iot_class: Local Push ha_release: 0.7 --- -Integrates MySensors sensors into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors sensors into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. ## Supported sensor types @@ -17,46 +17,46 @@ The following sensor types are supported: ### MySensors version 1.4 and higher -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_TEMP | V_TEMP -S_HUM | V_HUM -S_BARO | V_PRESSURE, V_FORECAST -S_WIND | V_WIND, V_GUST, V_DIRECTION -S_RAIN | V_RAIN, V_RAINRATE -S_UV | V_UV -S_WEIGHT | V_WEIGHT, V_IMPEDANCE -S_POWER | V_WATT, V_KWH -S_DISTANCE | V_DISTANCE -S_LIGHT_LEVEL | V_LIGHT_LEVEL -S_IR | V_IR_RECEIVE -S_WATER | V_FLOW, V_VOLUME -S_AIR_QUALITY | V_DUST_LEVEL -S_CUSTOM | V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5 -S_DUST | V_DUST_LEVEL -S_SCENE_CONTROLLER | V_SCENE_ON, V_SCENE_OFF +| S_TYPE | V_TYPE | +| ------------------ | -------------------------------------- | +| S_TEMP | V_TEMP | +| S_HUM | V_HUM | +| S_BARO | V_PRESSURE, V_FORECAST | +| S_WIND | V_WIND, V_GUST, V_DIRECTION | +| S_RAIN | V_RAIN, V_RAINRATE | +| S_UV | V_UV | +| S_WEIGHT | V_WEIGHT, V_IMPEDANCE | +| S_POWER | V_WATT, V_KWH | +| S_DISTANCE | V_DISTANCE | +| S_LIGHT_LEVEL | V_LIGHT_LEVEL | +| S_IR | V_IR_RECEIVE | +| S_WATER | V_FLOW, V_VOLUME | +| S_AIR_QUALITY | V_DUST_LEVEL | +| S_CUSTOM | V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5 | +| S_DUST | V_DUST_LEVEL | +| S_SCENE_CONTROLLER | V_SCENE_ON, V_SCENE_OFF | ### MySensors version 1.5 and higher -S_TYPE | V_TYPE ----------------|---------------------------------- -S_COLOR_SENSOR | V_RGB -S_MULTIMETER | V_VOLTAGE, V_CURRENT, V_IMPEDANCE -S_SOUND | V_LEVEL -S_VIBRATION | V_LEVEL -S_MOISTURE | V_LEVEL -S_LIGHT_LEVEL | V_LEVEL -S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) -S_DUST | V_LEVEL (replaces V_DUST_LEVEL) +| S_TYPE | V_TYPE | +| -------------- | --------------------------------- | +| S_COLOR_SENSOR | V_RGB | +| S_MULTIMETER | V_VOLTAGE, V_CURRENT, V_IMPEDANCE | +| S_SOUND | V_LEVEL | +| S_VIBRATION | V_LEVEL | +| S_MOISTURE | V_LEVEL | +| S_LIGHT_LEVEL | V_LEVEL | +| S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) | +| S_DUST | V_LEVEL (replaces V_DUST_LEVEL) | ### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT -S_GAS | V_FLOW, V_VOLUME -S_GPS | V_POSITION -S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC +| S_TYPE | V_TYPE | +| --------------- | ------------------------- | +| S_INFO | V_TEXT | +| S_GAS | V_FLOW, V_VOLUME | +| S_GPS | V_POSITION | +| S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC | ## Custom unit of measurement @@ -64,7 +64,7 @@ Some sensor value types are not specific for a certain sensor type. These do not By using V_UNIT_PREFIX, it's possible to set a custom unit for any sensor. The string value that is sent for V_UNIT_PREFIX will be used in preference to any other unit of measurement, for the defined sensors. V_UNIT_PREFIX can't be used as a stand-alone sensor value type. Sending a supported value type and value from the tables above is also required. V_UNIT_PREFIX is available with MySensors version 1.5 and later. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. ## Example sketches @@ -179,6 +179,3 @@ void receive(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 6d9cef1d8634..279c8b741ca1 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -128,7 +128,7 @@ contact: required: false type: string issue_report_channels: - description: "The reporting channel for issues. Valid values are email, issue_mail, twitter or ml" + description: "The reporting channel for issues. Valid values are `email`, `issue_mail`, `twitter` or `ml`" required: true type: list state: diff --git a/source/_integrations/switch.mysensors.markdown b/source/_integrations/switch.mysensors.markdown index 1d35df94d291..f4439feff478 100644 --- a/source/_integrations/switch.mysensors.markdown +++ b/source/_integrations/switch.mysensors.markdown @@ -9,7 +9,7 @@ ha_iot_class: Local Push ha_release: 0.11 --- -Integrates MySensors switches into Home Assistant. See the [main component] for configuration instructions. +Integrates MySensors switches into Home Assistant. See the [main integration](/integrations/mysensors/) for configuration instructions. ## Supported actuator types @@ -17,44 +17,44 @@ The following actuator types are supported: ### MySensors version 1.4 and higher -S_TYPE | V_TYPE ----------|------------------- -S_DOOR | V_ARMED -S_MOTION | V_ARMED -S_SMOKE | V_ARMED -S_LIGHT | V_LIGHT -S_LOCK | V_LOCK_STATUS -S_IR | V_IR_SEND, V_LIGHT +| S_TYPE | V_TYPE | +| -------- | ------------------ | +| S_DOOR | V_ARMED | +| S_MOTION | V_ARMED | +| S_SMOKE | V_ARMED | +| S_LIGHT | V_LIGHT | +| S_LOCK | V_LOCK_STATUS | +| S_IR | V_IR_SEND, V_LIGHT | ### MySensors version 1.5 and higher -S_TYPE | V_TYPE --------------|---------------------- -S_LIGHT | V_STATUS -S_BINARY | [V_STATUS or V_LIGHT] -S_SPRINKLER | V_STATUS -S_WATER_LEAK | V_ARMED -S_SOUND | V_ARMED -S_VIBRATION | V_ARMED -S_MOISTURE | V_ARMED +| S_TYPE | V_TYPE | +| ------------ | --------------------- | +| S_LIGHT | V_STATUS | +| S_BINARY | [V_STATUS or V_LIGHT] | +| S_SPRINKLER | V_STATUS | +| S_WATER_LEAK | V_ARMED | +| S_SOUND | V_ARMED | +| S_VIBRATION | V_ARMED | +| S_MOISTURE | V_ARMED | ### MySensors version 2.0 and higher -S_TYPE | V_TYPE -----------------|--------- -S_WATER_QUALITY | V_STATUS +| S_TYPE | V_TYPE | +| --------------- | -------- | +| S_WATER_QUALITY | V_STATUS | All V_TYPES for each S_TYPE above are required to activate the actuator for the platform. Use either V_LIGHT or V_STATUS depending on library version for cases where that V_TYPE is required. -For more information, visit the [serial api] of MySensors. +For more information, visit the [serial API](https://www.mysensors.org/download) of MySensors. ## Services The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if `optimistic` is set to `true` in the [config](/integrations/mysensors/#configuration) for the MySensors component. This will simulate a push button on a remote. If `optimistic` is `false`, the MySensors device will have to report its updated state to reset the switch. See the [example sketch](#ir-switch-sketch) for the IR switch below. -| Service | Description | -| ------- | ----------- | -| mysensors.send_ir_code | Set an IR code as a state attribute for a MySensors IR device switch and turn the switch on.| +| Service | Description | +| ---------------------- | -------------------------------------------------------------------------------------------- | +| mysensors.send_ir_code | Set an IR code as a state attribute for a MySensors IR device switch and turn the switch on. | The service can be used as part of an automation script. For example: @@ -201,6 +201,3 @@ void incomingMessage(const MyMessage &message) { } } ``` - -[main component]: /integrations/mysensors/ -[serial api]: https://www.mysensors.org/download diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index f2cc5b0f0a49..a9d9a7812fcc 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -141,9 +141,9 @@ data_template: The integration has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. -## REST Api +## REST API -### POST /api/tts_get_url +### POST `/api/tts_get_url` Returns an URL to the generated TTS file. Platform and message are required. diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 674f937c0cde..c695bf0393fd 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -40,7 +40,7 @@ watson_url: description: "The endpoint to which the service will connect." required: false type: string - default: https://stream.watsonplatform.net/text-to-speech/api + default: `https://stream.watsonplatform.net/text-to-speech/api` watson_apikey: description: "Your secret apikey generated on the IBM Cloud admin console." required: true diff --git a/source/_integrations/wunderlist.markdown b/source/_integrations/wunderlist.markdown index 64fe62efa6fd..6c05f4db4031 100644 --- a/source/_integrations/wunderlist.markdown +++ b/source/_integrations/wunderlist.markdown @@ -14,7 +14,7 @@ The `wunderlist` integration allows you to create tasks in [Wunderlist](https:// Wunderlist API uses OAuth2, so you need to obtain a `client_id` and an `access_token`. There are two ways: -1. Go to the [Wunderlist IOT app page](https://wunderlist-iot.herokuapp.com), log in with your Wunderlist account and accept the application permissions. +1. Go to the [Wunderlist IoT app page](https://wunderlist-iot.herokuapp.com), log in with your Wunderlist account and accept the application permissions. It will print for you the `client_id` and the `access_token`. 2. Or you can create your own application and `access_token` following the instructions at the [Wunderlist developer page](https://developer.wunderlist.com/). @@ -43,11 +43,11 @@ access_token: This integration offers a new service domain `wunderlist` with the service `create_task`. You can call this service with the argument `list_name` the argument `name` and the optional parameter `starred` to create a new task. -| Service data attribute | Optional | Description | Example | -|------------------------|----------|-------------|---------| -| list_name | no | Name of the list | "Shopping list" -| name | no | Name of the new task | "Spanish Jam" | -| starred | yes | Create the task starred or not | false | +| Service data attribute | Optional | Description | Example | +| ---------------------- | -------- | ------------------------------ | --------------- | +| list_name | no | Name of the list | "Shopping list" | +| name | no | Name of the new task | "Spanish Jam" | +| starred | yes | Create the task starred or not | false | ## Disclaimer diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 0c3a97a4e761..82c30b65fa78 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -18,7 +18,8 @@ There is currently support for the following device types within Home Assistant: - **Light** - The yeelight platform for supporting lights. - **Sensor** - The yeelight platform for supporting sensors. Currently only nightlight mode sensor, for ceiling lights. -### Example configuration (Automatic) +## Example configuration (Automatic) + After the lights are connected to the WiFi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: ```yaml @@ -29,7 +30,7 @@ light.yeelight_color2_XXXXXXXXXXXX: friendly_name: Downstairs Toilet ``` -### Example configuration (Manual) +## Example configuration (Manual) To enable those lights, add the following lines to your `configuration.yaml` file: @@ -107,7 +108,8 @@ custom_effects: type: list {% endconfiguration %} -#### Music mode +### Music mode + Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the integration and it tries to keep the connection open, which may not be wanted in all use-cases. **Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant. Bulbs in music mode may also not react to commands from Home Assistant the first time if the connection is dropped. If you experience this issue, turn the light off and back on again in the frontend and everything will return to normal.** @@ -149,7 +151,7 @@ This integration is tested to work with the following models. If you have a diff | `ceiling4` | YLXD02YL | Yeelight Ceiling Light (Jiaoyue 650) | | `mono` | YLTD03YL | Yeelight Serene Eye-Friendly Desk Lamp | -## Platform Services +## Services ### Service `yeelight.set_mode` @@ -203,7 +205,7 @@ Changes the light to the specified color temperature. If the light is off, it wi ### Service `yeelight.set_color_flow_scene` -Starts a color flow. Difference between this and [yeelight.start_flow](#service-yeelightstart_flow), this service call uses different Yeelight api call. If the light was off, it will be turned on. There might be some firmware differences, in handling complex flows, etc. +Starts a color flow. Difference between this and [yeelight.start_flow](#service-yeelightstart_flow), this service call uses different Yeelight API call. If the light was off, it will be turned on. There might be some firmware differences, in handling complex flows, etc. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------------------------------------| @@ -261,13 +263,13 @@ This example shows how you can add your custom effects in your configuration. To Possible transitions are `RGBTransition`, `HSVTransition`, `TemperatureTransition`, `SleepTransition`. Where the array values are as per the following: - - RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%) - - HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%) - - TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%) - - SleepTransition: [duration] with duration being in integer for effect time in milliseconds (minimum 50) -More info about transitions and their expected parameters can be found in [python-yeelight documentation](https://yeelight.readthedocs.io/en/stable/flow.html). +- RGBTransition: [red, green, blue, duration, brightness] with red / green / blue being an integer between 0 and 255, duration being in milliseconds (minimum of 50) and final brightness to transition to 0-100 (%). +- HSVTransition: [hue, saturation, duration, brightness] with hue being an integer between 0 and 359, saturation 0 -100, duration in milliseconds (minimum 50) and final brightness 0-100 (%). +- TemperatureTransition: [temp, duration, brightness] with temp being the final color temperature between 1700 and 6500, duration in milliseconds (minimum 50) and final brightness to transition to 0-100 (%). +- SleepTransition: [duration] with duration being in integer for effect time in milliseconds (minimum 50). +More info about transitions and their expected parameters can be found in [python-yeelight documentation](https://yeelight.readthedocs.io/en/stable/flow.html). ```yaml yeelight: From efb7d46af296a739b157ca679b8df12203e5169c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 28 Jan 2020 21:46:30 +0100 Subject: [PATCH 12/18] Fix build --- source/_integrations/watson_tts.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index c695bf0393fd..d81d3dec2d52 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -40,7 +40,7 @@ watson_url: description: "The endpoint to which the service will connect." required: false type: string - default: `https://stream.watsonplatform.net/text-to-speech/api` + default: "`https://stream.watsonplatform.net/text-to-speech/api`" watson_apikey: description: "Your secret apikey generated on the IBM Cloud admin console." required: true From 25759149bf5e790be94d50609b9dfd80e4255efe Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 28 Jan 2020 22:46:20 +0100 Subject: [PATCH 13/18] Spelling and Markdown fixes: Part 2 (#11900) * Spelling and Markdown fixes: Part 2 * :pencil2: Fix table Co-authored-by: Klaas Schoute --- .../ecosystem/backup/backup_dropbox.markdown | 15 +- source/_docs/z-wave/devices.markdown | 6 +- source/_faq/missing-documentation.markdown | 3 +- source/_integrations/apcupsd.markdown | 6 +- source/_integrations/broadlink.markdown | 25 +- source/_integrations/limitlessled.markdown | 2 +- source/_integrations/mysensors.markdown | 8 +- source/_integrations/opencv.markdown | 2 +- source/_integrations/rpi_gpio.markdown | 8 +- source/_integrations/smartthings.markdown | 216 +++++++++--------- source/hassio/installation.markdown | 88 +++---- source/help/trivia.markdown | 34 +-- 12 files changed, 213 insertions(+), 200 deletions(-) diff --git a/source/_docs/ecosystem/backup/backup_dropbox.markdown b/source/_docs/ecosystem/backup/backup_dropbox.markdown index fba59d4de137..a16c58f6248a 100644 --- a/source/_docs/ecosystem/backup/backup_dropbox.markdown +++ b/source/_docs/ecosystem/backup/backup_dropbox.markdown @@ -4,9 +4,9 @@ description: "Instructions on how backup your Home Assistant configuration to Dr redirect_from: /cookbook/dropboxbackup/ --- -Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) is similar to [Github Backup](/docs/ecosystem/backup/backup_github/) +Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) is similar to [GitHub Backup](/docs/ecosystem/backup/backup_github/) -### Requirements +## Requirements You need two parts in order to get it working correctly. @@ -25,6 +25,7 @@ In the Python script you can specify which files and directories should be exclu chmod +x dropbox_uploader.sh ./dropbox_uploader.sh ``` + Follow the instructions you see on your screen. ### Step 2: Running the Dropbox uploader @@ -35,18 +36,20 @@ Go to the folder you have placed `dropbox.py`. Copy file `dropbox_uploader.sh` to : `.homeassistant/extraconfig/shell_code/` (so the full path would be similar to: `/home/homeassistant/.homeassistant/extraconfig/shell_code/dropbox_uploader.sh`) - **Option B:** Edit `dropbox.py`: - Change the following line: + Change the following line: + ```txt uploader = "/home/homeassistant/.homeassistant/extraconfig/shell_code/dropbox_uploader.sh" ``` + to where you placed your file: (for example): + ```txt uploader = "/home/homeassistant/MyFolder/dropbox_uploader.sh" ``` - ```bash -$ python dropbox.py +python dropbox.py ``` The first time can take a lot of time since it will upload all your files! @@ -58,5 +61,5 @@ So you just made a full backup, next time you want it to be done automatically. Add it to your crontab, edit the **path/to** part. ```bash -$ (crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab - +(crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab - ``` diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown index 534ccb70fd26..0aa392486aa5 100644 --- a/source/_docs/z-wave/devices.markdown +++ b/source/_docs/z-wave/devices.markdown @@ -4,7 +4,7 @@ description: "What you need to know about Z-Wave devices." redirect_from: /getting-started/z-wave-devices/ --- -## Devices, Nodes, Entities, what? +## Devices, Nodes, Entities The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices: @@ -65,8 +65,8 @@ Polling needs to be enabled per device, you can control this through the *pollin The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches). -## Is my device supported? +## Supported Devices -You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave 1.4 github](https://github.com/OpenZWave/open-zwave/tree/1.4/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months. +You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave 1.4 GitHub](https://github.com/OpenZWave/open-zwave/tree/1.4/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the GitHub by a few months. Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed. diff --git a/source/_faq/missing-documentation.markdown b/source/_faq/missing-documentation.markdown index b952e61823b7..cceaf744134a 100644 --- a/source/_faq/missing-documentation.markdown +++ b/source/_faq/missing-documentation.markdown @@ -4,7 +4,6 @@ description: "The docs are missing or outdated" ha_category: Documentation --- - Home Assistant is a FAST moving open source project. This means occasionally the official documentation will not be 100% current or complete. Since this is an open source volunteer project, we would encourage anyone who finds gaps in the documentation to click the `edit this page on Github` link in the top right and submit any corrections/enhancements they may find useful. -In the absence of information, many users find it beneficial to look at other people's configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this [Github search](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories). +In the absence of information, many users find it beneficial to look at other people's configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this [GitHub search](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories). diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index b7572a5ec519..27052df885a1 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -19,9 +19,9 @@ There is currently support for the following device types within Home Assistant: ## Hass.io Installation -Install this [unofficial add-on](https://github.com/korylprince/hassio-apcupsd/) to use this integration with Hass.io. Keep in mind that we can't give you support for this add-on. +Install this [unofficial add-on](https://github.com/korylprince/hassio-apcupsd/) to use this integration with Hass.io. Keep in mind that we can't give you support for this add-on. -After installation, follow the instructions on the Github page to configure the plugin. Then continue to follow the integration configurations below. +After installation, follow the instructions on the GitHub page to configure the plugin. Then continue to follow the integration configurations below. ## Configuration @@ -97,7 +97,7 @@ resources: type: list {% endconfiguration %} -### Example +### Example Given the following output from `apcaccess`: diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 359d32d0c686..541dcf935950 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -362,7 +362,7 @@ slots: Information about how to install on Windows can be found [here](/integrations/broadlink#sensor#microsoft-windows-installation). -### How to obtain IR/RF packets? +### How to obtain IR/RF packets Choose Call Service from the Developer Tools. Choose the service `broadlink.learn` from the list of **Available services:**, write in "Service Data" JSON with 1 field "host":"your_broadlink_IP" and hit **CALL SERVICE**. Press the button on your remote with in 20 seconds. The packet will be printed as a persistent notification in the States page of the web interface. @@ -524,7 +524,7 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro - Download and install Python 2.7 on your windows PC. - Run `pip install simplejson`. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". - Download and install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/). - - Download [these](https://github.com/NightRang3r/Broadlink-e-control-db-dump) github files. Make sure you place them in the \Python27 path in Windows. Be sure that the getBroadlinkSharedData.py from the download is in this directory. + - Download [these](https://github.com/NightRang3r/Broadlink-e-control-db-dump) GitHub files. Make sure you place them in the \Python27 path in Windows. Be sure that the getBroadlinkSharedData.py from the download is in this directory. 3. Plug your iphone into your windows PC, open iTunes and create a non-encrypted backup of your device. @@ -570,12 +570,12 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro 3. Hit "Learn New Command" and follow instructions on screen. 4. The "OnRawData Base64" is the value to be used with Home Assistant. - ### Using Node-RED to obtain codes 1. Install the Broadlink Control palette in Node-RED (click the Hamburger menu at top right corner> Settings> Palette> Install and type Broadlink. Click install on the node-red-contrib-broadlink-control. 2. Once installed, verify that the new palette titled broadlink is available in the nodes menu. 3. Drag the RM node to an empty flow and double click to configure the node. + ```bash a. give your RM device a name for easy identification b. click on the pencil to edit the device information @@ -583,29 +583,36 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro d. enter the IP address of the Broadlink RM PRO or RM mini e. leave the Catalog field empty. ``` + 4. Click Update, and the device field should show the MAC address of the newly added device. If not, just select it. 5. In the Action field, select Learn, then click Done. 6. Drag an Inject node to the left of the RM node and link them. The type of inject doesn't matter. Leave it to the defaults. 7. Drag a Template node on the Flow to the right of the RM node and link it to the RM node. 8. Double click the Template node to edit it, select: + ```bash Property: msg.payload Format: Mustache template Template field: enter '{% raw %}{{payload.data}}{% endraw %}'. Output as: Plain text ``` + 9. Drag a Debug node to the right of the Template node and link them. 10. Show the debug messages, deploy the flow and click on the inject button. 11. A message will show in the debug window: + ```bash 3/23/2019, 9:56:53 AMnode: RM_Mini1 msg : string[47] "Please tap the remote button within 30 seconds." ``` + 12. Point the IR remote control at the RM device and click the desired button for about 2 seconds. An array of numbers will show in the debug window. For example: + ```bash '38,0,132,3,19,18,19,18,19,18,19,17,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,20,17,19,18,19,18,19,18,19,17,20,17,20,54,20,17,20,54,19,55,19,54,20,54,20,54,19,55,19,0,6,6,150,146,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,17,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,19,18,19,55,19,54,20,54,20,54,20,54,19,55,19,0,6,6,150,146,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,54,19,55,19,54,20,17,20,17,20,17,20,17,20,17,19,18,19,55,19,17,20,17,20,17,20,17,20,17,19,18,19,55,19,18,19,54,20,54,20,54,19,55,19,54,20,54,20,0,6,5,150,146,20,54,20,54,20,54,19,18,19,18,19,18,19,17,20,17,20,54,20,54,19,55,19,18,19,17,20,17,20,17,20,17,20,17,20,54,19,18,19,18,19,18,19,17,20,17,20,17,20,54,19,18,19,55,19,54,20,54,20,54,19,55,19,54,20,0,6,6,149,147,20,54,19,55,19,54,20,17,20,17,20,17,20,17,20,17,19,55,19,54,20,54,20,17,20,17,20,17,19,18,19,18,19,18,19,54,20,17,20,17,20,17,20,17,19,18,19,18,19,54,20,17,20,54,20,54,20,54,19,...' ``` + This is the code we need to transmit again to replicate the same remote function. ### Using Node red to Transmit Codes @@ -614,6 +621,7 @@ This is the code we need to transmit again to replicate the same remote function 2. In the Action field, select - Set from msg.payload -. 3. Drag an Inject node and give it a meaningful name relevant to the remote control button function, like "TV On" or "TV Source". 4. Drag a template node and double click it to configure: + ```bash Property: msg.payload Format: Mustache template @@ -624,13 +632,16 @@ This is the code we need to transmit again to replicate the same remote function }' In the Output as field, "select Parsed JSON". ``` + 5. Click Done. 6. Drag a debug node and connect it to the output of the RM node. 7. Connect the Inject node to the Template node, and the template node to the RM node. 8. Click Deploy to activate the flow, and then click the inject button. The debug window should show a debug message. For example: + ```bash {"action":"send","data": [38,0,152,0,0,1,39,148,19,18,18,19,18,55,19,18,18,19,18,19,18,19,18,55,18,56,18,19,18,55,18,19,18,56,18,18,19,55,18,19,18,19,18,18,18,56,18,19,18,18,19,55,18,56,18,18,19,18,18,19,18,19,18,55,19,18,18,19,18,19,18,19,18,18,18,19,18,19,18,55,19,55,18,19,18,19,18,18,19,18,18,56,18,19,18,18,19,55,18,56,18,18,19,18,18,19,18,19,18,19,18,18,19,18,18,56,18,55,18,19,18,19,18,19,18,18,19,55,18,19,18,55,19,18,18,56,18,19,18,18,19,18,18,19,18,19,18,19,18,18,18,56,18,0,13,5],"status":"OK"} ``` + The "status" : "OK" at the end is a feedback that the Broadlink RM device is connected and has transmitted the payload. Now you can add as many template nodes, each having a specific code, and add any type of input nodes to activate the template and transmit the code. @@ -641,12 +652,12 @@ It is also possible to obtain codes using `broadlink_cli` from [python-broadlink First use discovery to find your Broadlink device: ```bash -./broadlink_discovery +$ ./broadlink_discovery Discovering... ########################################### RM2 # broadlink_cli --type 0x2737 --host 192.168.1.137 --mac 36668342f7c8 -Device file data (to be used with --device @filename in broadlink_cli) : +Device file data (to be used with --device @filename in broadlink_cli) : 0x2737 192.168.1.137 36668342nnnn temperature = 0.0 ``` @@ -671,7 +682,7 @@ For old/awkward devices another possibility is to try to get codes by using data Assuming that your (or similar) device is in one of these databases: -- https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/ -- https://github.com/probonopd/irdb/tree/master/ +- +- You can grab `irdb2broadlinkha.sh` from [irdb2broadlinkha](https://github.com/molexx/irdb2broadlinkha) project and try to convert codes to format suitable for Home Assistant. diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index 48292275fe46..f6b55f44a8dd 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -18,7 +18,7 @@ An archive of the extensive API can be found [here](https://github.com/Fantasmos ### Setup -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([Android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown index 8cc7bc5cbcf2..86849fcc0c7a 100644 --- a/source/_integrations/mysensors.markdown +++ b/source/_integrations/mysensors.markdown @@ -12,7 +12,7 @@ ha_codeowners: The [MySensors](https://www.mysensors.org) project combines devices like Arduino, ESP8266, Raspberry Pi, NRF24L01+ and RFM69 to build affordable sensor networks. This integration will automatically add all available devices to Home Assistant, after [presentation](#presentation) is done. That is, you do not need to add anything to your configuration for the devices for them to be added. Go to the **states** section of the developer tools to find the devices that have been identified. -### Configuration +## Configuration Integrate your Serial, Ethernet (LAN) or MQTT MySensors Gateway by adding the following to your `configuration.yaml` file: @@ -96,7 +96,7 @@ Not all features of MySensors 2.x are supported by Home Assistant yet. As more f If you are using an original Arduino as a serial gateway, the port will be named `ttyACM*`. The exact number can be determined with the command shown below. ```bash -$ ls /dev/ttyACM* +ls /dev/ttyACM* ``` If you are using the MQTT gateway, you also need to have the [MQTT component](/integrations/mqtt/) configured in Home Assistant. See below for a minimum MQTT configuration: @@ -249,7 +249,8 @@ Message validation was introduced in version 0.52 of Home Assistant. ### Debug logging -If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` integration and the `mysensors` package. This will help you see what is going on. Make sure you use these logging settings to collect a log sample if you report an issue about the `mysensors` integration in our github issue tracker. +If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` integration and the `mysensors` package. This will help you see what is going on. Make sure you use these logging settings to collect a log sample if you report an issue about the `mysensors` integration in our GitHub issue tracker. + ```yaml logger: default: info @@ -258,7 +259,6 @@ logger: mysensors: debug ``` - Visit the [library API][MySensors library api] of MySensors for more information. [MySensors library API]: https://www.mysensors.org/download diff --git a/source/_integrations/opencv.markdown b/source/_integrations/opencv.markdown index b234fd2a2b10..97107e7eae6d 100644 --- a/source/_integrations/opencv.markdown +++ b/source/_integrations/opencv.markdown @@ -30,7 +30,7 @@ image_processing: - **source** array (*Required*): List of image sources. - **entity_id** (*Required*): A camera entity id to get picture from. - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. -- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's Github repo. +- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's GitHub repo. **classifier** may also be defined as a dictionary of names to classifier configurations: diff --git a/source/_integrations/rpi_gpio.markdown b/source/_integrations/rpi_gpio.markdown index 1c9b00e75261..b84ef02f1aa3 100644 --- a/source/_integrations/rpi_gpio.markdown +++ b/source/_integrations/rpi_gpio.markdown @@ -17,7 +17,7 @@ The `rpi_gpio` integration is the base for all related GPIO platforms in Home As The `rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). -## Configuration +### Configuration To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: @@ -72,7 +72,7 @@ It uses two pins on the Raspberry Pi. Although you do not need Andrews Hilliday's software controller when you run Home Assistant, he has written clear instructions on how to hook your garage door and sensors up to your Raspberry Pi, which can be found [here](https://github.com/andrewshilliday/garage-door-controller#hardware-setup). -## Configuration +### Configuration To enable Raspberry Pi Covers in your installation, add the following to your `configuration.yaml` file: @@ -145,13 +145,13 @@ cover: ## Remote Raspberry Pi Cover -If you don't have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called [GarageQTPi](https://github.com/Jerrkawz/GarageQTPi) that will work remotely with the [MQTT Cover Component](/integrations/cover.mqtt/). Follow the Github instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover. +If you don't have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called [GarageQTPi](https://github.com/Jerrkawz/GarageQTPi) that will work remotely with the [MQTT Cover Component](/integrations/cover.mqtt/). Follow the GitHub instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover. ## Switch The `rpi_gpio` switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). -## Configuration +### Configuration To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index e956be883511..49eb4c6b4579 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -108,13 +108,13 @@ The integration will trigger an event when a device with the [button](https://sm } ``` -| Attribute | Description -|---------------------------|------------------------------------------------------------------| -`component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. -`device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). -`location_id` | The unique id of the location the device is part of. This can be found in the config entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). -`value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). -`name` | The name given to the device in SmartThings. +| Attribute | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. | +| `device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `location_id` | The unique id of the location the device is part of. This can be found in the config entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). | +| `name` | The name given to the device in SmartThings. | Event data payloads are logged at the debug level, see [debugging](#debugging) for more information. @@ -138,16 +138,16 @@ Support for additional platforms will be added in the future. The SmartThings Binary Sensor platform lets you view devices that have binary sensor-related capabilities. A Binary Sensor entity will be created for each attribute (below) supported by the device. -| Capability |Attribute |On-Value -|-------------------|--------------|----------------| -| [`accelerationSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Acceleration-Sensor) | `acceleration` | `active` -| [`contactSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Contact-Sensor) | `contact` | `open` -| [`filterStatus`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Filter-Status) | `filterStatus` | `replace` -| [`motionSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Motion-Sensor) | `motion` | `active` -| [`presenceSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Presence-Sensor) | `presence` | `present` -| [`tamperAlert`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tamper-Alert) | `tamper` | `detected` -| [`valve`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Valve) | `valve` | `open` -| [`waterSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Water-Sensor) | `water` | `wet` +| Capability | Attribute | On-Value | +| ----------------------------------------------------------------------------------------------------------------------- | -------------- | ---------- | +| [`accelerationSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Acceleration-Sensor) | `acceleration` | `active` | +| [`contactSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Contact-Sensor) | `contact` | `open` | +| [`filterStatus`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Filter-Status) | `filterStatus` | `replace` | +| [`motionSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Motion-Sensor) | `motion` | `active` | +| [`presenceSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Presence-Sensor) | `presence` | `present` | +| [`tamperAlert`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tamper-Alert) | `tamper` | `detected` | +| [`valve`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Valve) | `valve` | `open` | +| [`waterSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Water-Sensor) | `water` | `wet` | ### Climate @@ -157,59 +157,59 @@ The SmartThings Climate platform lets you control devices that have air conditio For a SmartThings Air Conditioner to be represented by the climate platform, it must have all of the following required capabilities: -| Capability |Climate Features -|-------------------------------------|--------------------------------------------| -| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `hvac mode`, `hvac action` -| `airConditionerFanMode` (required) | `fan mode` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp` -| [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) -| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute) +| Capability | Climate Features | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `hvac mode`, `hvac action` | +| `airConditionerFanMode` (required) | `fan mode` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp` | +| [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) | +| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute) | #### Thermostats For a SmartThings thermostat to be represented by the climate platform, it must have all the capabilities from either "set a" _or_ "set b": -| Capability |Climate Features -|-------------------------------------|--------------------------------------------| -| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` -| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `hvac mode` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (seb b) | `target temp low` -| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) (set b) | `target temp high` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (set b) | -| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `hvac action` -| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode` -| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute) +| Capability | Climate Features | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| [`thermostat`](https://docs.smartthings.com/en/latest/capabilities-reference.html#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` | +| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) (set b) | `hvac mode` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (seb b) | `target temp low` | +| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) (set b) | `target temp high` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (set b) | +| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `hvac action` | +| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `fan mode` | +| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` (state attribute) | ### Cover The SmartThings Cover platform lets you control devices that have open/close related capabilities. For a device to be represented by the cover platform, it must have one of the capabilities from "set a" below. -| Capability |Cover Features -|-------------------------------------|--------------------------------------------| -| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) (set a) | `open` and `close` -| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) (seb a) | `open` and `close` -| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) (set a) | `open` and `close` -| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `position` -| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery_level` (state attribute) +| Capability | Cover Features | +| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- | +| [`doorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Door-Control) (set a) | `open` and `close` | +| [`garageDoorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Garage-Door-Control) (seb a) | `open` and `close` | +| [`windowShade`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Window-Shade) (set a) | `open` and `close` | +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `position` | +| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery_level` (state attribute) | ### Fan The SmartThings Fan platform lets you control devices that have fan-related capabilities. For a SmartThings device to be represented by the fan platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability |Fan Features -|-------------------|------------------------------------------------------------| -| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) | `speed` (`off`, `low`, `medium`, and `high`) +| Capability | Fan Features | +| --------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) | `speed` (`off`, `low`, `medium`, and `high`) | ### Light The SmartThings Light platform lets you control devices that have light-related capabilities. For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability |Light Features -|-------------------|------------------------------------------------------------| -| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` -| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` -| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` +| Capability | Light Features | +| ------------------------------------------------------------------------------------------------------------------- | ----------------------------- | +| [`switchLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch-Level) | `brightness` and `transition` | +| [`colorControl`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Control) | `color` | +| [`colorTemperature`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Color-Temperature) | `color_temp` | ### Lock @@ -219,60 +219,60 @@ The SmartThings Lock platform lets you control devices that have the [`lock`](ht The SmartThings Sensor platform lets your view devices that have sensor-related capabilities. A Sensor entity is created for each attribute (below) supported by the device. -| Capability |Attributes | -|-------------------|---------------| -| [`activityLightingMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Activity-Lighting-Mode) | `lightingMode` -| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) | `airConditionerMode` -| [`airQualitySensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Quality-Sensory) | `airQuality` -| [`alarm`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Alarm) | `alarm` -| [`audioVolume`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Audio-Volume) | `volume` -| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery` -| [`bodyMassIndexMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Mass-Index-Measurement) | `bmiMeasurement` -| [`bodyWeightMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Weight-Measurement) | `bodyWeightMeasurement` -| [`carbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Dioxide-Measurement) | `carbonDioxide` -| [`carbonMonoxideDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Detector) | `carbonMonoxide` -| [`carbonMonoxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Measurement) | `carbonMonoxideLevel` -| [`dishwasherOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dishwasher-Operating-State) | `machineState`, `dishwasherJobState` and `completionTime` -| [`dryerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Mode) | `dryerMode` -| [`dryerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Operating-State) | `machineState`, `dryerJobState` and `completionTime` -| [`dustSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dust-Sensor) | `fineDustLevel` and `dustLevel` -| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy` -| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement` -| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel` -| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance` -| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel` -| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock` -| [`mediaInputSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Input-Source) | `inputSource` -| [`mediaPlaybackRepeat`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Repeat) | `playbackRepeatMode` -| [`mediaPlaybackShuffle`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Shuffle) | `playbackShuffle` -| [`mediaPlayback`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback) | `playbackStatus` -| [`odorSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Odor-Sensor) | `odorLevel` -| [`ovenMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Mode) | `ovenMode` -| [`ovenOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Operating-State) | `machineState`, `ovenJobState` and `completionTime` -| [`ovenSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Setpoint) | `ovenSetpoint` -| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | `power` -| [`powerSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Source) | `powerSource` -| [`refrigerationSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Refrigeration-Setpoint) | `refrigerationSetpoint` -| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` -| [`robotCleanerCleaningMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-CleaningMode) | `robotCleanerCleaningMode` -| [`robotCleanerMovement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Movement) | `robotCleanerMovement` -| [`robotCleanerTurboMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Turbo-Mode) | `robotCleanerTurboMode` -| [`signalStrength`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Signal-Strength) | `lqi` and `rssi` -| [`smokeDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Smoke-Detector) | `smoke` -| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) | `temperature` -| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) | `coolingSetpoint` -| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `thermostatFanMode` -| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) | `heatingSetpoint` -| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) | `thermostatMode` -| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState` -| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint` -| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) -| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` -| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel` -| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex` -| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage` -| [`washerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Mode) | `washerMode` -| [`washerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Operating-State) | `machineState`, `washerJobState` and `completionTime` +| Capability | Attributes | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| [`activityLightingMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Activity-Lighting-Mode) | `lightingMode` | +| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) | `airConditionerMode` | +| [`airQualitySensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Quality-Sensory) | `airQuality` | +| [`alarm`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Alarm) | `alarm` | +| [`audioVolume`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Audio-Volume) | `volume` | +| [`battery`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Battery) | `battery` | +| [`bodyMassIndexMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Mass-Index-Measurement) | `bmiMeasurement` | +| [`bodyWeightMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Body-Weight-Measurement) | `bodyWeightMeasurement` | +| [`carbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Dioxide-Measurement) | `carbonDioxide` | +| [`carbonMonoxideDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Detector) | `carbonMonoxide` | +| [`carbonMonoxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Carbon-Monoxide-Measurement) | `carbonMonoxideLevel` | +| [`dishwasherOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dishwasher-Operating-State) | `machineState`, `dishwasherJobState` and `completionTime` | +| [`dryerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Mode) | `dryerMode` | +| [`dryerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dryer-Operating-State) | `machineState`, `dryerJobState` and `completionTime` | +| [`dustSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Dust-Sensor) | `fineDustLevel` and `dustLevel` | +| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy` | +| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement` | +| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel` | +| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance` | +| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel` | +| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock` | +| [`mediaInputSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Input-Source) | `inputSource` | +| [`mediaPlaybackRepeat`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Repeat) | `playbackRepeatMode` | +| [`mediaPlaybackShuffle`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback-Shuffle) | `playbackShuffle` | +| [`mediaPlayback`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Media-Playback) | `playbackStatus` | +| [`odorSensor`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Odor-Sensor) | `odorLevel` | +| [`ovenMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Mode) | `ovenMode` | +| [`ovenOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Operating-State) | `machineState`, `ovenJobState` and `completionTime` | +| [`ovenSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Oven-Setpoint) | `ovenSetpoint` | +| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | `power` | +| [`powerSource`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Source) | `powerSource` | +| [`refrigerationSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Refrigeration-Setpoint) | `refrigerationSetpoint` | +| [`relativeHumidityMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Relative-Humidity-Measurement) | `humidity` | +| [`robotCleanerCleaningMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-CleaningMode) | `robotCleanerCleaningMode` | +| [`robotCleanerMovement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Movement) | `robotCleanerMovement` | +| [`robotCleanerTurboMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Robot-Cleaner-Turbo-Mode) | `robotCleanerTurboMode` | +| [`signalStrength`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Signal-Strength) | `lqi` and `rssi` | +| [`smokeDetector`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Smoke-Detector) | `smoke` | +| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) | `temperature` | +| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) | `coolingSetpoint` | +| [`thermostatFanMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Fan-Mode) | `thermostatFanMode` | +| [`thermostatHeatingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Heating-Setpoint) | `heatingSetpoint` | +| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) | `thermostatMode` | +| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState` | +| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint` | +| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) | +| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` | +| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel` | +| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex` | +| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage` | +| [`washerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Mode) | `washerMode` | +| [`washerOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Washer-Operating-State) | `machineState`, `washerJobState` and `completionTime` | ### Scene @@ -282,10 +282,10 @@ The SmartThings Scene platform lets you activate scenes defined in SmartThings w The SmartThings Switch platform lets you control devices that have the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability that are not already represented by a more specific platform. The following optional capabilities will provide energy and power utilization information: -| Capability |Switch Features -|-------------------------------------|--------------------------------------------| -| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | energy consumption (`today_energy_kwh` state attribute) -| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | power consumption (`current_power_w` state attribute) +| Capability | Switch Features | +| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | energy consumption (`today_energy_kwh` state attribute) | +| [`powerMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Power-Meter) | power consumption (`current_power_w` state attribute) | ## Troubleshooting diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 019f7b7cac1c..239cd29788bc 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -8,7 +8,7 @@ The following will take you through the steps required to install Hass.io. 1. Download the appropriate install option: - As an image for your device: - + - [Raspberry Pi 3 Model B and B+ 32bit][pi3-32] (recommended) - [Raspberry Pi 3 Model B and B+ 64bit][pi3-64] - [Raspberry Pi 4 Model B 32bit][pi4-32] (recommended) @@ -18,16 +18,16 @@ The following will take you through the steps required to install Hass.io. - [Odroid-N2 (Beta)][odroid-n2] - [Odroid-XU4][odroid-xu4] - [Intel-Nuc][intel-nuc] - - - As a virtual appliance: + + - As a virtual appliance: - [VMDK][vmdk] (VMWare Workstation) - [VHDX][vhdx] - [VDI][vdi] - [OVA][Virtual Appliance] (not available at this time!) - + - Not recommended Hardware: - + - [Raspberry Pi][pi1] - [Raspberry Pi Zero-W][pi0-w] - [Raspberry Pi 2][pi2] @@ -37,7 +37,7 @@ The following will take you through the steps required to install Hass.io. - Flash the downloaded image to an SD card using [balenaEtcher][balenaEtcher]. If using a Pi we recommend at least a 32 GB SD card to avoid running out of space. On Virtual machine platforms, provide at least 32 GB of disk space for the VM. - Load the appliance image into your virtual machine software. Choose 64-bit Linux and UEFI boot. -3. Optional - set up the WiFi or static IP. There are two possible places for that: +3. Optional - set up the WiFi or static IP. There are two possible places for that: - on a blank USB stick with a FAT32 partition having partition label `CONFIG`, while in its root directory, create the `network/my-network` file, or - on the Hass.io SD card's first, bootable partition (labeled `hassio-boot`, might not be auto mounted in Linux) create the `CONFIG/network/my-network` file. @@ -73,7 +73,7 @@ Best practice for updating a Hass.io installation: 1. Backup your installation, using the snapshot functionality Hass.io offers. 2. Check the release notes for breaking changes on [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**. -3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on. +3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on. 4. If the check passes, you can safely update. If not, update your configuration accordingly. 5. Select _Dashboard_ from the _Hass.io_ menu, and then select _Update_. @@ -103,19 +103,19 @@ The packages you need to have available on your system that will run Hass.io may ### Debian/Ubuntu - - `apparmor-utils` - - `apt-transport-https` - - `avahi-daemon` - - `ca-certificates` - - `curl` - - `dbus` - - `jq` - - `socat` - - `software-properties-common` +- `apparmor-utils` +- `apt-transport-https` +- `avahi-daemon` +- `ca-certificates` +- `curl` +- `dbus` +- `jq` +- `socat` +- `software-properties-common` Optional: - - `network-manager` +- `network-manager`
@@ -125,14 +125,14 @@ Optional: ### Arch Linux - - `apparmor` - - `avahi` - - `ca-certificates` - - `curl` - - `dbus` - - `docker` - - `jq` - - `socat` +- `apparmor` +- `avahi` +- `ca-certificates` +- `curl` +- `dbus` +- `docker` +- `jq` +- `socat` You also need to have Docker-CE installed. There are well-documented procedures for installing Docker on Ubuntu at [Docker.com](https://docs.docker.com/install/linux/docker-ce/ubuntu/), you can find installation steps for your Linux distribution in the menu on the left. @@ -179,25 +179,25 @@ curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/mast ``` #### Other machine types - - - `intel-nuc` - - `raspberrypi` - - `raspberrypi2` - - `raspberrypi3` - - `raspberrypi3-64` - - `raspberrypi4` - - `raspberrypi4-64` - - `odroid-c2` - - `odroid-cu2` - - `odroid-xu` - - `orangepi-prime` - - `tinker` - - `qemuarm` - - `qemuarm-64` - - `qemux86` - - `qemux86-64` - -See the [hassio-installer](https://github.com/home-assistant/hassio-installer) Github page for an up-to-date listing of supported machine types. + +- `intel-nuc` +- `raspberrypi` +- `raspberrypi2` +- `raspberrypi3` +- `raspberrypi3-64` +- `raspberrypi4` +- `raspberrypi4-64` +- `odroid-c2` +- `odroid-cu2` +- `odroid-xu` +- `orangepi-prime` +- `tinker` +- `qemuarm` +- `qemuarm-64` +- `qemux86` +- `qemux86-64` + +See the [hassio-installer](https://github.com/home-assistant/hassio-installer) GitHub page for an up-to-date listing of supported machine types.
When you use this installation method, the core SSH add-on may not function correctly. If that happens, use the community SSH add-on. Some of the documentation might not work for your installation either. diff --git a/source/help/trivia.markdown b/source/help/trivia.markdown index bd67e3b2bc1e..094b1e4762a5 100644 --- a/source/help/trivia.markdown +++ b/source/help/trivia.markdown @@ -6,36 +6,36 @@ sidebar: false This page contains only irrelevant and unhelpful information about Home Assistant. If you are going to prepare a talk about Home Assistant, perhaps some information mentioned here can be used for the intro. -### Name +## Name Isn't it obvious? Home Assistant is the good soul that is assisting you in your home. It's common to refer to Home Assistant simply as HA or `hass` (not to be confused with the German word "Hass", it's more like the abbreviation of **H**ome **A**ssistant **S**erver **S**ervice). [`hass`](/docs/tools/hass/) is also the name of the command-line part. -### Website +## Website The website [https://www.home-assistant.io](/) was launched on December 18, 2014 and contains documentation about the setup process, the platforms and integrations, and for the developers. -### Logo +## Logo The current logo was created by [Jeremy Geltman](http://jeremygeltman.com/). Further details can be found in the [announcement](/blog/2015/03/08/new-logo/). -### License +## License Home Assistant is open source software and available under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license. -### Numbers +## Numbers This sections just contains some random numbers of the Home Assistant eco-system. Sorry, only the main repository counts. -| Description | 2015 | 2016 | 2017 | -|---|---| -| [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | 171981 | -| [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | 21512 | -| [Forum members](https://community.home-assistant.io/) | 92 | 3931 | 16663 | -| [Github stars](https://github.com/home-assistant/home-assistant/stargazers) | 2519 | 5239 | 12074 | -| [Github forks](https://github.com/home-assistant/home-assistant/network) | 374 | 1424 | 3474 | -| Page views [ha.io](/) | 600,372 | 6,614,343 | 23,727,481 | +| Description | 2015 | 2016 | 2017 | +| --------------------------------------------------------------------------- | ------- | --------- | ---------- | +| [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | 171981 | +| [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | 21512 | +| [Forum members](https://community.home-assistant.io/) | 92 | 3931 | 16663 | +| [GitHub stars](https://github.com/home-assistant/home-assistant/stargazers) | 2519 | 5239 | 12074 | +| [GitHub forks](https://github.com/home-assistant/home-assistant/network) | 374 | 1424 | 3474 | +| Page views [ha.io](/) | 600,372 | 6,614,343 | 23,727,481 | -### Commit per year +## Commit per year The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), etc.) into account. @@ -47,13 +47,13 @@ The numbers below only covers the [main git repository](https://github.com/home- 2017: 3917 ``` -More details and statistics can be found on [Github](https://github.com/home-assistant/home-assistant/graphs/contributors). +More details and statistics can be found on [GitHub](https://github.com/home-assistant/home-assistant/graphs/contributors). -### First commit +## First commit The first commit in `git` was made on Sep 17, 2013 by [Paulus Schoutsen](https://github.com/balloob). -```bash +```txt commit d55e4d53cccc9123d03f45c53441e7cbfc58e515 Author: Paulus Schoutsen From 4af1470682ccf3b7b7f4804aa447478d075ad12f Mon Sep 17 00:00:00 2001 From: Aalian Khan <39784853+AalianKhan@users.noreply.github.com> Date: Tue, 28 Jan 2020 17:00:38 -0500 Subject: [PATCH 14/18] Update samsungtv.markdown --- source/_integrations/samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 4e234c6226dd..bae855b88f85 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -133,6 +133,7 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am - MU6125 - Unable to see state and unable to control (Tested on UE58MU6125 on port 8001 and 8801) - MU6300 - Port set to 8001, turning on works, status not working reliably, turning off is not permanent (it comes back on) - MU6400 - Unable to see state and unable to control (using latest 1270 firmware. Had limited functionality on previous firmware) +- RU8000 - Turning on works, turning off does not work. State is correct but says on periodically but in reality is not. Nothing else works via port 8001. - Q60 – Turning on works, turning off does not work, State is always "off". - Q6F – Port set to 8001, turning on works, turning off does not work, status not working reliably. - Q7F - State is always "off" and unable to control via port 8001. From bbbf347d93e1a409ae4cdfed06a5d603f3d41c08 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Tue, 28 Jan 2020 17:03:00 -0500 Subject: [PATCH 15/18] Add code owners. Add utterance. Grammar fixes. --- source/_integrations/alexa.smart_home.markdown | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 199049aa6972..3e5b50cd9a68 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -5,6 +5,9 @@ logo: amazon-alexa.png ha_category: - Voice ha_release: "0.54" +ha_codeowners: + - '@home-assistant/cloud' + - '@ochlocracy' --- Amazon Alexa provides a Smart Home API for richer home automation control without requiring the the user to say the skill name, such as: @@ -388,7 +391,7 @@ light.kitchen_light: ```
-Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the display category provided by Home Assistant will limit features provided by Amazon Alexa. +Devices such as cameras, doorbells, garage doors, and alarm control panels require specific display categories to provide all available features from Amazon Alexa. Overriding the default display category will limit features provided by Amazon Alexa.
See [Alexa Display Categories][alexa-display-categories] for a complete list @@ -448,7 +451,6 @@ The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and
Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true` the entity will not be exposed during discovery. -
The Alarm Control Panel may default the `code_arm_required` attribute to `true` even if the platform does not support or require it. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override `code_arm_required` to `false` and expose the Alarm Control Panel during discovery.
@@ -593,7 +595,7 @@ Alexa supports the following utterances value for climate thermostat mode: |`COOL` | _"cool"_, _"cooling"_| |`HEAT` | _"heat"_, _"heating"_| |`ECO` | _"eco"_, _"economical"_| -|`DRY` | _"dehumidify"_| +|`DRY` | _"dry"_, _"dehumidify"_| |`OFF` | _"off"_| ### Cover @@ -677,8 +679,8 @@ The following table lists the possible friendly name synonyms available for a fa |Fan Range|Friendly Name Synonyms| |---|---| |0|_"zero"_, _"off"_| -|1|_"one"_, _"thirty three percent"_, _"low"_, _"minimum"_, _"min"_| -|2|_"two"_, _"sixty six percent"_, _"medium"_| +|1|_"one"_, _"thirty-three percent"_, _"low"_, _"minimum"_, _"min"_| +|2|_"two"_, _"sixty-six percent"_, _"medium"_| |3|_"three"_, _"one hundred percent"_, _"high"_, _"maximum"_, _"max"_| The following synonyms can be used for _"fan speed"_ @@ -890,7 +892,7 @@ Disable and re-enable the skill using the Alexa App; then restart Home Assistant The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the the relevant line below to the `configuration.yaml`: -If using an Alexa with a Alexa Smart Home Skill and Lambda function such as haaska: +If using Alexa with a Alexa Smart Home Skill and Lambda function such as haaska: ```yaml logger: From ef693c38aab7782104b45d4309ce9dbd3dc55c84 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 28 Jan 2020 15:24:33 -0800 Subject: [PATCH 16/18] Add android release blog post --- .../2020-01-28-android-150-release.markdown | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 source/_posts/2020-01-28-android-150-release.markdown diff --git a/source/_posts/2020-01-28-android-150-release.markdown b/source/_posts/2020-01-28-android-150-release.markdown new file mode 100644 index 000000000000..fb0e562c7594 --- /dev/null +++ b/source/_posts/2020-01-28-android-150-release.markdown @@ -0,0 +1,29 @@ +--- +layout: post +title: "Home Assistant Companion for Android 1.5.0" +description: "Today we're releasing a big update for our Android companion app including widgets, fullscreen and Android TV support." +date: 2020-01-28 00:00:00 +date_formatted: "January 28, 2020" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +--- + +Today we're releasing Home Assistant Companion for Android 1.5.0. This is a great release with some cool new features and new collaborators joining in on the fun! + +Big thanks in this release goes to our Android lead [@JBassett] who has been squashing a ton of bugs, added support for the status bar to adopt the application theme and fixed finding existing Home Assistant instances on the network. + +A cool new feature that has been added is a new home screen widget. Use it to quickly trigger your favorite scripts, scenes or any other service in Home Assistant. Thanks to [@KBerstene] for the initial implementation and [@JBassett] for polishing the configuration screen. + +For all you people that want to run the Home Assistant app on a tablet on the wall, good news! Thanks to [@neopilou] there is now a new option to make the app full screen. + +To get the most out of our apps for Android and iOS, check the [Home Assistant Companion website](https://companion.home-assistant.io/). + +Enjoy the new release! Don't forget to leave a rating if you like the app, it will help other users find the app. + +Get it on Google Play + +[@KBerstene]: https://github.com/KBerstene +[@JBassett]: https://github.com/JBassett +[@neopilou]: https://github.com/neopilou From 5dd04497d9642f3cc19b551f7d8eb4990ced42cf Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Tue, 28 Jan 2020 19:02:54 -0500 Subject: [PATCH 17/18] Apply suggestions from code review Co-Authored-By: Franck Nijhof --- .../_integrations/alexa.smart_home.markdown | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 3e5b50cd9a68..7719c5a415e9 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@ochlocracy' --- -Amazon Alexa provides a Smart Home API for richer home automation control without requiring the the user to say the skill name, such as: +Amazon Alexa provides a Smart Home API for richer home automation control without requiring the user to say the skill name, such as: * _"Alexa, turn off the light."_ * _"Alexa, set the thermostat to cool."_ @@ -346,7 +346,7 @@ The `endpoint`, `client_id` and `client_secret` are optional, and are only requi ### Configure Filter -By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind only [supported components](#supported-integrations) can be added. +By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind that only [supported components](#supported-integrations) can be added. {% raw %} ```yaml @@ -396,7 +396,7 @@ Devices such as cameras, doorbells, garage doors, and alarm control panels requi See [Alexa Display Categories][alexa-display-categories] for a complete list -## Supported Integrations +## Supported Platforms Home Assistant supports the following integrations through Alexa using a Smart Home Skill. For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). @@ -444,13 +444,13 @@ Arm and disarm Alarm Control Panel entities. Ask Alexa for the state of the Alar #### Arming -The Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming. e.g. switching from `armed_home` to `armed_night`. +The Alarm Control Panel state must be in the `disarmed` state before arming. Alexa does not support switching from an armed state without first disarming, e.g., switching from `armed_home` to `armed_night`. The Alarm Control Panel state `armed_custom_bypass` isn't supported by Alexa and is treated as `armed_home`.
-Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true` the entity will not be exposed during discovery. +Alexa does not support arming with voice PIN at this time. Therefore if the Alarm Control Panel requires a `code` for arming or the `code_arm_required` attribute is `true`, the entity will not be exposed during discovery. The Alarm Control Panel may default the `code_arm_required` attribute to `true` even if the platform does not support or require it. Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override `code_arm_required` to `false` and expose the Alarm Control Panel during discovery.
@@ -578,7 +578,7 @@ Single, double, and triple set-point thermostats are supported. The temperature - `ECO` is handled as a `preset` in Home Assistant, and will not display in the Alexa app. - `FAN_ONLY` is not supported by the Alexa voice model and is shown as `OFF` in the Alexa App. -To change the thermostat mode the exact utterance must be used: +To change the thermostat mode, the exact utterance must be used: * _"Alexa, set [entity name] to [mode utterance]."_ @@ -633,7 +633,7 @@ Covers that support a set position can be controlled using percentages. |---|---| |`en-US`|_"position"_, _"opening"_| -Currently Alexa only supports friendly name synonyms for the `en-US` locale. +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. #### Set Cover Tilt @@ -647,7 +647,7 @@ Covers that support tilt position can be controlled using percentages. |---|---| |`en-US`|_"tilt"_, _"angle"_, _"direction"_| -Currently Alexa only supports friendly name synonyms for the `en-US` locale. +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. #### Garage Doors @@ -689,7 +689,7 @@ The following synonyms can be used for _"fan speed"_ |---|---| |`en-US`|_"fan speed"_, _"airflow speed"_, _"wind speed"_, _"air speed"_, _"air velocity"_, _"power level"_| -Currently Alexa only supports friendly name synonyms for the `en-US` locale. +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. #### Fan Direction @@ -710,7 +710,7 @@ The fan device must support the `oscillating` attribute. |---|---| |`en-US`|_"oscillate"_, _"swivel"_, _"oscillation"_, _"spin"_, _"back and forth"_| -Currently Alexa only supports friendly name synonyms for the `en-US` locale. +Currently, Alexa only supports friendly name synonyms for the `en-US` locale. ### Image Processing @@ -890,7 +890,7 @@ Disable and re-enable the skill using the Alexa App; then restart Home Assistant ## Debugging -The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the the relevant line below to the `configuration.yaml`: +The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the relevant line below to the `configuration.yaml`: If using Alexa with a Alexa Smart Home Skill and Lambda function such as haaska: From dff09c5c873912a156ba34fcc4b1fa033b82e18c Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Tue, 28 Jan 2020 19:09:27 -0500 Subject: [PATCH 18/18] Grammar change. --- source/_integrations/alexa.smart_home.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 7719c5a415e9..5b079708272f 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -892,7 +892,7 @@ Disable and re-enable the skill using the Alexa App; then restart Home Assistant The Alexa integration will log additional information about state updates and other messages when the log level is set to `debug`. Add the relevant line below to the `configuration.yaml`: -If using Alexa with a Alexa Smart Home Skill and Lambda function such as haaska: +If using Alexa with an Alexa Smart Home Skill and Lambda function such as haaska: ```yaml logger: