Skip to content

Commit 21158ea

Browse files
committed
Merge branch 'current' into next
2 parents c08c12c + 0077c83 commit 21158ea

30 files changed

+173
-61
lines changed

.github/ISSUE_TEMPLATE/feedback.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,10 @@ body:
3434
- type: input
3535
attributes:
3636
label: Version
37-
placeholder: "e.g., 2021.2.0"
37+
placeholder: "e.g., 2022.7.0"
3838
description: >
39-
Current version of the documentation. This usually matches the Home
40-
Assistant Core release version, and can be found at the bottom of the
41-
page.
39+
Latest stable version version of Home Assistant available
40+
(which does not have to match the version you are using).
4241
- type: textarea
4342
attributes:
4443
label: Additional information

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ group :jekyll_plugins do
1919
gem 'jekyll-toc', '0.17.1'
2020
end
2121

22-
gem 'sinatra', '2.2.1'
23-
gem 'nokogiri', '1.13.7'
22+
gem 'sinatra', '2.2.2'
23+
gem 'nokogiri', '1.13.8'
2424

2525
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
2626
# and associated library

Gemfile.lock

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,19 @@ GEM
6868
mercenary (0.4.0)
6969
mini_portile2 (2.8.0)
7070
multi_json (1.15.0)
71-
mustermann (1.1.2)
71+
mustermann (2.0.2)
7272
ruby2_keywords (~> 0.0.1)
73-
nokogiri (1.13.7)
73+
nokogiri (1.13.8)
7474
mini_portile2 (~> 2.8.0)
7575
racc (~> 1.4)
76-
nokogiri (1.13.7-x64-mingw32)
76+
nokogiri (1.13.8-x64-mingw32)
7777
racc (~> 1.4)
7878
pathutil (0.16.2)
7979
forwardable-extended (~> 2.6)
8080
public_suffix (4.0.7)
8181
racc (1.6.0)
8282
rack (2.2.4)
83-
rack-protection (2.2.1)
83+
rack-protection (2.2.2)
8484
rack
8585
rake (13.0.6)
8686
rb-fsevent (0.11.1)
@@ -97,16 +97,16 @@ GEM
9797
ffi (~> 1.9)
9898
sassc (2.1.0-x64-mingw32)
9999
ffi (~> 1.9)
100-
sinatra (2.2.1)
101-
mustermann (~> 1.0)
100+
sinatra (2.2.2)
101+
mustermann (~> 2.0)
102102
rack (~> 2.2)
103-
rack-protection (= 2.2.1)
103+
rack-protection (= 2.2.2)
104104
tilt (~> 2.0)
105105
stringex (2.8.5)
106106
terminal-table (2.0.0)
107107
unicode-display_width (~> 1.1, >= 1.1.1)
108-
tilt (2.0.10)
109-
tzinfo (2.0.4)
108+
tilt (2.0.11)
109+
tzinfo (2.0.5)
110110
concurrent-ruby (~> 1.0)
111111
tzinfo-data (1.2022.1)
112112
tzinfo (>= 1.0.0)
@@ -123,11 +123,11 @@ DEPENDENCIES
123123
jekyll-paginate (= 1.1.0)
124124
jekyll-sitemap (= 1.4.0)
125125
jekyll-toc (= 0.17.1)
126-
nokogiri (= 1.13.7)
126+
nokogiri (= 1.13.8)
127127
rake (= 13.0.6)
128128
sass-globbing (= 1.1.5)
129129
sassc (= 2.1.0)
130-
sinatra (= 2.2.1)
130+
sinatra (= 2.2.2)
131131
stringex (= 2.8.5)
132132
tzinfo (~> 2.0)
133133
tzinfo-data

_config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ social:
107107
# Home Assistant release details
108108
current_major_version: 2022
109109
current_minor_version: 7
110-
current_patch_version: 5
111-
date_released: 2022-07-14
110+
current_patch_version: 6
111+
date_released: 2022-07-20
112112

113113
# Either # or the anchor link to latest release notes in the blog post.
114114
# Must be prefixed with a # and have double quotes around it.

