mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-28 11:47:00 +00:00
Merge branch 'next' into bosch-alarm
This commit is contained in:
commit
38e2fec121
8
Gemfile
8
Gemfile
@ -10,9 +10,9 @@ group :development do
|
|||||||
gem 'stringex', '2.8.6'
|
gem 'stringex', '2.8.6'
|
||||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||||
gem 'sassc', '2.1.0'
|
gem 'sassc', '2.1.0'
|
||||||
gem 'sass-embedded', '1.83.4'
|
gem 'sass-embedded', '1.85.1'
|
||||||
gem 'rubocop', '1.71.2'
|
gem 'rubocop', '1.72.2'
|
||||||
gem 'ruby-lsp', '0.23.8'
|
gem 'ruby-lsp', '0.23.11'
|
||||||
gem 'rackup', '2.2.1'
|
gem 'rackup', '2.2.1'
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ group :jekyll_plugins do
|
|||||||
end
|
end
|
||||||
|
|
||||||
gem 'sinatra', '4.1.1'
|
gem 'sinatra', '4.1.1'
|
||||||
gem 'nokogiri', '1.18.2'
|
gem 'nokogiri', '1.18.3'
|
||||||
|
|
||||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||||
# and associated library
|
# and associated library
|
||||||
|
38
Gemfile.lock
38
Gemfile.lock
@ -70,27 +70,28 @@ GEM
|
|||||||
nokogiri (~> 1.12)
|
nokogiri (~> 1.12)
|
||||||
jekyll-watch (2.2.1)
|
jekyll-watch (2.2.1)
|
||||||
listen (~> 3.0)
|
listen (~> 3.0)
|
||||||
json (2.9.1)
|
json (2.10.1)
|
||||||
kramdown (2.5.1)
|
kramdown (2.5.1)
|
||||||
rexml (>= 3.3.9)
|
rexml (>= 3.3.9)
|
||||||
kramdown-parser-gfm (1.1.0)
|
kramdown-parser-gfm (1.1.0)
|
||||||
kramdown (~> 2.0)
|
kramdown (~> 2.0)
|
||||||
language_server-protocol (3.17.0.4)
|
language_server-protocol (3.17.0.4)
|
||||||
|
lint_roller (1.1.0)
|
||||||
liquid (4.0.4)
|
liquid (4.0.4)
|
||||||
listen (3.9.0)
|
listen (3.9.0)
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
logger (1.6.5)
|
logger (1.6.6)
|
||||||
mercenary (0.4.0)
|
mercenary (0.4.0)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
mustermann (3.0.3)
|
mustermann (3.0.3)
|
||||||
ruby2_keywords (~> 0.0.1)
|
ruby2_keywords (~> 0.0.1)
|
||||||
nokogiri (1.18.2-arm64-darwin)
|
nokogiri (1.18.3-arm64-darwin)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
nokogiri (1.18.2-x86_64-linux-gnu)
|
nokogiri (1.18.3-x86_64-linux-gnu)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
parallel (1.26.3)
|
parallel (1.26.3)
|
||||||
parser (3.3.7.0)
|
parser (3.3.7.1)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
racc
|
racc
|
||||||
pathutil (0.16.2)
|
pathutil (0.16.2)
|
||||||
@ -98,7 +99,7 @@ GEM
|
|||||||
prism (1.3.0)
|
prism (1.3.0)
|
||||||
public_suffix (6.0.1)
|
public_suffix (6.0.1)
|
||||||
racc (1.8.1)
|
racc (1.8.1)
|
||||||
rack (3.1.9)
|
rack (3.1.10)
|
||||||
rack-protection (4.1.1)
|
rack-protection (4.1.1)
|
||||||
base64 (>= 0.1.0)
|
base64 (>= 0.1.0)
|
||||||
logger (>= 1.6.0)
|
logger (>= 1.6.0)
|
||||||
@ -116,11 +117,12 @@ GEM
|
|||||||
rbs (3.8.1)
|
rbs (3.8.1)
|
||||||
logger
|
logger
|
||||||
regexp_parser (2.10.0)
|
regexp_parser (2.10.0)
|
||||||
rexml (3.4.0)
|
rexml (3.4.1)
|
||||||
rouge (4.5.1)
|
rouge (4.5.1)
|
||||||
rubocop (1.71.2)
|
rubocop (1.72.2)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (>= 3.17.0)
|
language_server-protocol (~> 3.17.0.2)
|
||||||
|
lint_roller (~> 1.1.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.3.0.2)
|
parser (>= 3.3.0.2)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
@ -128,9 +130,9 @@ GEM
|
|||||||
rubocop-ast (>= 1.38.0, < 2.0)
|
rubocop-ast (>= 1.38.0, < 2.0)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 4.0)
|
unicode-display_width (>= 2.4.0, < 4.0)
|
||||||
rubocop-ast (1.38.0)
|
rubocop-ast (1.38.1)
|
||||||
parser (>= 3.3.1.0)
|
parser (>= 3.3.1.0)
|
||||||
ruby-lsp (0.23.8)
|
ruby-lsp (0.23.11)
|
||||||
language_server-protocol (~> 3.17.0)
|
language_server-protocol (~> 3.17.0)
|
||||||
prism (>= 1.2, < 2.0)
|
prism (>= 1.2, < 2.0)
|
||||||
rbs (>= 3, < 4)
|
rbs (>= 3, < 4)
|
||||||
@ -139,9 +141,9 @@ GEM
|
|||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sass (3.4.25)
|
sass (3.4.25)
|
||||||
sass-embedded (1.83.4-arm64-darwin)
|
sass-embedded (1.85.1-arm64-darwin)
|
||||||
google-protobuf (~> 4.29)
|
google-protobuf (~> 4.29)
|
||||||
sass-embedded (1.83.4-x86_64-linux-gnu)
|
sass-embedded (1.85.1-x86_64-linux-gnu)
|
||||||
google-protobuf (~> 4.29)
|
google-protobuf (~> 4.29)
|
||||||
sass-globbing (1.1.5)
|
sass-globbing (1.1.5)
|
||||||
sass (>= 3.1)
|
sass (>= 3.1)
|
||||||
@ -156,7 +158,7 @@ GEM
|
|||||||
rack-protection (= 4.1.1)
|
rack-protection (= 4.1.1)
|
||||||
rack-session (>= 2.0.0, < 3)
|
rack-session (>= 2.0.0, < 3)
|
||||||
tilt (~> 2.0)
|
tilt (~> 2.0)
|
||||||
sorbet-runtime (0.5.11801)
|
sorbet-runtime (0.5.11862)
|
||||||
stringex (2.8.6)
|
stringex (2.8.6)
|
||||||
terminal-table (3.0.2)
|
terminal-table (3.0.2)
|
||||||
unicode-display_width (>= 1.1.1, < 3)
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
@ -179,12 +181,12 @@ DEPENDENCIES
|
|||||||
jekyll-paginate (= 1.1.0)
|
jekyll-paginate (= 1.1.0)
|
||||||
jekyll-sitemap (= 1.4.0)
|
jekyll-sitemap (= 1.4.0)
|
||||||
jekyll-toc (= 0.19.0)
|
jekyll-toc (= 0.19.0)
|
||||||
nokogiri (= 1.18.2)
|
nokogiri (= 1.18.3)
|
||||||
rackup (= 2.2.1)
|
rackup (= 2.2.1)
|
||||||
rake (= 13.2.1)
|
rake (= 13.2.1)
|
||||||
rubocop (= 1.71.2)
|
rubocop (= 1.72.2)
|
||||||
ruby-lsp (= 0.23.8)
|
ruby-lsp (= 0.23.11)
|
||||||
sass-embedded (= 1.83.4)
|
sass-embedded (= 1.85.1)
|
||||||
sass-globbing (= 1.1.5)
|
sass-globbing (= 1.1.5)
|
||||||
sassc (= 2.1.0)
|
sassc (= 2.1.0)
|
||||||
sinatra (= 4.1.1)
|
sinatra (= 4.1.1)
|
||||||
|
@ -108,8 +108,8 @@ social:
|
|||||||
# Home Assistant release details
|
# Home Assistant release details
|
||||||
current_major_version: 2025
|
current_major_version: 2025
|
||||||
current_minor_version: 2
|
current_minor_version: 2
|
||||||
current_patch_version: 0
|
current_patch_version: 5
|
||||||
date_released: 2025-02-05
|
date_released: 2025-02-21
|
||||||
|
|
||||||
# Either # or the anchor link to latest release notes in the blog post.
|
# Either # or the anchor link to latest release notes in the blog post.
|
||||||
# Must be prefixed with a # and have double quotes around it.
|
# Must be prefixed with a # and have double quotes around it.
|
||||||
|
@ -188,6 +188,11 @@ $ha__primary_color: #03a9f4;
|
|||||||
width: 330px;
|
width: 330px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button{
|
||||||
|
display: inline-block;
|
||||||
|
padding: 8px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ description: The Conditional card displays another card based on conditions.
|
|||||||
related:
|
related:
|
||||||
- docs: /dashboards/cards/
|
- docs: /dashboards/cards/
|
||||||
title: Dashboard cards
|
title: Dashboard cards
|
||||||
- docs: /dashboards/cards/#showing-or-hiding-a-card-conditionally
|
- docs: /dashboards/cards/#showing-or-hiding-a-card-or-badge-conditionally
|
||||||
title: Conditional settings on the card's visibility tab
|
title: Conditional settings on the card's visibility tab
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ The conditional card displays another card based on conditions.
|
|||||||
{% include dashboard/edit_dashboard.md %}
|
{% include dashboard/edit_dashboard.md %}
|
||||||
Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions.
|
Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions.
|
||||||
|
|
||||||
The conditional card can still be used. However, it is now possible to define a setting to show or hide a card conditionally directly on each card type, on its [Visibility](/dashboards/cards/#showing-or-hiding-a-card-conditionally) tab.
|
The conditional card can still be used. However, it is now possible to define a setting to show or hide a card conditionally directly on each card type, on its [Visibility](/dashboards/cards/#showing-or-hiding-a-card-or-badge-conditionally) tab.
|
||||||
|
|
||||||
Most options for this card can be configured via the user interface.
|
Most options for this card can be configured via the user interface.
|
||||||
|
|
||||||
|
@ -234,3 +234,28 @@ The following example limits the number of shown devices to 5:
|
|||||||
type: energy-devices-detail-graph
|
type: energy-devices-detail-graph
|
||||||
max_devices: 5
|
max_devices: 5
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Using Multiple Collections
|
||||||
|
|
||||||
|
By default, all energy cards are linked to any `energy-date-selection` card on the view, and all `energy-date-selection` cards are linked to the same period. To enable multiple different date selections on the same view, it is necessary to link them to different collections. This is done by adding the variable `collection_key` to the card YAML, and giving this a value of any custom string that begins with `energy_`. (strings that do not start with `energy_` will generate an error).
|
||||||
|
|
||||||
|
All energy cards support use of `collection_key` option.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Example view with multiple collections:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
type: masonry
|
||||||
|
path: example
|
||||||
|
cards:
|
||||||
|
- type: energy-date-selection
|
||||||
|
- type: energy-date-selection
|
||||||
|
collection_key: energy_2
|
||||||
|
|
||||||
|
# This card is linked to the first (default) date selection
|
||||||
|
- type: energy-usage-graph
|
||||||
|
|
||||||
|
# This card is linked to the second date selection
|
||||||
|
- type: energy-usage-graph
|
||||||
|
collection_key: energy_2
|
||||||
|
```
|
||||||
|
@ -145,6 +145,10 @@ state_not:
|
|||||||
required: false
|
required: false
|
||||||
description: Entity state or ID to not be equal to this value. Can contain an array of states.*
|
description: Entity state or ID to not be equal to this value. Can contain an array of states.*
|
||||||
type: [list, string]
|
type: [list, string]
|
||||||
|
entity:
|
||||||
|
required: false
|
||||||
|
description: An optional entity ID to be used for testing the state condition. If not provided, the state of the entity being displayed is tested.
|
||||||
|
type: string
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
*one is required (`state` or `state_not`)
|
*one is required (`state` or `state_not`)
|
||||||
@ -178,6 +182,10 @@ below:
|
|||||||
required: false
|
required: false
|
||||||
description: Entity state or ID to be below this value.*
|
description: Entity state or ID to be below this value.*
|
||||||
type: string
|
type: string
|
||||||
|
entity:
|
||||||
|
required: false
|
||||||
|
description: An optional entity ID to be used for testing the numeric state condition. If not provided, the numeric state of the entity being displayed is tested.
|
||||||
|
type: string
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
*at least one is required (`above` or `below`), both are also possible for values between.
|
*at least one is required (`above` or `below`), both are also possible for values between.
|
||||||
|
@ -71,6 +71,11 @@ fit_y_data:
|
|||||||
description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data.
|
description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data.
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
expand_legend:
|
||||||
|
required: false
|
||||||
|
description: If true, the legend will show all items initially
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Options for entities
|
### Options for entities
|
||||||
|
@ -57,13 +57,18 @@ type:
|
|||||||
description: "`map`"
|
description: "`map`"
|
||||||
type: string
|
type: string
|
||||||
entities:
|
entities:
|
||||||
required: true
|
required: false
|
||||||
description: List of entity IDs or `entity` objects (see [below](#options-for-entities)). Either this or the `geo_location_sources` configuration option is required.
|
description: List of entity IDs or `entity` objects (see [below](#options-for-entities)). Either this, `show_all`, or the `geo_location_sources` configuration option is required.
|
||||||
type: list
|
type: list
|
||||||
geo_location_sources:
|
geo_location_sources:
|
||||||
required: true
|
required: false
|
||||||
description: List of geolocation sources or `source` objects (see [below](#options-for-geolocation-sources)). All current entities with that source will be displayed on the map. See [Geolocation](/integrations/geo_location/) platform for valid sources. Set to `all` to use all available sources. Either this or the `entities` configuration option is required.
|
description: List of geolocation sources or `source` objects (see [below](#options-for-geolocation-sources)). All current entities with that source will be displayed on the map. See [Geolocation](/integrations/geo_location/) platform for valid sources. Set to `all` to use all available sources. Either this, `show_all`, or the `entities` configuration option is required.
|
||||||
type: list
|
type: list
|
||||||
|
show_all:
|
||||||
|
required: false
|
||||||
|
description: Automatically add all entities with coordinates to the map card. (Default behavior of Map panel)
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
auto_fit:
|
auto_fit:
|
||||||
required: false
|
required: false
|
||||||
description: The map will follow moving `entities` by adjusting the viewport of the map each time an entity is updated.
|
description: The map will follow moving `entities` by adjusting the viewport of the map each time an entity is updated.
|
||||||
|
@ -64,6 +64,10 @@ footer:
|
|||||||
required: false
|
required: false
|
||||||
description: Footer widget to render. See [footer documentation](/dashboards/header-footer/).
|
description: Footer widget to render. See [footer documentation](/dashboards/header-footer/).
|
||||||
type: map
|
type: map
|
||||||
|
collection_key:
|
||||||
|
required: false
|
||||||
|
description: "If using `period: energy_date_selection`, you can set a custom key to match the optional key of an `energy-date-selection` card. This is not typically required, but can be useful if multiple date selection cards are used on the same view. See [energy documentation](/dashboards/energy/#using-multiple-collections)."
|
||||||
|
type: string
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
@ -81,7 +85,7 @@ stat_type: change
|
|||||||
|
|
||||||
## Options for period
|
## Options for period
|
||||||
|
|
||||||
Periods can be configured in 3 different ways:
|
Periods can be configured in 4 different ways:
|
||||||
|
|
||||||
### Calendar
|
### Calendar
|
||||||
|
|
||||||
@ -177,3 +181,16 @@ period:
|
|||||||
seconds: -10
|
seconds: -10
|
||||||
stat_type: change
|
stat_type: change
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Dynamic date selection
|
||||||
|
|
||||||
|
When placed on a view with an Energy date selection card, the statistic card can be linked to show data from the period selected on the date selection card.
|
||||||
|
|
||||||
|
Example of a period from the date selector:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
type: statistic
|
||||||
|
entity: sensor.energy_consumption
|
||||||
|
period: energy_date_selection
|
||||||
|
stat_type: change
|
||||||
|
```
|
||||||
|
@ -87,6 +87,11 @@ fit_y_data:
|
|||||||
description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data.
|
description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data.
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
expand_legend:
|
||||||
|
required: false
|
||||||
|
description: If true, the legend will show all items initially
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
energy_date_selection:
|
energy_date_selection:
|
||||||
required: false
|
required: false
|
||||||
description: If true, chart date range will follow the date selected on an `energy-date-selection` card on the same view, similar to energy cards.
|
description: If true, chart date range will follow the date selected on an `energy-date-selection` card on the same view, similar to energy cards.
|
||||||
@ -95,7 +100,7 @@ energy_date_selection:
|
|||||||
collection_key:
|
collection_key:
|
||||||
required: false
|
required: false
|
||||||
description: If using `energy_date_selection`, you can set a custom key to match the optional key of an `energy-date-selection` card. This is not typically required, but can be useful if multiple date selection cards are used on the same view.
|
description: If using `energy_date_selection`, you can set a custom key to match the optional key of an `energy-date-selection` card. This is not typically required, but can be useful if multiple date selection cards are used on the same view.
|
||||||
type: string
|
type: string
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Options for entities
|
### Options for entities
|
||||||
|
@ -150,6 +150,11 @@ green:
|
|||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
url: https://www.wifishop.ro/en/homeassistant/home-assistant-green.html
|
url: https://www.wifishop.ro/en/homeassistant/home-assistant-green.html
|
||||||
logo: /images/distributors/wifishop.webp
|
logo: /images/distributors/wifishop.webp
|
||||||
|
- name: Inet.se
|
||||||
|
ship_from: Sweden
|
||||||
|
ship_to: Europe
|
||||||
|
url: https://www.inet.se/produkt/8310063/home-assistant-green
|
||||||
|
logo: /images/distributors/inet.webp
|
||||||
yellow:
|
yellow:
|
||||||
name: "<strong>Home Assistant Yellow</strong>"
|
name: "<strong>Home Assistant Yellow</strong>"
|
||||||
distributors:
|
distributors:
|
||||||
@ -175,6 +180,12 @@ yellow:
|
|||||||
ship_to: Asia
|
ship_to: Asia
|
||||||
url: https://www.seeedstudio.com/Home-Assistant-Yellow-Kit-with-selectable-CM4.html
|
url: https://www.seeedstudio.com/Home-Assistant-Yellow-Kit-with-selectable-CM4.html
|
||||||
logo: /images/distributors/seeed-studio.webp
|
logo: /images/distributors/seeed-studio.webp
|
||||||
|
# Australia
|
||||||
|
- name: Smart Guys
|
||||||
|
ship_from: Australia
|
||||||
|
ship_to: Australia
|
||||||
|
url: https://smartguys.com.au/product/home-assistant-yellow-smart-hub/
|
||||||
|
logo: /images/distributors/smart-guys.webp
|
||||||
# Europe
|
# Europe
|
||||||
- name: Botland
|
- name: Botland
|
||||||
ship_from: Poland
|
ship_from: Poland
|
||||||
@ -343,6 +354,11 @@ zbt-1:
|
|||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
url: https://www.wifishop.ro/en/homeassistant/home-assistant-skyconnect.html
|
url: https://www.wifishop.ro/en/homeassistant/home-assistant-skyconnect.html
|
||||||
logo: /images/distributors/wifishop.webp
|
logo: /images/distributors/wifishop.webp
|
||||||
|
- name: Inet.se
|
||||||
|
ship_from: Sweden
|
||||||
|
ship_to: Europe
|
||||||
|
url: https://www.inet.se/produkt/8310064/home-assistant-connect-zbt-1
|
||||||
|
logo: /images/distributors/inet.webp
|
||||||
voice-pe:
|
voice-pe:
|
||||||
name: "<strong>Home Assistant Voice</strong> Preview Edition"
|
name: "<strong>Home Assistant Voice</strong> Preview Edition"
|
||||||
distributors:
|
distributors:
|
||||||
@ -450,3 +466,13 @@ voice-pe:
|
|||||||
ship_to: Europe
|
ship_to: Europe
|
||||||
url: https://shop.pimoroni.com/products/home-assistant-voice
|
url: https://shop.pimoroni.com/products/home-assistant-voice
|
||||||
logo: /images/distributors/pimoroni.webp
|
logo: /images/distributors/pimoroni.webp
|
||||||
|
- name: Inet.se
|
||||||
|
ship_from: Sweden
|
||||||
|
ship_to: Europe
|
||||||
|
url: https://www.inet.se/produkt/8310094/home-assistant-voice-preview-edition
|
||||||
|
logo: /images/distributors/inet.webp
|
||||||
|
- name: Pi-Shop.ch
|
||||||
|
ship_from: Switzerland
|
||||||
|
ship_to: Europe
|
||||||
|
url: https://www.pi-shop.ch/home-assistant-voice-preview-edition
|
||||||
|
logo: /images/distributors/pi-shop.webp
|
||||||
|
@ -25,6 +25,7 @@ Triggers from all platforms will include the following data.
|
|||||||
|
|
||||||
| Template variable | Data |
|
| Template variable | Data |
|
||||||
| ---- | ---- |
|
| ---- | ---- |
|
||||||
|
| `trigger.alias` | Alias of the trigger.
|
||||||
| `trigger.id` | The [`id` of the trigger](/docs/automation/trigger/#trigger-id).
|
| `trigger.id` | The [`id` of the trigger](/docs/automation/trigger/#trigger-id).
|
||||||
| `trigger.idx` | Index of the trigger. (The first trigger idx is `0`.)
|
| `trigger.idx` | Index of the trigger. (The first trigger idx is `0`.)
|
||||||
|
|
||||||
|
@ -1539,3 +1539,19 @@ The output of this selector is a list of triggers. For example:
|
|||||||
entity_id: "sensor.outside_temperature"
|
entity_id: "sensor.outside_temperature"
|
||||||
below: 20
|
below: 20
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Example - Merging with existing triggers
|
||||||
|
|
||||||
|
If the trigger(s) should exist within a blueprint that already has some default triggers defined, and an additional customizable trigger should be merged, you need to use the `- triggers` syntax in the blueprint.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example trigger selector
|
||||||
|
input:
|
||||||
|
my_trigger_input:
|
||||||
|
selector:
|
||||||
|
trigger:
|
||||||
|
triggers:
|
||||||
|
- triggers: !input my_trigger_input
|
||||||
|
- platform: numeric_state
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
@ -3,7 +3,7 @@ title: "Packages"
|
|||||||
description: "Describes all there is to know about configuration packages in Home Assistant."
|
description: "Describes all there is to know about configuration packages in Home Assistant."
|
||||||
---
|
---
|
||||||
|
|
||||||
Packages in Home Assistant provide a way to bundle different integration's configuration together. With packages we have a way to include different integrations, or different configuration parts using any of the `!include` directives introduced in [splitting the configuration](/docs/configuration/splitting_configuration).
|
Packages in Home Assistant provide a way to bundle configurations from multiple integrations. With packages, we have a way to include multiple integrations, or parts of integrations using any of the `!include` directives introduced in [splitting the configuration](/docs/configuration/splitting_configuration).
|
||||||
|
|
||||||
Packages are configured under the core `homeassistant/packages` in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package configuration. For example, package `pack_1` would be created as:
|
Packages are configured under the core `homeassistant/packages` in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package configuration. For example, package `pack_1` would be created as:
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ Variables can be templated.
|
|||||||
|
|
||||||
### Scope of variables
|
### Scope of variables
|
||||||
|
|
||||||
Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block.
|
Variables defined by the `variables` {% term action %} have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block.
|
||||||
|
|
||||||
Inside the `if` sequence the `variables` {% term action %} will only alter the `people` variable for that sequence.
|
Inside the `if` sequence the `variables` {% term action %} will only alter the `people` variable for that sequence.
|
||||||
|
|
||||||
@ -858,6 +858,8 @@ Some of the caveats of running {% term actions %} in parallel:
|
|||||||
they too have finished or errored.
|
they too have finished or errored.
|
||||||
- Variables created/modified in one parallelized {% term action %} are not available
|
- Variables created/modified in one parallelized {% term action %} are not available
|
||||||
in another parallelized {% term action %}. Each step in a parallelized has its own scope.
|
in another parallelized {% term action %}. Each step in a parallelized has its own scope.
|
||||||
|
- The response data of a parallelized {% term action %} is however also available outside of its
|
||||||
|
own scope. This is especially useful for parallelizing execution of long-running {% term actions %}.
|
||||||
|
|
||||||
## Stopping a script sequence
|
## Stopping a script sequence
|
||||||
|
|
||||||
|
@ -99,6 +99,8 @@ This creates a backup instantly. You can create a manual backup at any time, irr
|
|||||||
|
|
||||||
### Downloading your local backups
|
### Downloading your local backups
|
||||||
|
|
||||||
|
When downloading the backup from the Home Assistant backup page, it is decrypted on the fly so that you can view the data using your favorite archive tool. This is done for all backup locations and also when you download from Home Assistant Cloud.
|
||||||
|
|
||||||
There are multiple ways to download your local backup from your Home Assistant instance and store it on another device:
|
There are multiple ways to download your local backup from your Home Assistant instance and store it on another device:
|
||||||
|
|
||||||
**Option 1**: Download from the backup page:
|
**Option 1**: Download from the backup page:
|
||||||
|
@ -116,9 +116,6 @@
|
|||||||
let tabContents = dialog.querySelectorAll('.ha-buy-dialog-tab-content');
|
let tabContents = dialog.querySelectorAll('.ha-buy-dialog-tab-content');
|
||||||
let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||||
let region = timezone.split('/')[0].toLowerCase();
|
let region = timezone.split('/')[0].toLowerCase();
|
||||||
let locale = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
||||||
let countryCode = locale.split('-')[1].toLowerCase();
|
|
||||||
|
|
||||||
|
|
||||||
let defaultTab = dialog.querySelector(`.ha-buy-dialog-sidebar-tab[data-tab="#${region}"]`);
|
let defaultTab = dialog.querySelector(`.ha-buy-dialog-sidebar-tab[data-tab="#${region}"]`);
|
||||||
if (defaultTab) {
|
if (defaultTab) {
|
||||||
@ -128,11 +125,6 @@
|
|||||||
defaultTab.classList.add('active');
|
defaultTab.classList.add('active');
|
||||||
let tabContent = document.querySelector(defaultTab.getAttribute('data-tab'));
|
let tabContent = document.querySelector(defaultTab.getAttribute('data-tab'));
|
||||||
tabContent.classList.add('active');
|
tabContent.classList.add('active');
|
||||||
|
|
||||||
let country = tabContent.querySelector(`.ha-buy-dialog-distributor-country[data-code="${countryCode}"]`);
|
|
||||||
if (country) {
|
|
||||||
country.scrollIntoView({ behavior: 'instant', block: 'center' });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -108,7 +108,7 @@ To write the HAOS image to the boot medium on your x86-64 hardware, there are 2
|
|||||||
- This means you will lose all the data as well as the previously installed operating system.
|
- This means you will lose all the data as well as the previously installed operating system.
|
||||||
- Back up your data before carrying out this procedure.
|
- Back up your data before carrying out this procedure.
|
||||||
2. Create a *live operating system* on a USB flash drive:
|
2. Create a *live operating system* on a USB flash drive:
|
||||||
- Follow the [Ubuntu instructions](https://ubuntu.com/tutorials/try-ubuntu-before-you-install) on writing an Ubuntu iso file onto a USB device.
|
- Follow the [Ubuntu Desktop instructions](https://ubuntu.com/tutorials/try-ubuntu-before-you-install) on writing an Ubuntu Desktop iso file onto a USB device.
|
||||||
3. Insert the USB flash drive into the system on which you want to run Home Assistant.
|
3. Insert the USB flash drive into the system on which you want to run Home Assistant.
|
||||||
- Boot the live operating system.
|
- Boot the live operating system.
|
||||||
- You might need to adjust boot order or use F10 (might be a different F-key depending on the BIOS) to select the USB flash drive as boot device.
|
- You might need to adjust boot order or use F10 (might be a different F-key depending on the BIOS) to select the USB flash drive as boot device.
|
||||||
|
@ -85,19 +85,26 @@
|
|||||||
title="GitHub"
|
title="GitHub"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
><iconify-icon icon="simple-icons:github"></iconify-icon></a>
|
><iconify-icon icon="simple-icons:github"></iconify-icon></a>
|
||||||
|
<br />
|
||||||
<a
|
<a
|
||||||
rel="me"
|
rel="me"
|
||||||
href="https://fosstodon.org/@homeassistant"
|
href="https://fosstodon.org/@homeassistant"
|
||||||
title="Mastodon"
|
title="Mastodon"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
><iconify-icon icon="simple-icons:mastodon"></iconify-icon></a>
|
><iconify-icon icon="simple-icons:mastodon"></iconify-icon></a>
|
||||||
<br />
|
<a
|
||||||
|
rel="me"
|
||||||
|
href="https://bsky.app/profile/home-assistant.io"
|
||||||
|
title="Bluesky"
|
||||||
|
target="_blank"
|
||||||
|
><iconify-icon icon="simple-icons:bluesky"></iconify-icon></a>
|
||||||
<a
|
<a
|
||||||
rel="me"
|
rel="me"
|
||||||
href="https://x.com/home_assistant"
|
href="https://x.com/home_assistant"
|
||||||
title="X"
|
title="X"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
><iconify-icon icon="simple-icons:x"></iconify-icon></a>
|
><iconify-icon icon="simple-icons:x"></iconify-icon></a>
|
||||||
|
<br />
|
||||||
<a
|
<a
|
||||||
rel="me"
|
rel="me"
|
||||||
href="https://www.facebook.com/homeassistantio"
|
href="https://www.facebook.com/homeassistantio"
|
||||||
|
@ -292,8 +292,8 @@ elements:
|
|||||||
right: 25px
|
right: 25px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: up
|
movement: up
|
||||||
@ -304,8 +304,8 @@ elements:
|
|||||||
right: 25px
|
right: 25px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: down
|
movement: down
|
||||||
@ -316,8 +316,8 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 25px
|
bottom: 25px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: left
|
movement: left
|
||||||
@ -328,8 +328,8 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 25px
|
bottom: 25px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: right
|
movement: right
|
||||||
@ -340,8 +340,8 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: left_up
|
movement: left_up
|
||||||
@ -352,8 +352,8 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: right_up
|
movement: right_up
|
||||||
@ -364,8 +364,8 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: left_down
|
movement: left_down
|
||||||
@ -376,8 +376,8 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: right_down
|
movement: right_down
|
||||||
@ -388,14 +388,14 @@ elements:
|
|||||||
bottom: 25px
|
bottom: 25px
|
||||||
right: 25px
|
right: 25px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
service_data:
|
service_data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: zoom_in
|
movement: zoom_in
|
||||||
hold_action:
|
hold_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
service: amcrest.ptz_control
|
perform_action: amcrest.ptz_control
|
||||||
data:
|
data:
|
||||||
entity_id: camera.lakehouse
|
entity_id: camera.lakehouse
|
||||||
movement: zoom_out
|
movement: zoom_out
|
||||||
|
@ -569,3 +569,4 @@ cards:
|
|||||||
- Some devices experience disconnects every 15 seconds. This is typically resolved by rebooting the Android TV device after the initial setup of the integration.
|
- Some devices experience disconnects every 15 seconds. This is typically resolved by rebooting the Android TV device after the initial setup of the integration.
|
||||||
- If you are not able to connect to the Android TV device, or are asked to pair it again and again, try force-stopping the Android TV Remote Service and clearing its storage. On the Android TV device, go to **Settings** > **Apps** > **Show system apps**. Then, select **Android TV Remote Service** > **Storage** > **Clear storage**. You will have to pair again.
|
- If you are not able to connect to the Android TV device, or are asked to pair it again and again, try force-stopping the Android TV Remote Service and clearing its storage. On the Android TV device, go to **Settings** > **Apps** > **Show system apps**. Then, select **Android TV Remote Service** > **Storage** > **Clear storage**. You will have to pair again.
|
||||||
- Some onscreen keyboards enabled by TV manufacturers do not support concurrent virtual and onscreen keyboard use. This presents whenever a text field is selected, such as "search" where a constant **use the keyboard on your mobile device** will show, preventing you from opening the onscreen keyboard to type. This can be overcome by either disabling your 3rd party keyboard and using the default Gboard keyboard or by deselecting **Enable IME** in the **Configure** page of the integration.
|
- Some onscreen keyboards enabled by TV manufacturers do not support concurrent virtual and onscreen keyboard use. This presents whenever a text field is selected, such as "search" where a constant **use the keyboard on your mobile device** will show, preventing you from opening the onscreen keyboard to type. This can be overcome by either disabling your 3rd party keyboard and using the default Gboard keyboard or by deselecting **Enable IME** in the **Configure** page of the integration.
|
||||||
|
- If you can't turn on your Nvidia Shield device, go to **Settings** > **Remotes & accessories** > **Simplified wake buttons** and disable the following options: **SHIELD 2019 Remote: Wake on power and Netflix buttons only** and **Controllers: Wake on NVIDIA or logo buttons only**.
|
||||||
|
46
source/_integrations/azure_storage.markdown
Normal file
46
source/_integrations/azure_storage.markdown
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
title: Azure Storage
|
||||||
|
description: Instructions on how to setup Azure storage accounts to be used with backups.
|
||||||
|
ha_release: 2025.3
|
||||||
|
ha_category:
|
||||||
|
- Backup
|
||||||
|
ha_iot_class: Cloud Polling
|
||||||
|
ha_config_flow: true
|
||||||
|
ha_domain: azure_storage
|
||||||
|
ha_codeowners:
|
||||||
|
- '@zweckj'
|
||||||
|
ha_integration_type: service
|
||||||
|
---
|
||||||
|
|
||||||
|
This integration allows you to use [Azure storage accounts](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) for use with Home Assistant Backups.
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
{% configuration_basic %}
|
||||||
|
Storage account name:
|
||||||
|
description: "The name of the storage account. Only the name, nothing else."
|
||||||
|
Container name:
|
||||||
|
description: "Blob container name to store the backups. If the container does not exist, it will be created. Defaults to `hass-backups`."
|
||||||
|
Storage account key:
|
||||||
|
description: "One of the two storage account keys. Used to authenticate against the storage account"
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
|
|
||||||
|
## Known Limitations
|
||||||
|
|
||||||
|
- Only storage accounts that have a default URL `storageaccountname.blob.core.windows.net` are supported at this point
|
||||||
|
- Since only key based authentication is possible, this has to be enabled in your storage account.
|
||||||
|
|
||||||
|
## Removing the integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal. No extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
{% details "Authentication failure" %}
|
||||||
|
|
||||||
|
Check that your storage account allows [`Shared Key` access](https://learn.microsoft.com/en-us/azure/storage/common/shared-key-authorization-prevent?tabs=portal#remediate-authorization-via-shared-key).
|
||||||
|
|
||||||
|
{% enddetails %}
|
@ -53,7 +53,7 @@ The **Bang & Olufsen** integration uses the [Mozart API](https://bang-olufsen.gi
|
|||||||
|
|
||||||
## Supported features
|
## Supported features
|
||||||
|
|
||||||
Currently, a single device with a `media_player` entity is created for each added physical device. For advanced automations, [events](#automations) are fired in Home Assistant.
|
Currently, for each added physical device, a single device is created that includes a `media_player` entity and, if available, `event` entities.
|
||||||
|
|
||||||
### Media player
|
### Media player
|
||||||
|
|
||||||
@ -71,6 +71,32 @@ A number of features are available through the media player entity:
|
|||||||
- Connect to, expand to or unexpand devices.
|
- Connect to, expand to or unexpand devices.
|
||||||
- Set all connected Beolink devices to standby.
|
- Set all connected Beolink devices to standby.
|
||||||
|
|
||||||
|
### Events
|
||||||
|
|
||||||
|
Event entities are created for each of the physical controls on your device. These controls usually have their own behaviors, so using them for automations is not always ideal.
|
||||||
|
Available event entities:
|
||||||
|
|
||||||
|
- Bluetooth
|
||||||
|
- Microphone
|
||||||
|
- Next
|
||||||
|
- Play / Pause
|
||||||
|
- Favourite 1
|
||||||
|
- Favourite 2
|
||||||
|
- Favourite 3
|
||||||
|
- Favourite 4
|
||||||
|
- Previous
|
||||||
|
- Volume
|
||||||
|
|
||||||
|
All of these event entities support the following event types:
|
||||||
|
|
||||||
|
- Release of short press
|
||||||
|
- Long press
|
||||||
|
- Release of long press
|
||||||
|
- Very long press
|
||||||
|
- Release of very long press
|
||||||
|
|
||||||
|
All devices except the [Beoconnect Core](https://www.bang-olufsen.com/en/dk/accessories/beoconnect-core) support device controls.
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
Currently, some features of the Mozart platform are not available through the [public API](https://github.com/bang-olufsen/mozart-open-api). Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features:
|
Currently, some features of the Mozart platform are not available through the [public API](https://github.com/bang-olufsen/mozart-open-api). Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features:
|
||||||
@ -484,30 +510,6 @@ target:
|
|||||||
|
|
||||||
WebSocket notifications received from the device are fired as events in Home Assistant. These can be received by listening to `bang_olufsen_websocket_event` event types, where `device_id` or `serial_number` can be used to differentiate devices.
|
WebSocket notifications received from the device are fired as events in Home Assistant. These can be received by listening to `bang_olufsen_websocket_event` event types, where `device_id` or `serial_number` can be used to differentiate devices.
|
||||||
|
|
||||||
### Events
|
|
||||||
|
|
||||||
Event entities are created for each of the physical controls on your device. These controls usually have their own behaviors, so using them for automations is not always ideal.
|
|
||||||
Available event entities:
|
|
||||||
- Bluetooth
|
|
||||||
- Microphone
|
|
||||||
- Next
|
|
||||||
- Play / Pause
|
|
||||||
- Favourite 1
|
|
||||||
- Favourite 2
|
|
||||||
- Favourite 3
|
|
||||||
- Favourite 4
|
|
||||||
- Previous
|
|
||||||
- Volume
|
|
||||||
|
|
||||||
All of these event entities support the following event types:
|
|
||||||
- Release of short press
|
|
||||||
- Long press
|
|
||||||
- Release of long press
|
|
||||||
- Very long press
|
|
||||||
- Release of very long press
|
|
||||||
|
|
||||||
All devices except the [Beoconnect Core](https://www.bang-olufsen.com/en/dk/accessories/beoconnect-core) support device controls.
|
|
||||||
|
|
||||||
### Getting Deezer URIs
|
### Getting Deezer URIs
|
||||||
|
|
||||||
To find Deezer playlist, album URIs, and user IDs for Deezer flows, the Deezer website has to be accessed. When navigating to an album, the URL will look something like: <https://www.deezer.com/en/album/ALBUM_ID>, and this needs to be converted to: `album:ALBUM_ID` and the same applies to playlists, which have the format: `playlist:PLAYLIST_ID`.
|
To find Deezer playlist, album URIs, and user IDs for Deezer flows, the Deezer website has to be accessed. When navigating to an album, the URL will look something like: <https://www.deezer.com/en/album/ALBUM_ID>, and this needs to be converted to: `album:ALBUM_ID` and the same applies to playlists, which have the format: `playlist:PLAYLIST_ID`.
|
||||||
|
@ -282,8 +282,8 @@ The following remote adapters are supported:
|
|||||||
- Single active connection: ESPHome ESP32 device with firmware 2022.9.3 or later
|
- Single active connection: ESPHome ESP32 device with firmware 2022.9.3 or later
|
||||||
- Multiple active connections: ESPHome ESP32 device with firmware 2022.11.0 or later
|
- Multiple active connections: ESPHome ESP32 device with firmware 2022.11.0 or later
|
||||||
- [Shelly](/integrations/shelly/)
|
- [Shelly](/integrations/shelly/)
|
||||||
- Bluetooth advertisement listening: Shelly v2 device with firmware 12.0 or later
|
- Bluetooth advertisement listening: Shelly Gen2+ device
|
||||||
- Bluetooth advertisement bundling: Shelly v2 device with firmware 12.0 or later
|
- Bluetooth advertisement bundling: Shelly Gen2+ device
|
||||||
- Single active connection: not supported
|
- Single active connection: not supported
|
||||||
- Multiple active connections: not supported
|
- Multiple active connections: not supported
|
||||||
|
|
||||||
|
@ -27,18 +27,49 @@ related:
|
|||||||
title: Bring!
|
title: Bring!
|
||||||
---
|
---
|
||||||
|
|
||||||
The **Bring!** integration allows you to interact with your [Bring!](https://www.getbring.com/) shopping lists within Home Assistant.
|
The **Bring!** integration allows you to sync your [Bring!](https://www.getbring.com/) shopping lists with Home Assistant.
|
||||||
|
|
||||||
For authentication, the integration requires the `email` and `password` you used for your Bring! account. If you want to automatically receive notifications via the Bring! app when Home Assistant adds or removes an item from the list, you should use a dedicated account (such as `email: your.name+ha@gmail.com`) to connect Home Assistant with [Bring!](https://www.getbring.com/).
|
## About Bring!
|
||||||
|
|
||||||
|
**Bring!** is a grocery shopping list app that allows users to create shared lists and organize grocery shopping with family, partners, or roommates.
|
||||||
|
|
||||||
|
Available as a mobile app on [Google Play for Android](https://play.google.com/store/apps/details?id=ch.publisheria.bring) and the [App Store for iOS](https://itunes.apple.com/app/apple-store/id580669177). **Bring!** also offers a web version at [web.getbring.com](https://web.getbring.com).
|
||||||
|
|
||||||
|
## How you can use this integration
|
||||||
|
|
||||||
|
- **Automated notifications**: Receive alerts on your phone when essential items are added to your list or when the quantity of items reaches a set value.
|
||||||
|
- **List updates based on events**: Automatically add items to your shopping list when appliances are low on supplies, like dishwasher salt, or need routine maintenance, such as tub cleaner for the washer.
|
||||||
|
- **Voice control**: Use voice assistants connected to Home Assistant to add items to your **Bring!** list.
|
||||||
|
- **Geofencing**: Receive reminders when you are near a specific store and need to pick up items, based on your location.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
For authentication, the integration requires the `email` and `password` of your **Bring!** account. If you don’t have an account, you can sign up via the mobile app or the web version.
|
||||||
|
|
||||||
|
If you signed up using **Apple ID**, **Google Sign-in**, or **Facebook Login**, you will need to create a password to use the integration.
|
||||||
|
|
||||||
|
- On mobile: Open the Bring! app and go to **Profile** > **More settings** > **Change password**.
|
||||||
|
- On the web: Visit **Settings** > **Reset password** or go directly to [Reset Password](https://web.getbring.com/app/settings/resetpassword).
|
||||||
|
|
||||||
|
You can still log in with your existing authentication method afterward.
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
### Configuration parameters
|
||||||
|
|
||||||
|
{% configuration_basic %}
|
||||||
|
Email:
|
||||||
|
description: "The email address associated with your Bring! account."
|
||||||
|
Password:
|
||||||
|
description: "The password to log in to your Bring! account."
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
## Sensors
|
## Sensors
|
||||||
|
|
||||||
- **Urgent:** Shows the number of items tagged with the **Urgent** badge on the shopping list. Completed items are excluded.
|
- **Urgent**: Shows the number of items tagged with the **Urgent** badge on the shopping list. Completed items are excluded.
|
||||||
- **On occasion:** Displays the count of items marked with the **If convenient** badge.
|
- **On occasion**: Displays the count of items marked with the **If convenient** badge.
|
||||||
- **Discount only:** Indicates the number of items tagged with the **Offer** badge.
|
- **Discount only**: Indicates the number of items tagged with the **Offer** badge.
|
||||||
- **Region & Language:** The sensor can be used for diagnostics. If everything is set correctly, it will display the selected region for the shopping list. If it shows **Unknown**, the region has not been set properly in the **Bring!** app.
|
- **Region & Language**: The sensor can be used for diagnostics. If everything is set correctly, it will display the selected region for the shopping list. If it shows **Unknown**, the region has not been set properly in the **Bring!** app.
|
||||||
- **List access**: Indicates whether the shopping list is **personal** (private) or **shared** (accessible to others).
|
- **List access**: Indicates whether the shopping list is **personal** (private) or **shared** (accessible to others).
|
||||||
|
|
||||||
## Events
|
## Events
|
||||||
@ -51,22 +82,39 @@ You can use the actions from the [to-do list](/integrations/todo/) to create, up
|
|||||||
|
|
||||||
### Notifications
|
### Notifications
|
||||||
|
|
||||||
The **Bring** integration offers an action to send push notifications to the Bring! mobile apps of other members of a shared shopping list. The Bring! mobile app has 4 predefined notification types. Note: If you want to receive these notifications yourself, you need to use a dedicated account as mentioned above.
|
The **Bring!** integration offers an action to send push notifications to the Bring! mobile apps of other members of a shared shopping list. The Bring! mobile app has 4 predefined notification types.
|
||||||
|
|
||||||
| Data attribute | Optional | Description |
|
{% note %}
|
||||||
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| `target` | no | Target Bring! list(s) whose members should be notified. |
|
If you want to receive these notifications, you must use a dedicated account, as outlined in the [known limitations](#known-limitations).
|
||||||
| `message` | no | Type of push notification to send to list members. See [Notification types](#available-notification-types). |
|
|
||||||
| `item` | yes | **Required for `urgent_message`.** Article name to include in the message. For example: *Urgent Message - Please buy cilantro urgently*. |
|
{% endnote %}
|
||||||
|
|
||||||
|
| Data attribute | Optional | Description |
|
||||||
|
| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `target` | no | Target Bring! list(s) whose members should be notified. |
|
||||||
|
| `message` | no | Type of push notification to send to list members. See [Notification types](#available-notification-types). |
|
||||||
|
| `item` | yes | Required for `urgent_message`. Item to include in the message. For example: *Attention! Attention! - We still urgently need: Cilantro*. |
|
||||||
|
|
||||||
### Available notification types
|
### Available notification types
|
||||||
|
|
||||||
| Notification type | Text of notification |
|
| Notification type | Name of notification |
|
||||||
| ----------------- | --------------------------------------------------- |
|
| ------------------- | -------------------------------------------------------------- |
|
||||||
| going_shopping | I'm going shopping! - Last chance to make changes |
|
| `going_shopping` | I'm going shopping! - Last chance for adjustments |
|
||||||
| changed_list | List updated - Take a look at the articles |
|
| `changed_list` | I changed the list! - Take a look at the items |
|
||||||
| shopping_done | Shopping done - The fridge is well stocked |
|
| `shopping_done` | The shopping is done! - The fridge is well stocked |
|
||||||
| urgent_message | Urgent Message - Please buy `Article name` urgently |
|
| `urgent_message` | Attention! Attention! - We still urgently need: `[Items]` |
|
||||||
|
|
||||||
|
{% note %}
|
||||||
|
|
||||||
|
The notification that list members receive differs from the label shown in the Bring! app. This variation depends not only on the recipient’s language settings but also on the sender's profile name. Additionally, notifications may change with new app updates. Here are some example notifications:
|
||||||
|
|
||||||
|
- `name` is going shopping for "`shopping list name`"! Last chance to make changes
|
||||||
|
- `name` went shopping for "`shopping list name`"! The fridge is well stocked
|
||||||
|
- `name` updated the list "`shopping list name`"! Take a look at the articles
|
||||||
|
- Attention, something's missing! Please buy `item` urgently
|
||||||
|
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
### Sending a going shopping notification
|
### Sending a going shopping notification
|
||||||
|
|
||||||
@ -94,3 +142,83 @@ actions:
|
|||||||
message: urgent_message
|
message: urgent_message
|
||||||
item: Cilantro
|
item: Cilantro
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Automations
|
||||||
|
|
||||||
|
Get started with these automation examples for **Bring!**, each featuring ready-to-use blueprints!
|
||||||
|
|
||||||
|
### Grocery shopping reminder 🛒
|
||||||
|
|
||||||
|
Get notified when it's time to go grocery shopping. A notification is sent when your shopping list reaches a set threshold or when urgent items are added.
|
||||||
|
|
||||||
|
{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/bring-grocery-shopping-reminder/843123" %}
|
||||||
|
|
||||||
|
{% details "Example YAML configuration" %}
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: todo.shopping_list
|
||||||
|
above: 10
|
||||||
|
id: shopping list too long
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.shopping_list_urgent
|
||||||
|
above: 0
|
||||||
|
id: shopping is urgent
|
||||||
|
actions:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: shopping list too long
|
||||||
|
sequence:
|
||||||
|
- action:
|
||||||
|
- action: notify.notify
|
||||||
|
data:
|
||||||
|
message: >-
|
||||||
|
The list is getting long, plan a trip to the grocery shop in
|
||||||
|
the next days
|
||||||
|
title: Shopping needed soon 🛒
|
||||||
|
- conditions:
|
||||||
|
- condition: trigger
|
||||||
|
id: shopping is urgent
|
||||||
|
sequence:
|
||||||
|
- action:
|
||||||
|
- action: notify.notify
|
||||||
|
data:
|
||||||
|
title: 🚨 Time to go shopping! 🛒
|
||||||
|
message: Urgent groceries needed! Grab your shopping bag and go!
|
||||||
|
- delay:
|
||||||
|
hours: 1
|
||||||
|
mode: single
|
||||||
|
alias: "Bring!: Grocery shopping reminder 🛒"
|
||||||
|
description: "Get notified when it's time to go grocery shopping. A notification is sent when your shopping list reaches a set threshold or when urgent items are added."
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
## Data updates
|
||||||
|
|
||||||
|
This integration syncs your lists by {% term polling %} the **Bring!** service every 90 seconds or immediately after an action is performed in Home Assistant, such as adding an item. If you prefer a less frequent update, **custom polling interval** can also be defined — see [Defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval) for details.
|
||||||
|
|
||||||
|
## Known limitations
|
||||||
|
|
||||||
|
- Changes made in Home Assistant are reflected instantly in the **Bring!** app, while changes in the Bring! app may be delayed by up to 90 seconds due to the polling interval.
|
||||||
|
- To receive push notifications in the **Bring!** app when items are added or removed in Home Assistant, or when triggered by the `bring.send_message` action, it is recommended to use a dedicated account (such as `email:name+ha@example.com`) when setting up the integration.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
The **Bring!** integration relies on an active internet connection to communicate with Bring!. If you encounter issues, verify that your network connection is stable. Additionally, the Bring! service itself may experience downtime, whether unexpected or due to scheduled maintenance.
|
||||||
|
|
||||||
|
- A **502 - Bad Gateway** error (`aiohttp.client_exceptions.ClientResponseError: 502, message='Bad Gateway'`) is known to occur occasionally (1–2 times per day) but is usually temporary. The integration will retry automatically after 90 seconds, so there’s no need to take action.
|
||||||
|
|
||||||
|
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs, stop the debug logging again (*download of debug log file will start automatically*). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
|
||||||
|
|
||||||
|
## Remove integration
|
||||||
|
|
||||||
|
This integration can be removed by following these steps:
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
20
source/_integrations/burbank_water_and_power.markdown
Normal file
20
source/_integrations/burbank_water_and_power.markdown
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: Burbank Water and Power (BWP)
|
||||||
|
description: Get energy usage from Burbank Water and Power (BWP) using the Opower integration
|
||||||
|
ha_category:
|
||||||
|
- Energy
|
||||||
|
- Sensor
|
||||||
|
ha_release: 2025.3
|
||||||
|
ha_domain: burbank_water_and_power
|
||||||
|
ha_integration_type: virtual
|
||||||
|
ha_supporting_domain: opower
|
||||||
|
ha_supporting_integration: Opower
|
||||||
|
ha_codeowners:
|
||||||
|
- '@tronikos'
|
||||||
|
ha_config_flow: true
|
||||||
|
ha_platforms:
|
||||||
|
- sensor
|
||||||
|
ha_iot_class: Cloud Polling
|
||||||
|
---
|
||||||
|
|
||||||
|
{% include integrations/supported_brand.md %}
|
@ -311,6 +311,27 @@ retain:
|
|||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
swing_horizontal_mode_command_template:
|
||||||
|
description: A template to render the value sent to the `swing_horizontal_mode_command_topic` with.
|
||||||
|
required: false
|
||||||
|
type: template
|
||||||
|
swing_horizontal_mode_command_topic:
|
||||||
|
description: The MQTT topic to publish commands to change the swing horizontal mode.
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
swing_horizontal_mode_state_template:
|
||||||
|
description: A template to render the value received on the `swing_horizontal_mode_state_topic` with.
|
||||||
|
required: false
|
||||||
|
type: template
|
||||||
|
swing_horizontal_mode_state_topic:
|
||||||
|
description: The MQTT topic to subscribe for changes of the HVAC swing horizontal mode. If this is not set, the swing horizontal mode works in optimistic mode (see below).
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
swing_horizontal_modes:
|
||||||
|
description: A list of supported swing horizontal modes.
|
||||||
|
required: false
|
||||||
|
default: ['on', 'off']
|
||||||
|
type: list
|
||||||
swing_mode_command_template:
|
swing_mode_command_template:
|
||||||
description: A template to render the value sent to the `swing_mode_command_topic` with.
|
description: A template to render the value sent to the `swing_mode_command_topic` with.
|
||||||
required: false
|
required: false
|
||||||
@ -461,6 +482,9 @@ mqtt:
|
|||||||
- "off"
|
- "off"
|
||||||
- "cool"
|
- "cool"
|
||||||
- "fan_only"
|
- "fan_only"
|
||||||
|
swing_horizontal_modes:
|
||||||
|
- "on"
|
||||||
|
- "off"
|
||||||
swing_modes:
|
swing_modes:
|
||||||
- "on"
|
- "on"
|
||||||
- "off"
|
- "off"
|
||||||
@ -478,6 +502,7 @@ mqtt:
|
|||||||
mode_command_template: "{{ value if value=="off" else "on" }}"
|
mode_command_template: "{{ value if value=="off" else "on" }}"
|
||||||
temperature_command_topic: "study/ac/temperature/set"
|
temperature_command_topic: "study/ac/temperature/set"
|
||||||
fan_mode_command_topic: "study/ac/fan/set"
|
fan_mode_command_topic: "study/ac/fan/set"
|
||||||
|
swing_horizontal_mode_command_topic: "study/ac/swingH/set"
|
||||||
swing_mode_command_topic: "study/ac/swing/set"
|
swing_mode_command_topic: "study/ac/swing/set"
|
||||||
precision: 1.0
|
precision: 1.0
|
||||||
```
|
```
|
||||||
|
@ -45,6 +45,7 @@ Known supported devices:
|
|||||||
- Denon AVR-X3500H
|
- Denon AVR-X3500H
|
||||||
- Denon AVR-X3600H
|
- Denon AVR-X3600H
|
||||||
- Denon AVR-X3700H
|
- Denon AVR-X3700H
|
||||||
|
- Denon AVR-X3800H
|
||||||
- Denon AVC-X3800H
|
- Denon AVC-X3800H
|
||||||
- Denon AVR-X4100W
|
- Denon AVR-X4100W
|
||||||
- Denon AVR-X4300H
|
- Denon AVR-X4300H
|
||||||
@ -64,6 +65,7 @@ Known supported devices:
|
|||||||
- Denon AVR-3312
|
- Denon AVR-3312
|
||||||
- Denon AVR-3313CI
|
- Denon AVR-3313CI
|
||||||
- Denon AVR-4810
|
- Denon AVR-4810
|
||||||
|
- Denon AVR-E300
|
||||||
- Denon AVR-S650H
|
- Denon AVR-S650H
|
||||||
- Denon AVC-S660H
|
- Denon AVC-S660H
|
||||||
- Denon AVR-S710W
|
- Denon AVR-S710W
|
||||||
|
@ -18,7 +18,9 @@ The Dexcom integration allows you to view your CGM data from [Dexcom](https://ww
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
You will need to set up the [Dexcom Share](https://provider.dexcom.com/education-research/cgm-education-use/videos/setting-dexcom-share-and-follow) feature in your Dexcom G6 App to use this integration. Enabling the Dexcom Share service requires setup of at least one follower. The integration will use the Dexcom user's credentials, not the follower's credentials.
|
You will need to set up the Dexcom Share feature in your Dexcom [G6](https://provider.dexcom.com/education-research/cgm-education-use/videos/setting-dexcom-share-and-follow) or [G7](https://www.dexcom.com/faqs/how-do-i-share-my-dexcom-g7-glucose-data-with-followers) app to use this integration. Enabling the Dexcom Share service requires setup of at least one follower. The integration will use the Dexcom user's credentials, not the follower's credentials.
|
||||||
|
|
||||||
|
Your Dexcom account must have an email address—not a phone number—as its primary user ID. If you normally log into your Dexcom account using a phone number, then this integration will not work. It is unfortunately not possible to change from a phone to email user ID after an account is created, so you will need to create a new Dexcom account in this case.
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
@ -24,3 +24,53 @@ This integration uses the official [Electric Kiwi API](https://developer.electri
|
|||||||
{% note %}
|
{% note %}
|
||||||
The configuration uses `client_id` and `client_secret` provided to Home Assistant, so all you need to do is install the integration and authenticate using your account credentials.
|
The configuration uses `client_id` and `client_secret` provided to Home Assistant, so all you need to do is install the integration and authenticate using your account credentials.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
|
|
||||||
|
## Supported functionality
|
||||||
|
|
||||||
|
The integration provides `sensor` entities with account balances, billing, and hour of free power start and end time. It also provides a `select` entity to change the hour of free power.
|
||||||
|
|
||||||
|
## Use cases
|
||||||
|
|
||||||
|
This integration can be used as part of an automation, for example, to turn on/off appliances automatically.
|
||||||
|
|
||||||
|
## Example automations
|
||||||
|
|
||||||
|
{% details "Run the heat pump during the hour of free power" %}
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Turn on expensive heat pump"
|
||||||
|
description: "Turn on the heat pump when the hour of free power starts"
|
||||||
|
triggers:
|
||||||
|
- at: sensor.hour_of_free_power_start
|
||||||
|
trigger: time
|
||||||
|
actions:
|
||||||
|
- action: climate.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: climate.heat_pump
|
||||||
|
data: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Turn off expensive heat pump"
|
||||||
|
description: "Turn off the heat pump when the hour of free power ends"
|
||||||
|
triggers:
|
||||||
|
- at: sensor.hour_of_free_power_end
|
||||||
|
trigger: time
|
||||||
|
actions:
|
||||||
|
- action: climate.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: climate.heat_pump
|
||||||
|
data: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
## Remove integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal, no extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
@ -95,3 +95,18 @@ sensor:
|
|||||||
```
|
```
|
||||||
|
|
||||||
The entity will be named `Temperature` and will default to having an entity_id of `sensor.temperature`.
|
The entity will be named `Temperature` and will default to having an entity_id of `sensor.temperature`.
|
||||||
|
|
||||||
|
## Obtaining logs from the device
|
||||||
|
|
||||||
|
1. To have the device send logs to Home Assistant, in the [options flow](#options), enable `Subscribe to logs from the device`.
|
||||||
|
- They are logged under the `homeassistant.components.esphome` logger at the equivalent level.
|
||||||
|
|
||||||
|
2. To adjust the logging level, there are two options:
|
||||||
|
- enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics),
|
||||||
|
- or use the [Developer Tools](/docs/tools/dev-tools/#actions-tab) to call the [`logger.set_level`](/integrations/logger/#action-set_level) action to specify the desired level:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
action: logger.set_level
|
||||||
|
data:
|
||||||
|
homeassistant.components.esphome: debug
|
||||||
|
```
|
||||||
|
@ -24,6 +24,8 @@ Integrates [Flexit](https://www.flexit.no/en/) Nordic series air handling unit i
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
Your Flexit device should be equipped with an ethernet port, and no additional modules should be required. This integration communicates with the BACnet protocol over Ethernet.
|
||||||
|
|
||||||
To configure the integration, you need to obtain the IP address and Device ID for the unit.
|
To configure the integration, you need to obtain the IP address and Device ID for the unit.
|
||||||
|
|
||||||
1. Open the Flexit Go app on your mobile.
|
1. Open the Flexit Go app on your mobile.
|
||||||
@ -33,6 +35,15 @@ To configure the integration, you need to obtain the IP address and Device ID fo
|
|||||||
5. Go to **More** > **Installer** > **Communication** > **BACnet settings**.
|
5. Go to **More** > **Installer** > **Communication** > **BACnet settings**.
|
||||||
6. Note down the **IP address** and **Device ID**.
|
6. Note down the **IP address** and **Device ID**.
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
{% configuration_basic %}
|
||||||
|
IP address:
|
||||||
|
description: "The IP address of your Flexit Nordic device."
|
||||||
|
Device ID:
|
||||||
|
description: "The Device ID of your Flexit Nordic device. This is usually 2."
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
## Platforms
|
## Platforms
|
||||||
|
|
||||||
This integration supports the following platforms.
|
This integration supports the following platforms.
|
||||||
@ -96,4 +107,12 @@ If you need to shut down the unit, make sure to take all necessary precautions,
|
|||||||
|
|
||||||
Furthermore, Flexit recommends unplugging the unit from the power socket before replacing a filter. To prevent damage, always initiate a controlled shutdown from the control panel (or, in the future, from an action in Home Assistant) before unplugging the device.
|
Furthermore, Flexit recommends unplugging the unit from the power socket before replacing a filter. To prevent damage, always initiate a controlled shutdown from the control panel (or, in the future, from an action in Home Assistant) before unplugging the device.
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
## Data updates
|
||||||
|
|
||||||
|
The integration {% term polling polls %} data from the Flexit device every 60 seconds by default. This interval is not configurable.
|
||||||
|
|
||||||
|
## Removing the integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal. No extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
@ -18,10 +18,107 @@ ha_integration_type: service
|
|||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
{% configuration_basic %}
|
||||||
|
Username:
|
||||||
|
description: "Username used to log into Flick Electric."
|
||||||
|
Password:
|
||||||
|
description: "Password used to log into Flick Electric."
|
||||||
|
Client ID:
|
||||||
|
description: "Client ID to authenticate (see below note)."
|
||||||
|
Client Secret:
|
||||||
|
description: "Client Secret to authenticate (see below note)."
|
||||||
|
Account:
|
||||||
|
description: "Address of the account to add (required when user has multiple active accounts)."
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
|
|
||||||
The configuration uses the client ID and secret used by the app at the time of release. If this stops working, you can find the new ones by using a MITM proxy with the mobile app. The app will call `https://api.flick.energy/identity/oauth/token` with the `client_id` and `client_secret`.
|
For most users, Client ID/Secret can be left blank.
|
||||||
|
|
||||||
You can then use these values during the configuration.
|
Home Assistant by default uses the client ID and secret from the Flick Electric mobile app at the time of release.
|
||||||
|
|
||||||
|
If this stops working, you can find the new ones by using a MITM proxy with the mobile app. The app will call `https://api.flick.energy/identity/oauth/token` with the `client_id` and `client_secret`.
|
||||||
|
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
|
## Supported functionality
|
||||||
|
|
||||||
|
The integration provides a `sensor` entity with the power price for the current time interval.
|
||||||
|
|
||||||
|
The attributes of the entity have a breakdown of the pricing components, such as `generation` and `network` charges.
|
||||||
|
|
||||||
|
{% note %}
|
||||||
|
|
||||||
|
The power price shown is in cents, and is *excluding <abbr title="goods and services tax">GST</abbr>*. You can customize this by creating a template sensor:
|
||||||
|
|
||||||
|
1. Go to
|
||||||
|
{% my helpers title="**Settings** > **Devices** & **Services** > **Helpers**" %} and click the add button;
|
||||||
|
2. Choose the **{% my config_flow_start domain="template" title="Template" %}** option
|
||||||
|
3. Select **Add a template sensor**.
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
To add GST:
|
||||||
|
|
||||||
|
- **State template**: `{{ states.sensor.flick_power_price * 1.15 }}`
|
||||||
|
- **Unit of measurement**: `¢/kWh`
|
||||||
|
|
||||||
|
To convert to dollars:
|
||||||
|
|
||||||
|
- **State template**: `{{ states.sensor.flick_power_price / 100 }}`
|
||||||
|
- **Unit of measurement**: `$/kWh`
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
|
## Use cases
|
||||||
|
|
||||||
|
This integration can be used as part of an automation, for example to turn on/off appliances automatically.
|
||||||
|
|
||||||
|
## Example automations
|
||||||
|
|
||||||
|
{% details "Turn off the heat pump when price is above 40¢/kWH" %}
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Turn off expensive heat pump"
|
||||||
|
description: "Turn off the heat pump when price is above 40¢/kWH"
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.flick_power_price
|
||||||
|
above: 40
|
||||||
|
actions:
|
||||||
|
- action: climate.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: climate.heat_pump
|
||||||
|
data: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
## Data updates
|
||||||
|
|
||||||
|
The integration will {% term polling poll %} the Flick Electric API every 5 minutes to check for the current power price. You can also use the `homeassistant.update_entity` action to trigger a refresh on-demand.
|
||||||
|
|
||||||
|
## Remove integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal, no extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
{% details "Cannot get pricing for this account. Please check user permissions" %}
|
||||||
|
|
||||||
|
API is unable to find pricing for the selected account. Check with Flick Electric to ensure that your user is configured correctly.
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
{% details "No services are active on this Flick account" %}
|
||||||
|
|
||||||
|
Only active accounts are supported by this integration. If your account is active but is not able to be selected, check with Flick Electric to ensure that it is showing as active in their system.
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
@ -73,10 +73,11 @@ elements:
|
|||||||
right: 25px
|
right: 25px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: up
|
movement: up
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-down"
|
icon: "mdi:arrow-down"
|
||||||
@ -85,10 +86,11 @@ elements:
|
|||||||
right: 25px
|
right: 25px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: down
|
movement: down
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-left"
|
icon: "mdi:arrow-left"
|
||||||
@ -97,10 +99,11 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 25px
|
bottom: 25px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: left
|
movement: left
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-right"
|
icon: "mdi:arrow-right"
|
||||||
@ -109,10 +112,11 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 25px
|
bottom: 25px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: right
|
movement: right
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-top-left"
|
icon: "mdi:arrow-top-left"
|
||||||
@ -121,10 +125,11 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: top_left
|
movement: top_left
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-top-right"
|
icon: "mdi:arrow-top-right"
|
||||||
@ -133,10 +138,11 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 50px
|
bottom: 50px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: top_right
|
movement: top_right
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-bottom-left"
|
icon: "mdi:arrow-bottom-left"
|
||||||
@ -145,10 +151,11 @@ elements:
|
|||||||
right: 50px
|
right: 50px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: bottom_left
|
movement: bottom_left
|
||||||
- type: icon
|
- type: icon
|
||||||
icon: "mdi:arrow-bottom-right"
|
icon: "mdi:arrow-bottom-right"
|
||||||
@ -157,10 +164,11 @@ elements:
|
|||||||
right: 0px
|
right: 0px
|
||||||
bottom: 0px
|
bottom: 0px
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: foscam.ptz
|
perform_action: foscam.ptz
|
||||||
data:
|
target:
|
||||||
entity_id: camera.bedroom
|
entity_id: camera.bedroom
|
||||||
|
data:
|
||||||
movement: bottom_right
|
movement: bottom_right
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -59,11 +59,11 @@ Use wallclock as timestamps:
|
|||||||
|
|
||||||
In this section, you find some real-life examples of how to use this camera platform.
|
In this section, you find some real-life examples of how to use this camera platform.
|
||||||
|
|
||||||
### Weather graph from yr.no
|
### Weather graph from USA National Weather Service
|
||||||
|
|
||||||
- Still Image URL: `https://www.yr.no/en/content/1-72837/meteogram.svg`
|
You can display a GIF from the web as a still image.
|
||||||
|
|
||||||
Instructions on how to locate the SVG for your location are available at [developer.yr.no](https://developer.yr.no/doc/guides/available-widgets/)
|
- Still Image URL: `https://radar.weather.gov/ridge/standard/CONUS_0.gif`
|
||||||
|
|
||||||
### Local image
|
### Local image
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ To use Google Assistant, your Home Assistant configuration has to be [externally
|
|||||||
- You do not need to test.
|
- You do not need to test.
|
||||||
|
|
||||||
2. In the left hand menu of your project, select the **Analytics** link.
|
2. In the left hand menu of your project, select the **Analytics** link.
|
||||||
- Select the hamburger {% icon "mdi:hamburger-menu" %} menu and select **APIs and Services**.
|
- Select the hamburger {% icon "mdi:hamburger-menu" %} menu on the top left and select **APIs and Services**.
|
||||||
3. Enable device sync ([see below for more information](#enable-device-sync)).
|
3. Enable device sync ([see below for more information](#enable-device-sync)).
|
||||||
1. In the left hand menu, select **Credentials**.
|
1. In the left hand menu, select **Credentials**.
|
||||||
2. In the **Credentials** view, select **Create credentials** and next **Service account**.
|
2. In the **Credentials** view, select **Create credentials** and next **Service account**.
|
||||||
@ -78,15 +78,14 @@ To use Google Assistant, your Home Assistant configuration has to be [externally
|
|||||||
7. This will start a download of a JSON file.
|
7. This will start a download of a JSON file.
|
||||||
1. Rename the file to `SERVICE_ACCOUNT.JSON`.
|
1. Rename the file to `SERVICE_ACCOUNT.JSON`.
|
||||||
2. In Home Assistant, add this file to your config-folder. This will be the same folder as your {% term "`configuration.yaml`" %}.
|
2. In Home Assistant, add this file to your config-folder. This will be the same folder as your {% term "`configuration.yaml`" %}.
|
||||||
8. Go back to [Google Cloud Platform](https://console.cloud.google.com/) and select **Close**.
|
8. Go to the **Search (/) for resources, documentation, products, and more** at the top middle and search for **Homegraph API** and select it.
|
||||||
9. Then select **Save**.
|
9. Enable the HomeGraph API.
|
||||||
10. Go to the **Search products and resources** and search for **Homegraph API** and select it.
|
|
||||||
11. Enable the HomeGraph API.
|
|
||||||
|
|
||||||
4. Add the `google_assistant` integration configuration to your {% term "`configuration.yaml`" %} file and restart Home Assistant following the [configuration guide](#yaml-configuration) below.
|
4. Add the `google_assistant` integration configuration to your {% term "`configuration.yaml`" %} file and restart Home Assistant following the [configuration guide](#yaml-configuration) below.
|
||||||
5. Add services in the Google Home App (note that app versions may be slightly different).
|
5. Add services in the Google Home App (note that app versions may be slightly different).
|
||||||
1. Open the Google Home app.
|
1. Open the Google Home app.
|
||||||
2. Select the `+` button on the top left corner, select **Set up device**. In the **Set up a device** screen, select **Works with Google**. You should have `[test] <Action Name>` listed under **Add new**. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms and nicknames for your devices if you wish.
|
2. Select the Devices tab at the bottom and select the `+ Add` button on the bottom right corner.
|
||||||
|
3. In the **Choose a device** screen, select **Works with Google Home**. You should have `[test] <Action Name>` listed under **Add new**. Selecting that should lead you to a browser to log in to your Home Assistant instance, then redirect back to a screen where you can set rooms and nicknames for your devices if you wish.
|
||||||
|
|
||||||
{% important %}
|
{% important %}
|
||||||
If you've added Home Assistant to your phone's home screen, you have to first remove it from the home screen. Otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant redirecting back to the Google Home app.
|
If you've added Home Assistant to your phone's home screen, you have to first remove it from the home screen. Otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant redirecting back to the Google Home app.
|
||||||
@ -96,22 +95,19 @@ If you've added Home Assistant to your phone's home screen, you have to first re
|
|||||||
|
|
||||||
If you want to allow other household users to control the devices:
|
If you want to allow other household users to control the devices:
|
||||||
|
|
||||||
1. Open the project you created in the [Actions on Google console](https://console.actions.google.com/).
|
1. Open the project you created in the [Google Developer Console](https://console.home.google.com/projects).
|
||||||
2. Select **Test** on the top of the page, then select **Simulator** located to the page left, then click the three little dots (more) icon in the upper right corner of the console.
|
2. Select **Members** on the top of the page. This redirects you to the Google Cloud Platform IAM permissions page.
|
||||||
3. Select **Manage user access**. This redirects you to the Google Cloud Platform IAM permissions page.
|
3. Select **Grant access** at the middle of the page.
|
||||||
4. Select **Grant access** at the top of the page.
|
|
||||||
1. Enter the email address of the user you want to add.
|
1. Enter the email address of the user you want to add.
|
||||||
2. Select **Select a role** and choose **Project** > **Viewer**.
|
2. Select **Select a role** and choose **Project** > **Viewer**.
|
||||||
3. Select **Save**.
|
3. Select **Save**.
|
||||||
4. Copy and share the Actions project link (`https://console.actions.google.com/project/YOUR_PROJECT_ID/simulator`) with the new user.
|
4. Copy and share the project link (`https://console.home.google.com/projects/YOUR_PROJECT_ID`) with the new user.
|
||||||
5. Have the new user open the link with their own Google account, agree to the **Terms of Service** popup. Then select **Start Testing**, select **Version - Draft** in the dropdown, and select **Done**.
|
4. Have the new user open the link with their own Google account, agree to the **Terms of Service** popup(s).
|
||||||
6. Have the new user go to their **Google Assistant** app to add `[test] your app name` to their account.
|
5. Have the new user go to their **Google Assistant** app to add `[test] your app name` to their account.
|
||||||
|
|
||||||
### Enable device sync
|
### Utilize device sync
|
||||||
|
|
||||||
If you want to support active reporting of state to Google's server (configuration option `report_state`) and synchronize Home Assistant devices with the Google Home app (`google_assistant.request_sync` service), you will need to create a service account. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device in Home Assistant that you wish to control via the Google Assistant integration. This allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting)).
|
You are now able to support active reporting of state to Google's server (configuration option `report_state`) and synchronize Home Assistant devices with the Google Home app (`google_assistant.request_sync` service).
|
||||||
|
|
||||||
The service account is created by following Step 4 (Enable device sync) in the previous section [Google Cloud Platform configuration](#google-cloud-platform-configuration).
|
|
||||||
|
|
||||||
Try it with "OK Google, sync my devices" - the Google Home app should import your exposed Home Assistant devices and prompt you to assign them to rooms.
|
Try it with "OK Google, sync my devices" - the Google Home app should import your exposed Home Assistant devices and prompt you to assign them to rooms.
|
||||||
|
|
||||||
@ -135,24 +131,24 @@ This is because the Google Assistant device will connect directly to the IP of y
|
|||||||
For secure remote access, use a reverse proxy such as the {% my supervisor_addon addon="core_nginx_proxy" title="NGINX SSL" %} add-on instead of directing external traffic straight to Home Assistant.
|
For secure remote access, use a reverse proxy such as the {% my supervisor_addon addon="core_nginx_proxy" title="NGINX SSL" %} add-on instead of directing external traffic straight to Home Assistant.
|
||||||
{% endimportant %}
|
{% endimportant %}
|
||||||
|
|
||||||
1. Open the project you created in the [Actions on Google console](https://console.actions.google.com/).
|
1. Open the project you created in the [Google Developer Console](https://console.home.google.com/projects).
|
||||||
2. Select **Develop** on the top of the page, then select **Actions** located in the hamburger menu on the top left.
|
2. Expand the **Cloud-to-cloud** menu on the left and select **Develop**, then select **Edit** next to your integration.
|
||||||
3. Upload Javascript files
|
3. Scroll down and enable **Local fulfillment**
|
||||||
|
4. Upload Javascript files
|
||||||
1. Download `app.js` from [here](https://github.com/NabuCasa/home-assistant-google-assistant-local-sdk/releases/latest)
|
1. Download `app.js` from [here](https://github.com/NabuCasa/home-assistant-google-assistant-local-sdk/releases/latest)
|
||||||
2. Select the **Upload JavaScript files** button.
|
2. Select **Upload your JavaScript targeting Node** and upload the `app.js` from step 4.1.
|
||||||
3. Select **Upload your JavaScript targeting Node** and upload the `app.js` from step 3.1.
|
3. Select **Upload your JavaScript targeting Chrome (browser)** and upload the same `app.js` from step 4.1.
|
||||||
4. Select **Upload your JavaScript targeting Chrome (browser)** and upload the `app.js` from step 3.1.
|
5. Check the box **Support local queries**.
|
||||||
4. Check the box **Support local query** under **Add capabilities**.
|
6. Add device scan configuration:
|
||||||
5. Add device scan configuration:
|
1. Select **+ Add scan configuration** if no configuration exists.
|
||||||
1. Select **+ New scan config** if no configuration exists.
|
2. For Discovery protocol select **mDNS**.
|
||||||
2. Select **MDNS**.
|
3. Set **Enter mDNS service name** to `_home-assistant._tcp.local`
|
||||||
3. Set **MDNS service name** to `_home-assistant._tcp.local`
|
|
||||||
4. Select **Add field**, then under **Select a field**, choose **Name**.
|
4. Select **Add field**, then under **Select a field**, choose **Name**.
|
||||||
5. Enter a new **Value** field set to `.*\._home-assistant\._tcp\.local`
|
5. Enter a new **Value** field set to `.*\._home-assistant\._tcp\.local`
|
||||||
6. Save your changes.
|
7. Scroll to bottom of page and **Save** your changes.
|
||||||
7. Either wait for 30 minutes, or restart all your Google Assistant devices.
|
8. Either wait for 30 minutes, or restart all your Google Assistant devices.
|
||||||
8. Restart Home Assistant Core.
|
9. Restart Home Assistant Core.
|
||||||
9. With a Google Assistant device, try saying "OK Google, sync my devices." This can be helpful to avoid issues, especially if you are enabling local fulfillment sometime after adding cloud Google Assistant support.
|
10. With a Google Assistant device, try saying "OK Google, sync my devices." This can be helpful to avoid issues, especially if you are enabling local fulfillment sometime after adding cloud Google Assistant support.
|
||||||
|
|
||||||
You can debug the setup by following [these instructions](https://developers.home.google.com/local-home/test#debugging_from_chrome).
|
You can debug the setup by following [these instructions](https://developers.home.google.com/local-home/test#debugging_from_chrome).
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ This integration requires an API key to use, [which you can generate here](https
|
|||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
### Generate an API Key
|
## Generate an API Key
|
||||||
|
|
||||||
The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps:
|
The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps:
|
||||||
|
|
||||||
@ -130,8 +130,19 @@ response_variable: generated_content
|
|||||||
|
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
|
||||||
### Video tutorial
|
## Video tutorial
|
||||||
|
|
||||||
This video tutorial explains how Google Generative AI can be set up, how you can send an AI-generated message to your smart speaker when you arrive home, and how you can analyze an image taken from your doorbell camera as soon as someone rings the doorbell.
|
This video tutorial explains how Google Generative AI can be set up, how you can send an AI-generated message to your smart speaker when you arrive home, and how you can analyze an image taken from your doorbell camera as soon as someone rings the doorbell.
|
||||||
|
|
||||||
<lite-youtube videoid="ivoYNd2vMR0" videotitle="AI in Home Assistant - A Complete Guide!" posterquality="maxresdefault"></lite-youtube>
|
<lite-youtube videoid="ivoYNd2vMR0" videotitle="AI in Home Assistant - A Complete Guide!" posterquality="maxresdefault"></lite-youtube>
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
- To aid in diagnosing issues it may help to turn up verbose logging by adding these to your {% term "`configuration.yaml`" %}:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
logger:
|
||||||
|
logs:
|
||||||
|
homeassistant.components.conversation: debug
|
||||||
|
homeassistant.components.google_generative_ai_conversation: debug
|
||||||
|
```
|
||||||
|
@ -31,7 +31,7 @@ The Govee BLE integration will automatically discover devices once the [Bluetoot
|
|||||||
- H5052 Hygrometer Thermometer
|
- H5052 Hygrometer Thermometer
|
||||||
- H5071 Hygrometer Thermometer
|
- H5071 Hygrometer Thermometer
|
||||||
- H5072 Hygrometer Thermometer
|
- H5072 Hygrometer Thermometer
|
||||||
- H5074 Hygrometer Thermometer
|
- H5074 Hygrometer Thermometer (Active scans required)
|
||||||
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075)
|
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075)
|
||||||
- [H5100 Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-h5100-mini-hygrometer-thermometer-sensors)
|
- [H5100 Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-h5100-mini-hygrometer-thermometer-sensors)
|
||||||
- H5101 Hygrometer Thermometer
|
- H5101 Hygrometer Thermometer
|
||||||
|
@ -53,6 +53,9 @@ The following entities can be grouped:
|
|||||||
- [event (events)](/integrations/event/)
|
- [event (events)](/integrations/event/)
|
||||||
- [media player (media players)](/integrations/media_player/)
|
- [media player (media players)](/integrations/media_player/)
|
||||||
- [notify (notifications)](/integrations/notify/)
|
- [notify (notifications)](/integrations/notify/)
|
||||||
|
- [sensor (sensors)](/integrations/sensor/)
|
||||||
|
- [number (numbers)](/integrations/number/)
|
||||||
|
- [input_number (input_numbers)](/integrations/input_number/)
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
@ -136,7 +139,7 @@ In short, when any group member entity is `unlocked`, the group will also be `un
|
|||||||
- Otherwise, the group state is `on` if at least one group member is not `off`, `unavailable` or `unknown`.
|
- Otherwise, the group state is `on` if at least one group member is not `off`, `unavailable` or `unknown`.
|
||||||
- Otherwise, the group state is `off`.
|
- Otherwise, the group state is `off`.
|
||||||
|
|
||||||
### Sensor groups
|
### Sensor, number, and input_number groups
|
||||||
|
|
||||||
- The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range, product, standard deviation, or sum of the collected states.
|
- The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range, product, standard deviation, or sum of the collected states.
|
||||||
- Members can be any `sensor`, `number` or `input_number` holding numeric states.
|
- Members can be any `sensor`, `number` or `input_number` holding numeric states.
|
||||||
|
@ -43,7 +43,7 @@ Only the `music` media type is supported.
|
|||||||
|
|
||||||
And then install the following system dependencies:
|
And then install the following system dependencies:
|
||||||
|
|
||||||
Debian/Ubuntu/Rasbian:
|
Debian/Ubuntu/Raspberry Pi OS (formerly Raspbian):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install python3-gst-1.0 \
|
sudo apt-get install python3-gst-1.0 \
|
||||||
@ -52,7 +52,7 @@ sudo apt-get install python3-gst-1.0 \
|
|||||||
gstreamer1.0-tools
|
gstreamer1.0-tools
|
||||||
```
|
```
|
||||||
|
|
||||||
Red Hat/Centos/Fedora:
|
Red Hat/CentOS/Fedora:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo yum install -y python-gstreamer1 gstreamer1-plugins-good \
|
sudo yum install -y python-gstreamer1 gstreamer1-plugins-good \
|
||||||
|
@ -114,8 +114,8 @@ The following Habitica tasks are available as to-do lists in Home Assistant. You
|
|||||||
|
|
||||||
## Calendars
|
## Calendars
|
||||||
|
|
||||||
- **To-Do calendar:** Lists the due dates for all active to-do tasks. Each event on this calendar represents a to-do item that has a set due date, making it easy to track upcoming deadlines and plan accordingly.
|
- **To-Do calendar**: Lists the due dates for all active to-do tasks. Each event on this calendar represents a to-do item that has a set due date, making it easy to track upcoming deadlines and plan accordingly.
|
||||||
- **Dailies calendar:** Displays all daily tasks that are scheduled for today and are still active. It also shows all tasks scheduled for future dates, helping you stay organized and track upcoming routines. The calendar sensor will be active if there are unfinished tasks for today and display the next due daily (based on sort order if there are multiple tasks due for that day).
|
- **Dailies calendar**: Displays all daily tasks that are scheduled for today and are still active. It also shows all tasks scheduled for future dates, helping you stay organized and track upcoming routines. The calendar sensor will be active if there are unfinished tasks for today and display the next due daily (based on sort order if there are multiple tasks due for that day).
|
||||||
- **To-Do reminders calendar**: Lists events for reminders associated with your to-dos in Habitica, helping you track when notifications for specific to-dos are expected.
|
- **To-Do reminders calendar**: Lists events for reminders associated with your to-dos in Habitica, helping you track when notifications for specific to-dos are expected.
|
||||||
- **Dailies reminders calendar**: Shows events for reminders linked to your Habitica dailies, ensuring you know when notifications for your dailies will occur.
|
- **Dailies reminders calendar**: Shows events for reminders linked to your Habitica dailies, ensuring you know when notifications for your dailies will occur.
|
||||||
|
|
||||||
@ -134,13 +134,13 @@ If you've unlocked the class system, button controls for casting player and part
|
|||||||
|
|
||||||
- **Ethereal surge**: You sacrifice Mana so the rest of your party, except for other mages, gains MP. (based on: INT)
|
- **Ethereal surge**: You sacrifice Mana so the rest of your party, except for other mages, gains MP. (based on: INT)
|
||||||
- **Earthquake**: Your mental power shakes the earth and buffs your party's intelligence. (based on: unbuffed INT)
|
- **Earthquake**: Your mental power shakes the earth and buffs your party's intelligence. (based on: unbuffed INT)
|
||||||
- **Chilling frost:** With one cast, ice freezes all your streaks so they won't reset to zero tomorrow.
|
- **Chilling frost**: With one cast, ice freezes all your streaks so they won't reset to zero tomorrow.
|
||||||
|
|
||||||
### Warrior
|
### Warrior
|
||||||
|
|
||||||
- **Defensive stance**: You crouch low and gain a buff to constitution. (based on: unbuffed CON)
|
- **Defensive stance**: You crouch low and gain a buff to constitution. (based on: unbuffed CON)
|
||||||
- **Valorous presence**: Your boldness buffs your whole party's strength. (based on: unbuffed STR)
|
- **Valorous presence**: Your boldness buffs your whole party's strength. (based on: unbuffed STR)
|
||||||
- **Intimidating gaze:** Your fierce stare buffs your whole Party's constitution. (based on: unbuffed CON)
|
- **Intimidating gaze**: Your fierce stare buffs your whole Party's constitution. (based on: unbuffed CON)
|
||||||
|
|
||||||
### Rogue
|
### Rogue
|
||||||
|
|
||||||
@ -172,9 +172,9 @@ Use a skill or spell from your Habitica character on a specific task to affect i
|
|||||||
|
|
||||||
#### Available skills
|
#### Available skills
|
||||||
|
|
||||||
- **Rogue:** `pickpocket`, `backstab`
|
- **Rogue**: `pickpocket`, `backstab`
|
||||||
- **Warrior:** `smash`
|
- **Warrior**: `smash`
|
||||||
- **Mage:** `fireball`
|
- **Mage**: `fireball`
|
||||||
|
|
||||||
To use task aliases, make sure **Developer Mode** is enabled under [**Settings -> Site Data**](https://habitica.com/user/settings/siteData). Task aliases can only be edited via the **Habitica** web client.
|
To use task aliases, make sure **Developer Mode** is enabled under [**Settings -> Site Data**](https://habitica.com/user/settings/siteData). Task aliases can only be edited via the **Habitica** web client.
|
||||||
|
|
||||||
@ -211,7 +211,9 @@ Terminate your party's ongoing quest. All progress will be lost, and the quest r
|
|||||||
| `config_entry` | no | Config entry of the character to abort the quest. |
|
| `config_entry` | no | Config entry of the character to abort the quest. |
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
|
|
||||||
Actions marked with 🔒 have usage restrictions. See action descriptions for details.
|
Actions marked with 🔒 have usage restrictions. See action descriptions for details.
|
||||||
|
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
### Action `habitica.start_quest` 🔒
|
### Action `habitica.start_quest` 🔒
|
||||||
@ -264,20 +266,35 @@ Use a transformation item from your Habitica character's inventory on a member o
|
|||||||
- **Snowball**: `snowball` (transforms into a snowfriend)
|
- **Snowball**: `snowball` (transforms into a snowfriend)
|
||||||
- **Spooky sparkles**: `spooky_sparkles` (transforms into a ghost)
|
- **Spooky sparkles**: `spooky_sparkles` (transforms into a ghost)
|
||||||
- **Seafoam**: `seafoam` (transforms into a starfish)
|
- **Seafoam**: `seafoam` (transforms into a starfish)
|
||||||
- **Shiny seed** `shiny_seed` (transforms into flower)
|
- **Shiny seed**: `shiny_seed` (transforms into flower)
|
||||||
|
|
||||||
### Action `habitica.get_tasks`
|
### Action `habitica.get_tasks`
|
||||||
|
|
||||||
Fetch tasks from your Habitica account, with optional filters to narrow down the results for more precise task retrieval.
|
Fetch tasks from your Habitica account, with optional filters to narrow down the results for more precise task retrieval.
|
||||||
|
|
||||||
| Data attribute | Optional | Description |
|
| Data attribute | Optional | Description |
|
||||||
| -------------- | -------- | -------------------------------------------------------------------------------------------------------- |
|
| ---------------- | -------- | -------------------------------------------------------------------------------------------------------- |
|
||||||
| config_entry | no | Choose the Habitica character to retrieve tasks from. |
|
| `config_entry` | no | Choose the Habitica character to retrieve tasks from. |
|
||||||
| type | yes | Filter tasks by type. Valid types: "habits", "dailies", "todos", "rewards". |
|
| `type` | yes | Filter tasks by type. Valid types: `habits`, `dailies`, `todos`, `rewards`. |
|
||||||
| priority | yes | Filter tasks by difficulty. Valid values: "trivial", "easy", "medium", "hard". |
|
| `priority` | yes | Filter tasks by difficulty. Valid values: `trivial`, `easy`, `medium`, `hard`. |
|
||||||
| task | yes | Select specific tasks by matching their name (or task ID). |
|
| `task` | yes | Select specific tasks by matching their name (or task ID). |
|
||||||
| tag | yes | Filter tasks that have one or more of the selected tags. |
|
| `tag` | yes | Filter tasks that have one or more of the selected tags. |
|
||||||
| keyword | yes | Filter tasks by keyword, searching across titles, notes, and checklists. |
|
| `keyword` | yes | Filter tasks by keyword, searching across titles, notes, and checklists. |
|
||||||
|
|
||||||
|
### Action `habitica.update_reward`
|
||||||
|
|
||||||
|
Updates a specific reward for the selected Habitica character.
|
||||||
|
|
||||||
|
| Data attribute | Optional | Description |
|
||||||
|
| -------------- | -------- | -------------------------------------------------------------------------------------------- |
|
||||||
|
| `config_entry` | no | Select the Habitica account to update a reward. |
|
||||||
|
| `task` | no | The name (or task ID) of the reward you want to update. |
|
||||||
|
| `rename` | yes | The new title for the Habitica reward. |
|
||||||
|
| `notes` | yes | The new notes for the Habitica reward. |
|
||||||
|
| `cost` | yes | Update the cost of a reward. |
|
||||||
|
| `tag` | yes | Add tags to the Habitica reward. If a tag does not already exist, a new one will be created. |
|
||||||
|
| `remove_tag` | yes | Remove tags from the Habitica reward. |
|
||||||
|
| `alias` | yes | A task alias can be used instead of the name or task ID. Only dashes, underscores, and alphanumeric characters are supported. The task alias must be unique among all your tasks. |
|
||||||
|
|
||||||
## Automations
|
## Automations
|
||||||
|
|
||||||
@ -419,7 +436,7 @@ Please keep these limits in mind to avoid exceeding Habitica's request allowance
|
|||||||
|
|
||||||
The Habitica integration relies on an active internet connection to communicate with **Habitica**. If you encounter issues, verify that your network connection is stable. Additionally, the Habitica service itself may experience downtime, whether unexpected or due to scheduled maintenance. In these trying times of uncertainty and challenge, when fate tests your resolve, seek guidance from the [Habitica Outage Instructions](https://habitica.fandom.com/wiki/Outage_Instructions) on the community-maintained Habitica wiki — wisdom shared by adventurers who have faced such trials before.
|
The Habitica integration relies on an active internet connection to communicate with **Habitica**. If you encounter issues, verify that your network connection is stable. Additionally, the Habitica service itself may experience downtime, whether unexpected or due to scheduled maintenance. In these trying times of uncertainty and challenge, when fate tests your resolve, seek guidance from the [Habitica Outage Instructions](https://habitica.fandom.com/wiki/Outage_Instructions) on the community-maintained Habitica wiki — wisdom shared by adventurers who have faced such trials before.
|
||||||
|
|
||||||
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs stop the debug logging again (_download of debug log file will start automatically_). Further _if still possible_, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
|
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs stop the debug logging again (*download of debug log file will start automatically*). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
|
||||||
|
|
||||||
## Remove integration
|
## Remove integration
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ You can access the **History** panel from the side bar. To export the data, foll
|
|||||||
|
|
||||||
By default, the recorder stores the sensor data for 10 days. Older data is purged automatically. The data for the last 10 days is taken from the recorder.
|
By default, the recorder stores the sensor data for 10 days. Older data is purged automatically. The data for the last 10 days is taken from the recorder.
|
||||||
|
|
||||||
If you select a time frame that exceeds 10 days, the data is taken from the long term statistics table. The long term statistics data is sampled and averaged once per hour, to save storage. Therefore, the values might look different from what you see from the recorder data, which shows the measured values at the sample rate defined for that sensor.
|
If you select a time frame that exceeds 10 days, the data is taken from the long term statistics table. The long term statistics data is sampled and averaged once per hour, to save storage. Therefore, the values might look different from what you see from the recorder data, which shows the measured values at the sample rate defined for that sensor. The detailed data will be shown with a darker line on graphs.
|
||||||
|
|
||||||
<img class="no-shadow" src='/images/integrations/history/history-panel_including-long-term-storage.png' alt='If the chosen time frame exceeds the retention period defined in the recorder, the long term statistics table is used as a data source.'>
|
<img class="no-shadow" src='/images/integrations/history/history-panel_including-long-term-storage.png' alt='If the chosen time frame exceeds the retention period defined in the recorder, the long term statistics table is used as a data source.'>
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -13,8 +13,10 @@ ha_platforms:
|
|||||||
- button
|
- button
|
||||||
- cover
|
- cover
|
||||||
- light
|
- light
|
||||||
|
- number
|
||||||
- sensor
|
- sensor
|
||||||
- switch
|
- switch
|
||||||
|
- valve
|
||||||
ha_integration_type: hub
|
ha_integration_type: hub
|
||||||
ha_quality_scale: bronze
|
ha_quality_scale: bronze
|
||||||
---
|
---
|
||||||
@ -26,8 +28,10 @@ There is currently support for the following device types in Home Assistant:
|
|||||||
- button
|
- button
|
||||||
- cover
|
- cover
|
||||||
- light
|
- light
|
||||||
|
- number
|
||||||
- sensor
|
- sensor
|
||||||
- switch
|
- switch
|
||||||
|
- valve
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ The `html5` platform can only function if all of the following requirements are
|
|||||||
|
|
||||||
- You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. Or you added your Home Assistant instance to your home screen on iOS 16.4 or higher.
|
- You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. Or you added your Home Assistant instance to your home screen on iOS 16.4 or higher.
|
||||||
- Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant.
|
- Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant.
|
||||||
- If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards.
|
- If using a proxy, HTTP basic authentication must be disabled to register or deregister push notifications. It can be re-enabled afterwards.
|
||||||
- If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install).
|
- If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install).
|
||||||
- You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed).
|
- You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed).
|
||||||
- You are willing to accept the notification permission in your browser.
|
- You are willing to accept the notification permission in your browser.
|
||||||
|
@ -64,7 +64,7 @@ You can use this action for example if you'd like to start/stop Dynamic Mode.
|
|||||||
|
|
||||||
## Hue remotes and switches
|
## Hue remotes and switches
|
||||||
|
|
||||||
Hue remotes such as the Dimmer Switch are stateless devices, meaning that they do not have a on/off state like regular entities in Home Assistant. Instead, such devices emit the event `hue_event` when a button is pressed. You can test what events come in using the event {% my developer_events title="developer tools in Home Assistant" %} and subscribe to the `hue_event`. Once you know what the event data looks like, you can use this to create automations.
|
Hue remotes such as the Dimmer Switch are stateless devices, meaning that they do not have an on/off state like regular entities in Home Assistant. Instead, such devices emit the event `hue_event` when a button is pressed. You can test what events come in using the event {% my developer_events title="developer tools in Home Assistant" %} and subscribe to the `hue_event`. Once you know what the event data looks like, you can use this to create automations.
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
At the time of writing, there's a limitation on the Hue API that each device can only send one event per second. This means that button events are rate-limited to 1 per second. This is brought to the attention of Signify and it will hopefully be fixed soon.
|
At the time of writing, there's a limitation on the Hue API that each device can only send one event per second. This means that button events are rate-limited to 1 per second. This is brought to the attention of Signify and it will hopefully be fixed soon.
|
||||||
|
@ -64,7 +64,7 @@ port:
|
|||||||
default: 8086
|
default: 8086
|
||||||
path:
|
path:
|
||||||
type: string
|
type: string
|
||||||
description: Path to use if your InfuxDB is running behind a reverse proxy.
|
description: Path to use if your InfluxDB is running behind a reverse proxy.
|
||||||
required: false
|
required: false
|
||||||
username:
|
username:
|
||||||
type: string
|
type: string
|
||||||
@ -369,7 +369,7 @@ port:
|
|||||||
default: 8086
|
default: 8086
|
||||||
path:
|
path:
|
||||||
type: string
|
type: string
|
||||||
description: Path to use if your InfuxDB is running behind a reverse proxy.
|
description: Path to use if your InfluxDB is running behind a reverse proxy.
|
||||||
required: false
|
required: false
|
||||||
username:
|
username:
|
||||||
type: string
|
type: string
|
||||||
|
@ -18,7 +18,7 @@ ha_platforms:
|
|||||||
ha_integration_type: helper
|
ha_integration_type: helper
|
||||||
---
|
---
|
||||||
|
|
||||||
This integrations provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum)
|
This integration provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum)
|
||||||
of the values provided by a source sensor. The Riemann sum is an approximation
|
of the values provided by a source sensor. The Riemann sum is an approximation
|
||||||
of an **integral** by a finite sum.
|
of an **integral** by a finite sum.
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ available in the `action_response` variable.
|
|||||||
conversation:
|
conversation:
|
||||||
intents:
|
intents:
|
||||||
EventCountToday:
|
EventCountToday:
|
||||||
- "How many meetings do I have today?"
|
- "How many meetings do I have today"
|
||||||
|
|
||||||
intent_script:
|
intent_script:
|
||||||
EventCountToday:
|
EventCountToday:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: IOmeter
|
title: IOmeter
|
||||||
description: Instructions on how to integrate IOmeter within Home Assistant.
|
description: Instructions on how to integrate IOmeter within Home Assistant.
|
||||||
ha_release: 2025.2
|
ha_release: 2025.3
|
||||||
ha_category:
|
ha_category:
|
||||||
- Sensor
|
- Sensor
|
||||||
- Energy
|
- Energy
|
||||||
|
@ -52,7 +52,7 @@ sensors:
|
|||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
### Prayer calcuation method
|
### Prayer calculation method
|
||||||
|
|
||||||
Default: Islamic Society of North America
|
Default: Islamic Society of North America
|
||||||
|
|
||||||
@ -72,4 +72,4 @@ Default: Standard (mid sunset to sunrise)
|
|||||||
|
|
||||||
Default: Shafi
|
Default: Shafi
|
||||||
|
|
||||||
Method for adjusting Asr time calcuation, if not specified, it defaults to Shafi.
|
Method for adjusting Asr time calculation, if not specified, it defaults to Shafi.
|
||||||
|
@ -1237,7 +1237,7 @@ mqtt:
|
|||||||
|
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
|
||||||
### CCT light (brightnes and temperature)
|
### CCT light (brightness and temperature)
|
||||||
|
|
||||||
This example comes from a configuration of Shelly RGBW Bulb working in White mode.
|
This example comes from a configuration of Shelly RGBW Bulb working in White mode.
|
||||||
`max_mireds` and `min_mireds` set color temperature boundaries to 3000K - 6500K. Notice the same limits are applied in `command_on_template`, but in kelvin units this time. It's due to conversion from mired to kelvin which causes exceeding boundary values accepted by the device.
|
`max_mireds` and `min_mireds` set color temperature boundaries to 3000K - 6500K. Notice the same limits are applied in `command_on_template`, but in kelvin units this time. It's due to conversion from mired to kelvin which causes exceeding boundary values accepted by the device.
|
||||||
|
@ -8,7 +8,7 @@ ha_iot_class: Local Push
|
|||||||
ha_integration_type: virtual
|
ha_integration_type: virtual
|
||||||
ha_supporting_domain: idasen_desk
|
ha_supporting_domain: idasen_desk
|
||||||
ha_supporting_integration: IKEA Idåsen Desk
|
ha_supporting_integration: IKEA Idåsen Desk
|
||||||
ha_release: '2025.03'
|
ha_release: '2025.3'
|
||||||
ha_codeowners:
|
ha_codeowners:
|
||||||
- '@abmantis'
|
- '@abmantis'
|
||||||
ha_config_flow: true
|
ha_config_flow: true
|
||||||
|
@ -144,12 +144,12 @@ Make sure you have all these components ready before trying to add a Matter devi
|
|||||||
#### Prepare Android or iPhone
|
#### Prepare Android or iPhone
|
||||||
|
|
||||||
- Have either an Android or iPhone ready and Bluetooth enabled. For information why Bluetooth is required, refer to the section on [Bluetooth used during commissioning](#bluetooth-used-during-commissioning):
|
- Have either an Android or iPhone ready and Bluetooth enabled. For information why Bluetooth is required, refer to the section on [Bluetooth used during commissioning](#bluetooth-used-during-commissioning):
|
||||||
- Android:
|
- **Android**:
|
||||||
- Have the Android version 8.1 or higher.
|
- At a minimum, have Android version 8.1. Recommended is version 12 or higher.
|
||||||
- Have the latest version of the Home Assistant Companion app, installed from the Play Store (full version).
|
- Have the latest version of the Home Assistant Companion app, installed from the Play Store (full version).
|
||||||
- If you are using {% term Thread %}: Make sure there is a Thread border router device (Nest Hub (2nd Gen) or Nest Wi-Fi Pro or Home Assistant with the OpenThread Border Router add-on) present in your home network.
|
- If you are using {% term Thread %}: Make sure there is a Thread border router device (Nest Hub (2nd Gen) or Nest Wi-Fi Pro or Home Assistant with the OpenThread Border Router add-on) present in your home network.
|
||||||
- If you are using OpenThread (for Connect ZBT-1/SkyConnect) as border router, make sure you followed the steps in the [Thread documentation](/integrations/thread#turning-home-assistant-into-a-thread-border-router).
|
- If you are using OpenThread (for Connect ZBT-1/SkyConnect) as border router, make sure you followed the steps in the [Thread documentation](/integrations/thread#turning-home-assistant-into-a-thread-border-router).
|
||||||
- iPhone
|
- **iPhone**
|
||||||
- Have the iOS version 16 or higher
|
- Have the iOS version 16 or higher
|
||||||
- Have the latest version of the Home Assistant Companion app installed.
|
- Have the latest version of the Home Assistant Companion app installed.
|
||||||
- If you are using {% term Thread %}: Make sure there is a Thread border router device (HomePod Mini or V2, Apple TV 4K or Home Assistant with the OpenThread Border Router add-on) present in your home network.
|
- If you are using {% term Thread %}: Make sure there is a Thread border router device (HomePod Mini or V2, Apple TV 4K or Home Assistant with the OpenThread Border Router add-on) present in your home network.
|
||||||
@ -211,16 +211,34 @@ Check these steps if you are experiencing issues when trying to add a Matter dev
|
|||||||
|
|
||||||
#### Symptom
|
#### Symptom
|
||||||
|
|
||||||
While trying to add the Matter device, I get an error stating that *Matter is currently unavailable*.
|
While trying to add the Matter device, I get an error stating that _Matter is currently unavailable_.
|
||||||
|
|
||||||
#### Remedy
|
#### Remedy
|
||||||
|
|
||||||
This could mean that not all required Matter modules that are needed by the Home Assistant Companion App have been downloaded yet. Try the following steps:
|
This could mean that not all required Matter modules that are needed by the Home Assistant Companion App have been downloaded yet. Try the following steps:
|
||||||
|
|
||||||
1. Wait up to 24 hours for the Google Play services to download the necessary Matter modules.
|
1. Wait up to 24 hours for the Google Play Services to download the necessary Matter modules.
|
||||||
2. If this did not work, try reinstalling the Home Assistant Companion app.
|
2. Make sure the requirements listed in the [prerequisites](#prerequisites) are met. This includes meeting the minimum system requirements:
|
||||||
3. If this did not work, try installing the Google Home app. Technically this is not required, but it might trigger another installation attempt of the Matter modules.
|
- **Android**:
|
||||||
4. Refer to this [Troubleshooting Guide from Google](https://developers.home.google.com/matter/verify-services).
|
- Minimum version is 8.1. Recommended is version 12 or higher.
|
||||||
|
- More issues have been reported by people using older Android versions.
|
||||||
|
- Use a regular, Google-account Android setup. No alternative Android versions.
|
||||||
|
- Make sure the Google Play Services are all up to date.
|
||||||
|
- **iPhone**:
|
||||||
|
- Have the iOS version 16 or higher
|
||||||
|
3. Home Assistant Companion app:
|
||||||
|
- Make sure you installed the (full) version, downloaded from the Play Store.
|
||||||
|
- Make sure it is the latest version.
|
||||||
|
- If you only just installed or updated the Home Assistant Companion app:
|
||||||
|
- Wait.
|
||||||
|
- It can take a while before the required components are installed in the background.
|
||||||
|
- Try again after 1 hour to ensure the installation is complete.
|
||||||
|
4. Verify your device meets all requirements to support Matter:
|
||||||
|
- On your Android device, go to **Settings** > **Google** > **Devices & Sharing**.
|
||||||
|
- There should be an entry there for **Matter devices**.
|
||||||
|
5. Reinstalling the Home Assistant Companion app.
|
||||||
|
6. Try (re-)installing the Google Home app. Technically, this is not required, but it might trigger another installation attempt of the Matter modules.
|
||||||
|
7. Refer to this [Troubleshooting Guide from Google](https://developers.home.google.com/matter/verify-services).
|
||||||
|
|
||||||
## Sharing a device from another platform with Home Assistant
|
## Sharing a device from another platform with Home Assistant
|
||||||
|
|
||||||
@ -381,22 +399,101 @@ NOTE for Android users: You need to follow the instructions at the bottom of the
|
|||||||
|
|
||||||
- For more detailed information on network configuration, refer to the [README of the Matter server repository](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md).
|
- For more detailed information on network configuration, refer to the [README of the Matter server repository](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md).
|
||||||
|
|
||||||
### I do not see the button "Commission using the Companion app"
|
### I do not see the button _Commission using the Companion app_
|
||||||
|
|
||||||
This button will only be visible within the Home Assistant Companion App (so not in the browser) and your device meets all requirements for Matter support.
|
The **Commission using the Companion app** button only exists in the Home Assistant Companion App. It is not available in the browser.
|
||||||
|
|
||||||
- For iOS, minimum version is iOS 16 (minimal 16.3 is preferred) and the most recent version of the HA companion app.
|
#### Remedy
|
||||||
- For Android, minimum version is 8.1 and the most recent version of the (full) HA Companion app, downloaded from the Play Store.
|
|
||||||
|
|
||||||
### When I'm trying to commission using the Android app, I get an error stating "Matter is currently unavailable"
|
If you don't see the button in the Companion app:
|
||||||
|
|
||||||
See above, make sure your device meets all requirements to support Matter. Update Android to the latest version and the Home Assistant Companion app. To quickly verify if your device meets all requirements to support Matter, on your Android device, go to **Settings** > **Google** > **Devices & Sharing**. There should be an entry there for **Matter devices**.
|
1. Make sure the requirements listed in the [prerequisites](#prerequisites) are met.
|
||||||
|
2. This includes meeting the minimum system requirements:
|
||||||
|
|
||||||
Some users have reported that uninstalling and reinstalling the Google Home app fixed this issue for them.
|
- **Android**:
|
||||||
Also see this [extended troubleshooting guide](https://developers.home.google.com/matter/verify-services) from Google.
|
- Minimum version is 8.1. Recommended is version 12 or higher.
|
||||||
|
- More issues have been reported by people using older Android versions.
|
||||||
|
- Use a regular, Google-account Android setup. No alternative Android versions.
|
||||||
|
- Make sure the Google Play Services are all up to date.
|
||||||
|
- **iPhone**:
|
||||||
|
- Have the iOS version 16 or higher
|
||||||
|
|
||||||
|
### When trying to commission using Android, I get an error "Matter is unavailable"
|
||||||
|
|
||||||
|
Refer to the steps under [Troubleshooting the installation](#troubleshooting-the-installation).
|
||||||
|
|
||||||
|
### Android: stuck at "Checking network connectivity"
|
||||||
|
|
||||||
|
#### Symptom
|
||||||
|
|
||||||
|
You are trying to {% term commissioning commission %} a Matter device using an Android phone. During that process, you see the "Checking network connectivity" message and never get past that.
|
||||||
|
|
||||||
|
#### Remedy
|
||||||
|
|
||||||
|
1. Make sure the requirements listed in the [prerequisites](#prerequisites) are met.
|
||||||
|
2. This includes meeting the minimum system requirements for **Android**:
|
||||||
|
|
||||||
|
- Minimum version is 8.1. Recommended is version 12 or higher.
|
||||||
|
- More issues have been reported by people using older Android versions.
|
||||||
|
- Use a regular, Google-account Android setup. No alternative Android versions.
|
||||||
|
- Make sure the Google Play Services are all up to date.
|
||||||
|
3. If you are adding a {% term Thread %}-based Matter device, make sure the phone is in close range of the border router and your device.
|
||||||
|
4. If you are adding a Wi-Fi-based Matter device:
|
||||||
|
- Matter devices often use the 2.4 GHz frequency for Wi-Fi.
|
||||||
|
- Make sure your phone is in the same 2.4 GHz network where you want to operate your devices.
|
||||||
|
|
||||||
|
### Error "this device requires a border router"
|
||||||
|
|
||||||
|
#### Symptom
|
||||||
|
|
||||||
|
While trying to add a Matter device with your Home Assistant Companion app, you get the error "this device requires a border router".
|
||||||
|
|
||||||
|
#### Cause
|
||||||
|
|
||||||
|
To add a Matter device which is based on the {% term Thread %} radio protocol, you need a {% term "Thread border router" %} near the device and your phone needs to know the credentials of your (newly created) Thread network.
|
||||||
|
|
||||||
|
#### Remedy
|
||||||
|
|
||||||
|
Set up a {% term "Thread border router" %} and synchronize the credentials from Home Assistant to your Android device:
|
||||||
|
|
||||||
|
1. Follow the steps on [Turning Home Assistant into a Thread border router](https://www.home-assistant.io/integrations/thread#turning-home-assistant-into-a-thread-border-router).
|
||||||
|
2. Make sure to Sync the Thread credentials as described in step 3.
|
||||||
|
|
||||||
|
### Error "Target node did not process the update file"
|
||||||
|
|
||||||
|
#### Symptom
|
||||||
|
|
||||||
|
You are trying to update a Matter over Thread device via Home Assistant and see the error "Target node did not process the update file".
|
||||||
|
|
||||||
|
#### Cause
|
||||||
|
|
||||||
|
Over-the-air (OTA) updates of Matter devices from Home Assistant are not supported with an Apple {% term "Thread border router" %}.
|
||||||
|
|
||||||
|
#### Remedy
|
||||||
|
|
||||||
|
- If you only have a {% term "Thread border router" %} from Apple, you cannot update the device from Home Assistant.
|
||||||
|
- If you want to be able to use OTA updates on these devices, you could add another border router, for example by [turning Home Assistant into a Thread border router](/integrations/thread#turning-home-assistant-into-a-thread-border-router).
|
||||||
|
|
||||||
|
- If you have a mixture of Apple and other {% term "Thread border routers" %} such as the Home Assistant [OpenThread border router](/integrations/thread#openthread-border-routers), follow these steps:
|
||||||
|
1. Power down all the Apple {% term "Thread border routers" %}.
|
||||||
|
2. Wait at least 30 minutes.
|
||||||
|
3. Try again to update the devices from Home Assistant.
|
||||||
|
|
||||||
### Unable to commission devices, it keeps giving errors or stops working randomly
|
### Unable to commission devices, it keeps giving errors or stops working randomly
|
||||||
|
|
||||||
The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices that use Wi-Fi (including Thread border routers) must be on the same LAN/VLAN as Home Assistant. Matter devices that only use {% term Thread %} must be joined to {% term Thread %} networks for which there is at least one border router connected to the Home Assistant LAN.
|
#### Symptom
|
||||||
|
|
||||||
If you experience any issues with discovering devices (for example, if the initial {% term commissioning %} keeps failing or if devices become unavailable randomly), investigate your network topology. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and may not integrate well with enterprise networking solutions like VLANs, Multicast filtering, and (malfunctioning) IGMP snooping. To avoid issues, try to keep your network topology as simple and flat as possible.
|
The initial {% term commissioning %} keeps failing, you experience issues with discovering devices, or devices become unavailable randomly.
|
||||||
|
|
||||||
|
#### Cause
|
||||||
|
|
||||||
|
- The Matter protocol relies on (local) IPv6 and <abbr title="multicast Domain Name System">mDNS</abbr> (multicast traffic) traveling freely in your network.
|
||||||
|
- Matter is designed for regular residential network setups and may not integrate well with enterprise networking solutions like <abbr title="virtual local area networks">VLANs</abbr>, Multicast filtering, and (malfunctioning) <abbr title="Internet Group Management Protocol i">IGMP</abbr> snooping.
|
||||||
|
|
||||||
|
#### Remedy
|
||||||
|
|
||||||
|
1. Make sure that Matter devices that use Wi-Fi (including {% term "Thread border router" %}) are on the same <abbr title="local area networks">VLANs</abbr>/<abbr title="virtual local area networks">VLAN</abbr> as Home Assistant.
|
||||||
|
2. Make sure that Matter devices that only use {% term Thread %} are joined to Thread networks for which there is at least one {% term "Thread border router" %} connected to the Home Assistant LAN.
|
||||||
|
3. Investigate your network topology.
|
||||||
|
- For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices.
|
||||||
|
- To avoid issues, try to keep your network topology as simple and flat as possible.
|
||||||
|
@ -168,8 +168,6 @@ Currently only supported on [Denon AVR](/integrations/denonavr/) and [Songpal](
|
|||||||
|
|
||||||
#### Action `media_player.shuffle_set`
|
#### Action `media_player.shuffle_set`
|
||||||
|
|
||||||
Currently only supported on [Sonos](/integrations/sonos), [Spotify](/integrations/spotify), [MPD](/integrations/mpd), [Kodi](/integrations/kodi), [Roon](/integrations/roon), [OwnTone](/integrations/forked_daapd), [Squeezebox](/integrations/squeezebox) and [Universal](/integrations/universal).
|
|
||||||
|
|
||||||
| Data attribute | Optional | Description |
|
| Data attribute | Optional | Description |
|
||||||
| ---------------------- | -------- | ---------------------------------------------------- |
|
| ---------------------- | -------- | ---------------------------------------------------- |
|
||||||
| `entity_id` | yes | Target a specific media player. For example `media_player.spotify`|
|
| `entity_id` | yes | Target a specific media player. For example `media_player.spotify`|
|
||||||
|
@ -22,19 +22,11 @@ ha_integration_type: integration
|
|||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- Minecraft Java Edition servers must be version 1.7 or newer, since older versions don't expose any information.
|
- Minecraft Java Edition servers must be version 1.7 or newer, since older versions don't expose any information.
|
||||||
- The `enable-status` and `enable-query` must be set to `true` in the Minecraft `server.properties`.
|
- The configuration parameter `enable-status` must be set to `true` in the server configuration file (`server.properties`).
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
During setup you will be prompted to enter the **name** and the **address** of the server.
|
During setup you will be prompted to enter the **address** of the server.
|
||||||
|
|
||||||
### Server name
|
|
||||||
|
|
||||||
The **server name** can be chosen freely.
|
|
||||||
|
|
||||||
{% note %}
|
|
||||||
Default is `Minecraft Server`.
|
|
||||||
{% endnote %}
|
|
||||||
|
|
||||||
### Server address
|
### Server address
|
||||||
|
|
||||||
@ -77,3 +69,9 @@ For Bedrock Edition servers following sensors are provided additionally:
|
|||||||
{% note %}
|
{% note %}
|
||||||
Player names are only available on Java Edition servers. Depending on the server, the player names list may not be shown completely. Some servers and plugins limit or completely hide this list or even replace the player names with fake ones to show some custom messages there.
|
Player names are only available on Java Edition servers. Depending on the server, the player names list may not be shown completely. Some servers and plugins limit or completely hide this list or even replace the player names with fake ones to show some custom messages there.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
|
## Removing the integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal. No extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
@ -301,32 +301,32 @@ A dashboard card with icons that will call the `action` action to send action co
|
|||||||
- entity: camera.living_room
|
- entity: camera.living_room
|
||||||
icon: "mdi:arrow-left"
|
icon: "mdi:arrow-left"
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: motioneye.action
|
perform_action: motioneye.action
|
||||||
data:
|
data:
|
||||||
action: left
|
action: left
|
||||||
entity_id: camera.living_room
|
entity_id: camera.living_room
|
||||||
- entity: camera.living_room
|
- entity: camera.living_room
|
||||||
icon: "mdi:arrow-right"
|
icon: "mdi:arrow-right"
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: motioneye.action
|
perform_action: motioneye.action
|
||||||
data:
|
data:
|
||||||
action: right
|
action: right
|
||||||
entity_id: camera.living_room
|
entity_id: camera.living_room
|
||||||
- entity: camera.living_room
|
- entity: camera.living_room
|
||||||
icon: "mdi:arrow-up"
|
icon: "mdi:arrow-up"
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: motioneye.action
|
perform_action: motioneye.action
|
||||||
data:
|
data:
|
||||||
action: up
|
action: up
|
||||||
entity_id: camera.living_room
|
entity_id: camera.living_room
|
||||||
- entity: camera.living_room
|
- entity: camera.living_room
|
||||||
icon: "mdi:arrow-down"
|
icon: "mdi:arrow-down"
|
||||||
tap_action:
|
tap_action:
|
||||||
action: call-service
|
action: perform-action
|
||||||
action: motioneye.action
|
perform_action: motioneye.action
|
||||||
data:
|
data:
|
||||||
action: down
|
action: down
|
||||||
entity_id: camera.living_room
|
entity_id: camera.living_room
|
||||||
|
@ -1475,10 +1475,6 @@ The MQTT integration will register the `mqtt.publish` action, which allows publi
|
|||||||
When `payload` is rendered from [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`.
|
When `payload` is rendered from [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
{% important %}
|
|
||||||
You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both.
|
|
||||||
{% endimportant %}
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
topic: homeassistant/light/1/command
|
topic: homeassistant/light/1/command
|
||||||
payload: on
|
payload: on
|
||||||
|
@ -42,38 +42,39 @@ The following device classes are supported for numbers:
|
|||||||
- **apparent_power**: Apparent power in VA.
|
- **apparent_power**: Apparent power in VA.
|
||||||
- **aqi**: Air Quality Index (unitless).
|
- **aqi**: Air Quality Index (unitless).
|
||||||
- **area**: Area in m², cm², km², mm², in², ft², yd², mi², ac, ha
|
- **area**: Area in m², cm², km², mm², in², ft², yd², mi², ac, ha
|
||||||
- **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, inHg, kPa, mbar, Pa, psi
|
- **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, mmHg, inHg, kPa, mbar, Pa or psi
|
||||||
- **battery**: Percentage of battery that is left
|
- **battery**: Percentage of battery that is left in %
|
||||||
- **blood_glocose_concentration**: Blood glucose concentration in mg/dL, mmol/L
|
- **blood_glucose_concentration**: Blood glucose concentration in mg/dL, mmol/L
|
||||||
- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke)
|
- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke) in ppm
|
||||||
- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG)
|
- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) in ppm
|
||||||
- **current**: Current in A, mA
|
- **current**: Current in A, mA
|
||||||
- **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s, or GiB/s
|
- **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s or GiB/s
|
||||||
- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB
|
- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB or YiB
|
||||||
- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in
|
- **distance**: Generic distance in km, m, cm, mm, mi, nmi, yd, or in
|
||||||
|
- **duration**: Duration in d, h, min, s, or ms
|
||||||
- **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal
|
- **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal
|
||||||
- **energy_distance**: Energy per distance in kWh/100km, mi/kWh or km/kWh.
|
- **energy_distance**: Energy per distance in kWh/100km, mi/kWh or km/kWh.
|
||||||
- **energy_storage**: Stored energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal
|
- **energy_storage**: Stored energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal
|
||||||
- **frequency**: Frequency in Hz, kHz, MHz, or GHz
|
- **frequency**: Frequency in Hz, kHz, MHz, or GHz
|
||||||
- **gas**: Gasvolume in m³, ft³, or CCF
|
- **gas**: Gasvolume in m³, ft³ or CCF
|
||||||
- **humidity**: Percentage of humidity in the air
|
- **humidity**: Percentage of humidity in the air in %
|
||||||
- **illuminance**: The current light level in lx
|
- **illuminance**: The current light level in lx
|
||||||
- **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²)
|
- **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²)
|
||||||
- **moisture**: Percentage of water in a substance
|
- **moisture**: Percentage of water in a substance in %
|
||||||
- **monetary**: The monetary value
|
- **monetary**: The monetary value ([ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Active_codes))
|
||||||
- **nitrogen_dioxide**: Concentration of Nitrogen Dioxide in µg/m³
|
- **nitrogen_dioxide**: Concentration of Nitrogen Dioxide in µg/m³
|
||||||
- **nitrogen_monoxide**: Concentration of Nitrogen Monoxide in µg/m³
|
- **nitrogen_monoxide**: Concentration of Nitrogen Monoxide in µg/m³
|
||||||
- **nitrous_oxide**: Concentration of Nitrous Oxide in µg/m³
|
- **nitrous_oxide**: Concentration of Nitrous Oxide in µg/m³
|
||||||
- **ozone**: Concentration of Ozone in µg/m³
|
- **ozone**: Concentration of Ozone in µg/m³
|
||||||
- **ph**: Potential hydrogen (pH) value of a water solution
|
- **ph**: Potential hydrogen (pH) value of a water solution
|
||||||
- **pm1**: Concentration of particulate matter less than 1 micrometer in µg/m³
|
- **pm1**: Concentration of particulate matter less than 1 micrometer in µg/m³
|
||||||
- **pm10**: Concentration of particulate matter less than 10 micrometers in µg/m³
|
|
||||||
- **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³
|
- **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³
|
||||||
- **power_factor**: Power factor(unitless), unit may be `None` or %
|
- **pm10**: Concentration of particulate matter less than 10 micrometers in µg/m³
|
||||||
|
- **power_factor**: Power factor (unitless), unit may be `None` or %
|
||||||
- **power**: Power in mW, W, kW, MW, GW or TW
|
- **power**: Power in mW, W, kW, MW, GW or TW
|
||||||
- **precipitation**: Accumulated precipitation in cm, in or mm
|
- **precipitation**: Accumulated precipitation in cm, in or mm
|
||||||
- **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d, or mm/h
|
- **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d or mm/h
|
||||||
- **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg, or psi
|
- **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg or psi
|
||||||
- **reactive_power**: Reactive power in var
|
- **reactive_power**: Reactive power in var
|
||||||
- **signal_strength**: Signal strength in dB or dBm
|
- **signal_strength**: Signal strength in dB or dBm
|
||||||
- **sound_pressure**: Sound pressure in dB or dBA
|
- **sound_pressure**: Sound pressure in dB or dBA
|
||||||
@ -81,6 +82,7 @@ The following device classes are supported for numbers:
|
|||||||
- **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³
|
- **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³
|
||||||
- **temperature**: Temperature in °C, °F or K
|
- **temperature**: Temperature in °C, °F or K
|
||||||
- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³
|
- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³
|
||||||
|
- **volatile_organic_compounds_parts**: Ratio of volatile organic compounds in ppm or ppb
|
||||||
- **voltage**: Voltage in V, mV, µV, kV, MV
|
- **voltage**: Voltage in V, mV, µV, kV, MV
|
||||||
- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
|
- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
|
||||||
- **volume_flow_rate**: Volume flow rate in m³/h, ft³/min, L/min, gal/min, or mL/s
|
- **volume_flow_rate**: Volume flow rate in m³/h, ft³/min, L/min, gal/min, or mL/s
|
||||||
@ -88,7 +90,7 @@ The following device classes are supported for numbers:
|
|||||||
- **water**: Water consumption in L, gal, m³, ft³, or CCF
|
- **water**: Water consumption in L, gal, m³, ft³, or CCF
|
||||||
- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st
|
- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st
|
||||||
- **wind_direction**: Wind direction in °
|
- **wind_direction**: Wind direction in °
|
||||||
- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph
|
- **wind_speed**: Wind speed in Beaufort, ft/s, km/h, kn, m/s, or mph
|
||||||
|
|
||||||
## Actions
|
## Actions
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ The Ohme integration provides the following entities.
|
|||||||
#### Sensors
|
#### Sensors
|
||||||
|
|
||||||
- **Status**
|
- **Status**
|
||||||
- **Description**: Current status of the charger. Possible states: `Unplugged`, `Pending approval`, `Plugged in`, `Charging`.
|
- **Description**: Current status of the charger. Possible states: `Unplugged`, `Pending approval`, `Plugged in`, `Charging`, `Finished charging`.
|
||||||
- **Available for devices**: all
|
- **Available for devices**: all
|
||||||
- **Power**
|
- **Power**
|
||||||
- **Description**: Power draw from the charger in kW.
|
- **Description**: Power draw from the charger in kW.
|
||||||
@ -88,9 +88,15 @@ The Ohme integration provides the following entities.
|
|||||||
- **Energy**
|
- **Energy**
|
||||||
- **Description**: Energy consumption of the charger in kWh.
|
- **Description**: Energy consumption of the charger in kWh.
|
||||||
- **Available for devices**: all
|
- **Available for devices**: all
|
||||||
|
- **Voltage**
|
||||||
|
- **Description**: Voltage supplied to the charger. This is only available when a vehicle is connected.
|
||||||
|
- **Available for devices**: all
|
||||||
- **CT current**
|
- **CT current**
|
||||||
- **Description**: If a current transformer (CT) was installed with your charger, this will show the current used by your whole home.
|
- **Description**: If a current transformer (CT) was installed with your charger, this will show the current used by your whole home.
|
||||||
- **Available for devices**: Home Pro, ePod
|
- **Available for devices**: Home Pro, ePod
|
||||||
|
- **Charge slot list**
|
||||||
|
- **Description**: A list of charge slots for the plan generated by Ohme. This is only available when a charge is in progress.
|
||||||
|
- **Available for devices**: all
|
||||||
|
|
||||||
#### Switches
|
#### Switches
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: OneDrive
|
title: Microsoft OneDrive
|
||||||
description: Instructions on how to setup OneDrive to be used with backups.
|
description: Instructions on how to setup OneDrive to be used with backups.
|
||||||
ha_release: 2025.2
|
ha_release: 2025.2
|
||||||
ha_category:
|
ha_category:
|
||||||
@ -16,14 +16,15 @@ related:
|
|||||||
ha_quality_scale: bronze
|
ha_quality_scale: bronze
|
||||||
---
|
---
|
||||||
|
|
||||||
This integration allows you to use [OneDrive](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage) for [Home Assistant Backups](/common-tasks/general/#backups).
|
This integration allows you to use [Microsoft OneDrive](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage) for [Home Assistant Backups](/common-tasks/general/#backups).
|
||||||
|
|
||||||
Backups will be created in a folder called `Home Assistant\backups_<id>` in the `App Folder` of your OneDrive by default.
|
Backups will be created in a folder called `Home Assistant\backups_<id>` in the `App Folder` of your OneDrive by default.
|
||||||
`id` is part of your Home Assistant instance's unique id to allow backups from multiple instances to the same OneDrive account.
|
`id` is part of your Home Assistant instance's unique id to allow backups from multiple instances to the same OneDrive account.
|
||||||
|
|
||||||
The integration only has access to an application specific `Home Assistant` folder in the `App Folder` and cannot access any other parts of your OneDrive.
|
The integration only has access to an application specific `Home Assistant` folder in the `App Folder` and cannot access any other parts of your OneDrive.
|
||||||
|
|
||||||
{% important %}
|
{% important %}
|
||||||
Because of an [issue in the Graph API](https://github.com/OneDrive/onedrive-api-docs/issues/1866), the application-specific folder is often called `Graph` instead of `Home Assistant`.
|
Because of an issue in Microsoft's APIs, the application-specific folder is often called `Graph` instead of `Home Assistant`. More on that [below](#backup-folder-is-called-graph).
|
||||||
{% endimportant %}
|
{% endimportant %}
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
@ -48,7 +49,15 @@ Delete files permanently:
|
|||||||
|
|
||||||
The backup folder is `root:\Apps\[Home Assistant | Graph]\backups_{id}`. This is not configurable because otherwise the integration would need permissions to write into your entire drive. You can, however, rename the application folder which is called `Home Assistant` or `Graph` in your OneDrive.
|
The backup folder is `root:\Apps\[Home Assistant | Graph]\backups_{id}`. This is not configurable because otherwise the integration would need permissions to write into your entire drive. You can, however, rename the application folder which is called `Home Assistant` or `Graph` in your OneDrive.
|
||||||
|
|
||||||
The last folder in the hierarchy (`backups_{id}`) is always a unique folder per Home Assistant instance to ensure that backups from different instances are not mixed. The name of this folder can be set during integration setup and can be changed later through reconfiguring the integration or by renaming the folder OneDrive.
|
The last folder in the hierarchy (`backups_{id}`) is always a unique folder per Home Assistant instance to ensure that backups from different instances are not mixed. The name of this folder can be set during integration setup and can be changed later through reconfiguring the integration or by renaming the folder in OneDrive.
|
||||||
|
|
||||||
|
### Backup folder is called `Graph`
|
||||||
|
|
||||||
|
This integration uses Microsoft's Graph API to communicate with your OneDrive. Because of an [issue](https://github.com/OneDrive/onedrive-api-docs/issues/1866) in that API, the application folder is often not named with the name of the application (`Home Assistant`), but `Graph` instead.
|
||||||
|
|
||||||
|
There is no risk of different applications mixing in that `Graph` folder, if you already have such a `Graph` folder from a different application, the next folders will just be called `Graph 1`, `Graph 2` and so on.
|
||||||
|
|
||||||
|
You should be able to manually rename the folder to something else, without the integration breaking.
|
||||||
|
|
||||||
## Requested permissions by the integration
|
## Requested permissions by the integration
|
||||||
|
|
||||||
@ -61,20 +70,6 @@ The integration will request the following permissions on your OneDrive for the
|
|||||||
|
|
||||||
<img src='/images/integrations/onedrive/onedrive-permissions.png' alt='Lists of permissions that the application will request.'>
|
<img src='/images/integrations/onedrive/onedrive-permissions.png' alt='Lists of permissions that the application will request.'>
|
||||||
|
|
||||||
## Getting application credentials
|
|
||||||
|
|
||||||
This integration comes with a predefined set of [application credentials](https://www.home-assistant.io/integrations/application_credentials/) through Home Assistant account linking.
|
|
||||||
Nobody will ever have access to your data except you, as the app does not have permission to do anything on its own. It only works with a signed-in user (it only has `delegated` not `application permissions`).
|
|
||||||
However, if you want to use your own credentials, follow [this guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=certificate) to create your own client ID and secret.
|
|
||||||
|
|
||||||
{% note %}
|
|
||||||
If you set the integration up with the default credentials and switch to custom credentials later, your backup folder will change inside your OneDrive, and you will have to manually copy existing backups from the old folder to the new one.
|
|
||||||
{% endnote %}
|
|
||||||
|
|
||||||
{% tip %}
|
|
||||||
You will need an Azure tenant with an active Azure subscription to create your own client credentials.
|
|
||||||
{% endtip %}
|
|
||||||
|
|
||||||
## Sensors
|
## Sensors
|
||||||
|
|
||||||
The integration provides the following sensors, which are updated every 5 minutes:
|
The integration provides the following sensors, which are updated every 5 minutes:
|
||||||
@ -128,6 +123,30 @@ mode: single
|
|||||||
{% enddetails %}
|
{% enddetails %}
|
||||||
|
|
||||||
|
|
||||||
|
## Getting application credentials
|
||||||
|
|
||||||
|
This integration comes with a predefined set of [application credentials](https://www.home-assistant.io/integrations/application_credentials/) through Home Assistant account linking. This means you should not need to provide credentials, but get redirected to Microsoft's sign-in page.
|
||||||
|
|
||||||
|
Even if you use the default credentials, nobody will ever have access to your data except you, as the app does not have permission to do anything on its own. It only works with a signed-in user (it only has `delegated` not `application permissions`).
|
||||||
|
|
||||||
|
However, if you want to use your own credentials, follow [this guide](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=certificate) to create your own client ID and secret.
|
||||||
|
|
||||||
|
{% tip %}
|
||||||
|
You will need an Azure tenant with an active Azure subscription to create your own client credentials.
|
||||||
|
{% endtip %}
|
||||||
|
|
||||||
|
Make sure to configure the following settings on the app registration:
|
||||||
|
|
||||||
|
- **Supported account types**: Personal Microsoft accounts only
|
||||||
|
- **Redirect URI**: Type: `Web`, URL: `https://my.home-assistant.io/redirect/oauth`
|
||||||
|
|
||||||
|
<img src='/images/integrations/onedrive/onedrive-app-registration.png' alt='Configuring a custom app.'>
|
||||||
|
|
||||||
|
|
||||||
|
{% note %}
|
||||||
|
If you set the integration up with the default credentials and switch to custom credentials later, your backup folder will change inside your OneDrive, and you will have to manually copy existing backups from the old folder to the new one.
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
## Known limitations
|
## Known limitations
|
||||||
|
|
||||||
- Only personal OneDrives are supported at the moment.
|
- Only personal OneDrives are supported at the moment.
|
||||||
@ -137,3 +156,13 @@ mode: single
|
|||||||
This integration follows standard integration removal. No extra steps are required.
|
This integration follows standard integration removal. No extra steps are required.
|
||||||
|
|
||||||
{% include integrations/remove_device_service.md %}
|
{% include integrations/remove_device_service.md %}
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
{% details "Unknown error while adding the integration" %}
|
||||||
|
|
||||||
|
Make sure that your OneDrive is not frozen. This can happen if you haven't used it for a longer period of time, or went over your data quota. {% enddetails %}
|
||||||
|
|
||||||
|
{% details "Default credentials not available" %}
|
||||||
|
|
||||||
|
If the integration asks you for a `client ID` and a `client secret`, that likely means you disabled part of the `default_config` in your Home Assistant configuration. For account linking to work you'll need `my` & `cloud` integrations loaded. {% enddetails %}
|
||||||
|
@ -133,7 +133,7 @@ automation:
|
|||||||
config_entry: abce6b8696a15e107b4bd843de722249
|
config_entry: abce6b8696a15e107b4bd843de722249
|
||||||
size: "1024x1024"
|
size: "1024x1024"
|
||||||
prompt: >-
|
prompt: >-
|
||||||
New York when the weather is {{ states("weather.home") }}"
|
New York when the weather is {{ states("weather.home") }}
|
||||||
|
|
||||||
- alias: "Send out a manual event to update the image entity"
|
- alias: "Send out a manual event to update the image entity"
|
||||||
event: new_weather_image
|
event: new_weather_image
|
||||||
@ -141,13 +141,13 @@ automation:
|
|||||||
url: '{{ generated_image.url }}'
|
url: '{{ generated_image.url }}'
|
||||||
|
|
||||||
template:
|
template:
|
||||||
- triggers:
|
- trigger:
|
||||||
- alias: "Update image when a new weather image is generated"
|
- alias: "Update image when a new weather image is generated"
|
||||||
trigger: event
|
trigger: event
|
||||||
event_type: new_weather_image
|
event_type: new_weather_image
|
||||||
image:
|
image:
|
||||||
name: "AI generated image of New York"
|
- name: "AI generated image of New York"
|
||||||
url: "{{ trigger.event.data.url }}"
|
url: "{{ trigger.event.data.url }}"
|
||||||
```
|
```
|
||||||
|
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
@ -96,3 +96,157 @@ The Weather entity provides data only in English. Home Assistant automatically t
|
|||||||
| `wind_speed` | Wind speed, meter/sec. |
|
| `wind_speed` | Wind speed, meter/sec. |
|
||||||
|
|
||||||
Details about the API are available in the [OpenWeatherMap documentation](https://openweathermap.org/api).
|
Details about the API are available in the [OpenWeatherMap documentation](https://openweathermap.org/api).
|
||||||
|
|
||||||
|
## Action `openweathermap.get_minute_forecast`
|
||||||
|
|
||||||
|
This action populates [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data)
|
||||||
|
with a mapping of minute-by-minute precipitation forecasts (rain or snow) for the next hour.
|
||||||
|
|
||||||
|
**Note:** Minute forecast is available only when the OWM integration mode is set to `v3.0`. The action will fail if the mode is set to `current`, `forecast`, or `v2.5`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
action: openweathermap.get_minute_forecast
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- weather.openweathermap
|
||||||
|
response_variable: weather_forecast
|
||||||
|
```
|
||||||
|
|
||||||
|
The response data field is a mapping of `forecast` fields.
|
||||||
|
`forecast` is a list of 60 forecasted precipitation levels; one for each minute of the next hour:
|
||||||
|
|
||||||
|
| Response data | Description | Example |
|
||||||
|
| ---------------------- | ----------- | -------- |
|
||||||
|
| `datetime` | The time of the forecasted conditions. | 2024-10-19T18:59:00+00:00 |
|
||||||
|
| `precipitation` | The precipitation amount in mm/h. | 1.25 |
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
{% details "Example action response" %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
weather.openweathermap:
|
||||||
|
forecast:
|
||||||
|
- datetime: "2024-10-19T18:59:00+00:00"
|
||||||
|
precipitation: 5.46
|
||||||
|
- datetime: "2024-10-19T19:00:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:01:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:02:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:03:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:04:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:05:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:06:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:07:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:08:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:09:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:10:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:11:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:12:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:13:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:14:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:15:00+00:00"
|
||||||
|
precipitation: 5.62
|
||||||
|
- datetime: "2024-10-19T19:16:00+00:00"
|
||||||
|
precipitation: 5.79
|
||||||
|
- datetime: "2024-10-19T19:17:00+00:00"
|
||||||
|
precipitation: 5.96
|
||||||
|
- datetime: "2024-10-19T19:18:00+00:00"
|
||||||
|
precipitation: 6.14
|
||||||
|
- datetime: "2024-10-19T19:19:00+00:00"
|
||||||
|
precipitation: 6.31
|
||||||
|
- datetime: "2024-10-19T19:20:00+00:00"
|
||||||
|
precipitation: 6.48
|
||||||
|
- datetime: "2024-10-19T19:21:00+00:00"
|
||||||
|
precipitation: 6.68
|
||||||
|
- datetime: "2024-10-19T19:22:00+00:00"
|
||||||
|
precipitation: 6.89
|
||||||
|
- datetime: "2024-10-19T19:23:00+00:00"
|
||||||
|
precipitation: 7.09
|
||||||
|
- datetime: "2024-10-19T19:24:00+00:00"
|
||||||
|
precipitation: 7.29
|
||||||
|
- datetime: "2024-10-19T19:25:00+00:00"
|
||||||
|
precipitation: 7.49
|
||||||
|
- datetime: "2024-10-19T19:26:00+00:00"
|
||||||
|
precipitation: 7.72
|
||||||
|
- datetime: "2024-10-19T19:27:00+00:00"
|
||||||
|
precipitation: 7.95
|
||||||
|
- datetime: "2024-10-19T19:28:00+00:00"
|
||||||
|
precipitation: 8.18
|
||||||
|
- datetime: "2024-10-19T19:29:00+00:00"
|
||||||
|
precipitation: 8.42
|
||||||
|
- datetime: "2024-10-19T19:30:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:31:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:32:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:33:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:34:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:35:00+00:00"
|
||||||
|
precipitation: 8.65
|
||||||
|
- datetime: "2024-10-19T19:36:00+00:00"
|
||||||
|
precipitation: 8.91
|
||||||
|
- datetime: "2024-10-19T19:37:00+00:00"
|
||||||
|
precipitation: 9.18
|
||||||
|
- datetime: "2024-10-19T19:38:00+00:00"
|
||||||
|
precipitation: 9.45
|
||||||
|
- datetime: "2024-10-19T19:39:00+00:00"
|
||||||
|
precipitation: 9.72
|
||||||
|
- datetime: "2024-10-19T19:40:00+00:00"
|
||||||
|
precipitation: 9.98
|
||||||
|
- datetime: "2024-10-19T19:41:00+00:00"
|
||||||
|
precipitation: 10.29
|
||||||
|
- datetime: "2024-10-19T19:42:00+00:00"
|
||||||
|
precipitation: 10.6
|
||||||
|
- datetime: "2024-10-19T19:43:00+00:00"
|
||||||
|
precipitation: 10.91
|
||||||
|
- datetime: "2024-10-19T19:44:00+00:00"
|
||||||
|
precipitation: 11.22
|
||||||
|
- datetime: "2024-10-19T19:45:00+00:00"
|
||||||
|
precipitation: 11.53
|
||||||
|
- datetime: "2024-10-19T19:46:00+00:00"
|
||||||
|
precipitation: 11.89
|
||||||
|
- datetime: "2024-10-19T19:47:00+00:00"
|
||||||
|
precipitation: 12.24
|
||||||
|
- datetime: "2024-10-19T19:48:00+00:00"
|
||||||
|
precipitation: 12.6
|
||||||
|
- datetime: "2024-10-19T19:49:00+00:00"
|
||||||
|
precipitation: 12.96
|
||||||
|
- datetime: "2024-10-19T19:50:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:51:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:52:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:53:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:54:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:55:00+00:00"
|
||||||
|
precipitation: 13.31
|
||||||
|
- datetime: "2024-10-19T19:56:00+00:00"
|
||||||
|
precipitation: 13.73
|
||||||
|
- datetime: "2024-10-19T19:57:00+00:00"
|
||||||
|
precipitation: 14.14
|
||||||
|
- datetime: "2024-10-19T19:58:00+00:00"
|
||||||
|
precipitation: 14.55
|
||||||
|
```
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
@ -40,6 +40,22 @@ If you are trying to get the IRK for your iPhone or Apple Watch, you must be log
|
|||||||
7. You will have to enter your password, then enter your username and password.
|
7. You will have to enter your password, then enter your username and password.
|
||||||
8. macOS will show some XML. You are looking for the "Remote IRK" field. After there is a data field that contains a base64 encoded version of your Identity Resolving Key.
|
8. macOS will show some XML. You are looking for the "Remote IRK" field. After there is a data field that contains a base64 encoded version of your Identity Resolving Key.
|
||||||
|
|
||||||
|
### On Windows / For Android
|
||||||
|
|
||||||
|
If you have a rooted Android phone, the IRK (and LTKs) can be viewed in the file `/data/misc/bluedroid/bt_config.conf`. The LE_LOCAL_KEY_IRK specifies the Android device's own IRK, and the first 16 bytes of LE_KEY_PID for every bonded device in the file indicate the bonded device's IRK. Be aware that keys stored in this file are a little-endian, so the byte order of keys in this file will need to be reversed. For example, the little-endian IRK 22BC0E3F2EACF08EE36B865553EA0B4E needs to be changed to 4E0BEA5355866BE38EF0AC2E3F0EBC22.
|
||||||
|
|
||||||
|
Alternatively, the IRK of an Android phone and/or secondary device can be obtained using Wireshark:
|
||||||
|
|
||||||
|
1. In developer settings on the Android phone, enable the "USB Debugging" and "Enable Bluetooth HCI snoop log" options.
|
||||||
|
2. Ensure a second Bluetooth device (e.g., smartwatch or earbuds) is unpaired.
|
||||||
|
3. Disable and re-enable Bluetooth on the phone ,then re-pair the secondary device.
|
||||||
|
4. Connect the Android phone to a computer with [adb](https://developer.android.com/tools/adb) installed.
|
||||||
|
5. Establish an adb connection (`adb connect...`), then run the command: `adb bugreport scanwatch`.
|
||||||
|
6. In the generated `scanwatch.zip` file, locate and extract `FS\data\misc\bluetooth\logs\btsnoop_hci.log`.
|
||||||
|
7. Open `btsnoop_hci.log` in [Wireshark](https://www.wireshark.org/download.html) and search for `btsmp.id_resolving_key`.
|
||||||
|
8. Select one of the frames and expand the "Bluetooth Security Manager Protocol." The hex dump will show either the sending or receiving device IRK.
|
||||||
|
9. Reverse the value displayed. For example, if it is `763af6c7f7d94ad6c262158e2320544e`, the IRK to use would be: `4e5420238e1562c2d64ad9f7c7f63a76`.
|
||||||
|
|
||||||
## ESPresense
|
## ESPresense
|
||||||
|
|
||||||
If you already use Identity Resolving Key tracking with ESPresence then you already have a hex-encoded version of your Identity Resolving Key. Home Assistant can use the key in this format directly.
|
If you already use Identity Resolving Key tracking with ESPresence then you already have a hex-encoded version of your Identity Resolving Key. Home Assistant can use the key in this format directly.
|
||||||
|
@ -38,7 +38,7 @@ The following sensor entities will be created.
|
|||||||
|
|
||||||
### Distance
|
### Distance
|
||||||
|
|
||||||
For each tracked [device](/integrations/device_tracker/) or [person](/integrations/person/), a sensor is created showing the distance from the monitored zone in a unit depending on your [Home Assistant Unit System](/docs/configuration/basic) selection. When a tracked person or device enters the monitored zone, the distance is set to 0.
|
For each tracked [device](/integrations/device_tracker/) or [person](/integrations/person/), a sensor is created showing the distance from the edge of monitored zone in a unit depending on your [Home Assistant Unit System](/docs/configuration/basic) selection. When a tracked person or device enters the monitored zone, the distance is set to 0.
|
||||||
|
|
||||||
### Direction of travel
|
### Direction of travel
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: pyLoad
|
title: pyLoad
|
||||||
description: Instructions on how to integrate pyLoad download sensor within Home Assistant.
|
description: Instructions on how to integrate pyLoad download manager with Home Assistant.
|
||||||
ha_category:
|
ha_category:
|
||||||
- Downloading
|
- Downloading
|
||||||
ha_release: 0.58
|
ha_release: 0.58
|
||||||
@ -19,24 +19,156 @@ ha_config_flow: true
|
|||||||
|
|
||||||
The [**pyLoad**](https://pyload.net/) {% term integration %} enables monitoring your downloads directly in Home Assistant. This integration provides various sensors to keep track of your download activities and allows creating automations based on the sensor information, alongside button and switch controls for performing specific tasks such as aborting downloads and managing file restarts.
|
The [**pyLoad**](https://pyload.net/) {% term integration %} enables monitoring your downloads directly in Home Assistant. This integration provides various sensors to keep track of your download activities and allows creating automations based on the sensor information, alongside button and switch controls for performing specific tasks such as aborting downloads and managing file restarts.
|
||||||
|
|
||||||
|
## About pyLoad
|
||||||
|
|
||||||
|
**pyLoad** is an open-source download manager designed for always-on devices like home servers, NAS systems, and routers. It supports various file hosts, container formats, and web standards, enabling fully automated, unattended downloads. With its web interface, pyLoad allows for easy remote management from any device.
|
||||||
|
|
||||||
|
## How you can use this integration
|
||||||
|
|
||||||
|
The **pyLoad** integration allows you to monitor and control your downloads directly from Home Assistant. Here are some ways you can use it:
|
||||||
|
|
||||||
|
- **Track active downloads** – Send a notification when all downloads are complete or if the queue is empty.
|
||||||
|
- **Free space alerts** – Set up an automation to alert you when disk space is low, ensuring downloads don’t fail due to storage issues.
|
||||||
|
- **Pause downloads** – Automatically pause downloads when streaming or gaming to avoid bandwidth congestion, then resume them later.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
To set up the pyLoad integration, you must have a running pyLoad instance on your home server, NAS, or any other device. An always-on device is recommended. Ensure that pyLoad's web interface is accessible for Home Assistant.
|
||||||
|
|
||||||
|
If you haven't set up pyLoad yet, an easy way to get it up and running is by installing the [pyLoad-ng add-on for Home Assistant](https://github.com/tr4nt0r/pyload-ng).
|
||||||
|
|
||||||
|
- During the setup process in Home Assistant, you will need:
|
||||||
|
- pyLoad account credentials – A valid *username* and *password* to authenticate with pyLoad.
|
||||||
|
- The {% term host %} of the device running pyLoad.
|
||||||
|
- The port number that pyLoad is listening on (default is usually `8000`).
|
||||||
|
|
||||||
|
{% note %}
|
||||||
|
|
||||||
|
The account used for integration must either be an admin account or one with at least the following permissions: `DELETE`, `STATUS`, `LIST`, and `MODIFY`. You can set up and manage users and permissions under **Settings -> Users** in the pyLoad web interface.
|
||||||
|
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
### Configuration parameters
|
||||||
|
|
||||||
|
{% configuration_basic %}
|
||||||
|
Host:
|
||||||
|
description: "The hostname or IP address of the device running your pyLoad instance."
|
||||||
|
Port:
|
||||||
|
description: "The port of the pyLoad instance. pyLoad uses port 8000 by default."
|
||||||
|
Uses an SSL Certificate:
|
||||||
|
description: "If enabled, the connection to the pyLoad instance will use HTTPS."
|
||||||
|
Verify SSL certificate:
|
||||||
|
description: "If checked, the SSL certificate will be validated to ensure a secure connection."
|
||||||
|
Username:
|
||||||
|
description: "The username used to access the pyLoad instance."
|
||||||
|
Password:
|
||||||
|
description: "The password associated with the pyLoad account."
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
## Sensors
|
## Sensors
|
||||||
|
|
||||||
- **Speed:** Monitors the current download speed.
|
- **Speed**: Monitors the current download speed.
|
||||||
- **Active downloads:** Indicates the number of files pyLoad is actively downloading
|
- **Active downloads**: Indicates the number of files pyLoad is actively downloading
|
||||||
- **Downloads in queue:** Shows the number of downloads currently in the queue.
|
- **Downloads in queue**: Shows the number of downloads currently in the queue.
|
||||||
- **Finished downloads:** Indicates the number of completed downloads.
|
- **Finished downloads**: Indicates the number of completed downloads.
|
||||||
- **Free space:** Shows the available disk space in the download directory.
|
- **Free space**: Shows the available disk space in the download directory.
|
||||||
|
|
||||||
## Buttons
|
## Buttons
|
||||||
|
|
||||||
- **Abort all running downloads:** Aborts all currently running downloads.
|
- **Abort all running downloads**: Aborts all currently running downloads.
|
||||||
- **Delete finished files/packages:** Deletes all finished files and packages.
|
- **Delete finished files/packages**: Deletes all finished files and packages.
|
||||||
- **Restart all failed files/packages:** Restarts all failed downloads.
|
- **Restart all failed files/packages**: Restarts all failed downloads.
|
||||||
- **Restart pyLoad core**: Restarts the pyLoad core.
|
- **Restart pyLoad core**: Restarts the pyLoad core.
|
||||||
|
|
||||||
## Switches
|
## Switches
|
||||||
|
|
||||||
- **Pause/Resume Queue:** Pauses or resumes the download queue. When paused, active downloads will continue, but new downloads in the queue will not start.
|
- **Pause/Resume Queue**: Pauses or resumes the download queue. When paused, active downloads will continue, but new downloads in the queue will not start.
|
||||||
- **Auto-reconnect:** If configured, enables pyLoad to automatically reconnect the internet connection.
|
- **Auto-reconnect**: If configured, enables pyLoad to automatically reconnect the internet connection.
|
||||||
|
|
||||||
|
## Automations
|
||||||
|
|
||||||
|
Get started with these example {% term automations %}.
|
||||||
|
|
||||||
|
### Pause downloads when disk space is low
|
||||||
|
|
||||||
|
This automation will pause new downloads when your available disk space falls below 5 GB.
|
||||||
|
|
||||||
|
{% details "Example YAML configuration" %}
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Monitor pyLoad download queue"
|
||||||
|
description: "Pause new downloads when the disk space is low."
|
||||||
|
triggers:
|
||||||
|
- trigger: numeric_state
|
||||||
|
entity_id: sensor.pyload_free_space
|
||||||
|
below: 5000000000 # Trigger when free space drops below 5 GB (in bytes)
|
||||||
|
actions:
|
||||||
|
- action: switch.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: switch.pyload_pause_resume_queue
|
||||||
|
- service: notify.persistent_notification
|
||||||
|
data:
|
||||||
|
message: "Free space is low, pausing pyLoad queue."
|
||||||
|
mode: single
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
### Halt pyLoad downloads when watching Netflix
|
||||||
|
|
||||||
|
This automation halts all active pyLoad downloads when watching Netflix on your media player.
|
||||||
|
|
||||||
|
{% details "Example YAML configuration" %}
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Halt pyLoad downloads when watching Netflix"
|
||||||
|
description: "Halt all pyLoad downloads when Netflix streaming starts on the media player."
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id: media_player.android_tv
|
||||||
|
to: playing
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: media_player.android_tv
|
||||||
|
attribute: app_id
|
||||||
|
state: com.netflix.ninja
|
||||||
|
actions:
|
||||||
|
- action: button.press
|
||||||
|
target:
|
||||||
|
entity_id: button.pyload_abort_all_running_downloads
|
||||||
|
- action: notify.persistent_notification
|
||||||
|
data:
|
||||||
|
message: "pyLoad downloads have been halted because Netflix streaming started."
|
||||||
|
mode: single
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
## Data updates
|
||||||
|
|
||||||
|
This integration {% term polling polls %} your **pyLoad** instance every 20 seconds. If you prefer a different update frequency, you can define a **custom polling interval** — see [Defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval) for details.
|
||||||
|
|
||||||
|
## Known limitations
|
||||||
|
|
||||||
|
- **Paused downloads**: When the download queue is paused, active downloads will continue, but new downloads in the queue will not start until the queue is resumed.
|
||||||
|
- **Halt all downloads**: To completely halt downloading, use the `Abort all running downloads` action. The `Restart failed files/packages` action will also resume any aborted downloads.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs, stop the debug logging again (*download of debug log file will start automatically*). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
|
||||||
|
|
||||||
|
## Remove integration
|
||||||
|
|
||||||
|
This integration can be removed by following these steps:
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
@ -34,8 +34,8 @@ Once the Qbus controller is connected to the MQTT server, you need to set up an
|
|||||||
|
|
||||||
There is currently support for the following **Qbus** products within Home Assistant:
|
There is currently support for the following **Qbus** products within Home Assistant:
|
||||||
|
|
||||||
- **CTD 3.0**: main controller.
|
- **CTD01E to CTD03E (CTD 3.0)**: main controllers (yellow).
|
||||||
- **CTD 3.5**: main controller.
|
- **CTD10 to CTDMax (CTD 3.5)**: main controllers (black).
|
||||||
- **Toggle**: toggle outputs on controllers.
|
- **Toggle**: toggle outputs on controllers.
|
||||||
|
|
||||||
## Available entities
|
## Available entities
|
||||||
|
@ -139,11 +139,11 @@ Depending on the supported features of the camera, number entities are added for
|
|||||||
- Auto track disappear time
|
- Auto track disappear time
|
||||||
- Auto track stop time
|
- Auto track stop time
|
||||||
- Day night switch threshold*
|
- Day night switch threshold*
|
||||||
- Image brightness* (default 128)
|
- Image brightness*+ (default 128)
|
||||||
- Image contrast* (default 128)
|
- Image contrast*+ (default 128)
|
||||||
- Image saturation* (default 128)
|
- Image saturation*+ (default 128)
|
||||||
- Image sharpness* (default 128)
|
- Image sharpness*+ (default 128)
|
||||||
- Image hue* (default 128)
|
- Image hue*+ (default 128)
|
||||||
|
|
||||||
**Floodlight turn on brightness** controls the brightness of the floodlight when it is turned on internally by the camera (see **Floodlight mode** select entity) or when using the **Floodlight** light entity.
|
**Floodlight turn on brightness** controls the brightness of the floodlight when it is turned on internally by the camera (see **Floodlight mode** select entity) or when using the **Floodlight** light entity.
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ Some Reolink <abbr title="pan, tilt, and zoom">PTZ</abbr> cameras can move at di
|
|||||||
Depending on the supported features of the camera, select entities are added for:
|
Depending on the supported features of the camera, select entities are added for:
|
||||||
|
|
||||||
- Floodlight mode (Off, Auto, Schedule)
|
- Floodlight mode (Off, Auto, Schedule)
|
||||||
- Day night mode (Auto, Color, Black&White)
|
- Day night mode+ (Auto, Color, Black&White)
|
||||||
- <abbr title="pan, tilt, and zoom">PTZ</abbr> preset
|
- <abbr title="pan, tilt, and zoom">PTZ</abbr> preset
|
||||||
- Play quick reply message
|
- Play quick reply message
|
||||||
- Auto quick reply message
|
- Auto quick reply message
|
||||||
@ -310,6 +310,7 @@ The following models have been tested and confirmed to work with a direct link t
|
|||||||
- C2 Pro*
|
- C2 Pro*
|
||||||
- [CX410](https://reolink.com/product/cx410/)
|
- [CX410](https://reolink.com/product/cx410/)
|
||||||
- [CX810](https://reolink.com/product/cx810/)
|
- [CX810](https://reolink.com/product/cx810/)
|
||||||
|
- [E1 Pro](https://reolink.com/product/e1-pro/) (only hardware version IPC_NT1NA45MP)
|
||||||
- [E1 Zoom](https://reolink.com/product/e1-zoom/)
|
- [E1 Zoom](https://reolink.com/product/e1-zoom/)
|
||||||
- [E1 Outdoor](https://reolink.com/product/e1-outdoor/)
|
- [E1 Outdoor](https://reolink.com/product/e1-outdoor/)
|
||||||
- [E1 Outdoor PoE](https://reolink.com/product/e1-outdoor-poe/)
|
- [E1 Outdoor PoE](https://reolink.com/product/e1-outdoor-poe/)
|
||||||
@ -375,7 +376,9 @@ The following battery-powered models have been tested and confirmed to work thro
|
|||||||
|
|
||||||
- [Argus 3 Pro](https://reolink.com/product/argus-3-pro/)
|
- [Argus 3 Pro](https://reolink.com/product/argus-3-pro/)
|
||||||
- [Argus 4 Pro](https://reolink.com/product/argus-4-pro/)
|
- [Argus 4 Pro](https://reolink.com/product/argus-4-pro/)
|
||||||
|
- [Argus Eco](https://reolink.com/product/argus-eco/)
|
||||||
- [Argus Eco Ultra](https://reolink.com/product/argus-eco-ultra/)
|
- [Argus Eco Ultra](https://reolink.com/product/argus-eco-ultra/)
|
||||||
|
- [Argus PT](https://reolink.com/product/argus-pt/)
|
||||||
- [Argus Track](https://reolink.com/product/argus-track/)
|
- [Argus Track](https://reolink.com/product/argus-track/)
|
||||||
- [Reolink Doorbell Battery](https://reolink.com/roadmap/)
|
- [Reolink Doorbell Battery](https://reolink.com/roadmap/)
|
||||||
|
|
||||||
@ -386,7 +389,7 @@ Reolink provides [this larger list of battery camera models](https://support.reo
|
|||||||
The following models are lacking the HTTP web server API and can, therefore, not work directly with this integration.
|
The following models are lacking the HTTP web server API and can, therefore, not work directly with this integration.
|
||||||
However, these cameras can work with this integration through an NVR or Home Hub in which the NVR/Home Hub is connected to Home Assistant.
|
However, these cameras can work with this integration through an NVR or Home Hub in which the NVR/Home Hub is connected to Home Assistant.
|
||||||
|
|
||||||
- E1 Pro
|
- E1 Pro (The IPC_NT1NA45MP hardware version also works with a direct connection)
|
||||||
- E1
|
- E1
|
||||||
- Reolink Lumus
|
- Reolink Lumus
|
||||||
- B400*
|
- B400*
|
||||||
|
@ -12,64 +12,58 @@ ha_domain: schedule
|
|||||||
ha_integration_type: helper
|
ha_integration_type: helper
|
||||||
---
|
---
|
||||||
|
|
||||||
The schedule integration provides a way to create a weekly schedule in
|
The **Schedule** {% term integration %} provides a way to create a weekly schedule {% term entity %} in Home Assistant, consisting of time blocks with defined start and end times. The schedule is active when a time block starts and becomes inactive when it ends, allowing it to be used for triggering or making decisions in automations and scripts.
|
||||||
Home Assistant that can be used to trigger or make decisions in your
|
|
||||||
automations and scripts.
|
|
||||||
|
|
||||||
The preferred way to configure a schedule is via the user interface at
|
|
||||||
**{% my helpers title="Settings > Devices & services > Helpers." %}** Click the add button
|
|
||||||
and then choose the **{% my config_flow_start domain=schedule title="Schedule" %}** option, or click the My button below.
|
|
||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
To be able to add **{% my helpers title="Helpers" %}** via the user interface you should
|
{% configuration_basic %}
|
||||||
have `default_config:` in your {% term "`configuration.yaml`" %}, it should already
|
Name:
|
||||||
be there by default unless you removed it.
|
description: Friendly name of the schedule.
|
||||||
|
Icon:
|
||||||
|
description: Icon to display in the frontend for this schedule.
|
||||||
|
Schedule blocks:
|
||||||
|
description: >
|
||||||
|
Press and drag to select time blocks for each day of the week.
|
||||||
|
It is not possible to create overlapping time blocks on the same day.
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
If you removed `default_config:` from your configuration,
|
After creating schedule blocks, you can press a block to edit the details.
|
||||||
you must add it back or, alternatively, `schedule:` to your
|
|
||||||
`configuration.yaml` first, before you can create them via the UI.
|
|
||||||
|
|
||||||
Alternatively, a schedule can also be created and configured via YAML
|
{% configuration_basic %}
|
||||||
configuration. For example:
|
Start:
|
||||||
|
required: true
|
||||||
|
type: time
|
||||||
|
description: The start time to mark the schedule as active/on.
|
||||||
|
End:
|
||||||
|
required: true
|
||||||
|
type: time
|
||||||
|
description: The end time to mark as inactive/off again.
|
||||||
|
Additional data:
|
||||||
|
required: false
|
||||||
|
type: map
|
||||||
|
description: A mapping of attribute names to values, which will be added to the entity's attributes when the block is active.
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
|
### Adding additional data
|
||||||
|
|
||||||
|
Adding the following as `Additional data` will show `brightness` and `color_temp` as {% term entity %} attributes when the block is active:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Example configuration.yaml entry
|
brightness: 100
|
||||||
schedule:
|
color_temp: 4000
|
||||||
thermostat_schedule:
|
|
||||||
name: "Thermostat schedule"
|
|
||||||
monday:
|
|
||||||
- from: "17:00:00"
|
|
||||||
to: "21:00:00"
|
|
||||||
tuesday:
|
|
||||||
- from: "17:00:00"
|
|
||||||
to: "21:00:00"
|
|
||||||
wednesday:
|
|
||||||
- from: "17:00:00"
|
|
||||||
to: "21:00:00"
|
|
||||||
thursday:
|
|
||||||
- from: "17:00:00"
|
|
||||||
to: "21:00:00"
|
|
||||||
friday:
|
|
||||||
- from: "17:00:00"
|
|
||||||
to: "23:00:00"
|
|
||||||
saturday:
|
|
||||||
- from: "07:00:00"
|
|
||||||
to: "10:00:00"
|
|
||||||
- from: "16:00:00"
|
|
||||||
to: "23:00:00"
|
|
||||||
sunday:
|
|
||||||
- from: "07:00:00"
|
|
||||||
to: "21:00:00"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Defining the schedule in YAML also allows adding extra data to each block, which will
|
## YAML configuration
|
||||||
appear as attributes on the schedule helper entity when that block is active. This can
|
|
||||||
be used to easily build schedule-based automations.
|
Alternatively, this {% term integration %} can be configured and set up manually via YAML instead.
|
||||||
|
To enable the Integration sensor in your installation, add the following to your {% term "`configuration.yaml`" %} file.
|
||||||
|
|
||||||
|
{% note %}
|
||||||
|
|
||||||
|
The `data` field follows the same logic as described above in *Adding additional data*.
|
||||||
|
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
The `data` key of each block should be a mapping of attribute names to values. In this example,
|
|
||||||
the schedule helper entity will have "Brightness" and "Color temp" attributes when
|
|
||||||
the blocks are active:
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
schedule:
|
schedule:
|
||||||
@ -116,7 +110,6 @@ schedule:
|
|||||||
type: icon
|
type: icon
|
||||||
"monday|tuesday|wednesday|thursday|friday|saturday|sunday":
|
"monday|tuesday|wednesday|thursday|friday|saturday|sunday":
|
||||||
description: A schedule for each day of the week.
|
description: A schedule for each day of the week.
|
||||||
required: false
|
|
||||||
required: true
|
required: true
|
||||||
type: list
|
type: list
|
||||||
keys:
|
keys:
|
||||||
@ -129,54 +122,59 @@ schedule:
|
|||||||
required: true
|
required: true
|
||||||
type: time
|
type: time
|
||||||
data:
|
data:
|
||||||
description: Additional data to add to the entity's attributes when this block is active.
|
description: A mapping of attribute names to values, which will be added to the entity's attributes when the block is active.
|
||||||
required: false
|
required: false
|
||||||
type: map
|
type: map
|
||||||
default: {}
|
default: {}
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Attributes
|
## Attributes
|
||||||
|
|
||||||
A schedule entity's state exports attributes that can be useful in
|
A schedule entity exports state attributes that can be useful in automations and templates.
|
||||||
automations and templates.
|
|
||||||
|
|
||||||
| Attribute | Description |
|
| Attribute | Description |
|
||||||
| ----- | ----- |
|
| ----- | ----- |
|
||||||
| `next_event` | A datetime object containing the next time the schedule is going to change state. |
|
| `next_event` | A datetime object containing the next time the schedule is going to change state. |
|
||||||
|
| `key_1`, `key_2`, ... | The mapping values from **Additional data** / `data` settings of a time block when the respective block is active. |
|
||||||
|
|
||||||
### Automation example
|
## Automation example
|
||||||
|
|
||||||
A schedule creates an on/off (schedule) sensor within the times set. Using the thermostat schedule example above, you can turn on your thermostat:
|
A schedule creates an on/off (schedule) sensor within the times set.
|
||||||
|
By incorporating the `light_schedule` example from above in an automation, we can turn on a light when the schedule is active.
|
||||||
```yaml
|
|
||||||
triggers:
|
|
||||||
- trigger: state
|
|
||||||
entity_id:
|
|
||||||
- schedule.thermostat_schedule
|
|
||||||
to: "on"
|
|
||||||
actions:
|
|
||||||
- action: climate.turn_on
|
|
||||||
target:
|
|
||||||
entity_id: climate.thermostat
|
|
||||||
```
|
|
||||||
|
|
||||||
Using the `light_schedule` example from above in an automation might look like this:
|
|
||||||
|
|
||||||
{% raw %}
|
{% raw %}
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
triggers:
|
triggers:
|
||||||
- trigger: state
|
- trigger: state
|
||||||
entity_id:
|
entity_id:
|
||||||
- schedule.light_schedule
|
- schedule.light_schedule
|
||||||
to: "on"
|
to: "on"
|
||||||
actions:
|
actions:
|
||||||
- action: light.turn_on
|
- action: light.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: light.kitchen
|
entity_id: light.kitchen
|
||||||
data:
|
data:
|
||||||
brightness_pct: "{{ state_attr('schedule.light_schedule', 'brightness') }}"
|
brightness_pct: "{{ state_attr('schedule.light_schedule', 'brightness') }}"
|
||||||
kelvin: "{{ state_attr('schedule.light_schedule, 'temperature') }}"
|
kelvin: "{{ state_attr('schedule.light_schedule', 'color_temp') }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
Another automation can be added to turn the lights off once the schedule is inactive:
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
triggers:
|
||||||
|
- trigger: state
|
||||||
|
entity_id:
|
||||||
|
- schedule.light_schedule
|
||||||
|
to: "off"
|
||||||
|
actions:
|
||||||
|
- action: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen
|
||||||
```
|
```
|
||||||
|
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
@ -31,4 +31,4 @@ All information about how the seasons work was taken from Wikipedia:
|
|||||||
- [https://en.wikipedia.org/wiki/Equinox](https://en.wikipedia.org/wiki/Equinox)
|
- [https://en.wikipedia.org/wiki/Equinox](https://en.wikipedia.org/wiki/Equinox)
|
||||||
- [https://en.wikipedia.org/wiki/Solstice](https://en.wikipedia.org/wiki/Solstice)
|
- [https://en.wikipedia.org/wiki/Solstice](https://en.wikipedia.org/wiki/Solstice)
|
||||||
|
|
||||||
To cut a long read short, Astronomical gives seasons based on the shortest/longest day and equinoxes. So in the Northern Hemisphere spring starts on 20 March). Meteorological gives seasons based on months (so in the Northern Hemisphere spring starts on 1 March).
|
To cut a long read short, Astronomical gives seasons based on the shortest/longest day and equinoxes. So in the Northern Hemisphere spring starts on 20 March. Meteorological gives seasons based on months so in the Northern Hemisphere spring starts on 1 March.
|
||||||
|
@ -85,7 +85,7 @@ Integration is communicating directly with the device; cloud connection is not n
|
|||||||
|
|
||||||
## Bluetooth Support
|
## Bluetooth Support
|
||||||
|
|
||||||
Shelly generation 2+ devices not battery-powered can act as a Bluetooth proxy for advertisements. Active or passive listening can be enabled in the options flow.
|
Shelly generation 2+ devices that are not battery-powered can act as a Bluetooth proxy for advertisements. Active or passive listening can be enabled in the options flow.
|
||||||
|
|
||||||
{% include integrations/option_flow.md %}
|
{% include integrations/option_flow.md %}
|
||||||
|
|
||||||
@ -263,11 +263,11 @@ Not all devices support all input events. You can check on [Shelly API Reference
|
|||||||
|
|
||||||
## Appliance type (generation 1)
|
## Appliance type (generation 1)
|
||||||
|
|
||||||
Shelly device relays are added to Home Assistant by default as `switch` entities. A relay can be added as a `light` entity if **Settings** >> **APPLIANCE TYPE** value is set to `light`.
|
Shelly device relays are added to Home Assistant by default as `switch` entities. A relay can be added as a `light` entity if **Settings** >> **APPLIANCE TYPE** value in the WebUI of the device is set to `light`.
|
||||||
|
|
||||||
## Consumption type (generation 2+)
|
## Consumption type (generation 2+)
|
||||||
|
|
||||||
Shelly device relays are added to Home Assistant by default as `switch` entities. A relay can be added as a `light` entity if **EXTERNAL CONSUMPTION TYPE** value is set to `light`.
|
Shelly device relays are added to Home Assistant by default as `switch` entities. A relay can be added as a `light` entity if **EXTERNAL CONSUMPTION TYPE** value in the WebUI of the device is set to `light`.
|
||||||
|
|
||||||
## Light transition
|
## Light transition
|
||||||
|
|
||||||
|
@ -80,13 +80,13 @@ Sort all items by name in the shopping list.
|
|||||||
|
|
||||||
A `shopping_list_updated` event is triggered when items in the list are modified, with the following data payload attached to it. This can be used to trigger automations such as sending a push notification when someone adds an item to the shopping list, which when clicked, will open the list.
|
A `shopping_list_updated` event is triggered when items in the list are modified, with the following data payload attached to it. This can be used to trigger automations such as sending a push notification when someone adds an item to the shopping list, which when clicked, will open the list.
|
||||||
|
|
||||||
| Data payload attribute | Description |
|
| Data payload attribute | Description |
|
||||||
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `action` | What action was taken on the item. Either `add` for a new item being added, or `update` for an item being updated. |
|
| `action` | What action was taken on the item. Either `add` for a new item being added, `update` for an item being updated, or `remove` for an item being removed. |
|
||||||
| `item` | A dictionary containing details of the item that was updated. |
|
| `item` | A dictionary containing details of the item that was updated. |
|
||||||
| `item.id` | A unique ID for this item |
|
| `item.id` | A unique ID for this item |
|
||||||
| `item.name` | The text attached to the item, for example `Milk` |
|
| `item.name` | The text attached to the item, for example `Milk` |
|
||||||
| `item.complete` | A boolean indicated whether the item has been marked as complete. |
|
| `item.complete` | A boolean indicated whether the item has been marked as complete. |
|
||||||
|
|
||||||
{% raw %}
|
{% raw %}
|
||||||
|
|
||||||
@ -107,3 +107,12 @@ actions:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
|
||||||
|
You can also trigger an automation when a `shopping_list_updated` event was triggered by any of the following actions:
|
||||||
|
|
||||||
|
- `clear`: A completed item was cleared from the list.
|
||||||
|
- `sorted`: The items in the list were sorted by name.
|
||||||
|
- `reorder`: An item has been reordered in the list.
|
||||||
|
- `update_list`: All items have been updated.
|
||||||
|
|
||||||
|
In these cases, the event does not return a list item.
|
@ -106,7 +106,7 @@ sequence:
|
|||||||
- action: notify.YOUR_SLACK_TEAM
|
- action: notify.YOUR_SLACK_TEAM
|
||||||
data:
|
data:
|
||||||
message: "Fallback Text"
|
message: "Fallback Text"
|
||||||
target: "#test-channel"
|
target: "#test-channel" # Single channel target
|
||||||
title: "Reminder"
|
title: "Reminder"
|
||||||
data:
|
data:
|
||||||
blocks:
|
blocks:
|
||||||
@ -122,6 +122,38 @@ Update the blocks array with valid Slack blocks. The easiest way to create this
|
|||||||
|
|
||||||
Create a duplicate of this script to use for different messages, and different channels (the door was opened in #security, the light was left on on #lights, etc).
|
Create a duplicate of this script to use for different messages, and different channels (the door was opened in #security, the light was left on on #lights, etc).
|
||||||
|
|
||||||
|
You can also send messages to multiple targets (channels and/or users) at once:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
alias: "Notify: Multiple Targets Message"
|
||||||
|
sequence:
|
||||||
|
- action: notify.YOUR_SLACK_TEAM
|
||||||
|
data:
|
||||||
|
message: "Alert: Motion detected!"
|
||||||
|
target:
|
||||||
|
- "#security" # Channel by name
|
||||||
|
- "C01234ABCD" # Channel by ID
|
||||||
|
- "U5678EFGH" # Direct message to user by ID
|
||||||
|
title: "Security Alert"
|
||||||
|
data:
|
||||||
|
blocks:
|
||||||
|
- type: section
|
||||||
|
text:
|
||||||
|
type: mrkdwn
|
||||||
|
text: "Motion detected in the backyard camera"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Target Types
|
||||||
|
|
||||||
|
The `target` field accepts either a single value or a list of values. Each target can be:
|
||||||
|
|
||||||
|
- A channel name with a `#` prefix (e.g., `#general`)
|
||||||
|
- A channel name without the `#` prefix (e.g., `general`)
|
||||||
|
- A channel ID (e.g., `C01234ABCD`)
|
||||||
|
- A user ID for direct messages (e.g., `U5678EFGH`)
|
||||||
|
|
||||||
|
When sending files, make sure you have the proper permissions set up as described in the Setup section.
|
||||||
|
|
||||||
### Icons
|
### Icons
|
||||||
|
|
||||||
Slack uses the standard emoji sets used [here](https://slack.com/intl/en-gb/help/articles/202931348-Use-emoji-and-reactions#add-emoji-to-your-messages). Alternatively a publicly accessible URL may be used.
|
Slack uses the standard emoji sets used [here](https://slack.com/intl/en-gb/help/articles/202931348-Use-emoji-and-reactions#add-emoji-to-your-messages). Alternatively a publicly accessible URL may be used.
|
||||||
|
@ -74,7 +74,7 @@ The integration fetches data from the device every 15 seconds.
|
|||||||
|
|
||||||
## Known limitations
|
## Known limitations
|
||||||
|
|
||||||
The integration only provides connection with Slide devices via the local API. For connecting via the cloud API, please use the [Slide](./slide) integration.
|
The integration only provides connection with Slide devices via the local API. The cloud API is no longer available.
|
||||||
|
|
||||||
|
|
||||||
## Remove integration
|
## Remove integration
|
||||||
|
44
source/_integrations/snoo.markdown
Normal file
44
source/_integrations/snoo.markdown
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
title: Snoo
|
||||||
|
description: Instructions on how to integrate Snoo into Home Assistant
|
||||||
|
ha_category:
|
||||||
|
- Sensor
|
||||||
|
ha_iot_class: Cloud Push
|
||||||
|
ha_release: 2025.3
|
||||||
|
ha_config_flow: true
|
||||||
|
ha_codeowners:
|
||||||
|
- '@Lash-L'
|
||||||
|
ha_domain: snoo
|
||||||
|
ha_platforms:
|
||||||
|
- sensor
|
||||||
|
ha_integration_type: integration
|
||||||
|
---
|
||||||
|
|
||||||
|
The [Snoo](https://www.happiestbaby.com/products/snoo-smart-bassinet) is a smart bassinet made by [Happiest Baby](https://www.happiestbaby.com/) that helps get your baby to sleep and helps keep them asleep.
|
||||||
|
|
||||||
|
|
||||||
|
## Installing the integration
|
||||||
|
This integration follows standard integration installation. No extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
|
## Sensors
|
||||||
|
|
||||||
|
### State
|
||||||
|
|
||||||
|
The Snoo can have one of 8 states
|
||||||
|
1. Baseline - This is the basic state the snoo starts with. It has not detected the need to do any further soothing.
|
||||||
|
2. Level 1 - This is the lowest level of soothing
|
||||||
|
3. Level 2
|
||||||
|
4. Level 3
|
||||||
|
5. Level 4
|
||||||
|
6. Stop - The snoo is no longer running
|
||||||
|
7. Pre-timeout - the snoo is preparing to go back to stop rotating
|
||||||
|
8. Timeout - the snoo is stopping rotating.
|
||||||
|
|
||||||
|
## Time left
|
||||||
|
This describes how long until the Snoo will change levels or it is Unknown if it is not currently planning to change levels.
|
||||||
|
|
||||||
|
## Removing the integration
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
@ -184,6 +184,50 @@ For example, to play an album from your collection, create an IFTTT applet like
|
|||||||
|
|
||||||
This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTTT cannot escape the text field.
|
This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTTT cannot escape the text field.
|
||||||
|
|
||||||
|
When specifying additional parameters in the Visual Editor, each parameter must be preceded by a hyphen and a space to correctly populate the array:
|
||||||
|
|
||||||
|
For example, to create an automation to mute playback, use the command `mixer` and the parameter `muting`:
|
||||||
|
|
||||||
|
| Row | Parameter | Description |
|
||||||
|
| --- | -------- | ----------- |
|
||||||
|
| 1 | - muting | Toggle muting on / off |
|
||||||
|
| 2 | | |
|
||||||
|
|
||||||
|
resulting in the YAML:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Toggle the muting state of the specified player
|
||||||
|
action: squeezebox.call_method
|
||||||
|
metadata: {}
|
||||||
|
data:
|
||||||
|
command: mixer
|
||||||
|
parameters:
|
||||||
|
- muting
|
||||||
|
```
|
||||||
|
|
||||||
|
Where a parameter is an increment or decrement, it is necessary to place the value in double quotes.
|
||||||
|
|
||||||
|
For example, to increase the playback volume, use the command `mixer` and the parameters `volume` and the amount to increment:
|
||||||
|
|
||||||
|
| Row | Parameter | Description |
|
||||||
|
| --- | -------- | ----------- |
|
||||||
|
| 1 | - volume | Parameter to change |
|
||||||
|
| 2 | - "+5" | Increment volume by 5 percent |
|
||||||
|
|
||||||
|
resulting in the YAML:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Increment the playback volume of the specified player by five percent
|
||||||
|
action: squeezebox.call_method
|
||||||
|
metadata: {}
|
||||||
|
data:
|
||||||
|
command: mixer
|
||||||
|
parameters:
|
||||||
|
- volume
|
||||||
|
- "+5"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Action `call_query`
|
### Action `call_query`
|
||||||
|
|
||||||
Call a custom Squeezebox JSON-RPC API. The result of the query will be stored in the 'query_result' attribute of the player.
|
Call a custom Squeezebox JSON-RPC API. The result of the query will be stored in the 'query_result' attribute of the player.
|
||||||
|
@ -58,6 +58,8 @@ If you completed the integration setup but are still unable to control the devic
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
Before the integration can find a device, you need to connect it to your network using the Switcher app.
|
||||||
|
|
||||||
To enhance security, certain Switcher devices require a token for operation. In order to integrate your token-based Switcher devices with Home Assistant, you'll need the following information:
|
To enhance security, certain Switcher devices require a token for operation. In order to integrate your token-based Switcher devices with Home Assistant, you'll need the following information:
|
||||||
|
|
||||||
- **The username of your Switcher Account**: To find the username, open the Switcher app.
|
- **The username of your Switcher Account**: To find the username, open the Switcher app.
|
||||||
|
@ -54,7 +54,12 @@ The {% term integration %} adds the following sensors:
|
|||||||
- Last session energy usage
|
- Last session energy usage
|
||||||
- Wi-Fi signal strength
|
- Wi-Fi signal strength
|
||||||
- Wi-Fi network name
|
- Wi-Fi network name
|
||||||
- Status
|
- Status, one of the following values:
|
||||||
|
- Unplugged
|
||||||
|
- Plugged, waiting
|
||||||
|
- Plugged, charging
|
||||||
|
- Out of activation period
|
||||||
|
- High tariff period
|
||||||
|
|
||||||
## Switch
|
## Switch
|
||||||
|
|
||||||
|
@ -454,6 +454,7 @@ actions:
|
|||||||
message_tag: "example_tag"
|
message_tag: "example_tag"
|
||||||
disable_notification: True
|
disable_notification: True
|
||||||
disable_web_page_preview: True
|
disable_web_page_preview: True
|
||||||
|
message_thread_id: 123
|
||||||
```
|
```
|
||||||
|
|
||||||
{% configuration %}
|
{% configuration %}
|
||||||
@ -468,10 +469,15 @@ disable_notification:
|
|||||||
type: boolean
|
type: boolean
|
||||||
disable_web_page_preview:
|
disable_web_page_preview:
|
||||||
description: True/false to display a webpage preview.
|
description: True/false to display a webpage preview.
|
||||||
|
required: false
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
message_tag:
|
message_tag:
|
||||||
description: Tag for sent message.
|
description: Tag for sent message.
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
message_thread_id:
|
||||||
|
description: Send the message to a specific topic or thread.
|
||||||
|
required: false
|
||||||
|
type: integer
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
@ -290,7 +290,7 @@ Remove the bot from the chat group where it was added.
|
|||||||
|
|
||||||
## Telegram notification platform
|
## Telegram notification platform
|
||||||
|
|
||||||
The [`telegram` notification platform](/integrations/telegram) requires the `telegram_bot` integration to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. The data attributes `parse_mode`, `disable_notification`, `message_tag` and `disable_web_page_preview` are also supported.
|
The [`telegram` notification platform](/integrations/telegram) requires the `telegram_bot` integration to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents, and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. The data attributes `parse_mode`, `disable_notification`, `message_tag`, `disable_web_page_preview`, and `message_thread_id` are also supported.
|
||||||
|
|
||||||
The required YAML configuration now reduces to:
|
The required YAML configuration now reduces to:
|
||||||
|
|
||||||
@ -598,7 +598,7 @@ actions:
|
|||||||
message_tag: "example_tag"
|
message_tag: "example_tag"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Example: send_message with disabled webpage preview:
|
## Example: send_message with disabled webpage preview
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
actions:
|
actions:
|
||||||
@ -611,6 +611,17 @@ actions:
|
|||||||
disable_web_page_preview: true
|
disable_web_page_preview: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Example: send_message to a topic within a group
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
actions:
|
||||||
|
- action: notify.telegram
|
||||||
|
data:
|
||||||
|
message: "Message to a topic"
|
||||||
|
data:
|
||||||
|
message_thread_id: 123
|
||||||
|
```
|
||||||
|
|
||||||
## Example: automation to send a message and delete after a delay
|
## Example: automation to send a message and delete after a delay
|
||||||
|
|
||||||
{% raw %}
|
{% raw %}
|
||||||
|
@ -46,6 +46,7 @@ You must have:
|
|||||||
- A [Developer Application](https://developer.tesla.com/en_US/dashboard)
|
- A [Developer Application](https://developer.tesla.com/en_US/dashboard)
|
||||||
- A web domain and host that you can serve your public key file from. Some free options include:
|
- A web domain and host that you can serve your public key file from. Some free options include:
|
||||||
- [FleetKey.cc](https://fleetkey.cc)
|
- [FleetKey.cc](https://fleetkey.cc)
|
||||||
|
- [MyTeslamate.com](https://app.myteslamate.com/fleet)
|
||||||
- [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)
|
- [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)
|
||||||
- [Cloudflare Pages](https://pages.cloudflare.com/)
|
- [Cloudflare Pages](https://pages.cloudflare.com/)
|
||||||
- [Firebase Hosting](https://firebase.google.com/docs/hosting)
|
- [Firebase Hosting](https://firebase.google.com/docs/hosting)
|
||||||
@ -123,7 +124,7 @@ The following steps involve sensitive credentials. Never share your `Client Secr
|
|||||||
3. The CURL request should return a response that looks something like:
|
3. The CURL request should return a response that looks something like:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{"access_token":"JSON_WEB_TOKEN","expires_in":28800,"token_type":"Bearer"}
|
{"access_token":"ACCESS_TOKEN","expires_in":28800,"token_type":"Bearer"}
|
||||||
```
|
```
|
||||||
|
|
||||||
This is your access token. Copy everything between the double-quotes to be used next.
|
This is your access token. Copy everything between the double-quotes to be used next.
|
||||||
@ -132,14 +133,14 @@ The following steps involve sensitive credentials. Never share your `Client Secr
|
|||||||
```shell
|
```shell
|
||||||
curl --location 'https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/partner_accounts' \
|
curl --location 'https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/partner_accounts' \
|
||||||
--header 'Content-Type: application/json' \
|
--header 'Content-Type: application/json' \
|
||||||
--header 'Authorization: Bearer JSON_WEB_TOKEN' \
|
--header 'Authorization: Bearer ACCESS_TOKEN' \
|
||||||
--data '{
|
--data '{
|
||||||
"domain": "my.domain.com"
|
"domain": "my.domain.com"
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
- If you had to change the `AUDIENCE` URL for your region in step 2, update the main domain of the `--location` arg.
|
- If you had to change the `AUDIENCE` URL for your region in step 2, update the main domain of the `--location` arg.
|
||||||
- Replace `LONG_GIBBERISH_ACCESS_TOKEN_STRING` with the access token that you copied in the previous step.
|
- Replace `ACCESS_TOKEN` with the access token that you copied in the previous step.
|
||||||
- In the `domain:` line, enter your domain without the leading `https://` and the trailing `/`.
|
- In the `domain:` line, enter your domain without the leading `https://` and the trailing `/`.
|
||||||
5. You should see a response that contains information about your Tesla Fleet developer app, pricing info, and such. This confirms that the Tesla Fleet API has successfully registered your developer application as a partner. The hard part is over.
|
5. You should see a response that contains information about your Tesla Fleet developer app, pricing info, and such. This confirms that the Tesla Fleet API has successfully registered your developer application as a partner. The hard part is over.
|
||||||
|
|
||||||
@ -165,7 +166,7 @@ When connecting your Tesla account to Home Assistant, you **must** select at lea
|
|||||||
|
|
||||||
Previously, Tesla restricted this integration to a very modest rate limit. However, from January 2025, accounts in eligible countries will be charged for every API call. Here's what you need to know:
|
Previously, Tesla restricted this integration to a very modest rate limit. However, from January 2025, accounts in eligible countries will be charged for every API call. Here's what you need to know:
|
||||||
|
|
||||||
- Tesla provides a $10 credit per developer account per calendar month
|
- Tesla provides a USD$10 credit per developer account per calendar month
|
||||||
- Every vehicle coordinator refresh, vehicle command, and wake up has a cost
|
- Every vehicle coordinator refresh, vehicle command, and wake up has a cost
|
||||||
- This credit only allows for a maximum of 5000 coordinator refreshes
|
- This credit only allows for a maximum of 5000 coordinator refreshes
|
||||||
- Energy product APIs are free to use at this time
|
- Energy product APIs are free to use at this time
|
||||||
|
@ -80,12 +80,12 @@ data:
|
|||||||
|
|
||||||
Add a new to-do item. A to-do list `target` is selected with a [Target Selector](/docs/blueprint/selectors/#target-selector) and the `data` payload supports the following fields:
|
Add a new to-do item. A to-do list `target` is selected with a [Target Selector](/docs/blueprint/selectors/#target-selector) and the `data` payload supports the following fields:
|
||||||
|
|
||||||
| Data attribute | Optional | Description | Example |
|
| Data attribute | Optional | Description | Example |
|
||||||
| -------------- | -------- | ---------------------------------------------------------------- | ------------------------------------------------------------ |
|
| -------------- | -------- | ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||||
| `item` | no | the name of the to-do Item. | Submit income tax return |
|
| `item` | no | The name/summary of the to-do item. | Submit income tax return |
|
||||||
| `due_date` | yes | The date the to-do item is expected to be completed. | 2024-04-10 |
|
| `due_date` | yes | The date the to-do item is expected to be completed. | 2024-04-10 |
|
||||||
| `due_datetime` | yes | The date and time the to-do item is expected to be completed. | 2024-04-10 23:00:00 |
|
| `due_datetime` | yes | The date and time the to-do item is expected to be completed. | 2024-04-10 23:00:00 |
|
||||||
| `description` | yes | A more complete description than the one provided by the summary | Collect all necessary documents and submit the final return. |
|
| `description` | yes | A more complete description than the one provided by the summary. | Collect all necessary documents and submit the final return. |
|
||||||
|
|
||||||
Only one of `due_date` or `due_datetime` may be specified.
|
Only one of `due_date` or `due_datetime` may be specified.
|
||||||
|
|
||||||
@ -107,9 +107,9 @@ Update a to-do item. A to-do list `target` is selected with a [Target Selector](
|
|||||||
|
|
||||||
| Data attribute | Optional | Description | Example |
|
| Data attribute | Optional | Description | Example |
|
||||||
| -------------- | -------- | ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
| -------------- | -------- | ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||||
| `item` | no | The name of the to-do Item to update. | Submit income tax return |
|
| `item` | no | The name/summary of the to-do item to update. | Submit income tax return |
|
||||||
| `rename` | yes | The new name of the to-do Item. | Something else |
|
| `rename` | yes | The new name of the to-do item. | Something else |
|
||||||
| `status` | yes | The overall status of the To-do Item. | `needs_action` or `completed` |
|
| `status` | yes | The overall status of the to-do item. | `needs_action` or `completed` |
|
||||||
| `due_date` | yes | The date the to-do item is expected to be completed. | 2024-04-10 |
|
| `due_date` | yes | The date the to-do item is expected to be completed. | 2024-04-10 |
|
||||||
| `due_datetime` | yes | The date and time the to-do item is expected to be completed. | 2024-04-10 23:00:00 |
|
| `due_datetime` | yes | The date and time the to-do item is expected to be completed. | 2024-04-10 23:00:00 |
|
||||||
| `description` | yes | A more complete description than the one provided by the summary. | Collect all necessary documents and submit the final return. |
|
| `description` | yes | A more complete description than the one provided by the summary. | Collect all necessary documents and submit the final return. |
|
||||||
|
@ -34,15 +34,57 @@ The **Velbus** {% term integration %} is used to control [Velbus](https://www.ve
|
|||||||
|
|
||||||
{% include integrations/config_flow.md %}
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
### Configuration parameters
|
## Configuration parameters
|
||||||
|
|
||||||
The port string used in the user interface or the configuration file can have different formats depending on the type of connection:
|
During the setup you will be shown 2 choices on ways to connect to the Velbus bus:
|
||||||
|
|
||||||
|
- USB
|
||||||
|
- TCP/IP
|
||||||
|
|
||||||
- For a serial or USB devices: `/dev/ttyUSB00`
|
### USB
|
||||||
- For a TCP/IP devices: `127.0.0.1:3678`
|
|
||||||
- For Signum devices without authentication: `tls://192.168.1.9:27015`
|
The USB connection is a way to connect to the Velbus bus. You will need a Velbus USB interface to connect to the bus. The USB interface is connected to the USB port of your Home Assistant device.
|
||||||
- For Signum devices with authentication: `tls://password@192.168.1.9:27015`
|
The interface USB devices are automatically detected and shown in a list.
|
||||||
|
Select the correct USB interface from the list and select **Submit**.
|
||||||
|
|
||||||
|
There will be a connection test to make sure the connection is working, and if it's working the integration will be added to Home Assistant.
|
||||||
|
|
||||||
|
### TCP/IP
|
||||||
|
|
||||||
|
The TCP/IP connection is a way to connect to the Velbus bus. You will need a Velbus TCP/IP interface available in your network.
|
||||||
|
|
||||||
|
There are a couple of parameters you need to fill in to connect to the Velbus bus:
|
||||||
|
|
||||||
|
- tls
|
||||||
|
- host
|
||||||
|
- port
|
||||||
|
- password
|
||||||
|
|
||||||
|
The `tls` parameter is optional and can be used to enable or disable the TLS connection.
|
||||||
|
The `host` parameter is the IP address of the Velbus TCP/IP interface.
|
||||||
|
The `port` parameter is the port number of the Velbus TCP/IP interface.
|
||||||
|
The `password` parameter is optional and can be used to authenticate to the Velbus TCP/IP interface.
|
||||||
|
|
||||||
|
#### Example: signum
|
||||||
|
|
||||||
|
- tls: yes
|
||||||
|
- host: your signum IP address
|
||||||
|
- port: 27015
|
||||||
|
- password: your signum password (if configured)
|
||||||
|
|
||||||
|
#### Example: velser
|
||||||
|
|
||||||
|
- tls: no
|
||||||
|
- host: your velser IP address
|
||||||
|
- port: 6000
|
||||||
|
- password: leave empty
|
||||||
|
|
||||||
|
#### Example: Home Assistant add-on
|
||||||
|
|
||||||
|
- tls: depending on your configuration
|
||||||
|
- host: your Home Assistant IP address
|
||||||
|
- port: 27015 if you kept the default
|
||||||
|
- password: leave empty
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
The pushbutton LEDs of input modules are disabled by default. These can be enabled from the **Devices** panel in the **Configuration** page of the web interface.
|
The pushbutton LEDs of input modules are disabled by default. These can be enabled from the **Devices** panel in the **Configuration** page of the web interface.
|
||||||
|
@ -80,6 +80,7 @@ This {% term integration %} supports devices controllable by the VeSync App. Th
|
|||||||
|
|
||||||
- Classic200S: Classic 200S Smart Ultrasonic Cool Mist Humidifier
|
- Classic200S: Classic 200S Smart Ultrasonic Cool Mist Humidifier
|
||||||
- Classic300S: Classic 300S Ultrasonic Smart Humidifier
|
- Classic300S: Classic 300S Ultrasonic Smart Humidifier
|
||||||
|
- Superior6000S: Superior 6000S Smart Evaporative Humidifier
|
||||||
|
|
||||||
## Prerequisite
|
## Prerequisite
|
||||||
|
|
||||||
|
50
source/_integrations/webdav.markdown
Normal file
50
source/_integrations/webdav.markdown
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
title: WebDAV
|
||||||
|
description: Instructions on how to setup a WebDAV location to be used with backups.
|
||||||
|
ha_release: 2025.3
|
||||||
|
ha_category:
|
||||||
|
- Backup
|
||||||
|
ha_iot_class: Cloud Polling
|
||||||
|
ha_config_flow: true
|
||||||
|
ha_domain: webdav
|
||||||
|
ha_codeowners:
|
||||||
|
- '@jpbede'
|
||||||
|
ha_integration_type: service
|
||||||
|
related:
|
||||||
|
- docs: /common-tasks/general/#backups
|
||||||
|
title: Backups
|
||||||
|
ha_quality_scale: bronze
|
||||||
|
---
|
||||||
|
|
||||||
|
This integration allows you to use a [WebDAV](https://en.wikipedia.org/wiki/WebDAV) compatible location for [Home Assistant Backups](/common-tasks/general/#backups).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
{% configuration_basic %}
|
||||||
|
URL:
|
||||||
|
description: "URL of the WebDAV server. Common examples are provided below."
|
||||||
|
Username:
|
||||||
|
description: "Username for the WebDAV server."
|
||||||
|
Password:
|
||||||
|
description: "Password for the WebDAV server."
|
||||||
|
Backup path:
|
||||||
|
description: "Path to the folder where the backups should be stored. The path is relative to the root of the WebDAV server."
|
||||||
|
Verify SSL:
|
||||||
|
description: "Verify the SSL certificate of the WebDAV server."
|
||||||
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
|
### Common WebDAV URLs
|
||||||
|
|
||||||
|
- [Nextcloud](https://nextcloud.com/): `https://<your-nextcloud-domain>/remote.php/dav/files/<your-username>/`
|
||||||
|
- [Owncloud](https://owncloud.com/): `https://<your-owncloud-domain>/remote.php/dav/files/<your-username>/`
|
||||||
|
- [Hetzner Storage Box](https://www.hetzner.com/storage/storage-box): `https://<username>.your-storagebox.de`
|
||||||
|
- [Strato HiDrive](https://www.strato.de/): `https://webdav.hidrive.strato.com`
|
||||||
|
|
||||||
|
## Removing the integration
|
||||||
|
|
||||||
|
This integration follows standard integration removal. No extra steps are required.
|
||||||
|
|
||||||
|
{% include integrations/remove_device_service.md %}
|
||||||
|
|
||||||
|
- If you remove the integration, the backup folder is not automatically deleted. You have to manually delete it.
|
@ -26,6 +26,7 @@ ha_zeroconf: true
|
|||||||
|
|
||||||
The **Wyoming** {% term integration %} connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/), [text-to-speech](/integrations/tts/), and [wake-word-detection](/integrations/wake_word/) systems, such as:
|
The **Wyoming** {% term integration %} connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/), [text-to-speech](/integrations/tts/), and [wake-word-detection](/integrations/wake_word/) systems, such as:
|
||||||
|
|
||||||
|
- Speech-to-Phrase {% my supervisor_addon badge addon="core_speech-to-phrase" %}
|
||||||
- Whisper {% my supervisor_addon badge addon="core_whisper" %}
|
- Whisper {% my supervisor_addon badge addon="core_whisper" %}
|
||||||
- Piper {% my supervisor_addon badge addon="core_piper" %}
|
- Piper {% my supervisor_addon badge addon="core_piper" %}
|
||||||
- openWakeWord {% my supervisor_addon badge addon="core_openwakeword" %}
|
- openWakeWord {% my supervisor_addon badge addon="core_openwakeword" %}
|
||||||
|
@ -69,7 +69,7 @@ This {% term integration %} currently supports the following device types within
|
|||||||
- [Switch](/integrations/switch/)
|
- [Switch](/integrations/switch/)
|
||||||
- [Update](/integrations/update/)
|
- [Update](/integrations/update/)
|
||||||
|
|
||||||
In addition, it has support for "Zigbee groups" that enable native on-device grouping of multiple Zigbee lights, switches, and fans that enable controlling all entities for those devices in those groups with one command. At least two entities must be added to a Zigbee group inside the ZHA {% term integration %} before a group entity is created. There is also support for native on-device Zigbee [binding and unbinding (i.e. bind a remote to a lightbulb or group)](#zigbee-binding-and-unbinding).
|
In addition, it has support for "Zigbee groups" that enable native on-device grouping of multiple Zigbee lights, switches, and fans that enable controlling all entities for those devices in those groups with one command. At least two entities must be added to a Zigbee group inside the ZHA {% term integration %} before a group entity is created. There is also support for native on-device binding. Refer to the [Zigbee groups and binding devices](#zigbee-groups-and-binding-devices) section for more information.
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
@ -79,23 +79,25 @@ Before installing the ZHA integration in Home Assistant, you need to connect a Z
|
|||||||
|
|
||||||
Once ZHA has been set up with a Zigbee Coordinator it will automatically create a Zigbee network and you will be able to join/pair any Zigbee Router devices and Zigbee End Devices. With only a few [limitations](#limitations), most devices will join/pair directly regardless of brand and manufacturer. Technically almost all devices that are compliant with the official Zigbee specifications should offer interoperability, though a newer Zigbee Coordinator with support for later firmware often offers better compatibility with both new and older devices. Still, be aware that [all functionality might not always be supported or exposed for every device out-of-the-box](#knowing-which-devices-are-supported) as some devices that use manufacturer-specific extensions to add non-standard functions and features could sometimes need [device-specific code to fully work with ZHA](#how-to-add-support-for-new-and-unsupported-devices).
|
Once ZHA has been set up with a Zigbee Coordinator it will automatically create a Zigbee network and you will be able to join/pair any Zigbee Router devices and Zigbee End Devices. With only a few [limitations](#limitations), most devices will join/pair directly regardless of brand and manufacturer. Technically almost all devices that are compliant with the official Zigbee specifications should offer interoperability, though a newer Zigbee Coordinator with support for later firmware often offers better compatibility with both new and older devices. Still, be aware that [all functionality might not always be supported or exposed for every device out-of-the-box](#knowing-which-devices-are-supported) as some devices that use manufacturer-specific extensions to add non-standard functions and features could sometimes need [device-specific code to fully work with ZHA](#how-to-add-support-for-new-and-unsupported-devices).
|
||||||
|
|
||||||
Note that because Zigbee relies on "mesh networking" technology it depends heavily on having [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand the network coverage and extend its size. These are always mains-powered devices that route messages to other devices that are located close to them within the Zigbee network mesh to improve the range and increase the total amount of devices you can add. You should therefore make sure that you add many Zigbee Router devices and not just Zigbee End Devices or else its network mesh connection routes will be limited due to the short range and poor wall penetration of Zigbee radio signals. It is highly recommended that you read and follow all the general tips below about [Zigbee interference avoidance and network range/coverage optimization)](#zigbee-interference-avoidance-and-network-rangecoverage-optimization).
|
Note that because Zigbee relies on "mesh networking" technology it depends heavily on having [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand the network coverage and extend its size. These are always mains-powered devices that route messages to other devices that are located close to them within the Zigbee network mesh to improve the range and increase the total amount of devices you can add. You should therefore make sure that you add many Zigbee Router devices and not just Zigbee End Devices or else its network mesh connection routes will be limited due to the short range and poor wall penetration of Zigbee radio signals. It is highly recommended that you read and follow all the general tips below about [Zigbee interference avoidance and network range/coverage optimization](#zigbee-interference-avoidance-and-network-rangecoverage-optimization).
|
||||||
|
|
||||||
## Compatible hardware
|
## Compatible hardware
|
||||||
|
|
||||||
ZHA {% term integration %} uses a hardware independent Zigbee stack implementation with modular design, which means that it can support any one of the many Zigbee coordinator radio modules/adapters available from different manufacturers, as long as that module/adapter is compatible with [zigpy](https://github.com/zigpy/zigpy).
|
The hardware-independent design of this integration provides support for many Zigbee coordinators available from different manufacturers, as long as the coordinator is compatible with the [zigpy](https://github.com/zigpy/zigpy) library.
|
||||||
|
|
||||||
Note! Zigbee 3.0 support or not in zigpy, depends primarily on your Zigbee coordinator hardware and its firmware. Some Zigbee coordinator hardware supports Zigbee 3.0 but might be shipped with an older firmware which does not. In such a case you may want to upgrade the firmware manually yourself.
|
### Zigbee 3.0 support
|
||||||
|
|
||||||
Some other Zigbee coordinator hardware may not support a firmware that is capable of Zigbee 3.0 at all but can still be fully functional and feature-complete for your needs. This is very common as many, if not most, Zigbee devices do not yet Zigbee 3.0. As a general rule, newer Zigbee coordinator hardware generally supports Zigbee 3.0 firmware and it is up to its manufacturer to make such firmware available for them.
|
Some coordinators may not support firmware capable of Zigbee 3.0, but they can still be fully functional and feature-complete for your needs. Support for Zigbee 3.0 depends primarily on your coordinator hardware and firmware.
|
||||||
|
|
||||||
### Known working Zigbee radio modules
|
{% note %}
|
||||||
|
Newer coordinators generally support Zigbee 3.0 firmware, but it is up to the manufacturer to make such firmware available to them. If your coordinator was shipped with an older firmware version, you may want to manually upgrade the firmware.
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
### Recommended Zigbee radio adapters and modules
|
### Recommended Zigbee radio adapters and modules
|
||||||
|
|
||||||
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
|
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
|
||||||
- [Home Assistant Connect ZBT-1](/connectzbt1/) (EFR32MG21-based USB dongle)
|
- [Home Assistant Connect ZBT-1](/connectzbt1/) (EFR32MG21-based USB dongle)
|
||||||
- [Home Assistant Yellow](/yellow/) with integrated EFR32MG21 radio
|
- [Home Assistant Yellow](/yellow/) with integrated MGM210P radio, which is based on the EFR32MG21
|
||||||
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
|
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
|
||||||
- [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/) (EFR32MG21-based USB dongle)
|
- [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/) (EFR32MG21-based USB dongle)
|
||||||
- Texas Instruments based radios (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
|
- Texas Instruments based radios (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
|
||||||
@ -106,49 +108,76 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
|
|||||||
|
|
||||||
### Other supported but not recommended Zigbee radio adapters or modules
|
### Other supported but not recommended Zigbee radio adapters or modules
|
||||||
|
|
||||||
- Silicon Labs EmberZNet based radios using legacy hardware using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
|
The following hardware is supported, but _not recommended_. Specific models and details are noted where available in each section.
|
||||||
- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/POPP ZB-Stick (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
|
|
||||||
- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs-zigbee-shield.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
|
|
||||||
- [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/) (Note! [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170). Also, this first has to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html))
|
|
||||||
- [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware))
|
|
||||||
- [Bitron Video/Smabit BV AV2010/10 USB-Stick](https://manuals.smabit.eu/len/av2010_10.html) with Silicon Labs Ember 3587
|
|
||||||
- Telegesis ETRX357USB/ETRX357USB-LR/ETRX357USB-LRS+8M (Note! These first have to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware))
|
|
||||||
- Texas Instruments based radios using legacy hardware (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
|
|
||||||
- [CC2538 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) (no longer recommended as only got deprecated old end-of-life firmware)
|
|
||||||
- [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) (no longer recommended as uses deprecated hardware and very old end-of-life firmware, plus will not work properly at all if the whole Zigbee network has more than 15-20 devices)
|
|
||||||
- dresden elektronik deCONZ based Zigbee radios using legacy hardware (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy)
|
|
||||||
- [ConBee II (a.k.a. ConBee 2) USB adapter from dresden elektronik](https://phoscon.de/conbee2)
|
|
||||||
- [RaspBee II (a.k.a. RaspBee 2) Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee2)
|
|
||||||
- [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee)
|
|
||||||
- [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee)
|
|
||||||
- Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy)
|
|
||||||
- [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
|
|
||||||
- Note! While not a must, [it is recommend to upgrade XBee Series 3 and S2C to newest firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
|
|
||||||
- [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules (Note! This first have to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430))
|
|
||||||
- ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later)
|
|
||||||
- [ZiGate USB](https://zigate.fr/produit/zigate-usb/)
|
|
||||||
- [ZiGate USB-DIN](https://zigate.fr/produit/zigatev2-usb-din/)
|
|
||||||
- [PiZiGate (ZiGate Raspberry Pi module)](https://zigate.fr/produit/pizigatev2/)
|
|
||||||
- [ZiGate-Ethernet (Ethernet gateway board for PiZiGate)](https://zigate.fr/produit/zigate-ethernet/)
|
|
||||||
- [ZiGate + WiFi Pack](https://zigate.fr/produit/zigatev2-pack-wifi/)
|
|
||||||
|
|
||||||
#### Warning about using Zigbee Coordinator over Wi-Fi/WAN/VPN
|
{% details "List of hardware that is not recommended" %}
|
||||||
|
|
||||||
{% caution %}
|
{% caution %}
|
||||||
Be aware that using a Zigbee Coordinator via a Serial-Proxy-Server (also known as Serial-to-IP bridge or Ser2Net remote adapter) over a Wi-Fi, WAN, or VPN connection is not recommended.
|
|
||||||
|
|
||||||
Serial protocols used by the Zigbee Coordinator do not have enough robustness, resilience, or fault tolerance to handle packet loss and latency delays that can occur over unstable connections.
|
- It is **not recommended** to run a coordinator via **Serial-Proxy-Server** _(also called Serial-to-IP bridge or Ser2Net remote adapter)_ over:
|
||||||
|
|
||||||
|
- **Wi-Fi**,
|
||||||
|
- **WAN**, or
|
||||||
|
- **VPN**
|
||||||
|
|
||||||
A Zigbee Coordinator requires a stable local connection to its serial port interface with no drops in communication between it and the Zigbee gateway application running on the host computer.
|
- The coordinator requires a stable, local connection to its serial port interface without drops in communication with the Zigbee gateway application running on the host computer.
|
||||||
|
- Serial protocols used by the coordinator do not have enough robustness, resilience, or fault tolerance to handle packet loss and latency delays that can occur over unstable connections.
|
||||||
{% endcaution %}
|
{% endcaution %}
|
||||||
|
|
||||||
## Configuration - GUI
|
**Silicon Labs EmberZNet based radios using legacy hardware using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)**
|
||||||
|
|
||||||
Connect your radio module and restart Home Assistant.
|
- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/POPP ZB-Stick
|
||||||
|
- It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)
|
||||||
|
- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs-zigbee-shield.html)
|
||||||
|
- It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)
|
||||||
|
- [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/)
|
||||||
|
- Note: [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170).
|
||||||
|
- These first need to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)
|
||||||
|
- [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/)
|
||||||
|
- It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware)
|
||||||
|
- [Bitron Video/Smabit BV AV2010/10 USB-Stick](https://manuals.smabit.eu/len/av2010_10.html) with Silicon Labs Ember 3587
|
||||||
|
- Telegesis ETRX357USB/ETRX357USB-LR/ETRX357USB-LRS+8M
|
||||||
|
- These first need to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware)
|
||||||
|
|
||||||
From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list.
|
**Texas Instruments based radios using legacy hardware (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)**
|
||||||
|
|
||||||
Use the plus button in the bottom right to add a new {% term integration %} called **ZHA**.
|
- [CC2538 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
|
||||||
|
- This is no longer recommended as it can only run deprecated (old/end-of-life) firmware.
|
||||||
|
- [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
|
||||||
|
- This is no longer recommended as it uses deprecated hardware and very old, end-of-life firmware.
|
||||||
|
- This will not work properly if the Zigbee network has more than 15-20 devices.
|
||||||
|
|
||||||
|
**dresden elektronik deCONZ based Zigbee radios using legacy hardware (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy)**
|
||||||
|
|
||||||
|
- [ConBee II (a.k.a. ConBee 2) USB adapter from dresden elektronik](https://phoscon.de/conbee2)
|
||||||
|
- [RaspBee II (a.k.a. RaspBee 2) Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee2)
|
||||||
|
- [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee)
|
||||||
|
- [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee)
|
||||||
|
|
||||||
|
**Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy)**
|
||||||
|
|
||||||
|
- [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
|
||||||
|
- It is suggested to [upgrade XBee Series 3 and S2C to newest firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
|
||||||
|
- [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules
|
||||||
|
- These first need to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430)
|
||||||
|
|
||||||
|
**ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later)**
|
||||||
|
|
||||||
|
- [ZiGate USB](https://zigate.fr/produit/zigate-usb/)
|
||||||
|
- [ZiGate USB-DIN](https://zigate.fr/produit/zigatev2-usb-din/)
|
||||||
|
- [PiZiGate (ZiGate Raspberry Pi module)](https://zigate.fr/produit/pizigatev2/)
|
||||||
|
- [ZiGate-Ethernet (Ethernet gateway board for PiZiGate)](https://zigate.fr/produit/zigate-ethernet/)
|
||||||
|
- [ZiGate + WiFi Pack](https://zigate.fr/produit/zigatev2-pack-wifi/)
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
If you find an opportunity to improve this information, refer to the section on how to [add support for new and unsupported devices](#how-to-add-support-for-new-and-unsupported-devices).
|
||||||
|
|
||||||
|
## Configuration requirements
|
||||||
|
|
||||||
|
Be sure to connect a compatible radio module and restart Home Assistant before proceeding with configuration.
|
||||||
|
|
||||||
|
{% include integrations/config_flow.md %}
|
||||||
|
|
||||||
In the popup:
|
In the popup:
|
||||||
|
|
||||||
@ -196,37 +225,85 @@ If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path c
|
|||||||
|
|
||||||
### Discovery via USB or Zeroconf
|
### Discovery via USB or Zeroconf
|
||||||
|
|
||||||
Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience:
|
Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience.
|
||||||
|
|
||||||
| Device | Discovery Method | Identifier |
|
{% details "USB discovery devices" %}
|
||||||
| ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------ |
|
|
||||||
| [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/) | USB | 1A86:55D4 |
|
|
||||||
| [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus/) | USB | 10C4:EA60 |
|
|
||||||
| [Bitron Video/SMaBiT BV AV2010/10](https://manuals.smabit.eu/len/av2010_10.html) | USB | 10C4:8B34 |
|
|
||||||
| [ConBee II](https://phoscon.de/conbee2) | USB | 1CF1:0030 |
|
|
||||||
| [ConBee III](https://phoscon.de/conbee3) | USB | 0403:6015 |
|
|
||||||
| [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) | USB | 10C4:8A2A |
|
|
||||||
| [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/) | USB | 10C4:EA60 |
|
|
||||||
| [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/) | USB | 10C4:EA60 |
|
|
||||||
| [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/) | USB | 1A86:7523 |
|
|
||||||
| [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/) | USB | 10C4:EA60 |
|
|
||||||
| [ZigStar Coordinators](https://zig-star.com/) | USB | 1A86:7523 |
|
|
||||||
| [XZG - Universal Firmware for Zigbee Gateway](https://xzg.xyzroe.cc/) | Zeroconf | xzg.local. |
|
|
||||||
| [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/) | Zeroconf | slzb-06.local. |
|
|
||||||
| [ZigStar UZG Universal Zigbee Gateway (UZG-01)](https://uzg.zig-star.com) | Zeroconf | uzg-01._tcp.local. |
|
|
||||||
| [cod.m Zigbee Coordinator](https://docs.codm.de/zigbee/coordinator/) | Zeroconf | czc._tcp.local. |
|
|
||||||
| [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/) | Zeroconf | zigstargw.local. |
|
|
||||||
| [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. |
|
|
||||||
| [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2_poe.local. |
|
|
||||||
| [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_efr32.local. |
|
|
||||||
|
|
||||||
Additional devices in the [Known working Zigbee radio modules](#known-working-zigbee-radio-modules) list may be discoverable, however, only devices that have been confirmed discoverable are listed above.
|
- **Bitron**
|
||||||
|
- [Bitron Video/SMaBiT BV AV2010/10](https://manuals.smabit.eu/len/av2010_10.html)
|
||||||
|
- Identifier: `10C4:8B34`
|
||||||
|
- **ConBee**
|
||||||
|
- [ConBee II](https://phoscon.de/conbee2)
|
||||||
|
- Identifier: `1CF1:0030`
|
||||||
|
- [ConBee III](https://phoscon.de/conbee3)
|
||||||
|
- Identifier: `0403:6015`
|
||||||
|
- **ITead**
|
||||||
|
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
|
||||||
|
- Identifier: `1A86:55D4`
|
||||||
|
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus)
|
||||||
|
- Identifier: `10C4:EA60`
|
||||||
|
- **Nortek**
|
||||||
|
- [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/)
|
||||||
|
- Identifier: `10C4:8A2A`
|
||||||
|
- **slae.sh**
|
||||||
|
- [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/)
|
||||||
|
- Identifier: `10C4:EA60`
|
||||||
|
- **SMLIGHT**
|
||||||
|
- [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/)
|
||||||
|
- Identifier: `10C4:EA60`
|
||||||
|
- **Tube**
|
||||||
|
- [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/)
|
||||||
|
- Identifier: `10C4:EA60`
|
||||||
|
- **ZigStar**
|
||||||
|
- [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/)
|
||||||
|
- Identifier: `1A86:7523`
|
||||||
|
- [ZigStar Coordinators](https://zig-star.com/)
|
||||||
|
- Identifier: `1A86:7523`
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
{% details "Zeroconf discovery devices" %}
|
||||||
|
|
||||||
|
- **cod.m**
|
||||||
|
- [cod.m Zigbee Coordinator](https://docs.codm.de/zigbee/coordinator/)
|
||||||
|
- Identifier: `czc._tcp.local.`
|
||||||
|
- **SMLIGHT**
|
||||||
|
- [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/)
|
||||||
|
- Identifier: `slzb-06.local.`
|
||||||
|
- **Tube**
|
||||||
|
- [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
|
||||||
|
- Identifier: `tube_zb_gw_cc2652p2.local.`
|
||||||
|
- [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
|
||||||
|
- Identifier: `tube_zb_gw_cc2652p2_poe.local.`
|
||||||
|
- [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
|
||||||
|
- Identifier: `tube_zb_gw_efr32.local.`
|
||||||
|
- **XZG**
|
||||||
|
- [XZG - Universal Firmware for Zigbee Gateway](https://xzg.xyzroe.cc/)
|
||||||
|
- Identifier: `xzg.local.`
|
||||||
|
- **ZigStar**
|
||||||
|
- [ZigStar UZG Universal Zigbee Gateway (UZG-01)](https://uzg.zig-star.com)
|
||||||
|
- Identifier: `uzg-01._tcp.local.`
|
||||||
|
- [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/)
|
||||||
|
- Identifier: `zigstargw.local.`
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
Additional devices in the [Compatible hardware](#compatible-hardware) section may be discoverable, however, only devices that have been confirmed discoverable are listed above.
|
||||||
|
|
||||||
### OTA updates of Zigbee device firmware
|
### OTA updates of Zigbee device firmware
|
||||||
|
|
||||||
The ZHA integration has the ability to perform OTA (over-the-air) firmware updates of Zigbee devices. This feature is enabled by default. As it uses standard [Update](/integrations/update/) entities in Home Assistant, users will get a UI notification if and when an OTA firmware update is available for a specific device, with an option to initiate the update or ignore that specific update for the device.
|
The ZHA integration has the ability to perform OTA (over-the-air) firmware updates of Zigbee devices. This feature is enabled by default. As it uses standard [Update](/integrations/update/) entities in Home Assistant, users will get a UI notification if and when an OTA firmware update is available for a specific device, with an option to initiate the update or ignore that specific update for the device.
|
||||||
|
|
||||||
To see OTA updates for a device, it's required that it both supports OTA updates and that firmware images for the device are publicly provided by the manufacturer. For this reason, ZHA currently only includes OTA providers for a few manufacturers that provide these updates publicly. This includes IKEA, Inovelli, Ledvacnce/OSRAM, SALUS/Computime, Sonoff/iTead, and Third Reality.
|
To see OTA updates for a device, it must support OTA updates and firmware images for the device must be publicly provided by the manufacturer. ZHA currently only includes OTA providers for a few manufacturers that provide these updates publicly.
|
||||||
|
|
||||||
|
**Included manufacturers:**
|
||||||
|
|
||||||
|
- IKEA
|
||||||
|
- Inovelli
|
||||||
|
- Ledvacnce/OSRAM
|
||||||
|
- SALUS/Computime
|
||||||
|
- Sonoff/iTead
|
||||||
|
- Third Reality
|
||||||
|
|
||||||
{% warning %}
|
{% warning %}
|
||||||
Before updating a device, you should search for any disadvantages or if you even need to install an available update. Some firmware updates can break features you might use (e.g. group binding for IKEA devices). Some updates might also require changes to ZHA. In rare cases, you can even brick devices by installing a firmware update.
|
Before updating a device, you should search for any disadvantages or if you even need to install an available update. Some firmware updates can break features you might use (e.g. group binding for IKEA devices). Some updates might also require changes to ZHA. In rare cases, you can even brick devices by installing a firmware update.
|
||||||
@ -247,7 +324,7 @@ Group members assume state of group:
|
|||||||
description: "When using ZHA groups, turning on a ZHA group light makes the ZHA group members optimistically change their state to \"on\", instead of waiting and polling the lights when off. _(default: on)_"
|
description: "When using ZHA groups, turning on a ZHA group light makes the ZHA group members optimistically change their state to \"on\", instead of waiting and polling the lights when off. _(default: on)_"
|
||||||
{% endconfiguration_basic %}
|
{% endconfiguration_basic %}
|
||||||
|
|
||||||
## Configuration - YAML
|
### Configuration - YAML
|
||||||
|
|
||||||
For more advanced configuration, you can modify {% term "`configuration.yaml`" %} and restart Home Assistant
|
For more advanced configuration, you can modify {% term "`configuration.yaml`" %} and restart Home Assistant
|
||||||
|
|
||||||
@ -267,15 +344,15 @@ custom_quirks_path:
|
|||||||
type: string
|
type: string
|
||||||
{% endconfiguration %}
|
{% endconfiguration %}
|
||||||
|
|
||||||
### Advanced OTA configuration
|
#### Advanced OTA configuration
|
||||||
|
|
||||||
OTA for a few manufacturers is enabled by default, currently Ledvance, Sonoff, Inovelli, and ThirdReality. Other manufacturers are supported but disabled by default because their updates may change or remove device functionality, may require you to reconfigure devices, or are contributed by the community and may be minimally tested.
|
OTA for a few manufacturers is enabled by default, currently Ledvance, Sonoff, Inovelli, and ThirdReality. Other manufacturers are supported but disabled by default because their updates may change or remove device functionality, may require you to reconfigure devices, or are contributed by the community and may be minimally tested.
|
||||||
|
|
||||||
Refer to the [zigpy documentation for OTA configuration](https://github.com/zigpy/zigpy/wiki/OTA-Configuration) for more information on additional OTA providers.
|
Refer to the [zigpy documentation for OTA configuration](https://github.com/zigpy/zigpy/wiki/OTA-Configuration) for more information on additional OTA providers.
|
||||||
|
|
||||||
### Defining Zigbee channel to use
|
#### Defining Zigbee channel to use
|
||||||
|
|
||||||
Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*". These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment.
|
Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about _Best practices to avoid pairing/connection difficulties_ and _Zigbee interference avoidance and network range/coverage optimization_. These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment.
|
||||||
|
|
||||||
ZHA prefers to use Zigbee channel 15 by default. You can change this using YAML configuration, but this only works
|
ZHA prefers to use Zigbee channel 15 by default. You can change this using YAML configuration, but this only works
|
||||||
if there's no existing network. To change the channel for an existing network, radio has to be factory reset and a new network to be formed. This requires re-pairing of all the devices.
|
if there's no existing network. To change the channel for an existing network, radio has to be factory reset and a new network to be formed. This requires re-pairing of all the devices.
|
||||||
@ -288,15 +365,19 @@ zha:
|
|||||||
channels: [15, 20, 25] # Channel mask
|
channels: [15, 20, 25] # Channel mask
|
||||||
```
|
```
|
||||||
|
|
||||||
Note! The best practice is to not change the Zigbee channel from the ZHA default. Also, the related troubleshooting segments mentioned in the tip above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel).
|
{% note %}
|
||||||
|
The best practice is to not change the Zigbee channel from the ZHA default.
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistance](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence).
|
The related troubleshooting segments mentioned above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel).
|
||||||
|
|
||||||
|
MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistence](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence).
|
||||||
|
|
||||||
The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings.
|
The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings.
|
||||||
|
|
||||||
The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels. Some devices, for example, are limited to only being compatible with ZLL (Zigbee Light Link) channels. It is therefore especially not recommended to use Zigbee channels 11, 24, 25, or 26 on your Zigbee coordinator. These Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. If using those channels, your coordinator may not be usable with older Zigbee devices.
|
The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels. Some devices, for example, are limited to only being compatible with ZLL (Zigbee Light Link) channels. It is therefore especially not recommended to use Zigbee channels 11, 24, 25, or 26 on your Zigbee coordinator. These Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. If using those channels, your coordinator may not be usable with older Zigbee devices.
|
||||||
|
|
||||||
### Modifying the device type
|
#### Modifying the device type
|
||||||
|
|
||||||
As not all device manufacturers follow the Zigbee standard, at times a device can be incorrectly classified. For example, a switch could be classified as a light.
|
As not all device manufacturers follow the Zigbee standard, at times a device can be incorrectly classified. For example, a switch could be classified as a light.
|
||||||
|
|
||||||
@ -335,11 +416,10 @@ from the same group:
|
|||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
Currently `qr_code` supports QR Install Codes from:
|
Currently `qr_code` supports QR Install Codes from:
|
||||||
|
- Aqara
|
||||||
- Aqara
|
- Bosch
|
||||||
- Bosch
|
- Consciot
|
||||||
- Consciot
|
- Embrighten
|
||||||
- Embrighten
|
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
### Action `zha.remove`
|
### Action `zha.remove`
|
||||||
@ -385,7 +465,7 @@ This action disables a lock code on a Zigbee lock.
|
|||||||
|
|
||||||
## Adding devices
|
## Adding devices
|
||||||
|
|
||||||
Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*" for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment.
|
Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about _Best practices to avoid pairing/connection difficulties_ and _Zigbee interference avoidance and network range/coverage optimization_ for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment.
|
||||||
|
|
||||||
**To add a new Zigbee device:**
|
**To add a new Zigbee device:**
|
||||||
|
|
||||||
@ -397,7 +477,7 @@ Tip! It is highly recommended that you read through the two segments under the t
|
|||||||
|
|
||||||
### Using router devices to add more devices
|
### Using router devices to add more devices
|
||||||
|
|
||||||
Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
|
Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
|
||||||
|
|
||||||
Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available.
|
Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available.
|
||||||
|
|
||||||
@ -417,94 +497,138 @@ In practice, you will likely need to add a lot more Zigbee router devices than i
|
|||||||
|
|
||||||
## Zigbee groups and binding devices
|
## Zigbee groups and binding devices
|
||||||
|
|
||||||
ZHA supports Zigbee groups and binding devices to each other. These features can be used separately or combined. For example, binding a remote to a bulb or group has the benefit of faster response time and smoother control, as the remote directly controls the bound devices.
|
ZHA supports the creation of Zigbee groups (different from Home Assistant's [Group](/integrations/group/) integration), as well as binding devices to each other. Groups and device binding can be set up independently of each other, but they can be also used in combination (such as binding a device to another group of devices).
|
||||||
|
|
||||||
### Zigbee group
|
### Groups
|
||||||
|
|
||||||
A Zigbee group enables the grouping of multiple Zigbee lights, switches, and fans. This allows you to control those devices with only one command/entity.
|
A Zigbee group is a collection of two or more Zigbee lights, switches, or fans. A Zigbee group can then be controlled using only one command/entity.
|
||||||
|
|
||||||
{% note %}
|
{% note %}
|
||||||
While using a native Zigbee group instead of Home Assistant's [Group](/integrations/group/) integration can improve the visual responsiveness, the broadcast commands issued can flood the Zigbee network if issued repeatedly.
|
While using a native Zigbee group instead of Home Assistant's [Group](/integrations/group/) integration can improve the visual responsiveness, the broadcast commands issued can flood the Zigbee network if issued repeatedly.
|
||||||
{% endnote %}
|
{% endnote %}
|
||||||
|
|
||||||
To create a Zigbee Group, press the "Configure" button on the ZHA integration config page. At the top, choose "Groups" and select "Create Group". Set a group name and choose which devices to include in the group.
|
#### To create a Zigbee group
|
||||||
|
|
||||||
The group should consist of products of the same device type (e.g. all lights, switches, or fans), and at least two devices must be added to a Zigbee group before a group entity is created.
|
1. Select the **Configure** button on the ZHA integration page,
|
||||||
|
2. Choose **Groups** and select **Create Group**,
|
||||||
|
3. Enter a name for the group,
|
||||||
|
4. Select which devices to include in the group:
|
||||||
|
- At least two devices must be added to a Zigbee Group before a group entity is created.
|
||||||
|
- The group should consist of products of the same device type (all lights, all switches, or all fans).
|
||||||
|
|
||||||
### Zigbee binding and unbinding
|
### Binding
|
||||||
|
|
||||||
Binding is an on-device feature for Zigbee devices. It provides a mechanism for attaching an endpoint of one Zigbee device to an endpoint of another Zigbee device or to a Zigbee group.
|
Binding a Zigbee device attaches an endpoint from one device to an endpoint of another device (or group).
|
||||||
|
|
||||||
For example, binding a "target destination" Zigbee device like a remote to a Zigbee light bulb, switch or group of light bulbs allows direct control of the "target" device (light, switch, shade) from the "remote" Zigbee device, bypassing ZHA. This means that the remote can control the light bulb or group even when ZHA is not active.
|
Commands sent between bound devices bypass ZHA (even when ZHA is not active) and directly control the targeted device. Binding devices can allow for faster response times and smoother control.
|
||||||
|
|
||||||
Note that not all devices support binding. By default, ZHA binds remotes to the coordinator, so click events are forwarded to HA. As some remotes can only be bound to a single destination, you might need to unbind the remote from the coordinator before binding it to another device or group.
|
Before binding devices, note the following:
|
||||||
|
|
||||||
## Zigbee backup and restore in ZHA
|
- ZHA binds remotes to the Zigbee coordinator by default in order to forward click events to Home Assistant.
|
||||||
|
- Some remotes can only be bound to a single target; you might need to unbind the remote from the coordinator before binding it to another target.
|
||||||
|
- Not all devices support binding. Refer to the device manufacturer's documentation to confirm features.
|
||||||
|
|
||||||
Zigbee Home Automation (ZHA) {% term integration %} now features Zigbee network backup, restore/recovery, and migrating between Zigbee coordinators. Backups are taken automatically. However, a single backup to a file for easy download can also be manually created from the configuration page under Network Settings.
|
#### To manage bindings of a Zigbee device
|
||||||
|
|
||||||
After restoring a Home Assistant backup, you can re-configure ZHA and migrate to a new Zigbee Coordinator adapter without any loss of your settings or devices that were connected. This is helpful if your current radio fails or a new radio adapter type and model comes out that you may want to migrate to.
|
{% note %}
|
||||||
|
**This section only outlines how to manage bindings in general. It will not cover all use cases.**
|
||||||
|
|
||||||
Within ZHA it is possible to use this backup and restore feature to migrate between some different radio types, if the respective radio library supports it. Currently, ZHA supports migrating the Zigbee network between different Zigbee Coordinator adapters based on chips from Silicon Labs, Texas Instruments, or ConBee/RaspBee if the backup was made from inside ZHA.
|
Prerequisites and steps can vary depending on the device type, manufacturer, and your desired end result.
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
## Migrating to a new Zigbee coordinator adapter inside ZHA
|
1. Navigate to the Zigbee device's configuration page,
|
||||||
|
2. In the options menu (the "three-dots" icon), select **Manage Zigbee device**,
|
||||||
|
3. Select the **Bindings** tab in the pop-up dialog,
|
||||||
|
4. Choose the device from the dropdown list of _Bindable devices_ (or _Bindable groups_),
|
||||||
|
5. Confirm the Bind or Unbind action:
|
||||||
|
- To bind devices: select **Bind** (or **Bind group**), or
|
||||||
|
- To unbind devices, select **Unbind** (or **Unbind group**).
|
||||||
|
|
||||||
Follow this guide if you have a Zigbee Home Assistant (ZHA) network running and want to migrate from one Zigbee coordinator radio adapter to another Zigbee coordinator radio adapter.
|
## Backups and migration
|
||||||
|
|
||||||
### Prerequisites
|
The ZHA {% term integration %} performs automatic backups of your Zigbee network allowing you to restore/recover the network from a backup or migrate to a different Zigbee Coordinator (radio adapter).
|
||||||
|
|
||||||
- Your old Zigbee Coordinator radio adapter is used in the ZHA {% term integration %} (not in deCONZ or MQTT).
|
After restoring a Home Assistant backup, you can reconfigure ZHA or migrate to a new Zigbee Coordinator without any loss of your settings or devices that were connected. This can be helpful if your current radio fails or a new radio adapter type/model comes out that you want to migrate to.
|
||||||
- It is of radio type ezsp (Silicon Labs EmberZnet), znp (Texas Instruments Z-Stack ZNP), or deCONZ (ConBee/RaspBee from dresden elektronik).
|
|
||||||
- If your old Zigbee coordinator is a deCONZ (ConBee/RaspBee) radio adapter, make sure it is running [firmware 0x26700700 (from 2021-08-18)](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Firmware-Changelog) or later.
|
|
||||||
|
|
||||||
### To migrate to a new Zigbee coordinator radio inside ZHA
|
Manual backups can also be created from the configuration page under **Network Settings**.
|
||||||
|
|
||||||
|
### Migrating to a new Zigbee Coordinator adapter inside ZHA
|
||||||
|
|
||||||
|
ZHA supports migrating the Zigbee network between different Zigbee Coordinators based on chips from Silicon Labs, Texas Instruments, or ConBee/RaspBee if the backup was made from inside ZHA.
|
||||||
|
|
||||||
|
#### Prerequisites
|
||||||
|
|
||||||
|
To migrate your Zigbee network from one Zigbee Coordinator to another, confirm you meet the following requirements before proceeding with the migration process:
|
||||||
|
|
||||||
|
- The previous Zigbee Coordinator is used in the ZHA {% term integration %} and _not_ in deCONZ or MQTT.
|
||||||
|
- The radio type is one of the following:
|
||||||
|
- ezsp (Silicon Labs EmberZnet)
|
||||||
|
- znp (Texas Instruments Z-Stack ZNP)
|
||||||
|
- deCONZ (ConBee/RaspBee from dresden elektronik)
|
||||||
|
- For deCONZ (ConBee/RaspBee) radio adapters, make sure it is running [firmware 0x26700700 (from 2021-08-18)](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Firmware-Changelog) or later.
|
||||||
|
|
||||||
|
#### To migrate to a new Zigbee coordinator radio inside ZHA
|
||||||
|
|
||||||
1. Go to **{% my integrations title="Settings > Devices & services" %}** and select the ZHA {% term integration %}. Then select **Configure**.
|
1. Go to **{% my integrations title="Settings > Devices & services" %}** and select the ZHA {% term integration %}. Then select **Configure**.
|
||||||
2. Under **Network settings**, select **Migrate radio**.
|
2. Under **Network settings**, select **Migrate radio**.
|
||||||
3. Reconfiguration of ZHA will start. Select **Submit**.
|
3. Reconfiguration of ZHA will start. Select **Submit**.
|
||||||
4. Under **Migrate or re-configure**, select **Migrate to a new radio**.
|
4. Under **Migrate or re-configure**, select **Migrate to a new radio**.
|
||||||
5. **Migrate to a new radio** will inform you that an automatic backup will be performed and that your old Zigbee coordinator radio will then be reset before the backup is automatically restored.
|
5. Select **Submit** to begin.
|
||||||
- Select **Submit**.
|
- An automatic backup will be performed, the Zigbee Coordinator radio will be reset, and the backup will be automatically restored.
|
||||||
6. **Unplug your old radio** will inform you that your old Zigbee coordinator radio has been reset and that you can now plug in your new Zigbee coordinator radio adapter.
|
- For combined Z-Wave and Zigbee radios, like the HUSBZB-1 adapter, only the Zigbee radio portion is reset.
|
||||||
- To avoid interference, use a USB extension cable.
|
- You may now unplug the old adapter, or you may leave the old radio adapter plugged in (for example, if the adapter is a combined Z-Wave adapter).
|
||||||
- Use a USB 2.0 port or a powered USB 2.0 hub and keep the Zigbee stick away from USB 3.0 devices.
|
6. Plug in the new Zigbee Coordinator radio adapter.
|
||||||
- You may now also choose to either unplug your old Zigbee coordinator radio adapter or keep your old radio plugged in.
|
- Select **Submit** after confirming the new Zigbee Coordinator radio adapter is properly connected.
|
||||||
- If that radio was a combined Z-Wave and Zigbee radio, like the HUSBZB-1 adapter, then only the Zigbee radio part of it was reset. Confirm that the Zigbee Coordinator radio adapter is properly connected and select **Submit**.
|
- To minimize interference:
|
||||||
7. You now need to start the backup restore process.
|
- Use a USB extension cable,
|
||||||
- Select your new Zigbee radio from the list of serial ports and select **Next**.
|
- Use a USB 2.0 port or a powered USB 2.0 hub,
|
||||||
- If your new radio does not appear or you need to reboot after plugging in new hardware, you can resume the migration after a reboot: under **Network Settings**, select **Re-configure the current radio** and choose your new radio.
|
- Keep the Zigbee stick away from USB 3.0 devices.
|
||||||
|
7. Start the backup restore process:
|
||||||
|
- Select the new Zigbee radio from the list of serial ports and select **Next**.
|
||||||
|
- A migration can be resumed if a reboot is required, such as when troubleshooting or if new hardware is plugged in.
|
||||||
|
- To resume, go to **Network Settings**, select **Re-configure the current radio**, choose the new radio and proceed.
|
||||||
8. Under **Network Formation**, select **Restore an automatic backup**.
|
8. Under **Network Formation**, select **Restore an automatic backup**.
|
||||||
9. Under **Restore Automation Backup**, choose the latest automatic backup and select **Submit**.
|
9. Under **Restore Automation Backup**, choose the latest automatic backup and select **Submit**.
|
||||||
10. If your radio requires overwriting the IEEE address, you will see a screen titled **Overwrite Radio IEEE Address**. Check the **Permanently replace the radio IEEE address** box and click **Submit**. Overwriting the IEEE address may take a while.
|
10. If the new radio requires overwriting the IEEE address (the unique MAC address), you will see the prompt for **Overwrite Radio IEEE Address**.
|
||||||
- Your old Zigbee Coordinator radio and your new stick will now have the same Zigbee IEEE address (unique MAC address for the Zigbee device).
|
- Check the **Permanently replace the radio IEEE address** box and click **Submit**.
|
||||||
- Selecting this option is required for the migration process to complete successfully.
|
- Selecting this option is required for the migration process to complete successfully.
|
||||||
- From this point onwards, you should not operate the old stick in the same area unless you change the Zigbee IEEE address on it.
|
- Overwriting the IEEE address may take a while.
|
||||||
- If you do not migrate the Zigbee IEEE address from your old Zigbee Coordinator radio, then you will have to re-join/re-pair many of your devices in order to keep them working.
|
- Both the old and new Zigbee Coordinators will now have the same Zigbee IEEE address.
|
||||||
|
- You should not operate the old adapter in the same area unless you change its Zigbee IEEE address.
|
||||||
|
- If you do not migrate the Zigbee IEEE address from the old Zigbee Coordinator radio, you will have to reconnect many of your devices to keep them working.
|
||||||
11. Finally, a **Success!** message should pop up with information that all options were successfully saved.
|
11. Finally, a **Success!** message should pop up with information that all options were successfully saved.
|
||||||
- Select **Finish** to confirm.
|
- Select **Finish** to confirm.
|
||||||
|
|
||||||
The migration process is complete. However, be aware that you will not be able to control your existing Zigbee devices until the new coordinator fully joins the network. This process can take a few minutes. If some existing devices do not function after some time, try power-cycling them to allow them to re-join the network.
|
{% important %}
|
||||||
|
You will not be able to control your existing Zigbee devices until the new coordinator fully joins the network after the migration. **This can take a few minutes.**
|
||||||
|
|
||||||
|
If some existing devices do not resume normal functions after some time, try power-cycling them to attempt rejoining to the network.
|
||||||
|
{% endimportant %}
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
To help resolve any kinks or compatibility problems, report bugs as issues with debug logs. Please note the current limitations and follow the instructions in this troubleshooting section.
|
Please note the current limitations and follow the instructions in this troubleshooting section.
|
||||||
|
|
||||||
### Limitations
|
{% note %}
|
||||||
|
To help resolve any kinks or compatibility problems, report bugs as issues with debug logs.
|
||||||
|
{% endnote %}
|
||||||
|
|
||||||
Note that ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network and that the Zigbee Coordinator cannot already be connected or used by any other application. Any devices that are or have previously been connected to another Zigbee implementation will also need to first be reset to their factory default settings before they can be paired/joined to ZHA, please see each device manufacturer's documentation.
|
### Limitations
|
||||||
|
|
||||||
Any Zigbee device can only be connected to a single Zigbee Coordinator (only one Zigbee gateway). This is a limitation in the current (as well as previous) Zigbee protocol specifications, governed by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/). As such, it is a limit that applies to all Zigbee implementations, not just the ZHA implementation.
|
ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network. The Zigbee Coordinator cannot already be connected or used by any other application. Devices currently or previously connected to another Zigbee implementation will need to be reset to their factory default settings before they can be paired/joined to ZHA. Refer to each device manufacturer's documentation for reset steps.
|
||||||
|
|
||||||
|
Any Zigbee device can only be connected to a single Zigbee Coordinator (only one Zigbee gateway). This is a limitation in the Zigbee protocol specifications, governed by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/), applying to all Zigbee implementations and not just the ZHA implementation.
|
||||||
|
|
||||||
Support for commissioning Zigbee 3.0 devices via "Install Code" or "QR Code" via the `zha.permit` action has so far only been implemented for 'ezsp' (Silicon Labs EmberZNet) or 'znp' (Texas Instruments) radio type in ZHA. Other radio types are missing support in their respective [radio libraries for zigpy](https://github.com/zigpy/) or manufacturer's firmware commands/APIs.
|
Support for commissioning Zigbee 3.0 devices via "Install Code" or "QR Code" via the `zha.permit` action has so far only been implemented for 'ezsp' (Silicon Labs EmberZNet) or 'znp' (Texas Instruments) radio type in ZHA. Other radio types are missing support in their respective [radio libraries for zigpy](https://github.com/zigpy/) or manufacturer's firmware commands/APIs.
|
||||||
|
|
||||||
ZHA does currently not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches).
|
ZHA currently does not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches).
|
||||||
|
|
||||||
ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart Energy") profile, that is however due to the "Zigbee SE" specification not being part of the standard Zigbee 3.0 specification and thus not implemented in most of the Zigbee protocol stacks that are commonly available Zigbee Coordinator radio adapters and modules.
|
ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart Energy") profile, that is however due to the "Zigbee SE" specification not being part of the standard Zigbee 3.0 specification and thus not implemented in most of the Zigbee protocol stacks that are commonly available Zigbee Coordinator radio adapters and modules.
|
||||||
|
|
||||||
### Knowing which devices are supported
|
### Knowing which devices are supported
|
||||||
|
|
||||||
Home Assistant's ZHA {% term integration %} supports all standard Zigbee device types. It should be compatible with most Zigbee devices as long as they fully conform to the official ZCL (Zigbee Cluster Library) specifications defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/). There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA {% term integration %}
|
Home Assistant's ZHA {% term integration %} supports all standard Zigbee device types. It should be compatible with most Zigbee devices as long as they fully conform to the official ZCL (Zigbee Cluster Library) specifications defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/). There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA {% term integration %}
|
||||||
Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the {% term integration %}. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on _How to add support for new and unsupported devices_.
|
Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the {% term integration %}. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on [How to add support for new and unsupported devices](#how-to-add-support-for-new-and-unsupported-devices).
|
||||||
|
|
||||||
For clarification, normally only devices that do not fully conform to CSA's ZCL specifications that will not present all standard attributes as entities for configuration in the ZHA {% term integration %}. Zigbee devices that only use the standard clusters and attributes that are Zigbee specifications set by the Connectivity Standards Alliance should not need custom device handlers.
|
For clarification, normally only devices that do not fully conform to CSA's ZCL specifications that will not present all standard attributes as entities for configuration in the ZHA {% term integration %}. Zigbee devices that only use the standard clusters and attributes that are Zigbee specifications set by the Connectivity Standards Alliance should not need custom device handlers.
|
||||||
|
|
||||||
@ -514,7 +638,8 @@ Tip to new Zigbee users: Checkout [blakadder's unofficial Zigbee Device Compatib
|
|||||||
|
|
||||||
### How to add support for new and unsupported devices
|
### How to add support for new and unsupported devices
|
||||||
|
|
||||||
If your Zigbee device pairs/joins successfully with the ZHA {% term integration %} but does not show all of the expected entities:
|
If your Zigbee device pairs/joins successfully with the ZHA {% term integration %} but does not show all of the expected entities:
|
||||||
|
|
||||||
1. Try to re-pair/re-join the device several times.
|
1. Try to re-pair/re-join the device several times.
|
||||||
2. Checkout the troubleshooting section.
|
2. Checkout the troubleshooting section.
|
||||||
3. Still not working? You may need a custom device handler. This handler will have exception handling code to work around device-specific issues.
|
3. Still not working? You may need a custom device handler. This handler will have exception handling code to work around device-specific issues.
|
||||||
@ -523,13 +648,14 @@ For devices that do not follow the standard defined in the CSA's ZCL (Zigbee Clu
|
|||||||
|
|
||||||
People familiar with other Zigbee gateway solutions for home automation may know similar concepts of using custom Zigbee device handlers/converters for non-standard devices. For example, [Zigbee2MQTT (and IoBroker) uses zigbee-herdsman converters](https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html) and [SmartThings Classics (Legacy) platform has Hub Connected Device Handlers](https://developer.smartthings.com/docs/devices/hub-connected/legacy).
|
People familiar with other Zigbee gateway solutions for home automation may know similar concepts of using custom Zigbee device handlers/converters for non-standard devices. For example, [Zigbee2MQTT (and IoBroker) uses zigbee-herdsman converters](https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html) and [SmartThings Classics (Legacy) platform has Hub Connected Device Handlers](https://developer.smartthings.com/docs/devices/hub-connected/legacy).
|
||||||
|
|
||||||
If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues):
|
If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues):
|
||||||
1. Sign in to GitHub.
|
|
||||||
2. Select **New issue** and follow the instructions.
|
|
||||||
- New device support requests require the device signature + diagnostic information.
|
|
||||||
- You may also need to actively help in further testing or provide additional information to the volunteering developers.
|
|
||||||
|
|
||||||
Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA.
|
1. Sign in to GitHub.
|
||||||
|
2. Select **New issue** and follow the instructions.
|
||||||
|
- New device support requests require the device signature + diagnostic information.
|
||||||
|
- You may also need to actively help in further testing or provide additional information to the volunteering developers.
|
||||||
|
|
||||||
|
Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA.
|
||||||
|
|
||||||
### Best practices to avoid pairing/connection difficulties
|
### Best practices to avoid pairing/connection difficulties
|
||||||
|
|
||||||
@ -538,15 +664,15 @@ If you experience problems pairing a device, verify that you follow best practic
|
|||||||
- Check that your setup and environment are optimized to avoid interference.
|
- Check that your setup and environment are optimized to avoid interference.
|
||||||
- As interference avoidance is an extremely important topic on its own, please read and follow the tips in the separate section below about Zigbee interference avoidance and network range/coverage optimization.
|
- As interference avoidance is an extremely important topic on its own, please read and follow the tips in the separate section below about Zigbee interference avoidance and network range/coverage optimization.
|
||||||
- Check that you have enough Zigbee router devices (also known as Zigbee signal repeaters or range extenders) and if you do not have any, invest and add some mains-powered devices that will work as Zigbee routers.
|
- Check that you have enough Zigbee router devices (also known as Zigbee signal repeaters or range extenders) and if you do not have any, invest and add some mains-powered devices that will work as Zigbee routers.
|
||||||
- Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network.
|
- Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network.
|
||||||
- Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios.
|
- Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios.
|
||||||
- If possible try to pair your Zigbee devices in their intended final location, (and not pair it next to the Zigbee coordinator and then need to move it after).
|
- If possible try to pair your Zigbee devices in their intended final location, (and not pair it next to the Zigbee coordinator and then need to move it after).
|
||||||
- Pairing a Zigbee device next to the Zigbee coordinator and then moving it later can result in dropped/lost connections or other issues.
|
- Pairing a Zigbee device next to the Zigbee coordinator and then moving it later can result in dropped/lost connections or other issues.
|
||||||
- If the device you want to add is not brand new and as such never paired before then you always have to make sure to first manually reset the device to its factory default settings before you will be able to add/pair it.
|
- If the device you want to add is not brand new and as such never paired before then you always have to make sure to first manually reset the device to its factory default settings before you will be able to add/pair it.
|
||||||
- Some battery-operated Zigbee devices are known to have problems with pairing if they have Low battery voltage.
|
- Some battery-operated Zigbee devices are known to have problems with pairing if they have Low battery voltage.
|
||||||
- Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues.
|
- Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues.
|
||||||
- Be patient as the pairing of some Zigbee devices may require multiple attempts and you may sometimes need to try again and again.
|
- Be patient as the pairing of some Zigbee devices may require multiple attempts and you may sometimes need to try again and again.
|
||||||
- Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer.
|
- Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer.
|
||||||
|
|
||||||
### Zigbee interference avoidance and network range/coverage optimization
|
### Zigbee interference avoidance and network range/coverage optimization
|
||||||
|
|
||||||
@ -569,13 +695,13 @@ Common root causes of unreliable performance are often seen with outdated Zigbee
|
|||||||
|
|
||||||
- Update to a later version of Zigbee Coordinator firmware on the existing radio adapter.
|
- Update to a later version of Zigbee Coordinator firmware on the existing radio adapter.
|
||||||
- Most manufacturers usually provide straightforward guides for updating the firmware.
|
- Most manufacturers usually provide straightforward guides for updating the firmware.
|
||||||
|
|
||||||
- Try different physical placement and orientations of the Zigbee Coordinator and its antenna.
|
- Try different physical placement and orientations of the Zigbee Coordinator and its antenna.
|
||||||
- Optimal placement of the Zigbee adapter is close to the middle of the house as possible.
|
- Optimal placement of the Zigbee adapter is close to the middle of the house as possible.
|
||||||
- Try placing Zigbee Coordinator at some distance away from walls, ceilings, and floors.
|
- Try placing Zigbee Coordinator at some distance away from walls, ceilings, and floors.
|
||||||
- Try different orientations of the Zigbee Coordinator adapter or its antenna.
|
- Try different orientations of the Zigbee Coordinator adapter or its antenna.
|
||||||
|
|
||||||
While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices.
|
While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices.
|
||||||
|
|
||||||
#### Actions to avoid or workaround EMI/EMF/RMI interference
|
#### Actions to avoid or workaround EMI/EMF/RMI interference
|
||||||
|
|
||||||
@ -587,7 +713,7 @@ Since all Zigbee Coordinator radio adapters are very sensitive/susceptible to al
|
|||||||
- Extension cables also makes it easier to try different orientations of the adapter/antenna.
|
- Extension cables also makes it easier to try different orientations of the adapter/antenna.
|
||||||
|
|
||||||
- Avoid USB 3.0 ports/computers/peripherals as they are known culprits of RFI/EMI/EMF disruption. (See Ref. [1](https://www.usb.org/sites/default/files/327216.pdf) and [2](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/)).
|
- Avoid USB 3.0 ports/computers/peripherals as they are known culprits of RFI/EMI/EMF disruption. (See Ref. [1](https://www.usb.org/sites/default/files/327216.pdf) and [2](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/)).
|
||||||
- Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port).
|
- Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port).
|
||||||
- If a computer only has USB 3.x ports then buy and connect Zigbee Coordinator via a powered USB 2.0 hub.
|
- If a computer only has USB 3.x ports then buy and connect Zigbee Coordinator via a powered USB 2.0 hub.
|
||||||
|
|
||||||
- Shield any unshielded computers/peripherals/devices by adding all-metal enclosures/chassis/casings.
|
- Shield any unshielded computers/peripherals/devices by adding all-metal enclosures/chassis/casings.
|
||||||
@ -615,6 +741,7 @@ Missing links between Zigbee end devices (often battery-powered devices) in the
|
|||||||
Some end devices (for example, Xiaomi door sensors) sleep for an extended period, causing the parent Zigbee Router to remove them from its child table via a feature called router child aging. Since using child aging and removing them from the child table is a Zigbee 3.0 feature, this does not always occur because not all Zigbee router devices use child aging.
|
Some end devices (for example, Xiaomi door sensors) sleep for an extended period, causing the parent Zigbee Router to remove them from its child table via a feature called router child aging. Since using child aging and removing them from the child table is a Zigbee 3.0 feature, this does not always occur because not all Zigbee router devices use child aging.
|
||||||
|
|
||||||
This is what causes devices to show a missing link. Even though the device is no longer in the child table, the end device can still communicate via the parent Zigbee router.
|
This is what causes devices to show a missing link. Even though the device is no longer in the child table, the end device can still communicate via the parent Zigbee router.
|
||||||
|
|
||||||
#### How to interpret RSSI and LQI values
|
#### How to interpret RSSI and LQI values
|
||||||
|
|
||||||
Interpreting RSSI and LQI values can be complex, as metrics of network health and communication quality are provided by the devices themselves, and each device could get to its results in different ways. Unless you are a Zigbee specialist yourself or are guided by one, please ignore those values. They can be misleading. If you delve into this, it is important to understand not to judge RSSI or LQI values on their own. When troubleshooting Zigbee messages that are being dropped, you must interpret the combination of both RSSI and LQI.
|
Interpreting RSSI and LQI values can be complex, as metrics of network health and communication quality are provided by the devices themselves, and each device could get to its results in different ways. Unless you are a Zigbee specialist yourself or are guided by one, please ignore those values. They can be misleading. If you delve into this, it is important to understand not to judge RSSI or LQI values on their own. When troubleshooting Zigbee messages that are being dropped, you must interpret the combination of both RSSI and LQI.
|
||||||
@ -641,7 +768,7 @@ When reporting potential bugs related to the ZHA integration on the issues track
|
|||||||
1. Debug logs for the issue, see [debug logging](#debug-logging).
|
1. Debug logs for the issue, see [debug logging](#debug-logging).
|
||||||
2. Exact model and firmware of the Zigbee radio (Zigbee Coordinator adapter) being used.
|
2. Exact model and firmware of the Zigbee radio (Zigbee Coordinator adapter) being used.
|
||||||
3. If the issue is related to a specific Zigbee device, provide both the **Zigbee Device Signature** and the **Diagnostics** information.
|
3. If the issue is related to a specific Zigbee device, provide both the **Zigbee Device Signature** and the **Diagnostics** information.
|
||||||
- Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & services**" %}. Select the **Zigbee Home Automation** integration. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively.
|
- Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & services**" %}. Select the **Zigbee Home Automation** integration. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively.
|
||||||
|
|
||||||
Note: Please also make sure you give it your best effort to follow the recommended best practices for avoiding both [pairing/connection difficulties](#best-practices-to-avoid-pairingconnection-difficulties) and [Zigbee interference](#zigbee-interference-avoidance-and-network-rangecoverage-optimization), (which helps free up time for developers).
|
Note: Please also make sure you give it your best effort to follow the recommended best practices for avoiding both [pairing/connection difficulties](#best-practices-to-avoid-pairingconnection-difficulties) and [Zigbee interference](#zigbee-interference-avoidance-and-network-rangecoverage-optimization), (which helps free up time for developers).
|
||||||
|
|
||||||
@ -669,31 +796,58 @@ logger:
|
|||||||
|
|
||||||
### Add Philips Hue bulbs that have previously been added to another bridge
|
### Add Philips Hue bulbs that have previously been added to another bridge
|
||||||
|
|
||||||
Philips Hue bulbs/lights that have previously been paired/added to another bridge/gateway will not show up during search in ZHA to pair/add a Zigbee device. That is because you have to first manually restore your bulbs/lights back to their factory default settings first, and just removing them from your old bridge/gateway is not enough to do so. Instead to achieve a proper device factory reset you can use one of these methods below.
|
Philips Hue bulbs that have previously been paired to another bridge/gateway will not show up during search in ZHA to add a Zigbee device. **Bulbs must be restored back to their factory default settings**.
|
||||||
|
|
||||||
You can use a Philips Hue Dimmer Switch or Lutron Connected Bulb Remote to factory-reset your bulbs. For this to work, the remote does not have to be paired with your previous bridge. Also, make sure there are no other Hue bulbs nearby that have just been turned on when using this method. Otherwise, you risk resetting them too.
|
{% important %}
|
||||||
|
**You must factory-reset the device.**
|
||||||
|
|
||||||
Newer Philips Hue bulbs you can reset via Bluetooth. The official Android app can connect to one of these bulbs even if it is already paired to a bridge. Then, you can reset the bulb in the app.
|
- Simply "removing" them from your old bridge/gateway is not sufficient.
|
||||||
|
- Be sure there are no other Hue bulbs nearby that have just been powered-on when using this method or you will risk resetting them in this process.
|
||||||
|
|
||||||
#### Philips Hue Dimmer Switch
|
{% endimportant %}
|
||||||
|
|
||||||
1. Turn on your Hue bulb/light you want to reset. (It is important that the bulb has just been turned).
|
The following reset methods can be used (depending on the bulb version):
|
||||||
2. Hold the Philips Hue Dimmer Switch near your bulb (closer than 10 centimeters / 4 inches).
|
|
||||||
3. Press and hold the (I)/(ON) and (O)/(OFF) buttons on the Philips Hue Dimmer Switch. The bulb should start blinking in 10-20 seconds. The bulb will blink, then turn off, then turn on. You can now release the dimmer buttons.
|
|
||||||
4. Your bulb is now factor reset and ready for pairing. A green light on the top left of the dimmer remote indicates that your bulb has been successfully reset to factory default settings.
|
|
||||||
|
|
||||||
Note: If you are unable to reset the bulb, remove it from the Hue Bridge and retry the procedure.
|
- **Zigbee remote:**
|
||||||
|
- Steps are outlined below for either the _Philips Hue Dimmer Switch_ or _Lutron Connected Bulb Remote_.
|
||||||
|
- The remote does not have to be paired with your previous bridge.
|
||||||
|
- **Bluetooth via Android app:**
|
||||||
|
- Newer Philips Hue bulbs can reset via Bluetooth using the official Android app.
|
||||||
|
- This is an option even if the bulb is already paired to a bridge.
|
||||||
|
- **Hue Thief command-line tool**:
|
||||||
|
- Advanced users can use a third-party tool called [Hue Thief](https://github.com/vanviegen/hue-thief/).
|
||||||
|
- This requires an EZSP-based Zigbee USB stick.
|
||||||
|
|
||||||
#### Lutron Connected Bulb Remote
|
#### Factory-reset using a Zigbee remote
|
||||||
|
|
||||||
1. Turn on your Hue bulb/light you want to reset. (It is important that the bulb has just been turned).
|
Icons or button names may vary between generations of remotes. The remote used for resetting does not have to be paired with your previous bridge.
|
||||||
2. Hold the Dimmer Switch near your bulb (closer than 10 centimeters / 4 inches)
|
|
||||||
3. Press and hold the 2nd (up arrow) and 4th (light off) buttons on the Lutron Connected Bulb Remote simultaneously for about 10 seconds continuously until your bulb starts to blink and the green LED on the remote should also start blink slowly.
|
|
||||||
4. Continue to hold both buttons on the remote until the green LED on it stops blinking. Your bulb should also have stopped blinking and eventually turn on again indicating that your bulb has been successfully reset to factory default settings.
|
|
||||||
|
|
||||||
#### hue-thief
|
{% details "To reset using a remote:" %}
|
||||||
|
|
||||||
Follow the instructions on [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) (EZSP-based Zigbee USB stick required)
|
1. Identify which buttons will be used later to perform the reset (based on the brand of remote):
|
||||||
|
- **Philips Hue Dimmer Switch**:
|
||||||
|
- Use the **(I)/(ON)** and **(O)/(OFF)** buttons.
|
||||||
|
- Button labels or icons may vary based on the generation of Hue remote.
|
||||||
|
- **Lutron Connected Bulb Remote:**
|
||||||
|
- Use the **2nd (up arrow)** and **4th (light off)** buttons.
|
||||||
|
2. Turn on the Hue bulb you want to reset.
|
||||||
|
- **It is important that the bulb has _just_ been powered on.**
|
||||||
|
3. Hold the remote near your bulb, closer than 10cm (about 4 inches).
|
||||||
|
4. Press-and-hold both buttons identified in the first step and continue holding them once the bulb begins to blink.
|
||||||
|
- Expect to hold the buttons for about another 10 seconds while the bulb blinks.
|
||||||
|
- **Lutron Connected Bulb Remote:** The green LED on the remote should also begin to blink slowly.
|
||||||
|
5. Release both buttons once the bulb turns off.
|
||||||
|
- **Lutron Connected Bulb Remote:** You can release the buttons after the green LED stops flashing on the remote.
|
||||||
|
6. The bulb will turn back on immediately after to indicate the factory-reset is complete.
|
||||||
|
- The bulb is now ready for pairing to ZHA following normal steps for [adding devices](#adding-devices).
|
||||||
|
|
||||||
|
{% tip %}
|
||||||
|
A green light on the top left of the Philips Hue Dimmer Switch remote indicates that your bulb has been successfully reset to factory default settings.
|
||||||
|
{% endtip %}
|
||||||
|
|
||||||
|
{% enddetails %}
|
||||||
|
|
||||||
|
If you are unable to reset the bulb using a method above, remove it from the Hue Bridge (if it was re-discovered by the Hue Bridge) and try the procedure again.
|
||||||
|
|
||||||
### ZHA Start up issue with Home Assistant or Home Assistant Container
|
### ZHA Start up issue with Home Assistant or Home Assistant Container
|
||||||
|
|
||||||
|
@ -1003,6 +1003,19 @@ This association group is used when Home Assistant [resets the Z-Wave controller
|
|||||||
|
|
||||||
Under normal circumstances, it is not necessary to add a device to this group.
|
Under normal circumstances, it is not necessary to add a device to this group.
|
||||||
|
|
||||||
|
## Identification via Z-Wave
|
||||||
|
|
||||||
|
Other Z-Wave devices can instruct a Home Assistant instance to identify itself by sending the following `Indicator Set` Z-Wave command (all bytes are hexadecimal):
|
||||||
|
|
||||||
|
```txt
|
||||||
|
87010003500308500403500506
|
||||||
|
~~ ~~ ~~
|
||||||
|
```
|
||||||
|
|
||||||
|
The bytes underlined with `~` can also have any other value.
|
||||||
|
|
||||||
|
When receiving such a command, Home Assistant will show a notification in its sidebar, mentioning which node sent the command.
|
||||||
|
|
||||||
## Z-Wave Command Classes Home Assistant responds to when queried
|
## Z-Wave Command Classes Home Assistant responds to when queried
|
||||||
|
|
||||||
The following table lists the Command Classes together with the implemented version and required security class. These are the Command Classes that Home Assistant will respond to when queried by other devices.
|
The following table lists the Command Classes together with the implemented version and required security class. These are the Command Classes that Home Assistant will respond to when queried by other devices.
|
||||||
|
@ -23,6 +23,10 @@ _**TL;DR**: It is our goal for 2023 to let users control Home Assistant in their
|
|||||||
- [Year of the Voice - Chapter 4](/blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/) (October 12, 2023)
|
- [Year of the Voice - Chapter 4](/blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/) (October 12, 2023)
|
||||||
- [Year of the Voice - Chapter 5](/blog/2023/12/13/year-of-the-voice-chapter-5/) (December 13, 2023)
|
- [Year of the Voice - Chapter 5](/blog/2023/12/13/year-of-the-voice-chapter-5/) (December 13, 2023)
|
||||||
- [Voice - Chapter 6](/blog/2024/02/21/voice-chapter-6/) (February 21, 2024)
|
- [Voice - Chapter 6](/blog/2024/02/21/voice-chapter-6/) (February 21, 2024)
|
||||||
|
- [Voice - Chapter 7](/blog/2024/06/26/voice-chapter-7/) (June 26, 2024)
|
||||||
|
- [Voice - Chapter 8](/blog/2024/12/19/voice-chapter-8-assist-in-the-home/) (December 19, 2024)
|
||||||
|
- [Voice - Chapter 9](/blog/2025/02/13/voice-chapter-9-speech-to-phrase/) (February 13, 2024)
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
@ -71,6 +71,12 @@ _PS: It is almost Valentine's day, did you set up some romantic scenes yet? 🌹
|
|||||||
- [Other noteworthy changes](#other-noteworthy-changes)
|
- [Other noteworthy changes](#other-noteworthy-changes)
|
||||||
- [Bluetooth config panel](#bluetooth-config-panel)
|
- [Bluetooth config panel](#bluetooth-config-panel)
|
||||||
- [Preparing our graphs for the future](#preparing-our-graphs-for-the-future)
|
- [Preparing our graphs for the future](#preparing-our-graphs-for-the-future)
|
||||||
|
- [Patch releases](#patch-releases)
|
||||||
|
- [2025.2.1 - February 7](#202521---february-7)
|
||||||
|
- [2025.2.2 - February 10](#202522---february-10)
|
||||||
|
- [2025.2.3 - February 12](#202523---february-12)
|
||||||
|
- [2025.2.4 - February 14](#202524---february-14)
|
||||||
|
- [2025.2.5 - February 21](#202525---february-21)
|
||||||
- [Need help? Join the community!](#need-help-join-the-community)
|
- [Need help? Join the community!](#need-help-join-the-community)
|
||||||
- [Backward-incompatible changes](#backward-incompatible-changes)
|
- [Backward-incompatible changes](#backward-incompatible-changes)
|
||||||
- [All changes](#all-changes)
|
- [All changes](#all-changes)
|
||||||
@ -473,6 +479,351 @@ However, this change is a preparation for the future. We have many plans and
|
|||||||
ideas for our graphs, and this change was a necessary step to make those plans
|
ideas for our graphs, and this change was a necessary step to make those plans
|
||||||
possible.
|
possible.
|
||||||
|
|
||||||
|
## Patch releases
|
||||||
|
|
||||||
|
We will also release patch releases for Home Assistant 2025.2 in February.
|
||||||
|
These patch releases only contain bug fixes. Our goal is to release a patch
|
||||||
|
release every Friday.
|
||||||
|
|
||||||
|
### 2025.2.1 - February 7
|
||||||
|
|
||||||
|
- Fix hassio test using wrong fixture ([@emontnemery] - [#137516])
|
||||||
|
- Change Electric Kiwi authentication ([@mikey0000] - [#135231])
|
||||||
|
- Update govee-ble to 0.42.1 ([@cdce8p] - [#137371])
|
||||||
|
- Bump holidays to 0.66 ([@gjohansson-ST] - [#137449])
|
||||||
|
- Bump aiohttp-asyncmdnsresolver to 0.1.0 ([@bdraco] - [#137492])
|
||||||
|
- Bump aiohttp to 3.11.12 ([@bdraco] - [#137494])
|
||||||
|
- Bump govee-ble to 0.43.0 to fix compat with new H5179 firmware ([@bdraco] - [#137508])
|
||||||
|
- Bump habiticalib to v0.3.5 ([@tr4nt0r] - [#137510])
|
||||||
|
- Fix Mill issue, where no sensors were shown ([@Danielhiversen] - [#137521])
|
||||||
|
- Don't overwrite setup state in async_set_domains_to_be_loaded ([@emontnemery] - [#137547])
|
||||||
|
- Use separate metadata files for onedrive ([@zweckj] - [#137549])
|
||||||
|
- Fix sending polls to Telegram threads ([@jwhb] - [#137553])
|
||||||
|
- Skip building wheels for electrickiwi-api ([@cdce8p] - [#137556])
|
||||||
|
- Add excluded domains to broadcast intent ([@synesthesiam] - [#137566])
|
||||||
|
- Revert "Add `PaddleSwitchPico` (Pico Paddle Remote) device trigger to Lutron Caseta" ([@bdraco] - [#137571])
|
||||||
|
- Fix Overseerr webhook configuration JSON ([@denniseffing] - [#137572])
|
||||||
|
- Do not rely on pyserial for port scanning with the CM5 + ZHA ([@puddly] - [#137585])
|
||||||
|
- Bump eheimdigital to 1.0.6 ([@autinerd] - [#137587])
|
||||||
|
- Bump pyfireservicerota to 0.0.46 ([@cyberjunky] - [#137589])
|
||||||
|
- Bump reolink-aio to 0.11.10 ([@starkillerOG] - [#137591])
|
||||||
|
- Allow to omit the payload attribute to MQTT publish action to allow an empty payload to be sent by default ([@jbouwh] - [#137595])
|
||||||
|
- Handle previously migrated HEOS device identifier ([@andrewsayre] - [#137596])
|
||||||
|
- Bump `aioshelly` to version `12.4.1` ([@bieniu] - [#137598])
|
||||||
|
- Bump electrickiwi-api to 0.9.13 ([@mikey0000] - [#137601])
|
||||||
|
- Bump ZHA to 0.0.48 ([@TheJulianJES] - [#137610])
|
||||||
|
- Bump Electrickiwi-api to 0.9.14 ([@mikey0000] - [#137614])
|
||||||
|
- Update google-nest-sdm to 7.1.3 ([@allenporter] - [#137625])
|
||||||
|
- Don't use the current temperature from Shelly BLU TRV as a state for External Temperature number entity ([@bieniu] - [#137658])
|
||||||
|
- Fix LG webOS TV turn off when device is already off ([@thecode] - [#137675])
|
||||||
|
|
||||||
|
[#135231]: https://github.com/home-assistant/core/pull/135231
|
||||||
|
[#137371]: https://github.com/home-assistant/core/pull/137371
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137449]: https://github.com/home-assistant/core/pull/137449
|
||||||
|
[#137492]: https://github.com/home-assistant/core/pull/137492
|
||||||
|
[#137494]: https://github.com/home-assistant/core/pull/137494
|
||||||
|
[#137508]: https://github.com/home-assistant/core/pull/137508
|
||||||
|
[#137510]: https://github.com/home-assistant/core/pull/137510
|
||||||
|
[#137516]: https://github.com/home-assistant/core/pull/137516
|
||||||
|
[#137521]: https://github.com/home-assistant/core/pull/137521
|
||||||
|
[#137547]: https://github.com/home-assistant/core/pull/137547
|
||||||
|
[#137549]: https://github.com/home-assistant/core/pull/137549
|
||||||
|
[#137553]: https://github.com/home-assistant/core/pull/137553
|
||||||
|
[#137556]: https://github.com/home-assistant/core/pull/137556
|
||||||
|
[#137566]: https://github.com/home-assistant/core/pull/137566
|
||||||
|
[#137571]: https://github.com/home-assistant/core/pull/137571
|
||||||
|
[#137572]: https://github.com/home-assistant/core/pull/137572
|
||||||
|
[#137585]: https://github.com/home-assistant/core/pull/137585
|
||||||
|
[#137587]: https://github.com/home-assistant/core/pull/137587
|
||||||
|
[#137589]: https://github.com/home-assistant/core/pull/137589
|
||||||
|
[#137591]: https://github.com/home-assistant/core/pull/137591
|
||||||
|
[#137595]: https://github.com/home-assistant/core/pull/137595
|
||||||
|
[#137596]: https://github.com/home-assistant/core/pull/137596
|
||||||
|
[#137598]: https://github.com/home-assistant/core/pull/137598
|
||||||
|
[#137601]: https://github.com/home-assistant/core/pull/137601
|
||||||
|
[#137610]: https://github.com/home-assistant/core/pull/137610
|
||||||
|
[#137614]: https://github.com/home-assistant/core/pull/137614
|
||||||
|
[#137625]: https://github.com/home-assistant/core/pull/137625
|
||||||
|
[#137658]: https://github.com/home-assistant/core/pull/137658
|
||||||
|
[#137675]: https://github.com/home-assistant/core/pull/137675
|
||||||
|
[@Danielhiversen]: https://github.com/Danielhiversen
|
||||||
|
[@TheJulianJES]: https://github.com/TheJulianJES
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@andrewsayre]: https://github.com/andrewsayre
|
||||||
|
[@autinerd]: https://github.com/autinerd
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@bieniu]: https://github.com/bieniu
|
||||||
|
[@cdce8p]: https://github.com/cdce8p
|
||||||
|
[@cyberjunky]: https://github.com/cyberjunky
|
||||||
|
[@denniseffing]: https://github.com/denniseffing
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||||
|
[@jbouwh]: https://github.com/jbouwh
|
||||||
|
[@jwhb]: https://github.com/jwhb
|
||||||
|
[@mikey0000]: https://github.com/mikey0000
|
||||||
|
[@puddly]: https://github.com/puddly
|
||||||
|
[@starkillerOG]: https://github.com/starkillerOG
|
||||||
|
[@synesthesiam]: https://github.com/synesthesiam
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
[@tr4nt0r]: https://github.com/tr4nt0r
|
||||||
|
[@zweckj]: https://github.com/zweckj
|
||||||
|
|
||||||
|
### 2025.2.2 - February 10
|
||||||
|
|
||||||
|
- LaCrosse View new endpoint ([@IceBotYT] - [#137284])
|
||||||
|
- Convert coinbase account amounts as floats to properly add them together ([@natekspencer] - [#137588])
|
||||||
|
- Bump ohmepy to 1.2.9 ([@dan-r] - [#137695])
|
||||||
|
- Bump onedrive_personal_sdk to 0.0.9 ([@zweckj] - [#137729])
|
||||||
|
- Limit habitica ConfigEntrySelect to integration domain ([@cdce8p] - [#137767])
|
||||||
|
- Limit nordpool ConfigEntrySelect to integration domain ([@cdce8p] - [#137768])
|
||||||
|
- Limit transmission ConfigEntrySelect to integration domain ([@cdce8p] - [#137769])
|
||||||
|
- Fix tplink child updates taking up to 60s ([@bdraco] - [#137782])
|
||||||
|
- Call backup listener during setup in Google Drive ([@tronikos] - [#137789])
|
||||||
|
- Use the external URL set in Settings > System > Network if my is disabled as redirect URL for Google Drive instructions ([@tronikos] - [#137791])
|
||||||
|
- Fix manufacturer_id matching for 0 ([@patman15] - [#137802])
|
||||||
|
- Fix DAB radio in Onkyo ([@arturpragacz] - [#137852])
|
||||||
|
- Fix LG webOS TV fails to setup when device is off ([@thecode] - [#137870])
|
||||||
|
- Fix heos migration ([@balloob] - [#137887])
|
||||||
|
- Bump pydrawise to 2025.2.0 ([@dknowles2] - [#137961])
|
||||||
|
- Bump aioshelly to version 12.4.2 ([@bieniu] - [#137986])
|
||||||
|
- Prevent crash if telegram message failed and did not generate an ID ([@CloCkWeRX] - [#137989])
|
||||||
|
- Bump habiticalib to v0.3.7 ([@tr4nt0r] - [#137993])
|
||||||
|
- Refresh the nest authentication token on integration start before invoking the pub/sub subsciber ([@allenporter] - [#138003])
|
||||||
|
- Use resumable uploads in Google Drive ([@tronikos] - [#138010])
|
||||||
|
- Bump py-synologydsm-api to 2.6.2 ([@mib1185] - [#138060])
|
||||||
|
- Handle generic agent exceptions when getting and deleting backups ([@abmantis] - [#138145])
|
||||||
|
- Bump onedrive-personal-sdk to 0.0.10 ([@zweckj] - [#138186])
|
||||||
|
- Keep one backup per backup agent when executing retention policy ([@emontnemery] - [#138189])
|
||||||
|
- Improve inexogy logging when failed to update ([@jpbede] - [#138210])
|
||||||
|
- Bump pyheos to v1.0.2 ([@andrewsayre] - [#138224])
|
||||||
|
- Update frontend to 20250210.0 ([@bramkragten] - [#138227])
|
||||||
|
- Bump lacrosse-view to 1.1.1 ([@IceBotYT] - [#137282])
|
||||||
|
|
||||||
|
[#137282]: https://github.com/home-assistant/core/pull/137282
|
||||||
|
[#137284]: https://github.com/home-assistant/core/pull/137284
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137588]: https://github.com/home-assistant/core/pull/137588
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#137695]: https://github.com/home-assistant/core/pull/137695
|
||||||
|
[#137729]: https://github.com/home-assistant/core/pull/137729
|
||||||
|
[#137767]: https://github.com/home-assistant/core/pull/137767
|
||||||
|
[#137768]: https://github.com/home-assistant/core/pull/137768
|
||||||
|
[#137769]: https://github.com/home-assistant/core/pull/137769
|
||||||
|
[#137782]: https://github.com/home-assistant/core/pull/137782
|
||||||
|
[#137789]: https://github.com/home-assistant/core/pull/137789
|
||||||
|
[#137791]: https://github.com/home-assistant/core/pull/137791
|
||||||
|
[#137802]: https://github.com/home-assistant/core/pull/137802
|
||||||
|
[#137852]: https://github.com/home-assistant/core/pull/137852
|
||||||
|
[#137870]: https://github.com/home-assistant/core/pull/137870
|
||||||
|
[#137887]: https://github.com/home-assistant/core/pull/137887
|
||||||
|
[#137961]: https://github.com/home-assistant/core/pull/137961
|
||||||
|
[#137986]: https://github.com/home-assistant/core/pull/137986
|
||||||
|
[#137989]: https://github.com/home-assistant/core/pull/137989
|
||||||
|
[#137993]: https://github.com/home-assistant/core/pull/137993
|
||||||
|
[#138003]: https://github.com/home-assistant/core/pull/138003
|
||||||
|
[#138010]: https://github.com/home-assistant/core/pull/138010
|
||||||
|
[#138060]: https://github.com/home-assistant/core/pull/138060
|
||||||
|
[#138145]: https://github.com/home-assistant/core/pull/138145
|
||||||
|
[#138186]: https://github.com/home-assistant/core/pull/138186
|
||||||
|
[#138189]: https://github.com/home-assistant/core/pull/138189
|
||||||
|
[#138210]: https://github.com/home-assistant/core/pull/138210
|
||||||
|
[#138224]: https://github.com/home-assistant/core/pull/138224
|
||||||
|
[#138227]: https://github.com/home-assistant/core/pull/138227
|
||||||
|
[@CloCkWeRX]: https://github.com/CloCkWeRX
|
||||||
|
[@IceBotYT]: https://github.com/IceBotYT
|
||||||
|
[@abmantis]: https://github.com/abmantis
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@andrewsayre]: https://github.com/andrewsayre
|
||||||
|
[@arturpragacz]: https://github.com/arturpragacz
|
||||||
|
[@balloob]: https://github.com/balloob
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@bieniu]: https://github.com/bieniu
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@cdce8p]: https://github.com/cdce8p
|
||||||
|
[@dan-r]: https://github.com/dan-r
|
||||||
|
[@dknowles2]: https://github.com/dknowles2
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@jpbede]: https://github.com/jpbede
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@natekspencer]: https://github.com/natekspencer
|
||||||
|
[@patman15]: https://github.com/patman15
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
[@tr4nt0r]: https://github.com/tr4nt0r
|
||||||
|
[@tronikos]: https://github.com/tronikos
|
||||||
|
[@zweckj]: https://github.com/zweckj
|
||||||
|
|
||||||
|
### 2025.2.3 - February 12
|
||||||
|
|
||||||
|
- Bump hass-nabucasa from 0.88.1 to 0.89.0 ([@ludeeus] - [#137321])
|
||||||
|
- Move cloud backup upload/download handlers to lib ([@ludeeus] - [#137416])
|
||||||
|
- Handle non-retryable errors when uploading cloud backup ([@ludeeus] - [#137517])
|
||||||
|
- Add missing thermostat state EMERGENCY_HEAT to econet ([@jdanders] - [#137623])
|
||||||
|
- Fix broken issue creation in econet ([@jdanders] - [#137773])
|
||||||
|
- Fix version extraction for APsystems ([@alfwro13] - [#138023])
|
||||||
|
- Refresh nest access token before before building subscriber Credentials ([@allenporter] - [#138259])
|
||||||
|
- Fix BackupManager.async_delete_backup ([@emontnemery] - [#138286])
|
||||||
|
- Fix next authentication token error handling ([@allenporter] - [#138299])
|
||||||
|
- Bump pyenphase to 1.25.1 ([@catsmanac] - [#138327])
|
||||||
|
- Bump sentry-sdk to 1.45.1 ([@edenhaus] - [#138349])
|
||||||
|
- Bump zeroconf to 0.144.1 ([@bdraco] - [#138353])
|
||||||
|
- Bump cryptography to 44.0.1 ([@edenhaus] - [#138371])
|
||||||
|
- Fix tplink iot strip sensor refresh ([@sdb9696] - [#138375])
|
||||||
|
- Bump deebot-client to 12.1.0 ([@edenhaus] - [#138382])
|
||||||
|
- Bump hass-nabucasa from 0.89.0 to 0.90.0 ([@emontnemery] - [#138387])
|
||||||
|
- Update cloud backup agent to use calculate_b64md5 from lib ([@emontnemery] - [#138391])
|
||||||
|
|
||||||
|
[#137321]: https://github.com/home-assistant/core/pull/137321
|
||||||
|
[#137416]: https://github.com/home-assistant/core/pull/137416
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137517]: https://github.com/home-assistant/core/pull/137517
|
||||||
|
[#137623]: https://github.com/home-assistant/core/pull/137623
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#137773]: https://github.com/home-assistant/core/pull/137773
|
||||||
|
[#138023]: https://github.com/home-assistant/core/pull/138023
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138259]: https://github.com/home-assistant/core/pull/138259
|
||||||
|
[#138286]: https://github.com/home-assistant/core/pull/138286
|
||||||
|
[#138299]: https://github.com/home-assistant/core/pull/138299
|
||||||
|
[#138327]: https://github.com/home-assistant/core/pull/138327
|
||||||
|
[#138349]: https://github.com/home-assistant/core/pull/138349
|
||||||
|
[#138353]: https://github.com/home-assistant/core/pull/138353
|
||||||
|
[#138371]: https://github.com/home-assistant/core/pull/138371
|
||||||
|
[#138375]: https://github.com/home-assistant/core/pull/138375
|
||||||
|
[#138382]: https://github.com/home-assistant/core/pull/138382
|
||||||
|
[#138387]: https://github.com/home-assistant/core/pull/138387
|
||||||
|
[#138391]: https://github.com/home-assistant/core/pull/138391
|
||||||
|
[@alfwro13]: https://github.com/alfwro13
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@catsmanac]: https://github.com/catsmanac
|
||||||
|
[@edenhaus]: https://github.com/edenhaus
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@jdanders]: https://github.com/jdanders
|
||||||
|
[@ludeeus]: https://github.com/ludeeus
|
||||||
|
[@sdb9696]: https://github.com/sdb9696
|
||||||
|
|
||||||
|
### 2025.2.4 - February 14
|
||||||
|
|
||||||
|
- Bump python-kasa to 0.10.2 ([@sdb9696] - [#138381])
|
||||||
|
- Bump hass-nabucasa from 0.90.0 to 0.91.0 ([@ludeeus] - [#138441])
|
||||||
|
- Bump aiowebostv to 0.6.2 ([@thecode] - [#138488])
|
||||||
|
- Bump ZHA to 0.0.49 to fix Tuya TRV issues ([@TheJulianJES] - [#138492])
|
||||||
|
- Bump pyseventeentrack to 1.0.2 ([@shaiu] - [#138506])
|
||||||
|
- Bump hass-nabucasa from 0.91.0 to 0.92.0 ([@emontnemery] - [#138510])
|
||||||
|
- Bump py-synologydsm-api to 2.6.3 ([@mib1185] - [#138516])
|
||||||
|
- Update frontend to 20250214.0 ([@bramkragten] - [#138521])
|
||||||
|
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138381]: https://github.com/home-assistant/core/pull/138381
|
||||||
|
[#138408]: https://github.com/home-assistant/core/pull/138408
|
||||||
|
[#138441]: https://github.com/home-assistant/core/pull/138441
|
||||||
|
[#138488]: https://github.com/home-assistant/core/pull/138488
|
||||||
|
[#138492]: https://github.com/home-assistant/core/pull/138492
|
||||||
|
[#138506]: https://github.com/home-assistant/core/pull/138506
|
||||||
|
[#138510]: https://github.com/home-assistant/core/pull/138510
|
||||||
|
[#138516]: https://github.com/home-assistant/core/pull/138516
|
||||||
|
[#138521]: https://github.com/home-assistant/core/pull/138521
|
||||||
|
[@TheJulianJES]: https://github.com/TheJulianJES
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@ludeeus]: https://github.com/ludeeus
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@sdb9696]: https://github.com/sdb9696
|
||||||
|
[@shaiu]: https://github.com/shaiu
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
|
||||||
|
### 2025.2.5 - February 21
|
||||||
|
|
||||||
|
- Adjust Tuya Water Detector to support 1 as an alarm state ([@petacz] - [#135933])
|
||||||
|
- Fix bug in set_preset_mode_with_end_datetime (wrong typo of frost_guard) ([@pectum83] - [#138402])
|
||||||
|
- Bump pyhive-integration to 1.0.2 ([@KJonline] - [#138569])
|
||||||
|
- Bump tesla-fleet-api to v0.9.10 ([@Bre77] - [#138575])
|
||||||
|
- Bump pysmarty2 to 0.10.2 ([@lucab-91] - [#138625])
|
||||||
|
- Rename "returned" state to "alert" ([@shaiu] - [#138676])
|
||||||
|
- Bump pyvesync for vesync ([@cdnninja] - [#138681])
|
||||||
|
- Opower: Fix unavailable "start date" and "end date" sensors ([@SaswatPadhi] - [#138694])
|
||||||
|
- Correct backup filename on delete or download of cloud backup ([@emontnemery] - [#138704])
|
||||||
|
- Correct invalid automatic backup settings when loading from store ([@emontnemery] - [#138716])
|
||||||
|
- Bump airgradient to 0.9.2 ([@joostlek] - [#138725])
|
||||||
|
- Clean up translations for mocked integrations inbetween tests ([@emontnemery] - [#138732])
|
||||||
|
- Bump pyrympro from 0.0.8 to 0.0.9 ([@nivstein] - [#138753])
|
||||||
|
- Don't allow setting backup retention to 0 days or copies ([@emontnemery] - [#138771])
|
||||||
|
- Fix TV input source option for Sonos Arc Ultra ([@PeteRager] - [#138778])
|
||||||
|
- Add assistant filter to expose entities list command ([@synesthesiam] - [#138817])
|
||||||
|
- Fix playback for encrypted Reolink files ([@starkillerOG] - [#138852])
|
||||||
|
- Correct backup date when reading a backup created by supervisor ([@emontnemery] - [#138860])
|
||||||
|
- Bump pyfritzhome to 0.6.15 ([@mib1185] - [#138879])
|
||||||
|
- Validate hassio backup settings ([@emontnemery] - [#138880])
|
||||||
|
- Catch zeep fault as well on GetSystemDateAndTime call. ([@DmitryKuzmenko] - [#138916])
|
||||||
|
- Fix Reolink callback id collision ([@starkillerOG] - [#138918])
|
||||||
|
- Fix handling of min/max temperature presets in AVM Fritz!SmartHome ([@mib1185] - [#138954])
|
||||||
|
- Bump pyprosegur to 0.0.13 ([@dgomes] - [#138960])
|
||||||
|
- Bump reolink-aio to 0.12.0 ([@starkillerOG] - [#138985])
|
||||||
|
- Bump deebot-client to 12.2.0 ([@edenhaus] - [#138986])
|
||||||
|
- Omit unknown hue effects ([@joostlek] - [#138992])
|
||||||
|
- Update frontend to 20250221.0 ([@bramkragten] - [#139006])
|
||||||
|
|
||||||
|
[#135933]: https://github.com/home-assistant/core/pull/135933
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138402]: https://github.com/home-assistant/core/pull/138402
|
||||||
|
[#138408]: https://github.com/home-assistant/core/pull/138408
|
||||||
|
[#138530]: https://github.com/home-assistant/core/pull/138530
|
||||||
|
[#138569]: https://github.com/home-assistant/core/pull/138569
|
||||||
|
[#138575]: https://github.com/home-assistant/core/pull/138575
|
||||||
|
[#138625]: https://github.com/home-assistant/core/pull/138625
|
||||||
|
[#138676]: https://github.com/home-assistant/core/pull/138676
|
||||||
|
[#138681]: https://github.com/home-assistant/core/pull/138681
|
||||||
|
[#138694]: https://github.com/home-assistant/core/pull/138694
|
||||||
|
[#138704]: https://github.com/home-assistant/core/pull/138704
|
||||||
|
[#138716]: https://github.com/home-assistant/core/pull/138716
|
||||||
|
[#138725]: https://github.com/home-assistant/core/pull/138725
|
||||||
|
[#138732]: https://github.com/home-assistant/core/pull/138732
|
||||||
|
[#138753]: https://github.com/home-assistant/core/pull/138753
|
||||||
|
[#138771]: https://github.com/home-assistant/core/pull/138771
|
||||||
|
[#138778]: https://github.com/home-assistant/core/pull/138778
|
||||||
|
[#138817]: https://github.com/home-assistant/core/pull/138817
|
||||||
|
[#138852]: https://github.com/home-assistant/core/pull/138852
|
||||||
|
[#138860]: https://github.com/home-assistant/core/pull/138860
|
||||||
|
[#138879]: https://github.com/home-assistant/core/pull/138879
|
||||||
|
[#138880]: https://github.com/home-assistant/core/pull/138880
|
||||||
|
[#138916]: https://github.com/home-assistant/core/pull/138916
|
||||||
|
[#138918]: https://github.com/home-assistant/core/pull/138918
|
||||||
|
[#138954]: https://github.com/home-assistant/core/pull/138954
|
||||||
|
[#138960]: https://github.com/home-assistant/core/pull/138960
|
||||||
|
[#138985]: https://github.com/home-assistant/core/pull/138985
|
||||||
|
[#138986]: https://github.com/home-assistant/core/pull/138986
|
||||||
|
[#138992]: https://github.com/home-assistant/core/pull/138992
|
||||||
|
[#139006]: https://github.com/home-assistant/core/pull/139006
|
||||||
|
[@Bre77]: https://github.com/Bre77
|
||||||
|
[@DmitryKuzmenko]: https://github.com/DmitryKuzmenko
|
||||||
|
[@KJonline]: https://github.com/KJonline
|
||||||
|
[@PeteRager]: https://github.com/PeteRager
|
||||||
|
[@SaswatPadhi]: https://github.com/SaswatPadhi
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@cdnninja]: https://github.com/cdnninja
|
||||||
|
[@dgomes]: https://github.com/dgomes
|
||||||
|
[@edenhaus]: https://github.com/edenhaus
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@joostlek]: https://github.com/joostlek
|
||||||
|
[@lucab-91]: https://github.com/lucab-91
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@nivstein]: https://github.com/nivstein
|
||||||
|
[@pectum83]: https://github.com/pectum83
|
||||||
|
[@petacz]: https://github.com/petacz
|
||||||
|
[@shaiu]: https://github.com/shaiu
|
||||||
|
[@starkillerOG]: https://github.com/starkillerOG
|
||||||
|
[@synesthesiam]: https://github.com/synesthesiam
|
||||||
|
|
||||||
## Need help? Join the community!
|
## Need help? Join the community!
|
||||||
|
|
||||||
Home Assistant has a great community of users who are all more than willing
|
Home Assistant has a great community of users who are all more than willing
|
||||||
@ -584,8 +935,14 @@ entry context menu.
|
|||||||
|
|
||||||
([@jbouwh] - [#133342]) ([documentation](/integrations/mqtt))
|
([@jbouwh] - [#133342]) ([documentation](/integrations/mqtt))
|
||||||
|
|
||||||
|
|
||||||
|
The MQTT publish action no longer supports the `topic_template` and `payload_template` attributes. Instead, only `topic` and `payload` should be used. In automation and scripts, users can use templates by default. Users were instructed to update their automations and scripts with a repair flow when the use of the deprecated action options was detected.
|
||||||
|
|
||||||
|
([@jbouwh] - [#134056]) ([documentation](/integrations/mqtt))
|
||||||
|
|
||||||
[@jbouwh]: https://github.com/jbouwh
|
[@jbouwh]: https://github.com/jbouwh
|
||||||
[#133342]: https://github.com/home-assistant/core/pull/133342
|
[#133342]: https://github.com/home-assistant/core/pull/133342
|
||||||
|
[#134056]: https://github.com/home-assistant/core/pull/134056
|
||||||
|
|
||||||
{% enddetails %}
|
{% enddetails %}
|
||||||
|
|
||||||
|
@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: "Speech-to-Phrase brings voice home - Voice chapter 9"
|
||||||
|
description: "This new tool brings fast, local speech processing to low-end hardware, along with some useful new voice and AI features"
|
||||||
|
date: 2025-02-13 00:00:01
|
||||||
|
date_formatted: "February 13, 2025"
|
||||||
|
author: Mike Hansen
|
||||||
|
comments: true
|
||||||
|
categories: Assist
|
||||||
|
og_image: /images/blog/2025-02-voice-chapter-9/art.jpg
|
||||||
|
---
|
||||||
|
|
||||||
|
<lite-youtube videoid="k6VvzDSI8RU" videotitle="Voice Chapter 9 - Speech-to-Phrase"></lite-youtube>
|
||||||
|
|
||||||
|
**Welcome to Voice chapter 9 🎉 part of our [long-running series](https://www.home-assistant.io/blog/categories/assist/) following the development of open voice.**
|
||||||
|
|
||||||
|
We're still pumped from the launch of the [Home Assistant Voice Preview Edition](/voice-pe/) at the end of December. It sold out 23 minutes into our announcement - wow! We've been working hard to keep it in stock at [all our distributors](/voice-pe#buy).
|
||||||
|
|
||||||
|
Today, we have a lot of cool stuff to improve your experience with Voice PE or any other Assist satellite you're using. This includes fully local and offline voice control that can be powered by nearly any Home Assistant system.
|
||||||
|
|
||||||
|
- [Voice for the masses](#voice-for-the-masses)
|
||||||
|
- [Building an Open Voice Ecosystem](#building-an-open-voice-ecosystem)
|
||||||
|
- [Large language model improvements](#large-language-model-improvements)
|
||||||
|
- [Expanding Voice Capabilities](#expanding-voice-capabilities)
|
||||||
|
- [Home Assistant phones home: analog phones are back!](#home-assistant-phones-home-analog-phones-are-back)
|
||||||
|
- [Wyoming improvements](#wyoming-improvements)
|
||||||
|
- [🫵 Help us bring choice to voice!](#-help-us-bring-choice-to-voice)
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
Dragon NaturallySpeaking was a popular speech recognition program introduced in 1997. To run this software you needed at least a 133 MHz Pentium processor, 32 MB of RAM, and Windows 95 or later. Nearly thirty years later, Speech-to-Text is much better, but needs orders of magnitude more resources.
|
||||||
|
|
||||||
|
Incredible technologies are being developed in speech processing, but it's currently unrealistic for a device that costs less than $100 to take real advantage of them. It's possible, of course, but running the previously recommended Speech-to-Text tool, [Whisper](https://github.com/openai/whisper), on a Raspberry Pi 4 takes at least 5 seconds to turn your speech into text, with varying levels of success. This is why we ended up recommending at least an Intel N100 to run your voice assistant fully locally. That stung. Our opt-in analytics shows over [50% of the Home Assistant OS users](https://analytics.home-assistant.io/) are running their homes on affordable, low-powered machines like the [Home Assistant Green](/green) or a Raspberry Pi.
|
||||||
|
|
||||||
|
What's more, advancing the development of Whisper is largely in the hands of OpenAI, as we don't have the resources required to add languages to that tool. We could add every possible language to Home Assistant, but if any single part of our voice pipeline lacks language support, it renders voice unusable for that language. As a result, many widely spoken languages were unsupported for local voice control.
|
||||||
|
|
||||||
|
This left many users unable to use voice to control their smart home without purchasing extra hardware or services. We’re changing this today with the launch of a key new piece of our voice pipeline.
|
||||||
|
|
||||||
|
## Voice for the masses
|
||||||
|
|
||||||
|
<img src='/images/blog/2025-02-voice-chapter-9/stp-logo.jpg' style='border: 0;box-shadow: none;' alt="Speech-to-Phrase logo">
|
||||||
|
|
||||||
|
[Speech-to-Phrase](https://github.com/OHF-voice/speech-to-phrase) is based on old, almost ancient, voice technology by today's standards. Instead of the ability to transcribe virtually any speech into text, it is limited to a set of pre-trained phrases. Speech-to-Phrase will automatically generate the phrases and fine-tune a model based on the devices, areas, and sentence triggers in your Home Assistant server - 100% locally and offline.
|
||||||
|
|
||||||
|
**The result:** speech transcribed in under a second on a Home Assistant Green or Raspberry Pi 4. The Raspberry Pi 5 processes commands seven times faster, clocking in at 150 milliseconds per command!
|
||||||
|
|
||||||
|
With great speed comes *some* limitations. Speech-to-Phrase only supports a subset of Assist's voice commands, and more open-ended things like shopping lists, naming a timer, and broadcasts are not usable out of the box. Really any commands that can accept random words (wildcards) will not work. For the same reasons, Speech-to-Phrase is intended for home control only and not LLMs.
|
||||||
|
|
||||||
|
The most important home control commands are supported, including turning lights on and off, changing brightness and color, getting the weather, setting timers, and controlling media players. [Custom sentences](/docs/automation/trigger/#sentence-trigger) can also be added to trigger things not covered by the current commands, and we expect the community will come up with some clever new ways to use this tech.
|
||||||
|
|
||||||
|
<img src='/images/blog/2025-02-voice-chapter-9/green-pe.png' style='border: 0;box-shadow: none;' alt="Green and Voice PE join forces">
|
||||||
|
<p align="center"><em>All you need to get started with voice</em></p>
|
||||||
|
|
||||||
|
Speech-to-Phrase is launching with support for English, French, German, Dutch, Spanish, and Italian - covering nearly 70% of Home Assistant users. Nice. Unlike the local Speech-to-Text tools currently available, adding languages to Speech-to-Phrase is much easier. This means many more languages will be available in future releases, and [we would love your help](/voice_control/contribute-voice) adding them!
|
||||||
|
|
||||||
|
We're working on updating the Voice wizard to include Speech-to-Phrase. Until then, you need to install the add-on manually:
|
||||||
|
|
||||||
|
[<img src='https://my.home-assistant.io/badges/supervisor_addon.svg' style='border: 0;box-shadow: none;' alt="!Open your Home Assistant instance and show the dashboard of an add-on.">](https://my.home-assistant.io/redirect/supervisor_addon/?addon=core_speech-to-phrase)
|
||||||
|
|
||||||
|
## Building an Open Voice Ecosystem
|
||||||
|
|
||||||
|
When we launched Home Assistant Voice Preview Edition, we didn't just launch a product; we kickstarted an ecosystem. We did this by open-sourcing all parts and ensuring that the voice experience built into Home Assistant is not tied to a single product. Any voice assistant built for the Open Home ecosystem can take advantage of all this work. Even your DIY ones!
|
||||||
|
|
||||||
|
With ESPHome 2025.2, which we're releasing next week, any ESPHome-based voice assistant will support making [broadcasts](/blog/2025/02/05/release-20252/#new-broadcast-intent) (more on that below), and they will also be able to use our new voice wizard to ensure new users have everything they need to get started.
|
||||||
|
|
||||||
|
This will include updates for the [$13 Atom Echo](/voice_control/thirteen-usd-voice-remote/) and ESP32-S3-Box-3 devices that we used for development during the Year of the Voice!
|
||||||
|
|
||||||
|
<p class='img'><lite-youtube videoid="HMqXHN0KBQM" videotitle="New broadcast feature in action with Atom and Box 3"></lite-youtube>New broadcast feature in action with Atom and Box 3</p>
|
||||||
|
|
||||||
|
## Large language model improvements
|
||||||
|
|
||||||
|
We aim for Home Assistant to be [the place for experimentation with AI in the smart home](/blog/2024/06/07/ai-agents-for-the-smart-home/). We support a wide range of models, both local and cloud-based, and are constantly improving the different ways people can interact with them. We're always running [benchmarks](https://github.com/allenporter/home-assistant-datasets/tree/main/reports) to track the best models, and make sure our changes lead to an improved experience.
|
||||||
|
|
||||||
|
If you set up [Assist](/voice_control/), Home Assistant's built-in voice assistant, and configure it to use an LLM, you might have noticed some new features landing recently. One major change was the new "[prefer handling commands locally](/blog/2024/12/04/release-202412/#let-your-voice-assistant-fall-back-to-an-llm-based-agent)" setting, which always attempts to run commands with the built-in conversation agent before it sends it off to an LLM. We noticed many easy-to-run commands were being sent to an LLM, which can slow down things and waste tokens. If Home Assistant understands the command (e.g., turn on the lights), it will perform the necessary action, and only passes it on to your chosen LLM if it doesn't understand the command (e.g., what's the air quality like now).
|
||||||
|
|
||||||
|
Adding the above features made us realize that LLMs need to understand the commands handled locally. Now, the [conversation history is shared](/blog/2025/02/05/release-20252/#shared-history-between-the-default-conversation-agent-and-its-llm-based-fallback) with the LLM. The context allows you to ask the LLM for follow-up questions that refer to recent commands, regardless of whether they helped process the request.
|
||||||
|
|
||||||
|
<img src='/images/blog/2025-02-voice-chapter-9/shared-history.png' style='border: 0;box-shadow: none;' alt="Speech-to-Phrase logo">
|
||||||
|
<p align="center"><em>Left: without shared conversations. Right: Shared conversations enable GPT to understand context.</em></p>
|
||||||
|
|
||||||
|
### Reducing the time to first word with streaming<!-- omit in toc -->
|
||||||
|
|
||||||
|
When experimenting with larger models, or on slower hardware, LLM's can feel sluggish. They only respond once the entire reply is generated, which can take frustratingly long for lengthy responses (you'll be waiting a while if you ask it to tell you an epic fairy tale).
|
||||||
|
|
||||||
|
In Home Assistant 2025.3 we're introducing support for LLMs to stream their response to the chat, allowing users to start reading while the response is being generated. A bonus side effect is that commands are now also faster: they will be executed as soon as they come in, without waiting for the rest of the message to be complete.
|
||||||
|
|
||||||
|
Streaming is coming initially for Ollama and OpenAI.
|
||||||
|
|
||||||
|
### Model Context Protocol brings Home Assistant to every AI<!-- omit in toc -->
|
||||||
|
|
||||||
|
In November 2024, Anthropic announced the [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP). It is a new protocol to allow LLMs to control external services. In this release, contributed by [Allen Porter](https://github.com/allenporter), Home Assistant can speak MCP.
|
||||||
|
|
||||||
|
Using the new Model Context Protocol [integration](/integrations/mcp), Home Assistant can integrate external MCP servers and make their tools available to LLMs that Home Assistant talks to (for your voice assistant or in automations). There is [quite a collection of MCP servers](https://github.com/punkpeye/awesome-mcp-servers), including wild ones like scraping websites ([tutorial](https://gist.github.com/allenporter/b0e9946feb2ab60901c4f467ac1ba6f9)), file server access, or even BlueSky.
|
||||||
|
|
||||||
|
With the new Model Context Protocol [server integration](/integrations/mcp_server), Home Assistant's LLM tools can be included in other AI apps, like the Claude desktop app ([tutorial](https://modelcontextprotocol.io/quickstart/user)). If agentic AI takes off, your smart home will be ready to be integrated.
|
||||||
|
|
||||||
|
Thanks Allen!
|
||||||
|
|
||||||
|
## Expanding Voice Capabilities
|
||||||
|
|
||||||
|
We keep enhancing the capabilities of the built-in conversation agent of Home Assistant. With the latest release, we're unlocking two new features:
|
||||||
|
|
||||||
|
#### "Broadcast that it's time for dinner"<!-- omit in toc -->
|
||||||
|
|
||||||
|
The new [broadcast](/blog/2025/02/05/release-20252/#new-broadcast-intent) feature lets you quickly send messages to the other Assist satellites in your home. This makes it possible to announce it's time for dinner, or announce battles between your children 😅.
|
||||||
|
|
||||||
|
#### "Set the temperature to 19 degrees"<!-- omit in toc -->
|
||||||
|
|
||||||
|
Previously Assist could only tell you the temperature, but now it can help you change the temperature of your HVAC system. Perfect for changing the temperature while staying cozy under a warm blanket.
|
||||||
|
|
||||||
|
## Home Assistant phones home: analog phones are back!
|
||||||
|
|
||||||
|
Two years ago, we introduced the [world's most private voice assistant](/voice_control/worlds-most-private-voice-assistant/): an analog phone! Users can pick it up to talk to their smart home, and only the user can hear the response. A fun feature we're adding today is that Home Assistant can now **call your analog phone!**
|
||||||
|
|
||||||
|
Analog phones are great when you want to notify a room, instead of an entire home. For instance, when the laundry is done, you can notify someone in the living room, but not the office. Also since the user needs to pick up the horn to receive the call, you will know if your notification was received.
|
||||||
|
|
||||||
|
<p class='img'><lite-youtube videoid="TaoNY1gINWc" videotitle="Have your Home Assistant give you a call"></lite-youtube>Have your Home Assistant give you a call</p>
|
||||||
|
|
||||||
|
If you're using an LLM as your voice assistant, you can also start a conversation from a phone call. You can provide the opening sentence and via a new "extra system prompt" option, provide extra context to the LLM to interpret the response from the user. For example,
|
||||||
|
|
||||||
|
- Extra system context: garage door cover.garage_door was left open for 30 minutes. We asked the user if it should be closed
|
||||||
|
- Assistant: should the garage door be closed?
|
||||||
|
- User: sure
|
||||||
|
|
||||||
|
Thanks [JaminH](https://github.com/jaminh) for the contribution.
|
||||||
|
|
||||||
|
## Wyoming improvements
|
||||||
|
|
||||||
|
Wyoming is our standard for linking together all the different parts needed to build a voice assistant. Home Assistant 2025.3 will add support for announcements to Wyoming satellites, making them eligible for the new broadcast feature too.
|
||||||
|
|
||||||
|
We're also adding a new microWakeWord add-on (the same wake word engine running on Voice PE!) that can be used as an alternative to openWakeWord. As we collect more real-world samples from our [Wake Word Collective](https://ohf-voice.github.io/wake-word-collective/), the models included in microWakeWord will be retrained and improved.
|
||||||
|
|
||||||
|
## 🫵 Help us bring choice to voice!
|
||||||
|
|
||||||
|
We've said it before, and we'll say it again---the era of open voice has begun, and the more people who join us, the better it gets. Home Assistant offers many ways to start with voice control, whether by [building your own](/voice_control/#expand-and-experiment) Assist hardware or getting a [Home Assistant Voice Preview Edition](/voice-pe/). With every update, you'll see new features, and you'll get to preview the future of voice today.
|
||||||
|
|
||||||
|
A huge thanks to all the language leaders and contributors helping to shape open voice in the home! There are many ways to get involved, from translating or sharing voice samples to building new features---learn more about how [you can contribute here](/voice_control/contribute-voice). Another great way to support development is by subscribing to [Home Assistant Cloud](/cloud/), which helps fund the Open Home projects that power voice.
|
@ -9,6 +9,8 @@ layout: null
|
|||||||
# General use redirects
|
# General use redirects
|
||||||
/join-chat https://discord.gg/home-assistant
|
/join-chat https://discord.gg/home-assistant
|
||||||
/twitter https://twitter.com/home_assistant/
|
/twitter https://twitter.com/home_assistant/
|
||||||
|
/mastodon https://fosstodon.org/@homeassistant
|
||||||
|
/bluesky https://bsky.app/profile/home-assistant.io
|
||||||
/newsletter https://newsletter.openhomefoundation.org/
|
/newsletter https://newsletter.openhomefoundation.org/
|
||||||
/suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform
|
/suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform
|
||||||
/get-blueprints https://community.home-assistant.io/c/blueprints-exchange/53
|
/get-blueprints https://community.home-assistant.io/c/blueprints-exchange/53
|
||||||
|
@ -7,7 +7,7 @@ replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$
|
|||||||
These are all the changes included in the Home Assistant Core 2025.1 release.
|
These are all the changes included in the Home Assistant Core 2025.1 release.
|
||||||
|
|
||||||
For a summary in a more readable format:
|
For a summary in a more readable format:
|
||||||
[Release notes blog for this release](/blog/2024/01/03/release-20251/).
|
[Release notes blog for this release](/blog/2025/01/03/release-20251/).
|
||||||
|
|
||||||
- Bump version to 2025.1.0dev0 ([@cdce8p] - [#131751])
|
- Bump version to 2025.1.0dev0 ([@cdce8p] - [#131751])
|
||||||
- Remove unreachable code in Habitica ([@tr4nt0r] - [#131778])
|
- Remove unreachable code in Habitica ([@tr4nt0r] - [#131778])
|
||||||
|
@ -1358,6 +1358,345 @@ For a summary in a more readable format:
|
|||||||
- Bump hassil and intents ([@synesthesiam] - [#137440])
|
- Bump hassil and intents ([@synesthesiam] - [#137440])
|
||||||
- Bump dbus-fast to 2.33.0 ([@bdraco] - [#137446])
|
- Bump dbus-fast to 2.33.0 ([@bdraco] - [#137446])
|
||||||
|
|
||||||
|
## Release 2025.2.1 - February 7
|
||||||
|
|
||||||
|
- Fix hassio test using wrong fixture ([@emontnemery] - [#137516])
|
||||||
|
- Change Electric Kiwi authentication ([@mikey0000] - [#135231])
|
||||||
|
- Update govee-ble to 0.42.1 ([@cdce8p] - [#137371])
|
||||||
|
- Bump holidays to 0.66 ([@gjohansson-ST] - [#137449])
|
||||||
|
- Bump aiohttp-asyncmdnsresolver to 0.1.0 ([@bdraco] - [#137492])
|
||||||
|
- Bump aiohttp to 3.11.12 ([@bdraco] - [#137494])
|
||||||
|
- Bump govee-ble to 0.43.0 to fix compat with new H5179 firmware ([@bdraco] - [#137508])
|
||||||
|
- Bump habiticalib to v0.3.5 ([@tr4nt0r] - [#137510])
|
||||||
|
- Fix Mill issue, where no sensors were shown ([@Danielhiversen] - [#137521])
|
||||||
|
- Don't overwrite setup state in async_set_domains_to_be_loaded ([@emontnemery] - [#137547])
|
||||||
|
- Use separate metadata files for onedrive ([@zweckj] - [#137549])
|
||||||
|
- Fix sending polls to Telegram threads ([@jwhb] - [#137553])
|
||||||
|
- Skip building wheels for electrickiwi-api ([@cdce8p] - [#137556])
|
||||||
|
- Add excluded domains to broadcast intent ([@synesthesiam] - [#137566])
|
||||||
|
- Revert "Add `PaddleSwitchPico` (Pico Paddle Remote) device trigger to Lutron Caseta" ([@bdraco] - [#137571])
|
||||||
|
- Fix Overseerr webhook configuration JSON ([@denniseffing] - [#137572])
|
||||||
|
- Do not rely on pyserial for port scanning with the CM5 + ZHA ([@puddly] - [#137585])
|
||||||
|
- Bump eheimdigital to 1.0.6 ([@autinerd] - [#137587])
|
||||||
|
- Bump pyfireservicerota to 0.0.46 ([@cyberjunky] - [#137589])
|
||||||
|
- Bump reolink-aio to 0.11.10 ([@starkillerOG] - [#137591])
|
||||||
|
- Allow to omit the payload attribute to MQTT publish action to allow an empty payload to be sent by default ([@jbouwh] - [#137595])
|
||||||
|
- Handle previously migrated HEOS device identifier ([@andrewsayre] - [#137596])
|
||||||
|
- Bump `aioshelly` to version `12.4.1` ([@bieniu] - [#137598])
|
||||||
|
- Bump electrickiwi-api to 0.9.13 ([@mikey0000] - [#137601])
|
||||||
|
- Bump ZHA to 0.0.48 ([@TheJulianJES] - [#137610])
|
||||||
|
- Bump Electrickiwi-api to 0.9.14 ([@mikey0000] - [#137614])
|
||||||
|
- Update google-nest-sdm to 7.1.3 ([@allenporter] - [#137625])
|
||||||
|
- Don't use the current temperature from Shelly BLU TRV as a state for External Temperature number entity ([@bieniu] - [#137658])
|
||||||
|
- Fix LG webOS TV turn off when device is already off ([@thecode] - [#137675])
|
||||||
|
|
||||||
|
[#135231]: https://github.com/home-assistant/core/pull/135231
|
||||||
|
[#137371]: https://github.com/home-assistant/core/pull/137371
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137449]: https://github.com/home-assistant/core/pull/137449
|
||||||
|
[#137492]: https://github.com/home-assistant/core/pull/137492
|
||||||
|
[#137494]: https://github.com/home-assistant/core/pull/137494
|
||||||
|
[#137508]: https://github.com/home-assistant/core/pull/137508
|
||||||
|
[#137510]: https://github.com/home-assistant/core/pull/137510
|
||||||
|
[#137516]: https://github.com/home-assistant/core/pull/137516
|
||||||
|
[#137521]: https://github.com/home-assistant/core/pull/137521
|
||||||
|
[#137547]: https://github.com/home-assistant/core/pull/137547
|
||||||
|
[#137549]: https://github.com/home-assistant/core/pull/137549
|
||||||
|
[#137553]: https://github.com/home-assistant/core/pull/137553
|
||||||
|
[#137556]: https://github.com/home-assistant/core/pull/137556
|
||||||
|
[#137566]: https://github.com/home-assistant/core/pull/137566
|
||||||
|
[#137571]: https://github.com/home-assistant/core/pull/137571
|
||||||
|
[#137572]: https://github.com/home-assistant/core/pull/137572
|
||||||
|
[#137585]: https://github.com/home-assistant/core/pull/137585
|
||||||
|
[#137587]: https://github.com/home-assistant/core/pull/137587
|
||||||
|
[#137589]: https://github.com/home-assistant/core/pull/137589
|
||||||
|
[#137591]: https://github.com/home-assistant/core/pull/137591
|
||||||
|
[#137595]: https://github.com/home-assistant/core/pull/137595
|
||||||
|
[#137596]: https://github.com/home-assistant/core/pull/137596
|
||||||
|
[#137598]: https://github.com/home-assistant/core/pull/137598
|
||||||
|
[#137601]: https://github.com/home-assistant/core/pull/137601
|
||||||
|
[#137610]: https://github.com/home-assistant/core/pull/137610
|
||||||
|
[#137614]: https://github.com/home-assistant/core/pull/137614
|
||||||
|
[#137625]: https://github.com/home-assistant/core/pull/137625
|
||||||
|
[#137658]: https://github.com/home-assistant/core/pull/137658
|
||||||
|
[#137675]: https://github.com/home-assistant/core/pull/137675
|
||||||
|
[@Danielhiversen]: https://github.com/Danielhiversen
|
||||||
|
[@TheJulianJES]: https://github.com/TheJulianJES
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@andrewsayre]: https://github.com/andrewsayre
|
||||||
|
[@autinerd]: https://github.com/autinerd
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@bieniu]: https://github.com/bieniu
|
||||||
|
[@cdce8p]: https://github.com/cdce8p
|
||||||
|
[@cyberjunky]: https://github.com/cyberjunky
|
||||||
|
[@denniseffing]: https://github.com/denniseffing
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||||
|
[@jbouwh]: https://github.com/jbouwh
|
||||||
|
[@jwhb]: https://github.com/jwhb
|
||||||
|
[@mikey0000]: https://github.com/mikey0000
|
||||||
|
[@puddly]: https://github.com/puddly
|
||||||
|
[@starkillerOG]: https://github.com/starkillerOG
|
||||||
|
[@synesthesiam]: https://github.com/synesthesiam
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
[@tr4nt0r]: https://github.com/tr4nt0r
|
||||||
|
[@zweckj]: https://github.com/zweckj
|
||||||
|
|
||||||
|
## Release 2025.2.2 - February 10
|
||||||
|
|
||||||
|
- LaCrosse View new endpoint ([@IceBotYT] - [#137284])
|
||||||
|
- Convert coinbase account amounts as floats to properly add them together ([@natekspencer] - [#137588])
|
||||||
|
- Bump ohmepy to 1.2.9 ([@dan-r] - [#137695])
|
||||||
|
- Bump onedrive_personal_sdk to 0.0.9 ([@zweckj] - [#137729])
|
||||||
|
- Limit habitica ConfigEntrySelect to integration domain ([@cdce8p] - [#137767])
|
||||||
|
- Limit nordpool ConfigEntrySelect to integration domain ([@cdce8p] - [#137768])
|
||||||
|
- Limit transmission ConfigEntrySelect to integration domain ([@cdce8p] - [#137769])
|
||||||
|
- Fix tplink child updates taking up to 60s ([@bdraco] - [#137782])
|
||||||
|
- Call backup listener during setup in Google Drive ([@tronikos] - [#137789])
|
||||||
|
- Use the external URL set in Settings > System > Network if my is disabled as redirect URL for Google Drive instructions ([@tronikos] - [#137791])
|
||||||
|
- Fix manufacturer_id matching for 0 ([@patman15] - [#137802])
|
||||||
|
- Fix DAB radio in Onkyo ([@arturpragacz] - [#137852])
|
||||||
|
- Fix LG webOS TV fails to setup when device is off ([@thecode] - [#137870])
|
||||||
|
- Fix heos migration ([@balloob] - [#137887])
|
||||||
|
- Bump pydrawise to 2025.2.0 ([@dknowles2] - [#137961])
|
||||||
|
- Bump aioshelly to version 12.4.2 ([@bieniu] - [#137986])
|
||||||
|
- Prevent crash if telegram message failed and did not generate an ID ([@CloCkWeRX] - [#137989])
|
||||||
|
- Bump habiticalib to v0.3.7 ([@tr4nt0r] - [#137993])
|
||||||
|
- Refresh the nest authentication token on integration start before invoking the pub/sub subsciber ([@allenporter] - [#138003])
|
||||||
|
- Use resumable uploads in Google Drive ([@tronikos] - [#138010])
|
||||||
|
- Bump py-synologydsm-api to 2.6.2 ([@mib1185] - [#138060])
|
||||||
|
- Handle generic agent exceptions when getting and deleting backups ([@abmantis] - [#138145])
|
||||||
|
- Bump onedrive-personal-sdk to 0.0.10 ([@zweckj] - [#138186])
|
||||||
|
- Keep one backup per backup agent when executing retention policy ([@emontnemery] - [#138189])
|
||||||
|
- Improve inexogy logging when failed to update ([@jpbede] - [#138210])
|
||||||
|
- Bump pyheos to v1.0.2 ([@andrewsayre] - [#138224])
|
||||||
|
- Update frontend to 20250210.0 ([@bramkragten] - [#138227])
|
||||||
|
- Bump lacrosse-view to 1.1.1 ([@IceBotYT] - [#137282])
|
||||||
|
|
||||||
|
[#137282]: https://github.com/home-assistant/core/pull/137282
|
||||||
|
[#137284]: https://github.com/home-assistant/core/pull/137284
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137588]: https://github.com/home-assistant/core/pull/137588
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#137695]: https://github.com/home-assistant/core/pull/137695
|
||||||
|
[#137729]: https://github.com/home-assistant/core/pull/137729
|
||||||
|
[#137767]: https://github.com/home-assistant/core/pull/137767
|
||||||
|
[#137768]: https://github.com/home-assistant/core/pull/137768
|
||||||
|
[#137769]: https://github.com/home-assistant/core/pull/137769
|
||||||
|
[#137782]: https://github.com/home-assistant/core/pull/137782
|
||||||
|
[#137789]: https://github.com/home-assistant/core/pull/137789
|
||||||
|
[#137791]: https://github.com/home-assistant/core/pull/137791
|
||||||
|
[#137802]: https://github.com/home-assistant/core/pull/137802
|
||||||
|
[#137852]: https://github.com/home-assistant/core/pull/137852
|
||||||
|
[#137870]: https://github.com/home-assistant/core/pull/137870
|
||||||
|
[#137887]: https://github.com/home-assistant/core/pull/137887
|
||||||
|
[#137961]: https://github.com/home-assistant/core/pull/137961
|
||||||
|
[#137986]: https://github.com/home-assistant/core/pull/137986
|
||||||
|
[#137989]: https://github.com/home-assistant/core/pull/137989
|
||||||
|
[#137993]: https://github.com/home-assistant/core/pull/137993
|
||||||
|
[#138003]: https://github.com/home-assistant/core/pull/138003
|
||||||
|
[#138010]: https://github.com/home-assistant/core/pull/138010
|
||||||
|
[#138060]: https://github.com/home-assistant/core/pull/138060
|
||||||
|
[#138145]: https://github.com/home-assistant/core/pull/138145
|
||||||
|
[#138186]: https://github.com/home-assistant/core/pull/138186
|
||||||
|
[#138189]: https://github.com/home-assistant/core/pull/138189
|
||||||
|
[#138210]: https://github.com/home-assistant/core/pull/138210
|
||||||
|
[#138224]: https://github.com/home-assistant/core/pull/138224
|
||||||
|
[#138227]: https://github.com/home-assistant/core/pull/138227
|
||||||
|
[@CloCkWeRX]: https://github.com/CloCkWeRX
|
||||||
|
[@IceBotYT]: https://github.com/IceBotYT
|
||||||
|
[@abmantis]: https://github.com/abmantis
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@andrewsayre]: https://github.com/andrewsayre
|
||||||
|
[@arturpragacz]: https://github.com/arturpragacz
|
||||||
|
[@balloob]: https://github.com/balloob
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@bieniu]: https://github.com/bieniu
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@cdce8p]: https://github.com/cdce8p
|
||||||
|
[@dan-r]: https://github.com/dan-r
|
||||||
|
[@dknowles2]: https://github.com/dknowles2
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@jpbede]: https://github.com/jpbede
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@natekspencer]: https://github.com/natekspencer
|
||||||
|
[@patman15]: https://github.com/patman15
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
[@tr4nt0r]: https://github.com/tr4nt0r
|
||||||
|
[@tronikos]: https://github.com/tronikos
|
||||||
|
[@zweckj]: https://github.com/zweckj
|
||||||
|
|
||||||
|
## Release 2025.2.3 - February 12
|
||||||
|
|
||||||
|
- Bump hass-nabucasa from 0.88.1 to 0.89.0 ([@ludeeus] - [#137321])
|
||||||
|
- Move cloud backup upload/download handlers to lib ([@ludeeus] - [#137416])
|
||||||
|
- Handle non-retryable errors when uploading cloud backup ([@ludeeus] - [#137517])
|
||||||
|
- Add missing thermostat state EMERGENCY_HEAT to econet ([@jdanders] - [#137623])
|
||||||
|
- Fix broken issue creation in econet ([@jdanders] - [#137773])
|
||||||
|
- Fix version extraction for APsystems ([@alfwro13] - [#138023])
|
||||||
|
- Refresh nest access token before before building subscriber Credentials ([@allenporter] - [#138259])
|
||||||
|
- Fix BackupManager.async_delete_backup ([@emontnemery] - [#138286])
|
||||||
|
- Fix next authentication token error handling ([@allenporter] - [#138299])
|
||||||
|
- Bump pyenphase to 1.25.1 ([@catsmanac] - [#138327])
|
||||||
|
- Bump sentry-sdk to 1.45.1 ([@edenhaus] - [#138349])
|
||||||
|
- Bump zeroconf to 0.144.1 ([@bdraco] - [#138353])
|
||||||
|
- Bump cryptography to 44.0.1 ([@edenhaus] - [#138371])
|
||||||
|
- Fix tplink iot strip sensor refresh ([@sdb9696] - [#138375])
|
||||||
|
- Bump deebot-client to 12.1.0 ([@edenhaus] - [#138382])
|
||||||
|
- Bump hass-nabucasa from 0.89.0 to 0.90.0 ([@emontnemery] - [#138387])
|
||||||
|
- Update cloud backup agent to use calculate_b64md5 from lib ([@emontnemery] - [#138391])
|
||||||
|
|
||||||
|
[#137321]: https://github.com/home-assistant/core/pull/137321
|
||||||
|
[#137416]: https://github.com/home-assistant/core/pull/137416
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137517]: https://github.com/home-assistant/core/pull/137517
|
||||||
|
[#137623]: https://github.com/home-assistant/core/pull/137623
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#137773]: https://github.com/home-assistant/core/pull/137773
|
||||||
|
[#138023]: https://github.com/home-assistant/core/pull/138023
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138259]: https://github.com/home-assistant/core/pull/138259
|
||||||
|
[#138286]: https://github.com/home-assistant/core/pull/138286
|
||||||
|
[#138299]: https://github.com/home-assistant/core/pull/138299
|
||||||
|
[#138327]: https://github.com/home-assistant/core/pull/138327
|
||||||
|
[#138349]: https://github.com/home-assistant/core/pull/138349
|
||||||
|
[#138353]: https://github.com/home-assistant/core/pull/138353
|
||||||
|
[#138371]: https://github.com/home-assistant/core/pull/138371
|
||||||
|
[#138375]: https://github.com/home-assistant/core/pull/138375
|
||||||
|
[#138382]: https://github.com/home-assistant/core/pull/138382
|
||||||
|
[#138387]: https://github.com/home-assistant/core/pull/138387
|
||||||
|
[#138391]: https://github.com/home-assistant/core/pull/138391
|
||||||
|
[@alfwro13]: https://github.com/alfwro13
|
||||||
|
[@allenporter]: https://github.com/allenporter
|
||||||
|
[@bdraco]: https://github.com/bdraco
|
||||||
|
[@catsmanac]: https://github.com/catsmanac
|
||||||
|
[@edenhaus]: https://github.com/edenhaus
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@jdanders]: https://github.com/jdanders
|
||||||
|
[@ludeeus]: https://github.com/ludeeus
|
||||||
|
[@sdb9696]: https://github.com/sdb9696
|
||||||
|
|
||||||
|
## Release 2025.2.4 - February 14
|
||||||
|
|
||||||
|
- Bump python-kasa to 0.10.2 ([@sdb9696] - [#138381])
|
||||||
|
- Bump hass-nabucasa from 0.90.0 to 0.91.0 ([@ludeeus] - [#138441])
|
||||||
|
- Bump aiowebostv to 0.6.2 ([@thecode] - [#138488])
|
||||||
|
- Bump ZHA to 0.0.49 to fix Tuya TRV issues ([@TheJulianJES] - [#138492])
|
||||||
|
- Bump pyseventeentrack to 1.0.2 ([@shaiu] - [#138506])
|
||||||
|
- Bump hass-nabucasa from 0.91.0 to 0.92.0 ([@emontnemery] - [#138510])
|
||||||
|
- Bump py-synologydsm-api to 2.6.3 ([@mib1185] - [#138516])
|
||||||
|
- Update frontend to 20250214.0 ([@bramkragten] - [#138521])
|
||||||
|
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138381]: https://github.com/home-assistant/core/pull/138381
|
||||||
|
[#138408]: https://github.com/home-assistant/core/pull/138408
|
||||||
|
[#138441]: https://github.com/home-assistant/core/pull/138441
|
||||||
|
[#138488]: https://github.com/home-assistant/core/pull/138488
|
||||||
|
[#138492]: https://github.com/home-assistant/core/pull/138492
|
||||||
|
[#138506]: https://github.com/home-assistant/core/pull/138506
|
||||||
|
[#138510]: https://github.com/home-assistant/core/pull/138510
|
||||||
|
[#138516]: https://github.com/home-assistant/core/pull/138516
|
||||||
|
[#138521]: https://github.com/home-assistant/core/pull/138521
|
||||||
|
[@TheJulianJES]: https://github.com/TheJulianJES
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@ludeeus]: https://github.com/ludeeus
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@sdb9696]: https://github.com/sdb9696
|
||||||
|
[@shaiu]: https://github.com/shaiu
|
||||||
|
[@thecode]: https://github.com/thecode
|
||||||
|
|
||||||
|
## Release 2025.2.5 - February 21
|
||||||
|
|
||||||
|
- Adjust Tuya Water Detector to support 1 as an alarm state ([@petacz] - [#135933])
|
||||||
|
- Fix bug in set_preset_mode_with_end_datetime (wrong typo of frost_guard) ([@pectum83] - [#138402])
|
||||||
|
- Bump pyhive-integration to 1.0.2 ([@KJonline] - [#138569])
|
||||||
|
- Bump tesla-fleet-api to v0.9.10 ([@Bre77] - [#138575])
|
||||||
|
- Bump pysmarty2 to 0.10.2 ([@lucab-91] - [#138625])
|
||||||
|
- Rename "returned" state to "alert" ([@shaiu] - [#138676])
|
||||||
|
- Bump pyvesync for vesync ([@cdnninja] - [#138681])
|
||||||
|
- Opower: Fix unavailable "start date" and "end date" sensors ([@SaswatPadhi] - [#138694])
|
||||||
|
- Correct backup filename on delete or download of cloud backup ([@emontnemery] - [#138704])
|
||||||
|
- Correct invalid automatic backup settings when loading from store ([@emontnemery] - [#138716])
|
||||||
|
- Bump airgradient to 0.9.2 ([@joostlek] - [#138725])
|
||||||
|
- Clean up translations for mocked integrations inbetween tests ([@emontnemery] - [#138732])
|
||||||
|
- Bump pyrympro from 0.0.8 to 0.0.9 ([@nivstein] - [#138753])
|
||||||
|
- Don't allow setting backup retention to 0 days or copies ([@emontnemery] - [#138771])
|
||||||
|
- Fix TV input source option for Sonos Arc Ultra ([@PeteRager] - [#138778])
|
||||||
|
- Add assistant filter to expose entities list command ([@synesthesiam] - [#138817])
|
||||||
|
- Fix playback for encrypted Reolink files ([@starkillerOG] - [#138852])
|
||||||
|
- Correct backup date when reading a backup created by supervisor ([@emontnemery] - [#138860])
|
||||||
|
- Bump pyfritzhome to 0.6.15 ([@mib1185] - [#138879])
|
||||||
|
- Validate hassio backup settings ([@emontnemery] - [#138880])
|
||||||
|
- Catch zeep fault as well on GetSystemDateAndTime call. ([@DmitryKuzmenko] - [#138916])
|
||||||
|
- Fix Reolink callback id collision ([@starkillerOG] - [#138918])
|
||||||
|
- Fix handling of min/max temperature presets in AVM Fritz!SmartHome ([@mib1185] - [#138954])
|
||||||
|
- Bump pyprosegur to 0.0.13 ([@dgomes] - [#138960])
|
||||||
|
- Bump reolink-aio to 0.12.0 ([@starkillerOG] - [#138985])
|
||||||
|
- Bump deebot-client to 12.2.0 ([@edenhaus] - [#138986])
|
||||||
|
- Omit unknown hue effects ([@joostlek] - [#138992])
|
||||||
|
- Update frontend to 20250221.0 ([@bramkragten] - [#139006])
|
||||||
|
|
||||||
|
[#135933]: https://github.com/home-assistant/core/pull/135933
|
||||||
|
[#137448]: https://github.com/home-assistant/core/pull/137448
|
||||||
|
[#137688]: https://github.com/home-assistant/core/pull/137688
|
||||||
|
[#138231]: https://github.com/home-assistant/core/pull/138231
|
||||||
|
[#138402]: https://github.com/home-assistant/core/pull/138402
|
||||||
|
[#138408]: https://github.com/home-assistant/core/pull/138408
|
||||||
|
[#138530]: https://github.com/home-assistant/core/pull/138530
|
||||||
|
[#138569]: https://github.com/home-assistant/core/pull/138569
|
||||||
|
[#138575]: https://github.com/home-assistant/core/pull/138575
|
||||||
|
[#138625]: https://github.com/home-assistant/core/pull/138625
|
||||||
|
[#138676]: https://github.com/home-assistant/core/pull/138676
|
||||||
|
[#138681]: https://github.com/home-assistant/core/pull/138681
|
||||||
|
[#138694]: https://github.com/home-assistant/core/pull/138694
|
||||||
|
[#138704]: https://github.com/home-assistant/core/pull/138704
|
||||||
|
[#138716]: https://github.com/home-assistant/core/pull/138716
|
||||||
|
[#138725]: https://github.com/home-assistant/core/pull/138725
|
||||||
|
[#138732]: https://github.com/home-assistant/core/pull/138732
|
||||||
|
[#138753]: https://github.com/home-assistant/core/pull/138753
|
||||||
|
[#138771]: https://github.com/home-assistant/core/pull/138771
|
||||||
|
[#138778]: https://github.com/home-assistant/core/pull/138778
|
||||||
|
[#138817]: https://github.com/home-assistant/core/pull/138817
|
||||||
|
[#138852]: https://github.com/home-assistant/core/pull/138852
|
||||||
|
[#138860]: https://github.com/home-assistant/core/pull/138860
|
||||||
|
[#138879]: https://github.com/home-assistant/core/pull/138879
|
||||||
|
[#138880]: https://github.com/home-assistant/core/pull/138880
|
||||||
|
[#138916]: https://github.com/home-assistant/core/pull/138916
|
||||||
|
[#138918]: https://github.com/home-assistant/core/pull/138918
|
||||||
|
[#138954]: https://github.com/home-assistant/core/pull/138954
|
||||||
|
[#138960]: https://github.com/home-assistant/core/pull/138960
|
||||||
|
[#138985]: https://github.com/home-assistant/core/pull/138985
|
||||||
|
[#138986]: https://github.com/home-assistant/core/pull/138986
|
||||||
|
[#138992]: https://github.com/home-assistant/core/pull/138992
|
||||||
|
[#139006]: https://github.com/home-assistant/core/pull/139006
|
||||||
|
[@Bre77]: https://github.com/Bre77
|
||||||
|
[@DmitryKuzmenko]: https://github.com/DmitryKuzmenko
|
||||||
|
[@KJonline]: https://github.com/KJonline
|
||||||
|
[@PeteRager]: https://github.com/PeteRager
|
||||||
|
[@SaswatPadhi]: https://github.com/SaswatPadhi
|
||||||
|
[@bramkragten]: https://github.com/bramkragten
|
||||||
|
[@cdnninja]: https://github.com/cdnninja
|
||||||
|
[@dgomes]: https://github.com/dgomes
|
||||||
|
[@edenhaus]: https://github.com/edenhaus
|
||||||
|
[@emontnemery]: https://github.com/emontnemery
|
||||||
|
[@frenck]: https://github.com/frenck
|
||||||
|
[@joostlek]: https://github.com/joostlek
|
||||||
|
[@lucab-91]: https://github.com/lucab-91
|
||||||
|
[@mib1185]: https://github.com/mib1185
|
||||||
|
[@nivstein]: https://github.com/nivstein
|
||||||
|
[@pectum83]: https://github.com/pectum83
|
||||||
|
[@petacz]: https://github.com/petacz
|
||||||
|
[@shaiu]: https://github.com/shaiu
|
||||||
|
[@starkillerOG]: https://github.com/starkillerOG
|
||||||
|
[@synesthesiam]: https://github.com/synesthesiam
|
||||||
|
|
||||||
[#112047]: https://github.com/home-assistant/core/pull/112047
|
[#112047]: https://github.com/home-assistant/core/pull/112047
|
||||||
[#121522]: https://github.com/home-assistant/core/pull/121522
|
[#121522]: https://github.com/home-assistant/core/pull/121522
|
||||||
[#121548]: https://github.com/home-assistant/core/pull/121548
|
[#121548]: https://github.com/home-assistant/core/pull/121548
|
||||||
|
@ -27,7 +27,8 @@ Badges are widgets that sit at the top of a panel, above all the cards.
|
|||||||
|
|
||||||

|

|
||||||
7. Under **Interactions**, you can define the tap behavior.
|
7. Under **Interactions**, you can define the tap behavior.
|
||||||
8. If you want this badge to be visible only to specific users or under a certain condition, open the **Visibility** tab to [define those conditions](/dashboards/cards/#showing-or-hiding-a-card-conditionally).
|
8. If you want this badge to be visible only to specific users or under a certain condition, open the **Visibility** tab to [define those conditions](/dashboards/cards/#showing-or-hiding-a-card-or-badge-conditionally).
|
||||||
|
- The [available conditions](/dashboards/conditional/#conditions-options) are the same as the ones for the conditional card.
|
||||||
9. Select **Save**.
|
9. Select **Save**.
|
||||||
|
|
||||||
<p class="img">
|
<p class="img">
|
||||||
|
@ -53,7 +53,7 @@ A card can be added to a dashboard directly [from the view](#to-add-a-card-from-
|
|||||||
- Then, select **Continue**.
|
- Then, select **Continue**.
|
||||||

|

|
||||||
|
|
||||||
3. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-conditionally).
|
3. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-or-badge-conditionally).
|
||||||
4. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
|
4. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
|
||||||
5. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
|
5. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
|
||||||
- Not all cards support these elements. Refer to the documentation of the specific card type.
|
- Not all cards support these elements. Refer to the documentation of the specific card type.
|
||||||
@ -78,7 +78,7 @@ This method is useful if you are on the **Device** page and want to create a car
|
|||||||

|

|
||||||
5. To edit the card configuration, open the view to which you added the card.
|
5. To edit the card configuration, open the view to which you added the card.
|
||||||
- Select **Edit card**.
|
- Select **Edit card**.
|
||||||
6. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-conditionally).
|
6. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-or-badge-conditionally).
|
||||||
7. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
|
7. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
|
||||||
|
|
||||||
8. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
|
8. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
|
||||||
@ -88,10 +88,11 @@ This method is useful if you are on the **Device** page and want to create a car
|
|||||||
|
|
||||||
You can choose to show or hide certain cards or [badges](/dashboards/badges/) based on different conditions. The [available conditions](/dashboards/conditional/#card-conditions) are the same as the ones for the conditional card.
|
You can choose to show or hide certain cards or [badges](/dashboards/badges/) based on different conditions. The [available conditions](/dashboards/conditional/#card-conditions) are the same as the ones for the conditional card.
|
||||||
|
|
||||||
1. On the **Visibility** tab, select **Add condition**.
|
1. On the **Visibility** tab, select **Add condition**./dashboards/conditional/#conditions-options
|
||||||
- Don't see a **Visibility** tab?
|
- **Troubleshooting**: Don't see a **Visibility** tab?
|
||||||
- It is not available inside nested cards: vertical stack, horizontal stack, and grid card
|
- It is not available inside nested cards: vertical stack, horizontal stack, and grid card
|
||||||
2. Select the type of condition, and enter the parameters.
|
2. Select the type of condition, and enter the parameters.
|
||||||
|
- The [available conditions](/dashboards/conditional/#conditions-options) are the same as the ones for the conditional card.
|
||||||
- If you define multiple conditions, the section is only shown when all conditions are met.
|
- If you define multiple conditions, the section is only shown when all conditions are met.
|
||||||
- If you did not define any conditions, the section is always shown, to all users.
|
- If you did not define any conditions, the section is always shown, to all users.
|
||||||
3. Select **Save**.
|
3. Select **Save**.
|
||||||
|
BIN
source/images/blog/2025-02-voice-chapter-9/art.jpg
Normal file
BIN
source/images/blog/2025-02-voice-chapter-9/art.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
BIN
source/images/blog/2025-02-voice-chapter-9/green-pe.png
Normal file
BIN
source/images/blog/2025-02-voice-chapter-9/green-pe.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 153 KiB |
BIN
source/images/blog/2025-02-voice-chapter-9/shared-history.png
Normal file
BIN
source/images/blog/2025-02-voice-chapter-9/shared-history.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user