From 63bf797a50234375e4b2085bd01ce8800c4ab625 Mon Sep 17 00:00:00 2001 From: Stevie Robinson Date: Tue, 28 Jun 2022 21:10:11 +0200 Subject: [PATCH 01/12] Restructure Discord.markdown to clarify process (#22410) Co-authored-by: Franck Nijhof --- source/_integrations/discord.markdown | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index 5ccead44b71..adafc87b200 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -16,31 +16,34 @@ ha_integration_type: integration The [Discord service](https://discordapp.com/) is a platform for the notify component. This allows integrations to send messages to the user using Discord. -In order to get a token you need to go to the [Discord My Apps page](https://discordapp.com/developers/applications/me) and create a new application. Once the application is ready, create a [bot](https://discordapp.com/developers/docs/topics/oauth2#bots) user (**Create a Bot User**). +## Prerequisites -Retrieve the **Client ID** from the information section and the (hidden) **Token** of your bot for later. +### Creating a Discord Application + +In order to create a bot user a Discord Application is required. Go to the [Discord My Apps page](https://discordapp.com/developers/applications/me) and create a new application. When setting up the application you can use this [icon](/images/favicon-192x192-full.png). -{% include integrations/config_flow.md %} +Once the application is ready, create a [bot](https://discordapp.com/developers/docs/topics/oauth2#bots) user (**Create a Bot User**). + +Retrieve the **Application ID** from the 'General Information' section and the (hidden) **Token** of your bot for later.
- + The name you give your application on the [Discord My Apps page](https://discordapp.com/developers/applications/me) will determine the name of the notify service. For example: if you enter "Discord Chat", the service will be named `notify.discord_chat`. -
-## Setting up the bot +### Setting up the bot -Bots can send messages to servers and users or attach local available images. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me). +Bots can send messages to servers and users or attach locally available images. To add the bot to a server you are an admin on use the **Application ID** you noted above, found on the [Discord My Apps page](https://discordapp.com/developers/applications/me).

-Now use the Discord Authorization page with the **Client ID** of your [bot](https://discordapp.com/developers/docs/topics/oauth2#bots). +Now use the Discord Authorization page with the **Application ID** of your [application](https://discordapp.com/developers/docs/topics/oauth2#bots). -`https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&scope=bot&permissions=0` +`https://discordapp.com/api/oauth2/authorize?client_id=[APPLICATION_ID]&scope=bot&permissions=0`

@@ -56,7 +59,13 @@ Once the bot has been added to your server, get the channel ID of the channel yo Right click channel name and copy the channel ID (**Copy ID**). -This channel or user ID has to be used as the target when calling the notification service. Multiple channel or user IDs can be specified, across multiple servers or direct messages. +This channel or a user ID has to be used as the target when calling the notification service. Multiple channel or user IDs can be specified, across multiple servers or direct messages. + +## Add Discord integration to Home Assistant + +{% include integrations/config_flow.md %} + +When adding the Discord integration you will be asked for an API Key. Enter the hidden **Token** of your bot to link your Discord integration to the bot you created and allow Home Assistant to send messages as that bot. ## Discord Service Data From 48eb28fbbc1f9e86362de57c85455ff911942d2e Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Wed, 29 Jun 2022 06:11:20 -0500 Subject: [PATCH 02/12] Add Redirects for About Page (#23199) --- source/_redirects | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_redirects b/source/_redirects index 879036e3685..e166e77ada8 100644 --- a/source/_redirects +++ b/source/_redirects @@ -8,6 +8,11 @@ /suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform /get-blueprints https://community.home-assistant.io/c/blueprints-exchange/53 /latest-security-alert /blog/2021/01/23/security-disclosure2/ +/merch https://home-assistant-store.creator-spring.com +/feature-requests https://community.home-assistant.io/c/feature-requests +/issues https://github.com/home-assistant/core/issues +/community https://community.home-assistant.io/ + # Matter workshop June 2022 /skyconnect-interest https://docs.google.com/forms/d/e/1FAIpQLScEjHSBJszUZfgO3MIDO51IHr3Oeohcs8BLpRIjY1liJ58IpA/viewform?usp=sf_link From 197dcf725f6ea39bb58f0305ca585e6cd67df025 Mon Sep 17 00:00:00 2001 From: Sam Jongenelen Date: Wed, 29 Jun 2022 13:12:10 +0200 Subject: [PATCH 03/12] Added tip that RouterOS uses ping (#22873) Co-authored-by: Franck Nijhof --- source/_integrations/mikrotik.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index b9c2999b1d5..995ca0771dd 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -25,6 +25,8 @@ There is currently support for the following device types within Home Assistant: You have to enable accessing the RouterOS API on your router to use this platform. +RouterOS uses a ping test to determine client presence, make sure you are not blocking this on the client (Windows firewall default behavior), as this will result in the provided `device_tracker` having the state `not_home`. + Terminal: ```bash @@ -38,6 +40,7 @@ Go to **IP** -> **Services** -> **API** and enable it. Make sure that port 8728 or the port you choose is accessible from your network. + {% include integrations/config_flow.md %} ## Use a certificate From e210d630870b5dee7bf507f1617bcba938d829fb Mon Sep 17 00:00:00 2001 From: Jayden Litolff <42988261+JayBigGuy10@users.noreply.github.com> Date: Wed, 29 Jun 2022 23:13:56 +1200 Subject: [PATCH 04/12] Update alexa.smart_home.markdown with up to date information (#23096) --- .../_integrations/alexa.smart_home.markdown | 95 +++++++++---------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 75d76ad3dfe..c5828a78fe5 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -47,45 +47,45 @@ Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant: ## 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 Home Assistant using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. -- Amazon Developer Account. Sign up [here](https://developer.amazon.com). +- 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 Home Assistant, using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- An 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 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. Note this *must* be created with the same Amazon account you use on your Alexa devices and app. -- Go to `Alexa Skills` page if you are not, click `Create Skill` button to start the process. -- Input `Skill name` as you like, select your skill's `Default language`. +- Sign into the [Alexa Developer Console][alexa-dev-console], you can create your free account on the sign-in page. Note this *must* be created with the same Amazon account you use on your Alexa devices and app. +- Go to `Alexa Skills` page if you are not, then click the `Create Skill` button to start the process. +- Input `Skill name` as you like, then 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 Alexa Developer Console opened, we need change the skill configuration later. +- In next screen, make sure *v3* is selected in `Payload version` and take note of your `Skill ID` +- Now, you have created a skeleton of Smart Home skill. In the next step we will do some "real" developer work. Keep Alexa Developer Console open, we will need to change the skill configuration later. ## 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 the Alexa integration in Home Assistant will process the request and send back the response. Your Lambda function will deliver the response back to Alexa. +We will write a small piece of code hosted as an AWS Lambda function that will redirect requests from the Alexa Smart Home skill to your Home Assistant instance, then the Alexa integration in Home Assistant will process the request and send back the response. The Lambda function will then deliver the response back to the Alexa Smart Home skill.
-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 alternative tutorials and solutions to ours in our community to achieve the same goal of creating your Alexa Smart Home Skill and its connection to 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. - -Amazon also provided a [step-by-step guide](https://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html) to create a Smart Home Skill, however you have to adapt its sample code to match Home Assistant API. +Amazon also has provided a [step-by-step guide](https://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html) to create a Smart Home Skill, however you have to adapt its sample code to match the Home Assistant API. + +You can follow this document or others, but you cannot mix and match different solutions since they may have different designs.
-OK, let's go. You first need to sign in to 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 tier 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. +OK, let's go. You first need to sign in to 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 tier benefit. You don't need to worry about the cost if your account has already passed the first 12 months, as AWS provides up to 1 million Lambda requests, 1GB of outbound data and all inbound data for free, every month, for all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for more details. ### 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. +The first thing you need to do after signing into the [AWS console](https://console.aws.amazon.com/) is to create an IAM Role for Lambda execution. AWS has very strict access control, so you have to specifically define and assign the required permissions. -- Click `Services` in top navigation bar, expand the menu to display all AWS services, click `IAM` under `Security, Identity, & Compliance` section to navigate to IAM console. Or you may use this [link](https://console.aws.amazon.com/iam/home) +- Click `Services` in the top navigation bar, expand the menu to display all AWS services, then under the `Security, Identity, & Compliance` section click `IAM` to navigate to the IAM console. Or you may use this [link](https://console.aws.amazon.com/iam/home) - Click `Roles` in the left panel, then click `Create role`, select `AWS Service` -> `Lambda` in the first page of the wizard, then click `Next: Permissions` - Select `AWSLambdaBasicExecutionRole` policy, then click `Next: Tags`. (Tips: you can use the search box to filter the policy) @@ -93,30 +93,29 @@ First thing you need to do after sing in [AWS console](https://console.aws.amazo Screenshot: Attach permission policy to IAM role

-- 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. +- Give your new role a name, such as `AWSLambdaBasicExecutionRole-SmartHome`, then click the `Create role` button at the bottom of the pahe. You should be able to find your new role in the roles list now. ### Add Code to the Lambda Function Next you need create a Lambda function. -- Click `Services` in top navigation bar, expand the menu to display all AWS services, click `Lambda` under `Compute` section to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home) +- Click `Services` in top navigation bar, expand the menu to display all AWS services, then under `Compute` section click `Lambda` to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home) - **IMPORTANT - Alexa Skills are only supported in certain AWS regions** Your current server location will be displayed on the top right corner (for example, Ohio), make sure you select the server closest to your location / region based on your Amazon account's country, whilst also ensuring that it is within one of the supported regions for Alexa Skills otherwise this will not work! - **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. -- Click `Functions` in the left navigation bar, display list of your Lambda functions. +- Click `Functions` in the left navigation bar, to display the list of your Lambda functions. - Click `Create function`, select `Author from scratch`, then input a `Function name`. -- Select *Python 3.6*, *Python 3.7* or *Python 3.8* as `Runtime`. -- Make sure select *Use an existing role* as `Execution role`, then select the role you just created from `Existing role` list. -- Click `Create function`, then you can configuration detail of Lambda function. -- Under `Configuration` tab, expand `Designer` (if it isn't already expanded), then click `+ Add trigger` in the left part of the panel, then click `Alexa Smart Home` from the drop down list to add a Alexa Smart Home trigger to your Lambda function. -- You will then be prompted to 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`.) Then click `Add`. -- Click your Lambda function icon in the middle of the diagram (above Layers), 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) -- Click `Deploy` button to publish updated code. -- Scroll down a little bit, you will find `Environment variables`, you need add 1 environment variable and, if required, 3 optional variables. This is done by selecting `Manage environment variables` then adding the following: +- Select *Python 3.9*, *Python 3.8* or *Python 3.7* as `Runtime`. +- Expand the `Change default execution role` dropdown and make sure to select *Use an existing role* as `Execution role`, then select the role you just created from `Existing role` list. +- Click `Create function`, then you can configure the details of Lambda function. +- Expand the `Function overview` (if it isn't already expanded), then click `+ Add trigger` in the left part of the panel, then click `Alexa Smart Home` from the drop down list to add an Alexa Smart Home trigger to your Lambda function. +- You will then be prompted to input the `Skill ID` from the skill you created in previous step. (Tip: you may need switch back to Alexa Developer Console to copy the `Skill ID`.) Then click `Add`. +- Scroll down to `Code source`, then, if it isn't already open the `lambda_function.py`. +- Clear the example code, and 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) +- Click the `Deploy` button to publish updated code. +- Navigate to the `Configuration` tab, then select `Environment variables`. You need to add 1 environment variable and, if needed, 3 optional variables. This is done by selecting `Edit` then adding the following: - *(required)* Key = BASE_URL, Value = your Home Assistant instance's Internet accessible URL. *Do not include the trailing `/`*. - *(optional)* Key = NOT_VERIFY_SSL, Value = *True*. You can set this to *True* to ignore SSL issues, for example if you don't have a valid SSL certificate or you are using a self-signed certificate. - *(optional)* Key = DEBUG, Value = *True*. Set this variable to log the debug message and to allow the LONG_LIVED_ACCESS_TOKEN @@ -127,24 +126,22 @@ Next you need create a Lambda function.

- Now click the `Save` button in the bottom right hand corner. -- You will then be brought back to your function configuration. From here you need to select `Save` in the top right hand corner of the screen. -- You also need to copy the ARN displayed in the top of the page, which is the identity of this Lambda function. You will need this ARN to continue Alexa Smart Home skill configuration later. +- Next you need to copy the ARN displayed in the top of the page, which is the identity of this Lambda function. You will need this ARN to continue Alexa Smart Home skill configuration later. ### Test the Lambda Function -Now, you have created the Lambda function, before you can test it, you have to set up the necessary aspects of your Home Assistant configuration. Put the following minimal configuration into your `configuration.yaml` file. It will expose all of your supported devices and automations 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, but before you can test it, you have to set up the necessary aspects of your Home Assistant configuration. Put the following minimal configuration into your `configuration.yaml` file. It will expose all of your supported devices and automations to Alexa. It is strongly recommended to check the [configuration section](#alexa-smart-home-component-configuration) and setup control of which devices and entities are exposed. ```yaml alexa: smart_home: ``` -After your Home Assistant has restarted, go back to `AWS Lambda Console`, you are going to do some tests. +After your Home Assistant has restarted, go back to the `AWS Lambda Console`, you are going to do some tests. -- On the top of your Lambda function configuration page, there is a `Test` button, to the left of this button is a drop down button - click this and select `Configure test events` -- Select `Create new test event` +- Navigate to the `Test` tab, then select `Create new event` - Name your event, for example `Discovery` -- Enter the following data into the code box below `Event name`: +- Enter the following data into the code box named `Event JSON`: ```json { @@ -164,30 +161,30 @@ After your Home Assistant has restarted, go back to `AWS Lambda Console`, you ar } ``` -- Click `Create` in the bottom right hand corner. +- Click `Create` in the top right hand corner. -This test event is a `Discovery` directive, your Home Assistant instance will respond with a list of devices Alexa can interact with. This test data is lack of `token` in `payload.scope`, your Lambda function will read the `LONG_LIVED_ACCESS_TOKEN` from environment variable. +This test event is a `Discovery` directive, your Home Assistant instance will respond with a list of devices Alexa can interact with. Since this test data is lacking a `token` in `payload.scope`, and your Lambda function will read the `LONG_LIVED_ACCESS_TOKEN` from environment variable. -Click the `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, or you haven't enabled `DEBUG` you will get a `INVALID_AUTHORIZATION_CREDENTIAL` response as the execution result. +Click the `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN` set, or you haven't enabled `DEBUG` you will get a `INVALID_AUTHORIZATION_CREDENTIAL` response as the execution result. -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` and set the `DEBUG` environment variable to `True`, do not forget to click the `Save` button before you `Test` again. +You can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you have entered your long-lived access token into the environment variable `LONG_LIVED_ACCESS_TOKEN` and set the `DEBUG` environment variable to `True`, do not forget to click the `Save` button before you `Test` again. This time, you will get a list of your devices in the response. 🎉 ## Configure the Smart Home Service Endpoint -Now remove the long-lived access token (if you want), copy the ARN of your Lambda function, then navigate back to [Alexa Developer Console][alexa-dev-console]. You will finish the configuration of the Smart Home skill. +Now remove the long-lived access token (if you want), copy the ARN of your Lambda function, then navigate back to the [Alexa Developer Console][alexa-dev-console]. You will finish the configuration of the Smart Home skill. -- Sign in [Alexa Developer Console][alexa-dev-console], go to `Alexa Skills` page if you are not. +- Return to the [Alexa Developer Console][alexa-dev-console], and go to `Alexa Skills` page if you are not. - Find the skill you just created, click `Edit` link in the `Actions` column. - 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 -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. +Alexa needs to link your Amazon account to your Home Assistant account. Therefore Home Assistant can make sure only authenticated Alexa requests are 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 at port 443. -- Sign in [Alexa Developer Console][alexa-dev-console], go to `Alexa Skills` page if you are not. +- Return to the [Alexa Developer Console][alexa-dev-console], go to `Alexa Skills` page if you are not. - Find the skill you just created, click `Edit` link in the `Actions` column. - Click `ACCOUNT LINKING` in the left navigation bar of build page - Do not turn on the "Allow users to link their account to your skill from within your application or website" switch. This will require a Redirect URI, which won't work. @@ -212,14 +209,16 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom

- Click `Save` button in the top right corner. -- Next, you will use Alexa Mobile App or [Alexa web-based app](#alexa-web-based-app) to link your account. - - Open the Alexa app, navigate to `Skills & Games` -> `Your Skills` -> `Dev` +- Next, you will use the Alexa Mobile App or the [Alexa web-based app](#alexa-web-based-app) to link your account. + - In the Alexa app, navigate to `More` -> `Skills & Games` -> `Your Skills` -> `Dev` + - Or In the Alexa web app, navigate to `Skills` -> `Your Skills` in the top right -> `Dev Skill` - Click the Smart Home skill you just created. - Click `Enable to use`. - A new window will open to direct you to your Home Assistant's login screen. - - After you successfully login, you will be redirected back to Alexa app. - - You can discover your devices now! -- Now, you can ask your Echo or in Alexa App, _"Alexa, turn on bedroom"_ 🎉 + - After you successfully login, you will be redirected back to the Alexa app. + - Alexa should automatically start discovering your devices now! This is indicated by a blue ring on your physical devices + - If not, ask Alexa to `Discover Devices` +- Now, you can ask Alexa from your Echo or the Alexa App, _"Alexa, turn on bedroom light"_ 🎉 ## Alexa Smart Home Component Configuration From ce58995505362be1e4f36d3d6e2e2a9a75caa0e6 Mon Sep 17 00:00:00 2001 From: akloeckner Date: Wed, 29 Jun 2022 13:15:43 +0200 Subject: [PATCH 05/12] Clarify that this does not change (#22957) --- source/_docs/automation/templating.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index daf42cb408a..a561d298f92 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -9,7 +9,7 @@ The template variable `this` is also available when evaluating any `trigger_vari ## Available this Data -Variable `this` is the [state object](/docs/configuration/state_object) of the automation. State objects also contain context data which can be used to identify the user that caused a script or automation to execute. +The variable `this` is the [state object](/docs/configuration/state_object) of the automation at the moment of triggering the actions. State objects also contain context data which can be used to identify the user that caused a script or automation to execute. Note that `this` will not change while executing the actions. ## Available Trigger Data From d24e8e370246558b0c8d00a3ee3251011a7d91cb Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Wed, 29 Jun 2022 13:23:14 +0200 Subject: [PATCH 06/12] Added p1 esp8266 solution that's just a ser2net forwarder (#22614) Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/dsmr.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index c82436df21a..1f478c1af54 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -88,8 +88,9 @@ $ docker run --device /dev/ttyUSB0:/dev/ttyUSB0 -d --name="home-assistant" -v /h DIY solutions (ESP8266 based): -- [esp8266_p1meter (daniel-jong)](https://github.com/daniel-jong/esp8266_p1meter) +- [esp8266_p1meter (daniel-jong)](https://github.com/daniel-jong/esp8266_p1meter) (parse on ESP8266 publish to MQTT) - [DSMR reader for ESPHome (mmakaay)](https://github.com/mmakaay/dsmr-reader-for-esphome) +- [p1-esp8266 (DavyLandman)](https://github.com/DavyLandman/p1-esp8266) (turn ESP8266 into a serial forwarder) {% include integrations/config_flow.md %} From 69d33bfa1226b117c319d4de69b57b9e87164665 Mon Sep 17 00:00:00 2001 From: Benoit Anastay <45088785+BenoitAnastay@users.noreply.github.com> Date: Thu, 30 Jun 2022 01:08:17 +0200 Subject: [PATCH 07/12] Remove Linux capabilities section (#23239) --- source/_integrations/nmap_tracker.markdown | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index ee4e6bf0056..89e199e8a76 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -51,14 +51,4 @@ Raw configurable scan options for Nmap: default: -F T4 --min-rate 10 --host-timeout 5s {% endconfiguration_basic %} -### Linux capabilities - -On Linux systems (such as the Home Assistant Operating System) you can extend the functionality of Nmap, without having to run it as root, by using *Linux capabilities*. Be sure to specify the full path to wherever you installed Nmap: - -```bash -sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap -``` - -And you can set up the device tracker scan options with `--privileged -sn` - See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. From 6db8d6235bf70b33eb46db463fe9a65f69fa1705 Mon Sep 17 00:00:00 2001 From: kcd83 Date: Thu, 30 Jun 2022 12:30:35 +1200 Subject: [PATCH 08/12] Add documentation of selecting source for Spotify (#23206) --- source/_integrations/spotify.markdown | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index e098af56401..f14f55519c9 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -22,6 +22,7 @@ The Spotify media player integration allows you to control [Spotify](https://www - Spotify account - (Optional) Spotify developer application configured for Home Assistant (see [below](#create-a-spotify-application)) +- Spotify compatible playback [source](#selecting-output-source) device
Spotify integrated media controls (pause, play, next, etc.) require a Premium account. @@ -80,6 +81,20 @@ accounts can be linked to a _single_ Spotify application. You will have to add t To add an additional Spotify account to Home Assistant, go to the Spotify website and log out, then repeat _only_ the steps in the [Configuration](#configuration) section. +## Selecting output source + +To play media Spotify first needs a device selected for audio output known as the `source`. + +```yaml +# Example code to select an AV receiver as the output device +service: media_player.select_source +entity_id: media_player.spotify +data: + source: "Denon AVR-X2000" +``` + +The Spotify API cannot initiate playback to a device not already known to the Spotify API. The source list of available devices can be found in the Details section of the Spotify Media Player Control and the `source_list` attribute in the {% my developer_states title="Developer Tools States" %}. + ## Playing Spotify playlists You can send playlists to Spotify using the `"media_content_type": "playlist"`, which is part of the @@ -98,7 +113,7 @@ script: media_content_type: playlist ``` -The `media_content_id` value can be obtained from the Spotify desktop app by clicking on the more options ("...") next to the album art picture, selecting "Share" and then "Copy Spotify URI" or "Copy Playlist Link" (also available in the Spotify phone and web app). +The `media_content_id` value can be obtained from the Spotify desktop app by clicking on the more options ("...") next to the album art picture, selecting "Share" and then "Copy Spotify URI" or "Copy Playlist Link" (also available in the Spotify phone and web app). Alternatively a Spotify URI string (e.g. `spotify:playlist:5xddIVAtLrZKtt4YGLM1SQ`) can be supplied for the `media_content_id`. ## Unsupported Devices From aa66d22f0334882e1f4b5c801f086ce94c7b5f01 Mon Sep 17 00:00:00 2001 From: Maximilian Ertl Date: Thu, 30 Jun 2022 15:07:55 +0200 Subject: [PATCH 09/12] Replace wrong link, remove broken links in fritzbox docs (#23240) --- source/_integrations/fritzbox.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index a4f3ed473b0..7ef19c3413a 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -37,15 +37,15 @@ There is currently support for the following device types within Home Assistant: #### Tested Devices -- [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/) +- FRITZ!Box 6490 Cable - [FRITZ!Box 6591 Cable](https://en.avm.de/products/fritzbox/fritzbox-6591-cable/) - [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/) -- [FRITZ!Box 7490](https://en.avm.de/service/fritzbox/fritzbox-7490/overview/) -- [FRITZ!Box 7430](https://en.avm.de/service/fritzbox/fritzbox-7430/overview/) +- FRITZ!Box 7490 +- FRITZ!Box 7430 - [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) - [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/) - [FRITZ!DECT 500](https://en.avm.de/products/fritzdect/fritzdect-500/) -- [Eurotronic Comet DECT](https://eurotronic.org/produkte/elektronische-heizkoerperthermostate/sparmatic-comet/) +- [Eurotronic Comet DECT](https://eurotronic.org/produkte/dect-ule-heizkoerperthermostat/comet-dect/) - [Magenta SmartHome LED E27](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss) {% include integrations/config_flow.md %} From 476206788c7cd74de408c61560ad4a09b38af1b8 Mon Sep 17 00:00:00 2001 From: Emily Love Mills Date: Thu, 30 Jun 2022 17:13:06 -0500 Subject: [PATCH 10/12] Include virt-install OS installation instructions (#23198) * Include virt-install OS installation instructions * Fix typos Co-authored-by: Fabian Affolter --- .../_includes/installation/operating_system.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 5760669ea14..1686754fd80 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -213,8 +213,8 @@ Load the appliance image into your virtual machine hypervisor. (Note: You are fr Minimum recommended assignments: -- 2GB RAM -- 32GB Storage +- 2 GB RAM +- 32 GB Storage - 2vCPU _All these can be extended if your usage calls for more resources._ @@ -241,18 +241,24 @@ _All these can be extended if your usage calls for more resources._
-- title: KVM +- title: KVM (virt-manager) content: | 1. Create a new virtual machine in `virt-manager` 2. Select “Import existing disk image”, provide the path to the QCOW2 image above 3. Choose “Generic Default” for the operating system 4. Check the box for “Customize configuration before install” 5. Select your bridge under “Network Selection” - 6. Under customization select “Overview” -> “Firmware” -> “UEFI x86_64: …” + 6. Under customization select “Overview” -> “Firmware” -> “UEFI x86_64: ...” 7. Click "Add Hardware" (bottom left), and select "Channel" 8. Select device type: "unix" 9. Select name: "org.qemu.guest_agent.0" - 10. Finally select "Begin Instalation" (upper left corner) + 10. Finally select "Begin Installation" (upper left corner) + +- title: KVM (virt-install) + content: | + ```bash + virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --graphics none --boot uefi + ``` {% if page.installation_type == 'windows' or page.installation_type == 'linux' %} From cfff9232e5f7a3d18e8584407fc1e20143640ba9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Jul 2022 08:44:01 +0200 Subject: [PATCH 11/12] Bump rack from 2.2.3.1 to 2.2.4 (#23246) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9b434f2d96b..6e7fd19f55a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -79,7 +79,7 @@ GEM forwardable-extended (~> 2.6) public_suffix (4.0.7) racc (1.6.0) - rack (2.2.3.1) + rack (2.2.4) rack-protection (2.2.0) rack rake (13.0.6) From 32a17028092fa6aee1b8778359ab02eef0628688 Mon Sep 17 00:00:00 2001 From: Danny Tsang <567982+dannytsang@users.noreply.github.com> Date: Tue, 5 Jul 2022 09:27:05 +0100 Subject: [PATCH 12/12] Added Automatic setup to application credentials page (#23271) Co-authored-by: Franck Nijhof --- .../application_credentials.markdown | 11 ++++++++++- .../application-credential-setup.png | Bin 0 -> 42660 bytes .../application-credentials.png | Bin 0 -> 22930 bytes 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 source/images/integrations/application_credentials/application-credential-setup.png create mode 100644 source/images/integrations/application_credentials/application-credentials.png diff --git a/source/_integrations/application_credentials.markdown b/source/_integrations/application_credentials.markdown index 98b45035c8d..0f0945b176c 100644 --- a/source/_integrations/application_credentials.markdown +++ b/source/_integrations/application_credentials.markdown @@ -12,15 +12,24 @@ ha_integration_type: integration The Application Credentials integration is used by integrations that use OAuth2 to link your account to Home Assistant. The most common and preferred approach is using account linking with Home Assistant Cloud, however not all cloud providers support that and integrations can use Application Credentials instead. Additionally, users may use Application Credentials if preferred instead of Home Assistant Cloud Account Linking. +## Automatic Setup + +Some integrations like [Google Calendar](/integrations/google/) will automatically create application credentials as part of adding an integration. To view any entries: +1. Go to **{% my integrations title="Settings -> Devices & Services" %}** +2. Click the overflow menu **...** and choose **Application Credentials** + +![Application credential list](/images/integrations/application_credentials/application-credentials.png) + ## Manual Setup Note that integrations that do not support cloud linking will prompt to setup Application Credentials when setting up for the first time. You may also manually enter credentials with the following steps: 1. Obtain an OAuth *Client ID* and *Client Secret* from the cloud provider. The integration should have specific instructions for this. -2. In Home Assistant navigate to **Settings** -> **Devices & Services** +2. In Home Assistant navigate to **{% my integrations title="Settings -> Devices & Services" %}** 3. Click the overflow menu **...** and choose **Application Credentials** 4. Select the integration, enter a *Name* and your OAuth *Client ID* and *Client Secret*. 5. Save the credentials +![Manual setup](/images/integrations/application_credentials/application-credential-setup.png) You may then visit **Integrations** and setup the integration. \ No newline at end of file diff --git a/source/images/integrations/application_credentials/application-credential-setup.png b/source/images/integrations/application_credentials/application-credential-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5b5935198f7b9509ce840d267a08b54c336467 GIT binary patch literal 42660 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 RP$U2V002ovPDHLkV1iiHz;XZp literal 0 HcmV?d00001 diff --git a/source/images/integrations/application_credentials/application-credentials.png b/source/images/integrations/application_credentials/application-credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..380219c4f66352af527ebe423c9eff30216d9370 GIT binary patch literal 22930 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 Um>W