source/_docs/automation/basics.markdown

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The second part is the [condition](/docs/automation/condition/). Conditions are
2222
The third part is the [action](/docs/automation/action/), which will be performed when a rule is triggered and all conditions are met. For example, it can turn a light on, set the temperature on your thermostat or activate a scene.
2323

2424
<div class='note'>
25-
The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the results: turning a light on versus a light being on.
25+
The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the current state: turning a light on versus a light being on.
2626
</div>
2727

2828
## Exploring the internal state
@@ -37,7 +37,7 @@ Automation rules interact directly with the internal state of Home Assistant, so
3737

3838
State changes can be used as the source of triggers and the current state can be used in conditions.
3939

40-
Actions are all about calling services. To explore the available services open the **{% my developer_states title="Developer Tools -> Services" %}**. Services allow changing anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service {% my developer_call_service service="light.turn_on" %} is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.
40+
Actions are all about calling *services*. To explore the available *services* open the **{% my developer_states title="Developer Tools -> Services" %}**. *Services* allow changing anything. For example turn on a light, run a script or enable a scene. Each *service* has a domain and a name. For example the *service* {% my developer_call_service service="light.turn_on" %} is capable of turning on any light in your system. Parameters can be passed to a *service* to indicate, for example, which device to activate or which color to use.
4141

4242
## Creating automations
4343

source/_docs/mqtt/discovery.markdown

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Supported by MQTT discovery:
3030
- [Vacuums](/integrations/vacuum.mqtt/)
3131

3232
## Configuration
33-
MQTT discovery is enabled by default, but can be disable. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next".
33+
MQTT discovery is enabled by default, but can be disabled. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next".
3434

3535
### Advanced discovery configuration
3636

@@ -44,9 +44,11 @@ discovery_prefix:
4444
type: string
4545
{% endconfiguration %}
4646

47+
## Discovery messages
48+
4749
## Discovery topic
4850

49-
The discovery topic need to follow a specific format:
51+
The discovery topic needs to follow a specific format:
5052

5153
```text
5254
<discovery_prefix>/<component>/[<node_id>/]<object_id>/config
@@ -56,13 +58,15 @@ The discovery topic need to follow a specific format:
5658
- `<node_id>` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen).
5759
- `<object_id>`: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen).
5860

61+
The `<node_id>` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `<discovery_prefix>/+/<node_id>/+/set`.
62+
5963
Best practice for entities with a `unique_id` is to set `<object_id>` to `unique_id` and omit the `<node_id>`.
6064

61-
The payload must be a JSON dictionary and will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`.
65+
## Discovery payload
6266

63-
Subsequent messages on a topic where a valid payload has been received will be handled as a configuration update, and a configuration update with an empty payload will cause a previously discovered device to be deleted.
67+
The payload must be a serialized JSON dictionary and will be checked like an entry in your `configuration.yaml` file if a new device is added, with the exception that unknown configuration keys are allowed but ignored. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the payload. The reason for allowing unknown documentation keys is allow some backwards compatibility, software generating MQTT discovery messages can then be used with older Home Assistant versions which will simply ignore new features.
6468

65-
The `<node_id>` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `<discovery_prefix>/+/<node_id>/+/set`.
69+
Subsequent messages on a topic where a valid payload has been received will be handled as a configuration update, and a configuration update with an empty payload will cause a previously discovered device to be deleted.
6670

6771
A base topic `~` may be defined in the payload to conserve memory when the same topic base is used multiple times.
6872
In the value of configuration variables ending with `_topic`, `~` will be replaced with the base topic, if the `~` occurs at the beginning or end of the value.

source/_includes/asides/component_navigation.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@
3737
{%- endif -%}.
3838
</div>
3939

40+
{% if page.works_with %}
41+
{%- for type in page.works_with -%}
42+
<div class="section">
43+
<a href="/blog/2022/07/12/partner-program">
44+
<img src="../../images/works_with/works-with-{{ type }}.png" alt="Works via {{ type }} with Home assistant">
45+
</a>
46+
</div>
47+
{%- endfor -%}
48+
{%- endif -%}
49+
4050
{% if page.ha_domain %}
4151
<div class='section'>
4252
<a href="https://github.com/home-assistant/core/tree/dev/homeassistant/components/{{ page.ha_domain }}" target="_blank"><i class="icon-github"></i> View source on GitHub</a><br />

source/_includes/custom/features.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="card">
33
<div class="card-header">
44
<i class="icon-lightbulb"></i>
5-
Works with over 1900 devices
5+
Works with over 1000 brands
66
</div>
77
<div class="card-content">
88
<p>

source/_integrations/caldav.markdown

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@ calendar:
4545
url: https://nextcloud.example.com/remote.php/dav
4646
```
4747
48+
```yaml
49+
# Example configuration.yaml entry for Radicale, calendars will be found automatically
50+
calendar:
51+
- platform: caldav
52+
username: john.doe
53+
password: !secret caldav
54+
url: https://radicale.example.com/
55+
```
56+
4857
```yaml
4958
# Example configuration.yaml entry for iCloud, calendars will be found automatically
5059
calendar:

source/_integrations/derivative.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ ha_integration_type: helper
2121
The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that estimates the derivative of the
2222
values provided by another sensor (the **source sensor**). Derivative sensors are updated upon changes of the **source sensor**.
2323

24+
For sensors that reset to zero after a power interruption and need a "non-negative derivative", such as bandwidth counters in routers, or rain gauges, consider using the [Utility Meter](/integrations/utility_meter/) integration instead. Otherwise, each reset will register a significant change in the derivative sensor.
25+
2426
{% include integrations/config_flow.md %}
2527
{% configuration_basic %}
2628
Name:

source/_integrations/esphome.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ ha_platforms:
2929
- switch
3030
ha_integration_type: integration
3131
ha_dhcp: true
32+
works_with:
33+
- local
3234
---
3335

3436
This integration allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html).

source/_integrations/google_assistant.markdown

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,9 @@ There is no TV channel object in Home Assistant. TV channel can only be changed
300300

301301
#### 404 errors on request sync
302302

303-
Syncing may fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant" (or whatever you named your project), this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview.
303+
Syncing from Google Assistant may fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant" (or whatever you named your project), this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview.
304+
305+
Syncing from Home Assistant will always work and will automatically update entity changes.
304306

305307
The `request_sync` service requires that the initial sync from Google includes the `agent_user_id`. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlenest/answer/7126338) from Home Control and relink.
306308

source/_integrations/group.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ In short, when any group member entity is `on`, the group will also be `on`. A c
7777
- Otherwise, the group state is `off`.
7878

7979
### Lock groups
80-
In short, when any group member entity is `unlocked`, the group will also be `unlocked`. A complete overview of how fan groups behave:
80+
In short, when any group member entity is `unlocked`, the group will also be `unlocked`. A complete overview of how lock groups behave:
8181

8282
- The group state is `unavailable` if all group members are `unavailable`.
8383
- Otherwise, the group state is `unknown` if all group members are `unknown` or `unavailable`.

source/_integrations/integration.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ method:
9393
default: trapezoidal
9494
{% endconfiguration %}
9595

96-
In case you have an appliance which produces spikey consumption (like an on/off electrical boiler) you should opt for the `left` method to get accurate readings.
96+
In case you expect that your source sensor will provide several subsequent values that are equal, you should opt for the `left` method to get accurate readings.
9797

9898
The unit of `source` together with `unit_prefix` and `unit_time` is used to generate a unit for the integral product (e.g. a source in `W` with prefix `k` and time `h` would result in `kWh`). Note that `unit_prefix` and `unit_time` are _also_ relevant to the Riemann sum calculation.
9999

source/_integrations/notify.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ The notify integration supports specifying [templates](/topics/templating/). Thi
3030

3131
In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this with a customized subject.
3232

33+
Be aware that you might want to change the actual service to whatever service you are actually using since `notify.notify` is shorthand for the first notify service the system can find and might therefore not be working as intended.
34+
3335
```yaml
3436
action:
3537
service: notify.notify

source/_integrations/opentherm_gw.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ The following configuration options are available:
4141

4242
{% configuration_basic %}
4343
name:
44-
description: "The friendly name used for the OpenTherm Gateway and its entities."
45-
path:
46-
description: "Path to the OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)."
44+
description: "The friendly name used for the OpenTherm Gateway and its entities. This is used to generate the display name of the created device and all related entities.<br/>Examples: `Thermostat`, `Living Room`"
45+
path or url:
46+
description: "Path to the OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html). This is usually either a path to a serial device in `/dev/` if the gateway is connected via serial or USB or a URL in the form of `socket://[IP address]:[port]` if it is connected over the network.<br/>Examples: `/dev/ttyUSB0`, `socket://192.168.0.250:7686`"
4747
id:
48-
description: "The `gateway_id` for this OpenTherm Gateway's entity IDs and services. The entered value will be slugified."
48+
description: "The `gateway_id` for this OpenTherm Gateway. This is used to identify this specific gateway in service calls and to generate the entity IDs for the entities related to this gateway. The entered value will be slugified, i.e. all spaces and special characters will be converted to underscores and any accents will be removed from their characters. The default value is the slugified version of the `name` given above.<br/>Examples: `thermostat`, `living_room`"
4949
{% endconfiguration_basic %}
5050

5151
<div class='note warning'>

source/_integrations/sql.markdown

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ This can be used to present statistics about Home Assistant sensors if used with
2525

2626
See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration.
2727

28-
The SQL integration will connect to default recorder if Database URL is not specified.
28+
The SQL integration will connect to the default SQLite if "Database URL" has not been specified. If you use a different database recorder (eg MariaDB or others), you will have to specify the "Database URL" manually during integration setup.
2929

3030
There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes.
3131

@@ -67,7 +67,7 @@ Use `state` as column for value.
6767
#### Postgres
6868

6969
```sql
70-
"SELECT (pg_database_size('dsmrreader')/1024/1024) as db_size;"
70+
SELECT (pg_database_size('dsmrreader')/1024/1024) as db_size;
7171
```
7272
Use `db_size` as column for value.
7373

@@ -76,7 +76,7 @@ Use `db_size` as column for value.
7676
Change `table_schema="hass"` to the name that you use as the database name, to ensure that your sensor will work properly.
7777

7878
```sql
79-
'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;'
79+
SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;
8080
```
8181
Use `value` as column for value.
8282

@@ -85,7 +85,7 @@ Use `value` as column for value.
8585
If you are using the `recorder` integration then you don't need to specify the location of the database. For all other cases, add `sqlite:////path/to/database.db` as Database URL.
8686

8787
```sql
88-
'SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_count(), pragma_page_size();'
88+
SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_count(), pragma_page_size();
8989
```
9090
Use `size` as column for value.
9191

@@ -96,6 +96,6 @@ Use the same Database URL as for the `recorder` integration. Change `DB_NAME` to
9696
Example Database URL: `"mssql+pyodbc://username:password@SERVER_IP:1433/DB_NAME?charset=utf8&driver=FreeTDS"`
9797

9898
```sql
99-
"SELECT TOP 1 SUM(m.size) * 8 / 1024 as size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id=m.database_id WHERE d.name='DB_NAME';"
99+
SELECT TOP 1 SUM(m.size) * 8 / 1024 as size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id=m.database_id WHERE d.name='DB_NAME';
100100
```
101101
Use `size` as column for value.

source/_integrations/statistics.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ sampling_size:
137137
default: 20
138138
type: integer
139139
max_age:
140-
description: Maximum age of source sensor measurements stored. Setting this to a time period will cause older values to be discarded. If omitted, the number of considered source sensor measurements is limitted by `sampling_size` only. Set both parameters appropriately to create suited limits for your use case. The sensor value will become `unkown` if the source sensor is not updated within the time period.
140+
description: Maximum age of source sensor measurements stored. Setting this to a time period will cause older values to be discarded. If omitted, the number of considered source sensor measurements is limitted by `sampling_size` only. Set both parameters appropriately to create suited limits for your use case. The sensor value will become `unknown` if the source sensor is not updated within the time period.
141141
required: false
142142
type: time
143143
precision:

0 commit comments

Comments
 (0)