mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-25 18:26:56 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
91f945e6a9
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@ -10,7 +10,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.2.2
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.3.0
|
||||
uses: actions/setup-node@v4.4.0
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
@ -27,7 +27,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.2.2
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.3.0
|
||||
uses: actions/setup-node@v4.4.0
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
|
13
CODEOWNERS
13
CODEOWNERS
@ -9,6 +9,7 @@
|
||||
|
||||
# Pages
|
||||
source/_integrations/3_day_blinds.markdown @starkillerOG
|
||||
source/_integrations/_integration_docs_template.markdown @home-assistant/core
|
||||
source/_integrations/abode.markdown @shred86
|
||||
source/_integrations/acaia.markdown @zweckj
|
||||
source/_integrations/accuweather.markdown @bieniu
|
||||
@ -59,6 +60,7 @@ source/_integrations/aosmith.markdown @bdr99
|
||||
source/_integrations/apache_kafka.markdown @bachya
|
||||
source/_integrations/apcupsd.markdown @yuxincs
|
||||
source/_integrations/api.markdown @home-assistant/core
|
||||
source/_integrations/apollo_automation.markdown @OttoWinter @jesserockz @kbx81 @bdraco
|
||||
source/_integrations/appalachianpower.markdown @tronikos
|
||||
source/_integrations/apple_tv.markdown @postlund
|
||||
source/_integrations/application_credentials.markdown @home-assistant/core
|
||||
@ -292,6 +294,7 @@ source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck
|
||||
source/_integrations/forked_daapd.markdown @uvjustin
|
||||
source/_integrations/fortios.markdown @kimfrellsen
|
||||
source/_integrations/foscam.markdown @krmarien
|
||||
source/_integrations/frankever.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
||||
source/_integrations/freebox.markdown @hacf-fr @Quentame
|
||||
source/_integrations/freedompro.markdown @stefano055415
|
||||
source/_integrations/fritz.markdown @AaronDavidSchneider @chemelli74 @mib1185
|
||||
@ -329,7 +332,7 @@ source/_integrations/google_assistant.markdown @home-assistant/cloud
|
||||
source/_integrations/google_assistant_sdk.markdown @tronikos
|
||||
source/_integrations/google_cloud.markdown @lufton @tronikos
|
||||
source/_integrations/google_drive.markdown @tronikos
|
||||
source/_integrations/google_generative_ai_conversation.markdown @tronikos
|
||||
source/_integrations/google_generative_ai_conversation.markdown @tronikos @ivanlh
|
||||
source/_integrations/google_mail.markdown @tkdrob
|
||||
source/_integrations/google_photos.markdown @allenporter
|
||||
source/_integrations/google_sheets.markdown @tkdrob
|
||||
@ -488,6 +491,7 @@ source/_integrations/light.markdown @home-assistant/core
|
||||
source/_integrations/light.template.markdown @home-assistant/core
|
||||
source/_integrations/linak.markdown @abmantis
|
||||
source/_integrations/linear_garage_door.markdown @IceBotYT
|
||||
source/_integrations/linkedgo.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
||||
source/_integrations/linux_battery.markdown @fabaff
|
||||
source/_integrations/linx.markdown @starkillerOG
|
||||
source/_integrations/litejet.markdown @joncar
|
||||
@ -612,6 +616,7 @@ source/_integrations/nyt_games.markdown @joostlek
|
||||
source/_integrations/nzbget.markdown @chriscla
|
||||
source/_integrations/obihai.markdown @dshokouhi @ejpenney
|
||||
source/_integrations/octoprint.markdown @rfleming71
|
||||
source/_integrations/ogemray.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
|
||||
source/_integrations/ohmconnect.markdown @robbiet480
|
||||
source/_integrations/ohme.markdown @dan-r
|
||||
source/_integrations/ollama.markdown @synesthesiam
|
||||
@ -683,6 +688,7 @@ source/_integrations/prusalink.markdown @balloob
|
||||
source/_integrations/ps4.markdown @ktnrg45
|
||||
source/_integrations/pse.markdown @tronikos
|
||||
source/_integrations/psoklahoma.markdown @tronikos
|
||||
source/_integrations/pterodactyl.markdown @elmurato
|
||||
source/_integrations/pure_energie.markdown @klaasnicolaas
|
||||
source/_integrations/purpleair.markdown @bachya
|
||||
source/_integrations/push.markdown @dgomes
|
||||
@ -720,6 +726,7 @@ source/_integrations/recorder.markdown @home-assistant/core
|
||||
source/_integrations/recovery_mode.markdown @home-assistant/core
|
||||
source/_integrations/refoss.markdown @ashionky
|
||||
source/_integrations/remote.markdown @home-assistant/core
|
||||
source/_integrations/remote_calendar.markdown @Thomas55555
|
||||
source/_integrations/renault.markdown @epenet
|
||||
source/_integrations/renson.markdown @jimmyd-be
|
||||
source/_integrations/reolink.markdown @starkillerOG
|
||||
@ -810,6 +817,7 @@ source/_integrations/smart_home.markdown @starkillerOG
|
||||
source/_integrations/smart_meter_texas.markdown @grahamwetzler
|
||||
source/_integrations/smart_rollos.markdown @starkillerOG
|
||||
source/_integrations/smarther.markdown @cgtobi
|
||||
source/_integrations/smartthings.markdown @joostlek
|
||||
source/_integrations/smarttub.markdown @mdz
|
||||
source/_integrations/smarty.markdown @z0mbieprocess
|
||||
source/_integrations/smhi.markdown @gjohansson-ST
|
||||
@ -881,7 +889,7 @@ source/_integrations/tautulli.markdown @ludeeus @tkdrob
|
||||
source/_integrations/technove.markdown @Moustachauve
|
||||
source/_integrations/tedee.markdown @patrickhilker @zweckj
|
||||
source/_integrations/tellduslive.markdown @fredrike
|
||||
source/_integrations/template.markdown @PhracturedBlue @home-assistant/core
|
||||
source/_integrations/template.markdown @Petro31 @PhracturedBlue @home-assistant/core
|
||||
source/_integrations/tesla_fleet.markdown @Bre77
|
||||
source/_integrations/tesla_wall_connector.markdown @einarhauks
|
||||
source/_integrations/teslemetry.markdown @Bre77
|
||||
@ -1021,7 +1029,6 @@ source/_integrations/youless.markdown @gjong
|
||||
source/_integrations/youtube.markdown @joostlek
|
||||
source/_integrations/zabbix.markdown @kruton
|
||||
source/_integrations/zamg.markdown @killer0071234
|
||||
source/_integrations/zengge.markdown @emontnemery
|
||||
source/_integrations/zeroconf.markdown @bdraco
|
||||
source/_integrations/zerproc.markdown @emlove
|
||||
source/_integrations/zeversolar.markdown @kvanzuijlen
|
||||
|
8
Gemfile
8
Gemfile
@ -10,9 +10,9 @@ group :development do
|
||||
gem 'stringex', '2.8.6'
|
||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||
gem 'sassc', '2.1.0'
|
||||
gem 'sass-embedded', '1.86.1'
|
||||
gem 'rubocop', '1.75.1'
|
||||
gem 'ruby-lsp', '0.23.13'
|
||||
gem 'sass-embedded', '1.87.0'
|
||||
gem 'rubocop', '1.75.4'
|
||||
gem 'ruby-lsp', '0.23.15'
|
||||
gem 'rackup', '2.2.1'
|
||||
end
|
||||
|
||||
@ -24,7 +24,7 @@ group :jekyll_plugins do
|
||||
end
|
||||
|
||||
gem 'sinatra', '4.1.1'
|
||||
gem 'nokogiri', '1.18.7'
|
||||
gem 'nokogiri', '1.18.8'
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library
|
||||
|
42
Gemfile.lock
42
Gemfile.lock
@ -22,13 +22,13 @@ GEM
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
concurrent-ruby (1.3.5)
|
||||
csv (3.3.3)
|
||||
csv (3.3.4)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.17.1-arm64-darwin)
|
||||
ffi (1.17.1-x86_64-linux-gnu)
|
||||
ffi (1.17.2-arm64-darwin)
|
||||
ffi (1.17.2-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.30.2-arm64-darwin)
|
||||
bigdecimal
|
||||
@ -70,7 +70,7 @@ GEM
|
||||
nokogiri (~> 1.12)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
json (2.10.2)
|
||||
json (2.11.3)
|
||||
kramdown (2.5.1)
|
||||
rexml (>= 3.3.9)
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
@ -86,12 +86,12 @@ GEM
|
||||
multi_json (1.15.0)
|
||||
mustermann (3.0.3)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.18.7-arm64-darwin)
|
||||
nokogiri (1.18.8-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.18.7-x86_64-linux-gnu)
|
||||
nokogiri (1.18.8-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
parallel (1.26.3)
|
||||
parser (3.3.7.4)
|
||||
parallel (1.27.0)
|
||||
parser (3.3.8.0)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
pathutil (0.16.2)
|
||||
@ -99,7 +99,7 @@ GEM
|
||||
prism (1.4.0)
|
||||
public_suffix (6.0.1)
|
||||
racc (1.8.1)
|
||||
rack (3.1.12)
|
||||
rack (3.1.13)
|
||||
rack-protection (4.1.1)
|
||||
base64 (>= 0.1.0)
|
||||
logger (>= 1.6.0)
|
||||
@ -118,8 +118,8 @@ GEM
|
||||
logger
|
||||
regexp_parser (2.10.0)
|
||||
rexml (3.4.1)
|
||||
rouge (4.5.1)
|
||||
rubocop (1.75.1)
|
||||
rouge (4.5.2)
|
||||
rubocop (1.75.4)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (~> 3.17.0.2)
|
||||
lint_roller (~> 1.1.0)
|
||||
@ -127,13 +127,13 @@ GEM
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 2.9.3, < 3.0)
|
||||
rubocop-ast (>= 1.43.0, < 2.0)
|
||||
rubocop-ast (>= 1.44.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.43.0)
|
||||
rubocop-ast (1.44.1)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.4)
|
||||
ruby-lsp (0.23.13)
|
||||
ruby-lsp (0.23.15)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 1.2, < 2.0)
|
||||
rbs (>= 3, < 4)
|
||||
@ -142,9 +142,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.86.1-arm64-darwin)
|
||||
sass-embedded (1.87.0-arm64-darwin)
|
||||
google-protobuf (~> 4.30)
|
||||
sass-embedded (1.86.1-x86_64-linux-gnu)
|
||||
sass-embedded (1.87.0-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.30)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
@ -159,7 +159,7 @@ GEM
|
||||
rack-protection (= 4.1.1)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11980)
|
||||
sorbet-runtime (0.5.12043)
|
||||
stringex (2.8.6)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -182,12 +182,12 @@ DEPENDENCIES
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-toc (= 0.19.0)
|
||||
nokogiri (= 1.18.7)
|
||||
nokogiri (= 1.18.8)
|
||||
rackup (= 2.2.1)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.75.1)
|
||||
ruby-lsp (= 0.23.13)
|
||||
sass-embedded (= 1.86.1)
|
||||
rubocop (= 1.75.4)
|
||||
ruby-lsp (= 0.23.15)
|
||||
sass-embedded (= 1.87.0)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.1.1)
|
||||
|
@ -107,9 +107,9 @@ social:
|
||||
|
||||
# Home Assistant release details
|
||||
current_major_version: 2025
|
||||
current_minor_version: 3
|
||||
current_minor_version: 4
|
||||
current_patch_version: 4
|
||||
date_released: 2025-03-21
|
||||
date_released: 2025-04-25
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
@ -248,8 +248,6 @@ installation:
|
||||
key: "rpi5-64"
|
||||
- name: "Raspberry Pi 4"
|
||||
key: "rpi4-64"
|
||||
- name: "Raspberry Pi 3"
|
||||
key: "rpi3-64"
|
||||
|
||||
generic-x86-64:
|
||||
board: Generic x86-64
|
||||
|
8
package-lock.json
generated
8
package-lock.json
generated
@ -11,7 +11,7 @@
|
||||
"remark-cli": "^12.0.1",
|
||||
"remark-frontmatter": "^5.0.0",
|
||||
"remark-lint": "^10.0.1",
|
||||
"remark-lint-fenced-code-flag": "^4.1.1",
|
||||
"remark-lint-fenced-code-flag": "^4.2.0",
|
||||
"remark-lint-heading-increment": "^4.0.1",
|
||||
"remark-lint-heading-style": "^4.0.1",
|
||||
"remark-lint-no-shell-dollars": "^4.0.1",
|
||||
@ -4427,9 +4427,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-fenced-code-flag": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.1.1.tgz",
|
||||
"integrity": "sha512-hKPqowc79jrJL47AfnqDThvE8Q249nHCleR5nxuf9ybriMqcAHYxragKzU5c4W1fNy20bTfFdZz/iAAQAk9kwg==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-4.2.0.tgz",
|
||||
"integrity": "sha512-QWGTrnYbcopOFZR98djDREmKApLonJ7hmXE7pEcOGee9JY/EUIVS7Lq54Hy9CtU3cVIvQQmiMTxCwUhfddDJFA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -6,7 +6,7 @@
|
||||
"remark-cli": "^12.0.1",
|
||||
"remark-frontmatter": "^5.0.0",
|
||||
"remark-lint": "^10.0.1",
|
||||
"remark-lint-fenced-code-flag": "^4.1.1",
|
||||
"remark-lint-fenced-code-flag": "^4.2.0",
|
||||
"remark-lint-heading-increment": "^4.0.1",
|
||||
"remark-lint-heading-style": "^4.0.1",
|
||||
"remark-lint-no-shell-dollars": "^4.0.1",
|
||||
|
@ -1,55 +1,62 @@
|
||||
div.alert {
|
||||
background: #e7f2fa;
|
||||
border-radius: 16px;
|
||||
margin-bottom: 24px;
|
||||
padding: 20px 24px 20px 24px;
|
||||
position: relative;
|
||||
|
||||
background: #e7f2fa;
|
||||
|
||||
padding: 20px 24px 20px 24px;
|
||||
margin-bottom: 24px;
|
||||
border-radius: 16px;
|
||||
>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0px;
|
||||
&.alert-title {
|
||||
font-weight: bold;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
&.alert-content {
|
||||
padding: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
&.alert-note {
|
||||
background-color: #e7f2fa;
|
||||
|
||||
p.alert-title {
|
||||
color: #6ab0de;
|
||||
}
|
||||
background-color: #e7f2fa;
|
||||
}
|
||||
|
||||
&.alert-tip {
|
||||
background-color: #e6f4ea;
|
||||
|
||||
p.alert-title {
|
||||
color: #4caf50;
|
||||
}
|
||||
background-color: #e6f4ea;
|
||||
}
|
||||
|
||||
&.alert-important {
|
||||
background-color: #ede7f6;
|
||||
|
||||
p.alert-title {
|
||||
color: #7e57c2;
|
||||
}
|
||||
background-color: #ede7f6;
|
||||
}
|
||||
|
||||
&.alert-warning {
|
||||
background-color: #f7f9e1;
|
||||
|
||||
p.alert-title {
|
||||
color: rgb(187, 185, 13);
|
||||
}
|
||||
background-color: #f7f9e1;
|
||||
}
|
||||
|
||||
&.alert-caution {
|
||||
background-color: #fdecea;
|
||||
|
||||
p.alert-title {
|
||||
color: #d32f2f;
|
||||
}
|
||||
background-color: #fdecea;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,8 @@ related:
|
||||
title: Themes
|
||||
- docs: /dashboards/cards/
|
||||
title: Dashboard cards
|
||||
- docs: /dashboards/dashboards/#areas-dashboard
|
||||
title: Areas dashboard
|
||||
---
|
||||
|
||||
The area card lets you control and monitor an individual {% term area %}.
|
||||
|
@ -8,7 +8,7 @@ related:
|
||||
title: Setup your time format and timezone
|
||||
---
|
||||
|
||||
The Clock card shows the current time in a variety of formats and sizes.
|
||||
The Clock card shows the current time in a variety of formats, sizes and time zones.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_large.png' alt='Screenshot of the clock card'>
|
||||
@ -23,12 +23,16 @@ All options for this card can be configured via the user interface.
|
||||
## Card settings
|
||||
|
||||
{% configuration_basic %}
|
||||
Title:
|
||||
description: Adds a title to the top of the card
|
||||
Clock Size:
|
||||
description: Adjusts the size of the text allowing a wider range of use with different types of dashboards. Defaults to small.
|
||||
Display Seconds:
|
||||
description: Shows seconds alongside the clock, providing the time format is in a 12-hour format.
|
||||
Time Format:
|
||||
description: Allows the time format to be changed on a per-card level. Defaults to the user profile setting.
|
||||
Time Zone:
|
||||
description: Change the timezone used for the time on a per-card level. Defaults to the user profile setting.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
### Examples
|
||||
@ -39,25 +43,21 @@ Basic example:
|
||||
type: clock
|
||||
```
|
||||
|
||||
Clock card with no configuration
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_default.png' alt='Screenshot of the basic clock card'>
|
||||
Screenshot of the basic clock card
|
||||
</p>
|
||||
|
||||
|
||||
Example of a larger clock card for tablet dashboards:
|
||||
|
||||
```yaml
|
||||
type: clock
|
||||
clock_size: large
|
||||
time_format: "12"
|
||||
show_seconds: true
|
||||
grid_options:
|
||||
columns: 12
|
||||
rows: 2
|
||||
```
|
||||
|
||||
Example of a larger clock card for tablet dashboards:
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_large.png' alt='Screenshot of a large sized, 12 hour clock card showing am/pm and seconds'>
|
||||
Screenshot of a large sized, 12 hour clock card showing am/pm and seconds
|
||||
@ -75,4 +75,35 @@ show_seconds: false
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_medium.png' alt='Screenshot of a medium sized, 12 hour clock showing am/pm'>
|
||||
Screenshot of a medium sized, 12 hour clock showing am/pm
|
||||
</p>
|
||||
</p>
|
||||
|
||||
A medium-sized, 24 hour clock using the London timezone with a title
|
||||
|
||||
```yaml
|
||||
type: clock
|
||||
clock_size: medium
|
||||
time_zone: Europe/London
|
||||
title: London 💂
|
||||
|
||||
```
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_london.png' alt='Screenshot of a medium sized, 24 hour clock showing seconds based in London along with a title'>
|
||||
Screenshot of a medium sized, 24 hour clock showing seconds based in London along with a title
|
||||
</p>
|
||||
|
||||
A medium-sized, 12 hour clock using the New York timezone with a title
|
||||
|
||||
```yaml
|
||||
type: clock
|
||||
clock_size: medium
|
||||
time_format: "12"
|
||||
time_zone: America/New_York
|
||||
title: New York 🦅
|
||||
|
||||
```
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/clock_card_new_york.png' alt='Screenshot of a medium sized, 12 hour clock showing am/pm and seconds based in New York along with a title'>
|
||||
Screenshot of a medium sized, 12 hour clock showing am/pm and seconds based in New York along with a title
|
||||
</p>
|
||||
|
@ -261,6 +261,12 @@
|
||||
link: /docs/configuration/events/
|
||||
aliases:
|
||||
- events
|
||||
- term: Event entity
|
||||
definition: >-
|
||||
Events are signals that are emitted when something happens, for example,
|
||||
when a user presses a physical button like a doorbell or when a button on a
|
||||
remote control is pressed.
|
||||
link: /integrations/event
|
||||
- term: Floor
|
||||
definition: >-
|
||||
A floor in Home Assistant is a logical grouping of areas that are meant to
|
||||
|
@ -486,3 +486,8 @@ voice-pe:
|
||||
ship_to: Europe
|
||||
url: https://www.pi-shop.ch/home-assistant-voice-preview-edition
|
||||
logo: /images/distributors/pi-shop.webp
|
||||
- name: ROBBshop
|
||||
ship_from: Netherlands
|
||||
ship_to: Europe
|
||||
url: https://www.robbshop.nl/home-assistant-voice-preview-edition
|
||||
logo: /images/distributors/robb.webp
|
||||
|
@ -696,7 +696,7 @@ A string that represents a time to fire on each day. Can be specified as `HH:MM`
|
||||
automation:
|
||||
- triggers:
|
||||
- trigger: time
|
||||
# Military time format. This trigger will fire at 3:32 PM
|
||||
# 24-hour time format. This trigger will fire at 3:32 PM
|
||||
at: "15:32:00"
|
||||
```
|
||||
|
||||
|
@ -173,7 +173,7 @@ entity:
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
Limits the list of areas that provide entities of a certain domain(s),
|
||||
Limits the list of areas that provide entities of a certain [domain(s)](/docs/configuration/entities_domains/#domains),
|
||||
for example, [`light`](/integrations/light) or
|
||||
[`binary_sensor`](/integrations/binary_sensor). Can be either a string
|
||||
with a single domain, or a list of string domains to limit the selection to.
|
||||
@ -521,7 +521,7 @@ entity:
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
Limits the list of devices that provide entities of a certain domain(s),
|
||||
Limits the list of devices that provide entities of a certain [domain(s)](/docs/configuration/entities_domains/#domains),
|
||||
for example, [`light`](/integrations/light) or
|
||||
[`binary_sensor`](/integrations/binary_sensor). Can be either a string
|
||||
with a single domain, or a list of string domains to limit the selection
|
||||
@ -694,7 +694,7 @@ filter:
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
Limits the list of entities to entities of a certain domain(s), for example,
|
||||
Limits the list of entities to entities of a certain [domain(s)](/docs/configuration/entities_domains/#domains), for example,
|
||||
[`light`](/integrations/light) or
|
||||
[`binary_sensor`](/integrations/binary_sensor). Can be either a string
|
||||
with a single domain, or a list of string domains to limit the selection
|
||||
@ -826,7 +826,7 @@ entity:
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
When set, the list only includes floors that have entities of certain domains,
|
||||
When set, the list only includes floors that have entities of certain [domains](/docs/configuration/entities_domains/#domains),
|
||||
for example, [`light`](/integrations/light) or
|
||||
[`binary_sensor`](/integrations/binary_sensor). Can be either a string
|
||||
with a single domain, or a list of string domains to limit the selection to.
|
||||
@ -1380,7 +1380,7 @@ entity:
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
Limits the targets to entities of a certain domain(s),
|
||||
Limits the targets to entities of a certain [domain(s)](/docs/configuration/entities_domains/#domains),
|
||||
for example, [`light`](/integrations/light) or
|
||||
[`binary_sensor`](/integrations/binary_sensor). Can be either a
|
||||
with a single domain, or a list of string domains to limit the
|
||||
|
@ -741,7 +741,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
- `utcnow()` returns a datetime object of the current time in the UTC timezone.
|
||||
- For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`.
|
||||
- Using `utcnow()` will cause templates to be refreshed at the start of every new minute.
|
||||
- `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone. Defaults to midnight (`00:00`).
|
||||
- `today_at(value)` converts a string containing a 24-hour time format to a datetime object with today's date in your time zone. Defaults to midnight (`00:00`).
|
||||
|
||||
- Using `today_at()` will cause templates to be refreshed at the start of every new minute.
|
||||
|
||||
@ -758,6 +758,8 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
- `as_timestamp(value, default)` converts a datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
|
||||
- `as_local()` converts a datetime object to local time. This function can also be used as a filter.
|
||||
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
|
||||
- `relative_time` converts a datetime object to its human-friendly "age" string. The age can be in seconds, minutes, hours, days, months, or years (but only the biggest unit is considered. For example, if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_.
|
||||
- Using `relative_time()` will cause templates to be refreshed at the start of every new minute.
|
||||
- `time_since(datetime, precision)` converts a datetime object into its human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
|
||||
If the datetime is in the future, returns 0 seconds.
|
||||
A precision of 0 returns all available units, default is 1.
|
||||
@ -1650,11 +1652,13 @@ Example value template:
|
||||
With given payload:
|
||||
|
||||
```json
|
||||
{ "state": "ON", "temperature": 21.902 }
|
||||
{ "state": "ON", "temperature": 21.902, "humidity": null }
|
||||
```
|
||||
|
||||
Template {% raw %}`{{ value_json.temperature | round(1) }}`{% endraw %} renders to `21.9`.
|
||||
|
||||
Template {% raw %}`{{ value_json.humidity }}`{% endraw %} renders to `None`.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
#### Using command templates with MQTT
|
||||
|
@ -22,3 +22,19 @@ Smart relays sit behind your "normal" switches and make them smart. It allows yo
|
||||
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices. For information on setting up an entity for use in the **Energy** dashboard, refer to the [energy FAQ](/docs/energy/faq/#troubleshooting-missing-entities).
|
||||
|
||||
<img src='/images/docs/energy/devices.png' alt='Graphic showing energy flowing from the home to individual devices.' style='border: 0;box-shadow: none; display: block; max-height: 400px; margin: 0 auto;'>
|
||||
|
||||
## Upstream devices and hierarchies
|
||||
|
||||
You can create a hierarchy of devices by setting one device as an "upstream device" of another. This means you can now establish parent-child relationships between devices within your energy configuration.
|
||||
|
||||
For example, imagine having a breaker monitoring the total energy consumption of a circuit, but also separately tracking individual devices connected to that circuit. Without setting the device hierarchies, Home Assistant might double-count this usage. By setting the hierarchy, it understands these relationships and accurately shows the individual device usage without duplication.
|
||||
To set up an upstream device relationship:
|
||||
|
||||
1. Add an energy consumption entity as an individual device.
|
||||
2. Then, when configuring other individual devices, you can select the previously added individual entity as their upstream device.
|
||||
|
||||
This hierarchical view helps you understand which devices are consuming power from which sources and prevents energy from being counted multiple times.
|
||||
|
||||
{% important %}
|
||||
To set up a hierarchy, you must first add all related entities as individual devices in the energy dashboard. Only devices that are already listed under individual devices can be selected as "upstream device" for other devices.
|
||||
{% endimportant %}
|
||||
|
@ -65,6 +65,8 @@ Maybe you like to build one yourself?
|
||||
- [watermeter](https://github.com/nohn/watermeter) running classic OCR and statistical pattern recognition on any system supporting Docker
|
||||
- [Muino water meter reader 3-phase](https://muino.nl/product/3-phase-muino-light-sensor-encoder/) Using the 3-phase sensor technique, a battery-powered version can be possible with this sensor.
|
||||
- [Read water meter with magnetometer](https://github.com/tronikos/esphome-magnetometer-water-gas-meter) using [QMC5883L](https://esphome.io/components/sensor/qmc5883l.html) or [HMC5883L](https://esphome.io/components/sensor/hmc5883l.html), common and inexpensive magnetometers. This should be compatible with all the water meters the Flume water sensor is compatible with, which is [compatible](https://help.flumewater.com/en/articles/1618594-is-the-flume-device-compatible-with-all-water-meters) with about 95% of water meters in the United States.
|
||||
- Some watermeters use [Wireless M-Bus](https://en.wikipedia.org/wiki/Meter-Bus) for remote metering. [wmbusmeters project](https://github.com/wmbusmeters/wmbusmeters/) can automatically capture, decode, decrypt and convert M-Bus packets to MQTT. It supports several M-Bus receivers, including RTL-SDR using [rtl-wmbus library](https://github.com/xaelsouth/rtl-wmbus). You can also build a WMBus [ESPHome-based receiver](https://github.com/SzczepanLeon/esphome-components). An [add-on](https://github.com/wmbusmeters/wmbusmeters-ha-addon) for Home Assistant exists for easy installation and configuration. See the [community page](https://community.home-assistant.io/t/add-on-request-wmbusmeter/228988) for more.
|
||||
- Read water (or gas) usage data from the Itron EverBlu Cyble Enhanced RF meters using the RADIAN protocol over 433 MHz [everblu-meters-esp8266/esp32](https://github.com/genestealer/everblu-meters-esp8266-improved), via an ESP32/ESP8266 and a CC1101 transceiver. Used across the UK and Europe. Fully integrates with Home Assistant using MQTT AutoDiscovery. According to available documentation, this method may also work with AnyQuest Cyble Enhanced, EverBlu Cyble, and AnyQuest Cyble Basic, but these remain untested.
|
||||
|
||||
If you manually integrate your sensors, for example, using the [MQTT](/integrations/mqtt) or [RESTful](/integrations/rest) integrations: Make sure you set and provide the `device_class`, `state_class`, and `unit_of_measurement` for those sensors.
|
||||
|
||||
|
@ -11,6 +11,8 @@ related:
|
||||
title: Categories
|
||||
- docs: /docs/configuration/templating/#areas
|
||||
title: Using areas in template
|
||||
- docs: /dashboards/dashboards/#areas-dashboard
|
||||
title: Areas dashboard
|
||||
---
|
||||
|
||||
An area in Home Assistant is a logical grouping of {% term devices %} and {% term entities %} that are meant to match areas (or rooms) in the physical world of your home.
|
||||
@ -49,7 +51,7 @@ If an area has not yet been assigned to a floor, it is shown in the **Unassigned
|
||||
|
||||
## Assigning an area to multiple items
|
||||
|
||||
You can assign an area to multiple items at once in the automation, scene, script, and device pages.
|
||||
You can assign an area to multiple items at once in the {% term automation %}, {% term scene %}, {% term script %}, and {% term device %} pages.
|
||||
|
||||
1. Depending on what you want to assign, go to one of the following pages:
|
||||
- For automations, scripts, or scenes {% my automations title="**Settings** > **Automations & Scenes**" %} and open the respective tab.
|
||||
@ -76,6 +78,15 @@ Follow these steps to edit an area.
|
||||
- Add an **Alias**.
|
||||
- Aliases are alternative names used in [voice assistants](/voice_control/aliases/) to refer to an area, entity, or floor.
|
||||
|
||||
## Using the Areas dashboard
|
||||
|
||||
Once you have assigned your entities to areas, you can use the **Areas** dashboard. The **Areas** dashboard is a pre-populated dashboard that shows your {% term entities %} grouped by areas. To learn how, refer to the documentation on the [Areas dashboard](/dashboards/dashboards/#areas-dashboard).
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/areas-dashboard-overview.png' alt='Screenshot of the Areas default dashboard'>
|
||||
Screenshot of the Areas default dashboard.
|
||||
</p>
|
||||
|
||||
## Deleting an area
|
||||
|
||||
Follow these steps to delete an area. It will be removed from all the floors it was assigned to. All the devices that were assigned to this area will become unassigned.
|
||||
|
@ -130,12 +130,12 @@ There are two ways to download the backup from Home Assistant Cloud:
|
||||
|
||||
- **Option 1**: From the backups page
|
||||
1. Got to {% my supervisor_backups title="**Settings** > **System** > **Backups**" %} and select **Show all backups**.
|
||||
2. Under **Stored files**, you can see the latest available backup file. Select the download button.
|
||||
2. Select the backup from the list.
|
||||
3. Under **Locations**, select the three dots {% icon "mdi:dots-vertical" %} and select **Download from this location**.
|
||||
|
||||
- **Option 2**: From your Home Assistant Cloud account
|
||||
1. Log in to your [Home Assistant Cloud account](https://account.nabucasa.com/).
|
||||
2. Select the backup from the list.
|
||||
3. Under **Locations**, select the three dots {% icon "mdi:dots-vertical" %} and select **Download from this location**.
|
||||
2. Under **Stored files**, you can see the latest available backup file. Select the download button.
|
||||
|
||||
### Deleting obsolete backups
|
||||
|
||||
@ -143,12 +143,19 @@ If you defined an automatic backup and backup purge schedule, old backups are de
|
||||
|
||||
To delete old backups, follow these steps:
|
||||
|
||||
1. Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, select **Show all backups**.
|
||||
2. To delete one backup, on the list, select the backup of interest.
|
||||
1. In Home Assistant, under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, select **Show all backups**.
|
||||
2. To **delete one backup**: from the list, select the backup of interest.
|
||||
- Select the three dots {% icon "mdi:dots-vertical" %} menu and select **Delete**.
|
||||
3. To delete multiple backups, select the {% icon "mdi:order-checkbox-ascending" %} button.
|
||||
3. To **delete multiple backups**: select the {% icon "mdi:order-checkbox-ascending" %} button.
|
||||
- From the list of backups, select all the ones you want to delete and select **Delete selected**.
|
||||
- {% icon "mdi:information-outline" %} Consider keeping at least one recent backup for recovery purposes.
|
||||
4. To **delete a backup that is stored on Home Assistant Cloud**, you have 2 options:
|
||||
- **Option 1**: Trigger backup deletion from within Home Assistant
|
||||
- Follow steps 1 and 2 from above.
|
||||
- Even though you select **Delete** in Home Assistant, it will be deleted from Home Assistant Cloud storage.
|
||||
- **Option 2**: Delete the backup from the Nabu Casa account page.
|
||||
- Log in to your [Nabu Casa account](https://account.nabucasa.com/).
|
||||
- Under **Backups**, delete the backup.
|
||||
|
||||
### Restoring a backup
|
||||
|
||||
@ -187,17 +194,24 @@ You can use a backup during the onboarding process to restore your configuration
|
||||
|
||||
1. If you are migrating to a new device and you had controllers or radios connected (such as a Z-Wave stick or Connect ZBT-1):
|
||||
- make sure to plug them into the new device.
|
||||
2. After Home Assistant has been installed, on the welcome screen, select **Restore from backup**.
|
||||
- Then, select **Upload backup**.
|
||||
- The file explorer opens on the device on which you are viewing the Home Assistant User interface.
|
||||
- You can access any connected network drive from there.
|
||||
3. Select the backup file, then, in the dialog, select all parts you want to restore.
|
||||
- Your current system will be overwritten with the parts that you choose to restore.
|
||||
- If you want to restore the complete configuration with all directories and add-ons, select everything.
|
||||
4. Under **Backup password**, enter the encryption key stored in the [backup emergency kit](/more-info/backup-emergency-kit/).
|
||||
5. To start the process, select **Restore**.
|
||||
2. You can either restore a backup from your local machine or a backup stored on Home Assistant Cloud:
|
||||
- **Option 1**: restoring from a local backup.
|
||||
- On the welcome screen, select **Upload backup**.
|
||||
- Select **Select backup file**.
|
||||
- The file explorer opens on the device on which you are viewing the Home Assistant User interface.
|
||||
- You can access any connected network drive from there.
|
||||
- Select the backup file.
|
||||
- **Option 2**: restoring from a Home Assistant Cloud backup.
|
||||
- On the welcome screen, select **Home Assistant Cloud**.
|
||||
- Sign in to Home Assistant Cloud.
|
||||
3. In the dialog, select all the parts you want to restore.
|
||||
- Your current system will be overwritten with the parts that you choose to restore.
|
||||
- If you want to restore the complete configuration with all directories and add-ons, select everything.
|
||||
4. Enter the encryption key stored in the [backup emergency kit](/more-info/backup-emergency-kit/).
|
||||
5. To start the process, select **Restore backup**.
|
||||
- The restore may take a while, depending on the amount of data.
|
||||
- To see if the restore is complete, reload the page from time to time.
|
||||
- Don't refresh the page. Just wait.
|
||||
- If you refresh the page, you will see a "Not found" message. This is because the system is shutdown, wiped, and reinstalled from the backup. During that time, it won't be reachable.
|
||||
- If your previous installation had certificates enabled directly for the [`http` integration](/integrations/http), when the restore is complete, it will no longer respond to `http://` requests. In this case, use `https://` (added `s`) instead.
|
||||
6. On the login screen, enter the credentials of the system from which you took the backup.
|
||||
- The login password and username must match the ones you used at the time the backup was taken.
|
||||
|
@ -1,30 +1,73 @@
|
||||
|
||||
<!-- Left column begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- SOTOH 2025 - To move on/after event -->
|
||||
<a href="/blog/2025/03/26/state-of-the-open-home-2025-announcement/" class="material-card picture-promo" style="
|
||||
background-image: url(/images/frontpage/sotoh-2025.webp);
|
||||
background-size: cover;
|
||||
padding-top: 55%;
|
||||
<!-- Community Day 2025 - To move on/after event -->
|
||||
<a href="/blog/2025/04/24/community-day/" class="material-card picture-promo" style="
|
||||
background-image: url(/images/frontpage/community-day-2025.webp);
|
||||
aspect-ratio: 500/263;
|
||||
" aria-label="State of the Open Home - Saturday April 12th 2025">
|
||||
</a>
|
||||
<!-- Recent blog posts -->
|
||||
|
||||
{% assign releases_post_limit = 2 %}
|
||||
{% assign blog_post_limit = 4 %}
|
||||
<!-- Home Assistant updates posts -->
|
||||
<div class="recent-posts material-card text">
|
||||
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
|
||||
<h1>{% icon "mdi:new-box" %} Release Notes</h1>
|
||||
|
||||
<ol>
|
||||
{% for post in site.posts limit: 4 %}
|
||||
<li class="post" style="display: grid; font-size: 16px">
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
<small class="blog-date">{{ post.date_formatted }}</small>
|
||||
</li>
|
||||
{% assign current = 0 %}
|
||||
|
||||
{% for post in site.posts %}
|
||||
{% if post.categories contains "Release-Notes" %}
|
||||
{% assign current = current | plus: 1 %}
|
||||
|
||||
{% if current > releases_post_limit %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
|
||||
{% assign post_date = post.date | date: "%Y-%m-%d" %}
|
||||
{% assign post_date_formatted = post_date | date: "%B %d, %Y" %}
|
||||
{% assign post.date_formatted = post_date_formatted %}
|
||||
<li class="post" style="display: grid; font-size: 16px">
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
<small class="blog-date">{{ post.date_formatted }}</small>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<!-- Recent blog posts -->
|
||||
<div class="recent-posts material-card text">
|
||||
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
|
||||
|
||||
<ol>
|
||||
{% assign current = 0 %}
|
||||
|
||||
{% for post in site.posts %}
|
||||
{% if post.categories contains "Release-Notes" %}
|
||||
{% else %}
|
||||
{% assign current = current | plus: 1 %}
|
||||
|
||||
{% if current > blog_post_limit %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
|
||||
{% assign post_date = post.date | date: "%Y-%m-%d" %}
|
||||
{% assign post_date_formatted = post_date | date: "%B %d, %Y" %}
|
||||
{% assign post.date_formatted = post_date_formatted %}
|
||||
<li class="post" style="display: grid; font-size: 16px">
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
<small class="blog-date">{{ post.date_formatted }}</small>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<!-- OHF notice -->
|
||||
<a href="https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/" class="material-card highlight-blog-post">
|
||||
<a href="https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/"
|
||||
class="material-card highlight-blog-post">
|
||||
<div>
|
||||
<p class="lead">We are a non-profit and can't be sold or acquired.</p>
|
||||
<p>Home Assistant is a project by the Open Home Foundation.</p>
|
||||
@ -32,10 +75,7 @@
|
||||
<iconify-icon icon="mdi:chevron-right"></iconify-icon>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="material-card highlight-blog-post"
|
||||
href="/blog/2016/01/19/perfect-home-automation/"
|
||||
>
|
||||
<a class="material-card highlight-blog-post" href="/blog/2016/01/19/perfect-home-automation/">
|
||||
<p class="lead">Read our founder's vision for the perfect home automation</p>
|
||||
<iconify-icon icon="mdi:chevron-right"></iconify-icon>
|
||||
</a>
|
||||
@ -81,26 +121,22 @@
|
||||
|
||||
<!-- All landing pages have a block. -->
|
||||
{% assign pages_by_date = site.pages | sort: "date" | reverse %} {% for
|
||||
page in pages_by_date %} {% if page.layout == "landingpage" and
|
||||
page.frontpage != false %}
|
||||
<a
|
||||
class="material-card picture-promo"
|
||||
href="{{page.url}}"
|
||||
style="
|
||||
page in pages_by_date %} {% if page.layout == "landingpage" and
|
||||
page.frontpage != false %}
|
||||
<a class="material-card picture-promo" href="{{page.url}}" style="
|
||||
background-image: url({{page.frontpage_image | default:page.og_image}});
|
||||
background-size: cover;
|
||||
background-color: #41bdf5;
|
||||
"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
{{page.title}}
|
||||
</div>
|
||||
<div class="subtitle">{{page.description}}</div>
|
||||
">
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
{{page.title}}
|
||||
</div>
|
||||
<div class="subtitle">{{page.description}}</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</a>
|
||||
{% endif %} {% endfor %}
|
||||
|
||||
</div>
|
||||
@ -111,19 +147,15 @@
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- State of the Open Home -->
|
||||
<a
|
||||
href="/blog/2024/04/24/state-of-the-open-home-2024/"
|
||||
class="material-card picture-promo"
|
||||
style="
|
||||
background-image: url(/images/frontpage/feature-sotoh2024.jpg);
|
||||
<a href="/blog/2025/04/16/state-of-the-open-home-recap/" class="material-card picture-promo" style="
|
||||
background-image: url(/images/frontpage/feature-sotoh2025.jpg);
|
||||
background-size: cover;
|
||||
padding-top: 55%;
|
||||
"
|
||||
>
|
||||
">
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
State of the Open Home 2024
|
||||
State of the Open Home 2025
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
Learn about our progress so far and also the roadmap for this year.
|
||||
@ -131,17 +163,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<!-- Assist -->
|
||||
<a
|
||||
class="material-card picture-promo picture-top"
|
||||
href="/voice_control/"
|
||||
style="
|
||||
<a class="material-card picture-promo picture-top" href="/voice_control/" style="
|
||||
background-image: url(/images/frontpage/feature-voice.jpg);
|
||||
background-size: cover;
|
||||
padding-bottom: 35%;
|
||||
"
|
||||
>
|
||||
">
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
@ -156,11 +184,8 @@
|
||||
</a>
|
||||
|
||||
<!-- Merch store -->
|
||||
<a
|
||||
class="material-card picture-promo"
|
||||
href="https://home-assistant-store.creator-spring.com/"
|
||||
style="background-image: url(/images/merchandise/shirt-frontpage.jpg)"
|
||||
>
|
||||
<a class="material-card picture-promo" href="https://home-assistant-store.creator-spring.com/"
|
||||
style="background-image: url(/images/merchandise/shirt-frontpage.jpg)">
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
@ -174,4 +199,4 @@
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<!-- Right content ends -->
|
||||
<!-- Right content ends -->
|
@ -2,7 +2,8 @@ Current transformer (CT) clamp sensors measure your energy usage by looking at t
|
||||
|
||||
- The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
|
||||
- You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started.
|
||||
- Using a Raspberry Pi, you can use a CT clamp HAT from LeChacal called [RPICT hats](https://lechacal.com/docs/RPICT/Raspberrypi_Current_and_Temperature_Sensor_Adaptor/). They can be stacked to expand the number of lines to monitor. They also provide Active, Apparent, and Reactive power and power factor for single-phase and three-phase installations. They integrate with Home Assistant using MQTT.
|
||||
|
||||
_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring and may require a licensed professional in some regions. Your qualified installer will know how to do this._
|
||||
|
||||
_Disclaimer: Some links in this section are affiliate links._
|
||||
_Disclaimer: Some links in this section are affiliate links._
|
||||
|
@ -32,6 +32,9 @@ Variants without pre-installed Home Assistant:
|
||||
- [ODROID-C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e)
|
||||
- [ODROID-M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e)
|
||||
- ODROID-M1S, [4 GB RAM](https://ameridroid.com/products/odroid-m1s?variant=47425396474135?ref=eeb6nfw07e) or [8 GB RAM](https://ameridroid.com/products/odroid-m1s?variant=47425396506903?ref=eeb6nfw07e)
|
||||
|
||||
Related components:
|
||||
|
||||
- [Power Supply](https://ameridroid.com/products/12v-2a-power-supply-plug?ref=eeb6nfw07e)
|
||||
- [CR2032 Coin Cell](https://ameridroid.com/products/rtc-bios-battery?ref=eeb6nfw07e)
|
||||
- [eMMC Module](https://ameridroid.com/products/emmc-module-n2-linux-red-dot?ref=eeb6nfw07e)
|
||||
@ -441,7 +444,7 @@ Minimum recommended assignments:
|
||||
|
||||
- title: VMware ESXi/vSphere
|
||||
content: |
|
||||
Use the “E1001” or “E1001E” virtual network adapter. There are confirmed mDNS/Multicast discovery issues when using VMware’s “VMXnet3” virtual network adapter.
|
||||
Use the `E1000` or `E1000E` virtual network adapter. There are confirmed mDNS/Multicast discovery issues when using VMware’s `VMXnet3` virtual network adapter.
|
||||
{% endif %}
|
||||
{% if page.installation_type == 'windows' %}
|
||||
- title: Hyper-V
|
||||
|
@ -10,7 +10,7 @@ Unless you really need this installation type, you should install Home Assistant
|
||||
|
||||
1. First make sure you understand the <a href="https://github.com/home-assistant/architecture/blob/master/adr/0014-home-assistant-supervised.md" target="_blank">requirements</a>.
|
||||
2. This installation method has very strict requirements, for example, it only
|
||||
supports Debian (and Ubuntu, Armbian, Raspberry Pi OS are **not**
|
||||
supports Debian (Ubuntu, Armbian, and Raspberry Pi OS are **not**
|
||||
supported). So, make sure you understand the requirements from step 1 above.
|
||||
3. Then head over to <a href="https://github.com/home-assistant/supervised-installer" target="_blank">home-assistant/supervised-installer</a> to set it up.
|
||||
|
||||
|
@ -26,29 +26,29 @@ This section explains how to generate a client ID and client secret on
|
||||
3. **Enable** the {{ api }}.
|
||||
4. Navigate to **APIs & Services** (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials).
|
||||
5. In the left sidebar, select **OAuth consent screen**.
|
||||
- Select **External** and **Create**.
|
||||
- Set the **App name** (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*.
|
||||
6. You then need to select a **Support email**.
|
||||
- From the dropdown menu, select your email address.
|
||||
7. Under **Developer contact information**, enter your email address (the same as above is fine).
|
||||
8. Scroll to the bottom and select **Save and continue**.
|
||||
- You don't have to fill out anything else here. Adding other information to this page (like an app logo) may trigger an additional review process from Google and delay setup by days.
|
||||
9. You will then be automatically taken to the **Scopes** page.
|
||||
- You do not need to add any scopes here. Select **Save and continue** to move to the **Test users** page.
|
||||
- You do not need to add anything to the **Test users** page. Select **Save and continue**, which will take you to the **Summary** page.
|
||||
- Select **Back to dashboard**.
|
||||
10. Select **OAuth consent screen** again and under **Publishing status**, select **Publish app**.
|
||||
- Otherwise your credentials will expire every 7 days.
|
||||
11. Make sure **Publishing status** is set to **In production**.
|
||||
12. In the left sidebar, select **Credentials**, then select **Create credentials** (at the top of the screen), then select **OAuth client ID**.
|
||||
13. Set the **Application type** to **Web application** and give this credential set a name (like "Home Assistant Credentials").
|
||||
14. Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**.
|
||||
- This is not a placeholder. It is the URI that must be used.
|
||||
15. You will then be presented with a pop-up saying **OAuth client created**, showing **Your client ID** and **Your client secret**.
|
||||
- Make a note of these (for example, copy and paste them into a text editor), as you will need them shortly.
|
||||
- Once you have noted these strings, select **OK**.
|
||||
- If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**.
|
||||
- To view both the **Client ID** and **Client secret**, select the pencil icon. This will take you to the settings page for these credentials, and the information will be on the right-hand side of the page.
|
||||
16. Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases your new credentials will be active within a few moments. However, Google states that activation may take up to five hours in some circumstances.
|
||||
|
||||
6. It will take you to the Overview page and ask for **Project Configuration**:
|
||||
- Complete the App Information:
|
||||
- Set the **App name** (the name of the application asking for consent) to anything you want, for example, *Home Assistant*.
|
||||
- For a **Support email**, choose your email address from the dropdown menu.
|
||||
- Click **Next**.
|
||||
- For Audience, select **External** then click **Next**.
|
||||
- Under Contact Information, enter your email address (the same as above is fine). Click **Next**.
|
||||
- Read the policy and check the box if you agree. Click **Continue**.
|
||||
- Click **Create**.
|
||||
7. In the left sidebar, select **Audience**:
|
||||
- Under **Publishing status > Testing**, select **Publish app**.
|
||||
> Otherwise, your credentials will expire every 7 days.
|
||||
8. In the left sidebar, select **Clients**:
|
||||
- Click **+ Create Client**.
|
||||
- For Application type, choose **Web Application** and give this client ID a name (like "Home Assistant Client").
|
||||
- Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**.
|
||||
> **Note**: This is not a placeholder. It is the URI that must be used.
|
||||
- Click **Create**.
|
||||
9. Find the client you just created. Under the Actions column, choose **Download OAuth client** (download icon), which will show you the **Client ID** and **Client Secret**.
|
||||
- Make a note of these (for example, copy and paste them into a text editor), as you will need them shortly.
|
||||
- Once you have noted these strings, select **Close**.
|
||||
- Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases, your new credentials will be active within a few minutes. However, Google states that activation may take up to five hours in some circumstances.
|
||||
> If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**.
|
||||
>
|
||||
> To view the **Client ID** and **Client Secret**, click the **Download OAuth client** (download icon) under the Actions column.
|
||||
{% enddetails %}
|
||||
|
@ -158,7 +158,7 @@ link to the blueprint on the [blueprints
|
||||
|
||||
## Data updates
|
||||
|
||||
The **My integration** integration fetches data from the device every 5 minutes by default.
|
||||
The **My integration** integration {% term polling polls %} data from the device every 5 minutes by default.
|
||||
Newer devices (the ones running MyOS) have the possibility to push data.
|
||||
In this case, pushing data is enabled when the integration is started. If enabling data push fails, the integration uses data {% term polling %}.
|
||||
|
||||
|
@ -108,7 +108,7 @@ actions:
|
||||
|
||||
- While this integration is configured for your device, you won't be able to use the official app, as only one connection at a time is supported.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -51,10 +51,20 @@ The integration will fetch data from each device. The following sensors are supp
|
||||
- PM10 density
|
||||
- Raw nitrogen
|
||||
- Raw total volatile organic compounds
|
||||
- Raw PM2.5
|
||||
- Signal strength
|
||||
- Temperature
|
||||
- Total volatile organic compounds index
|
||||
|
||||
A number of configuration entities are available as sensors to automate with if you control the device via the AirGradient dashboard instead of set it to control locally.
|
||||
- CO2 automatic baseline calibration days
|
||||
- NOx learning offset
|
||||
- Total volatile organic compounds learning offset
|
||||
- Data used for the LED bar
|
||||
- LED bar brightness
|
||||
- Display temperature unit
|
||||
- Display brightness
|
||||
|
||||
## Available configuration entities
|
||||
|
||||
The integration provides a few configuration entities to customize the device experience.
|
||||
@ -67,9 +77,15 @@ The following entities are supported:
|
||||
- Requesting CO2 calibration
|
||||
- Requesting LED bar test
|
||||
- Toggling sharing metrics with AirGradient
|
||||
- Configuration source
|
||||
- Data used for the LED bar
|
||||
- Display PM standard
|
||||
- CO2 automatic baseline calibration days
|
||||
- NOx learning offset
|
||||
- Total volatile organic compounds learning offset
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -396,7 +396,8 @@ alexa:
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
### Alexa locale <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Alexa locale
|
||||
|
||||
The `locale` should match the location and language used for your Amazon echo devices.
|
||||
|
||||
@ -421,7 +422,8 @@ The supported locales are:
|
||||
|
||||
See [List of Capability Interfaces and Supported Locales][alexa-supported-locales].
|
||||
|
||||
### Proactive events <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Proactive events
|
||||
|
||||
The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e., "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode:
|
||||
|
||||
@ -429,7 +431,8 @@ The `endpoint`, `client_id` and `client_secret` are optional, and are only requi
|
||||
- The `client_id` and `client_secret` are not the ones used by the skill that have been set up using "Login with Amazon" (in the [Alexa Developer Console][alexa-dev-console]: Build > Account Linking), but rather from the "Alexa Skill Messaging" (in the Alexa Developer Console: Build > Permissions > Alexa Skill Messaging). To get them, you need to enable the "Send Alexa Events" permission.
|
||||
- If the "Send Alexa Events" permission was not enabled previously, you need to unlink and relink the skill using the Alexa App, or else Home Assistant will show the following error: "Token invalid and no refresh token available. Also, you need to restart your Home Assistant after each disabling/enabling the skill in Alexa."
|
||||
|
||||
### Configure filter <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Configure filter
|
||||
|
||||
By default, no entity will be excluded. To limit which entities are being exposed to Alexa, you can use the `filter` parameter. Keep in mind that only [supported platforms](#supported-platforms) can be added.
|
||||
|
||||
@ -451,7 +454,8 @@ alexa:
|
||||
|
||||
See the [troubleshooting](#troubleshooting) if you're experiencing issues setting up the integration.
|
||||
|
||||
### Alexa Display Categories <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Alexa Display Categories
|
||||
|
||||
Configure a display category to override the display category and iconography each entity is shown in the Alexa app. This makes it easier to find and monitor devices.
|
||||
|
||||
@ -1103,13 +1107,15 @@ If the water heater entity supports on/off, use _"turn on"_ and _"turn off"_ utt
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Binary Sensor not available in Routine Trigger <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Binary Sensor not available in Routine Trigger
|
||||
|
||||
Binary Sensors with a [`device_class`](/integrations/binary_sensor/#device-class) attribute of `door` `garage_door` `opening` `window` `motion` `presense` are supported.
|
||||
|
||||
Use the [Entity Customization Tool](/docs/configuration/customizing-devices/#customization-using-the-ui) to override the `device_class` attribute to expose a `binary_sensor` to Alexa.
|
||||
|
||||
### Token Invalid and no Refresh Token Available <!-- omit in toc -->
|
||||
<!-- omit in toc -->
|
||||
### Token Invalid and no Refresh Token Available
|
||||
|
||||
Disable and re-enable the skill using the Alexa App; then restart Home Assistant.
|
||||
|
||||
|
@ -80,7 +80,7 @@ foreign_exchange:
|
||||
|
||||
## API information
|
||||
|
||||
Alpha Vantage offers two tiers of the API key, one free and one paid for. If you are using the free version, you will be limited to twenty-five queries per day. The sensor polls every 5 minutes, so you will only get data for the first two hours per day. This can be configured using the `scan_interval` variable.
|
||||
Alpha Vantage offers two tiers of the API key, one free and one paid for. If you are using the free version, you will be limited to twenty-five queries per day. The sensor polls every 5 minutes, so you will only get data for the first two hours per day. This can be configured using the `scan_interval` variable. To find the necessary symbols, you can use the search function of the API. For example, try [this SYMBOL_SEARCH query](https://www.alphavantage.co/query?function=SYMBOL_SEARCH&apikey=<your-api-key>&keywords=IBM).
|
||||
|
||||
The paid version starts at 75 queries per minute, increasing ticker quantity quite a bit.
|
||||
|
||||
|
@ -45,7 +45,7 @@ It exposes the following {% term sensors %} for each channel type:
|
||||
|
||||
- **Price** - Your current electricity price in $/kWh
|
||||
- **Forecast** - The forecasted prices for the next 12 hours
|
||||
- **Descriptor** - A description of the price. Useful if you want to create a Amber light that matches the app.
|
||||
- **Descriptor** - A description of the price. Useful if you want to create an Amber light that matches the app. Possible values: `extremely_low`, `very_low`, `low`, `neutral`, `high`, and `spike`.
|
||||
|
||||
There are two additional sensors:
|
||||
|
||||
|
@ -18,24 +18,41 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
[apcupsd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) is configured on the APC device.
|
||||
The **APC UPS Daemon** {% term integration %} is used to integrate with UPS devices from [APC](www.apc.com) when the Network Information Server ([apcupsd](http://www.apcupsd.org/)) is configured on the APC devices. Use case: When the Notify integration is set up in Home Assistant, you can send notifications. For example, when the UPS switches to battery power, or when the battery level drops low. You can also use it to track the UPS load.
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
## Supported devices
|
||||
|
||||
- [Binary sensor](#binary-sensor)
|
||||
- [Sensor](#sensors)
|
||||
Generally any device supported by [apcupsd](http://www.apcupsd.org/) is also supported by this integration. This includes most APC UPS models, such as Smart-UPS models and simple signaling models like Back-UPS models.
|
||||
|
||||
## Home Assistant add-on installation
|
||||
## Prerequisites
|
||||
|
||||
Install this [unofficial add-on](https://github.com/korylprince/hassio-apcupsd/) to use this integration with Home Assistant. Keep in mind that we can't give you support for this add-on.
|
||||
1. Install apcupsd.
|
||||
|
||||
After installation, follow the instructions on the GitHub page to configure the plugin. Then continue to follow the integration configurations below.
|
||||
First, install [apcupsd](http://www.apcupsd.org/) on the machine connected to your UPS. It works on Linux, macOS, Windows, BSD, Solaris, and more.
|
||||
You can usually install it through your operating system’s package manager.
|
||||
|
||||
|
||||
2. Configure apcupsd for network access.
|
||||
|
||||
- Open the `apcupsd.conf` file (usually found in `/etc/apcupsd/`) and make sure it’s set to listen for network connections.
|
||||
- Look for the lines: `NISIP 0.0.0.0` and `NISPORT 3551`.
|
||||
- This setting allows it to accept connections on all network interfaces on port 3551.
|
||||
- If you prefer, you can set this to a specific IP address and port that Home Assistant can reach.
|
||||
|
||||
3. Start the apcupsd service.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Host:
|
||||
description: "The IP address of the APC UPS Daemon configured above."
|
||||
Port:
|
||||
description: "The port of the APC UPS Daemon configured above."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% note %}
|
||||
|
||||
If you get `ConnectionRefusedError: Connection refused` errors in the Home Assistant logs, ensure the [apcupsd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses NISIP 0.0.0.0, else non-local addresses will not connect.
|
||||
If you get `ConnectionRefusedError: Connection refused` errors in the Home Assistant logs, it means that Home Assistant is not able to connect to the daemon. Please check if the `NISIP` is properly configured.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
@ -123,3 +140,17 @@ Some sensors are disabled by default, since they provide information that is onl
|
||||
- UPS Transfer from Battery (XOFFBAT)
|
||||
- UPS Transfer from Battery (XOFFBATT)
|
||||
- UPS Transfer to Battery (XONBATT)
|
||||
|
||||
## Data updates
|
||||
|
||||
The integration {% term polling polls %} data from your APC UPS Daemon every 60 seconds by default.
|
||||
|
||||
## Known limitations
|
||||
|
||||
This integration does not allow you to control the UPS. For example, you cannot run a self-test. To run a self-test, use the `aptest` command provided by [apcupsd](http://www.apcupsd.org/).
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -1,19 +1,50 @@
|
||||
---
|
||||
title: Apollo Automation
|
||||
description: Connect and control your Apollo Automation ESPHome devices using the ESPHome integration
|
||||
ha_release: '2025.3'
|
||||
ha_iot_class: Local Push
|
||||
description: Connect and control your Apollo Automation devices using the ESPHome integration
|
||||
ha_release: 0.85
|
||||
ha_category:
|
||||
- Sensor
|
||||
- Presence detection
|
||||
- Alarm
|
||||
- DIY
|
||||
- Update
|
||||
ha_domain: apollo_automation
|
||||
ha_integration_type: brand
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: esphome
|
||||
ha_supporting_integration: ESPHome
|
||||
ha_platforms:
|
||||
- sensor
|
||||
works_with:
|
||||
- local
|
||||
ha_codeowners:
|
||||
- '@OttoWinter'
|
||||
- '@jesserockz'
|
||||
- '@kbx81'
|
||||
- '@bdraco'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
- assist_satellite
|
||||
- binary_sensor
|
||||
- button
|
||||
- camera
|
||||
- climate
|
||||
- cover
|
||||
- date
|
||||
- datetime
|
||||
- diagnostics
|
||||
- event
|
||||
- fan
|
||||
- light
|
||||
- lock
|
||||
- media_player
|
||||
- number
|
||||
- select
|
||||
- sensor
|
||||
- switch
|
||||
- text
|
||||
- time
|
||||
- update
|
||||
- valve
|
||||
ha_iot_class: Local Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
[Apollo automation](https://apolloautomation.com/) is a member of the Made for ESPHome program.
|
||||
|
@ -53,6 +53,9 @@ The **APsystems** {% term integration %} allows you to read the data from your [
|
||||
| output_limit | number | Sets the max output of the inverter
|
||||
|
||||
|
||||
## Flash Endurance
|
||||
|
||||
There has been a discussion about the inverter's lifetime being shortened when using the `output_limit` setting excessively. APsystems officially confirmed this to me while also acknowledging that newer hardware versions don't have this issue, while older ones should be updated at most every 300 seconds. Newer inverters have a serial number starting with `Ex701` and thus aren't at risk of flash wear when setting the `output_limit` more frequently than every 300 seconds.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
@ -98,7 +98,7 @@ There are no known limitations for this integration.
|
||||
|
||||
There are no commonly known issues with this integration.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -10,7 +10,7 @@ ha_domain: azure_storage
|
||||
ha_codeowners:
|
||||
- '@zweckj'
|
||||
ha_integration_type: service
|
||||
ha_quality_scale: bronze
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
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.
|
||||
|
@ -11,8 +11,9 @@ ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_iot_class: Calculated
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: system
|
||||
ha_integration_type: service
|
||||
related:
|
||||
- docs: /common-tasks/general/#backups
|
||||
title: Backups
|
||||
@ -38,8 +39,9 @@ However, it is no longer needed to create your own automation. Follow these step
|
||||
### Action backup.create_automatic
|
||||
|
||||
The {% my developer_call_service service="backup.create_automatic" %} action can be used
|
||||
to create a backup of your Home Assistant instance, using the same settings as those used
|
||||
by [automatic backups](/common-tasks/general/#setting-up-an-automatic-backup-process).
|
||||
to create a backup of your Home Assistant instance.
|
||||
|
||||
The automation editor does not show a UI editor because the action uses the same settings you defined under {% my backup title="**Settings** > **System** > **Backups**" %}, under **Backup settings**. For a more detailed description, refer to the documentation on [automatic backups](/common-tasks/general/#setting-up-an-automatic-backup-process).
|
||||
|
||||
This action can be called to create backups with pre-defined settings at a more flexible
|
||||
schedule than the schedule which can be configured for automatic backups.
|
||||
@ -56,8 +58,13 @@ action: backup.create_automatic
|
||||
|
||||
The {% my developer_call_service service="backup.create" %} action can be used
|
||||
to create a backup of your Home Assistant instance.
|
||||
This action is only available in [core and container installations](/installation/#advanced-installation-methods).
|
||||
The action has no additional options or parameters.
|
||||
|
||||
- This action is only available in [core and container installations](/installation/#advanced-installation-methods).
|
||||
- The action has no additional options or parameters.
|
||||
- The backup will only be saved on the local storage.
|
||||
- The backup created with `backup.create` always includes the database.
|
||||
- The backup will be created without a password.
|
||||
|
||||
Example action:
|
||||
|
||||
```yaml
|
||||
|
@ -274,6 +274,14 @@ The Bluetooth integration supports receiving advertisement data from external ad
|
||||
|
||||
When adding multiple remote adapters to increase range or available connection slots, separate them enough to avoid interference with each other.
|
||||
|
||||
For development and testing of Bluetooth proxies, the Home Assistant Bluetooth integration team primarily uses the [Olimex ESP32-POE-ISO-EA](https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open-source-hardware) together with the [Olimex BOX-ESP32-POE-ISO-EA-F](https://www.olimex.com/Products/IoT/ESP32/BOX-ESP32-POE-ISO/). These devices are compatible with [ESPHome ready-made projects](https://esphome.io/projects/index.html).
|
||||
|
||||
{% tip %}
|
||||
- The `-EA` variant offers significantly better RF performance compared to the standard non-`EA` model.
|
||||
- If the `ESP32-POE-ISO-EA` is out of stock, the `ESP32-POE-ISO-EA-IND` is a good alternative.
|
||||
- The `ESP32-POE-ISO-WROVER-EA` model is **not recommended**, as it uses a different pin configuration and is not compatible with ESPHome ready-made projects.
|
||||
{% endtip %}
|
||||
|
||||
The following remote adapters are supported:
|
||||
|
||||
- [ESPHome](https://esphome.io/projects/?type=bluetooth)
|
||||
|
@ -14,6 +14,10 @@ ha_quality_scale: legacy
|
||||
|
||||
This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`.
|
||||
|
||||
{% important %}
|
||||
This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised, or Container.
|
||||
{% endimportant %}
|
||||
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
This platform requires `pybluez` to be installed. On Debian based installs, run
|
||||
|
@ -52,12 +52,12 @@ A sensor is provided per area that lists how many points are currently in a faul
|
||||
The primary means of authentication for the _Mode 2_ API is the _Automation_ passcode. It needs to be at least 10 characters long, and it is different from the _User_ code -- a shorter numeric pin used to arm/disarm the panel.
|
||||
The integration will prompt for the required passcodes, which depend on the panel type.
|
||||
|
||||
| Panel | Code |
|
||||
| --- | --- |
|
||||
| Solution | User [^2] |
|
||||
| Panel | Code |
|
||||
| -------- | ---------- |
|
||||
| Solution | User [^2] |
|
||||
| B Series | Automation |
|
||||
| G Series | Automation |
|
||||
| AMAX | Both |
|
||||
| AMAX | Both |
|
||||
|
||||
[^2]: The user needs to have the "master code functions" authority if you wish to interact with history events.
|
||||
|
||||
@ -65,18 +65,95 @@ The integration will prompt for the required passcodes, which depend on the pane
|
||||
Since the _Mode 2_ automation user has "superuser" privileges, it bypasses the regularly configured alarm pin: you will _not_ be prompted for a _User_ code when arming/disarming through the integration.
|
||||
{% endimportant %}
|
||||
|
||||
If your authentication changes, the integration will automatically prompt you to enter the new credentials.
|
||||
## Data updates
|
||||
|
||||
## Reconfiguration
|
||||
|
||||
This integration supports reconfiguration, so it is possible to change the configuration such as the IP Address after it is configured.
|
||||
The **Bosch Alarm** {% term integration %} fetches data from the device every 30 seconds.
|
||||
Newer devices and firmware revisions have the possibility to push data instead of needing to rely on {% term polling %}.
|
||||
At startup, the integration checks whether your panel supports push data updates and falls back to {% term polling %} if not.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Diagnostics information
|
||||
### Issues with Bosch Solution 2000/3000/4000 panels
|
||||
|
||||
Consider uploading [the diagnostics file](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics) along with your issue report to allow faster triaging and pinpointing the issue.
|
||||
The information contained in the generated diagnostics file is redacted to avoid any sensitive information while still remaining useful for developers to fix the issue.
|
||||
We have found that some panels end up with a configuration on them that is incompatible with the integration.
|
||||
When this happens, you will get a connection error when attempting to communicate with the panel, even if the credentials are correct.
|
||||
If you continue to have connection errors even after rebooting your panel, then you have an issue with your configuration.
|
||||
The easiest way to solve this is to follow the full reset and restore procedure outline below.
|
||||
|
||||
#### Resetting the configuration and restoring the integration
|
||||
|
||||
1. Update firmware (Recommended).
|
||||
1. Download and install the latest firmware for the control panel and IP module from the Bosch Security website.
|
||||
2. Back up the existing configuration.
|
||||
1. Connect to the panel via A-Link Plus.
|
||||
2. Perform an upload of the panel configuration.
|
||||
3. Save the configuration to your computer.
|
||||
3. Default the control panel.
|
||||
1. Press the default/reset button on the panel.
|
||||
2. Use installer code 1234.
|
||||
3. Set:
|
||||
1. Location 0081 = 3 (Enables IP module mode)
|
||||
2. Location 4456 = 4 (Enables RSC+ communication)
|
||||
4. Set date and time using master code `25806#`.
|
||||
4. Initial Home Assistant test.
|
||||
1. Wait 2 to 5 minutes after resetting the panel.
|
||||
2. Set up the integration on the panel using its IP address.
|
||||
3. Home Assistant should connect using default configuration and show panel status.
|
||||
5. Restore your original configuration.
|
||||
1. Reconnect to the panel using A-Link Plus.
|
||||
2. Modify zones, outputs, and user codes to match the original setup.
|
||||
3. Save and download the updated config to the panel.
|
||||
4. Wait 2 to 5 minutes.
|
||||
6. Reconnect to Home Assistant.
|
||||
1. Open Home Assistant.
|
||||
2. The integration should now detect the updated configuration.
|
||||
3. All relevant entities (zones, partitions, outputs) should appear automatically.
|
||||
|
||||
#### Restarting a panels network stack
|
||||
|
||||
We have found that the Solution panels have a bug where they can get into a state where the network module stops letting us use the _Mode 2_ API.
|
||||
If your configuration information is correct, but you are still unable to connect to your panel, then you are likely encountering this bug.
|
||||
This can be resolved by restarting the network modules, which can be done with the following steps.
|
||||
|
||||
##### Resetting network module 1
|
||||
|
||||
Using the codepad, enter your master code, followed by the `[9][4][1]` and `[#]` keys.
|
||||
|
||||
##### Resetting network module 2
|
||||
|
||||
Using the codepad, enter your master code, followed by the `[9][4][2]` and `[#]` keys.
|
||||
|
||||
### Issues with the Bosch B/G Series (B3512/B4512/B5512/B8512/B9512)
|
||||
|
||||
The following procedure can be used to configure the panel correctly so that it will work with the integration.
|
||||
|
||||
#### Panel configuration procedure
|
||||
|
||||
1. Update Firmware (Recommended).
|
||||
1. Use RPS to update the control panel and B426 (IP module if used) to the latest firmware.
|
||||
2. Download firmware from the Bosch Security website.
|
||||
2. Set IP Address.
|
||||
1. Configure the panel’s IP settings using RPS or via the codepad.
|
||||
2. Use DHCP for initial setup (optional), or assign a static IP.
|
||||
3. Configure the automation device.
|
||||
1. In RPS:
|
||||
1. Set **Automation Device** to **Mode 2** (Bosch Standard Protocol).
|
||||
2. Set your automation passcode (used for Home Assistant authentication).
|
||||
4. Wait for changes to apply.
|
||||
1. Wait 2 to 5 minutes for the panel to reboot and apply settings.
|
||||
5. Connect to Home Assistant.
|
||||
1. Set up the integration using the panel’s IP address.
|
||||
2. Enter the automation passcode in the Home Assistant configuration.
|
||||
3. Home Assistant should connect and display panel status, zones, and partitions.
|
||||
|
||||
#### TLS issues
|
||||
|
||||
Some older firmwares for these panels use outdated certificates that are no longer trusted by Home Assistant. If you have issues connecting and see a TLS error in your logs, update the firmware on your panel.
|
||||
|
||||
## Known limitations
|
||||
|
||||
- The integration does not allow you to configure the panel; you can instead do this via the panel's configuration utility.
|
||||
- Some older firmware versions for the Solution / AMAX series panels only support a single connection at a time. If you try to have a cloud connection and use the integration on these panels simultaneously, the panel's network stack can lock up, and the integration will stop working.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
|
@ -218,7 +218,7 @@ The **Bring!** integration relies on an active internet connection to communicat
|
||||
|
||||
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
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -30,12 +30,14 @@ ha_integration_type: hub
|
||||
|
||||
The **Comelit SimpleHome** {% term integration %} allows you to control your [Comelit home automation devices](https://comelitgroup.it/installatore/offerta/home-building-automation/).
|
||||
|
||||
The integration provides information on connected devices and enables control of the alarm system.
|
||||
|
||||
## Supported devices
|
||||
|
||||
There is support for the following platform types within Home Assistant:
|
||||
There is support for the following devices within Home Assistant:
|
||||
|
||||
- **Comelit Serial Bridge** - allows local control for light, cover, irrigation, climate, humidifier/dehumidifier and "other" devices; creates power sensors.
|
||||
- **Comelit VEDO System** - allows local control of the alarm system.
|
||||
- **Comelit Serial Bridge**
|
||||
- **Comelit VEDO System**
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
@ -55,6 +57,47 @@ There is support for the following platform types within Home Assistant:
|
||||
description: Comelit VEDO System.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Examples
|
||||
|
||||
### Automation: Activate the alarm when you leave home
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Arm alarm away"
|
||||
id: "arm_alarm_away"
|
||||
triggers:
|
||||
- platform: state
|
||||
entity_id: person.simone
|
||||
to: "not_home"
|
||||
actions:
|
||||
- action: alarm_control_panel.alarm_arm_away
|
||||
target:
|
||||
entity_id: alarm_control_panel.home
|
||||
data:
|
||||
code: "12345"
|
||||
```
|
||||
|
||||
### Automation: Close the covers at sunset if you are not at home
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: Close covers at sunset
|
||||
id: "covers_close_sunset"
|
||||
trigger:
|
||||
- platform: sun
|
||||
event: sunset
|
||||
condition:
|
||||
conditions:
|
||||
- alias: "condition alias (not home)"
|
||||
condition: state
|
||||
entity_id: group.person_family
|
||||
state: "not_home"
|
||||
action:
|
||||
entity_id:
|
||||
- cover.group_home_covers
|
||||
service: cover.close_cover
|
||||
```
|
||||
|
||||
## Data updates
|
||||
|
||||
This integration {% term polling polls %} data from the device every 5 seconds by default.
|
||||
@ -63,9 +106,37 @@ This integration {% term polling polls %} data from the device every 5 seconds b
|
||||
|
||||
The **Comelit SimpleHome** {% term integration %} provides the following entities:
|
||||
|
||||
### Alarm control panel
|
||||
### Comelit Serial Bridge
|
||||
|
||||
The integration will create an alarm entity for each area. Additionally, it will create a sensor and a presence detection binary sensor for each zone, enhancing monitoring capabilities.
|
||||
- Climate
|
||||
- Cover
|
||||
- Dehumidifier
|
||||
- Humidifier
|
||||
- Light
|
||||
- Sensor - power consumption
|
||||
- Switch - irrigation and sockets (other)
|
||||
|
||||
### Comelit VEDO System
|
||||
|
||||
- Alarm control panel - per area
|
||||
- Binary sensor - per zone presence detection
|
||||
- Sensor - per zone status
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Can’t set up the device
|
||||
|
||||
#### Symptom: "Cannot connect"
|
||||
|
||||
When trying to set up the integration, the form shows the message "Cannot connect".
|
||||
|
||||
##### Description
|
||||
|
||||
This means that the IP address or the port specified is wrong.
|
||||
|
||||
##### Resolution
|
||||
|
||||
To resolve this issue, verify the device’s IP address and port by navigating to them in a web browser.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
|
@ -23,6 +23,8 @@ The **Control4** {% term integration %} allows you to control and monitor lights
|
||||
|
||||
Before setting up, you should assign a static IP address/DHCP reservation on your router to your Control4 controller. Home Assistant must be able to communicate with the controller over the local network; 4Sight remote access is not supported.
|
||||
|
||||
The username and password required for this integration are the same credentials you use to log in to the Control4 site at [https://my.control4.com/](https://my.control4.com/).
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Options
|
||||
|
@ -111,7 +111,7 @@ The Home Assistant to-do list interface allows both renaming items and changing
|
||||
|
||||
The Cookidoo integration fetches data from the device every 90 seconds by default.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -45,7 +45,9 @@ There is currently support for the following device types within Home Assistant:
|
||||
|
||||
{% note %}
|
||||
|
||||
- The integration for BRP072Cxx and SKYFi based units need API-key / password respectively. The API-key/password can be found on a sticker under the front cover. The other models are auto detected and the API-key and password field must be left empty.
|
||||
- BRP072Cxx adapters require an API key to be entered, which is labelled "KEY" on the device sticker alongside SSID, MAC, and S/N. Password should be left blank.
|
||||
- SKYFi-based units require a password to be entered. API key should be left blank.
|
||||
- Other models are auto-detected and the API key and password fields must be left blank.
|
||||
- BRP084Cxx firmware update from 1.19.0 to 2.8.0 breaks local API there is however ongoing work in fixing local API support again.
|
||||
|
||||
{% endnote %}
|
||||
|
@ -66,6 +66,7 @@ Known supported devices:
|
||||
- Denon AVR-3313CI
|
||||
- Denon AVR-4810
|
||||
- Denon AVR-E300
|
||||
- Denon AVR-E400
|
||||
- Denon AVR-S650H
|
||||
- Denon AVC-S660H
|
||||
- Denon AVR-S710W
|
||||
|
@ -10,7 +10,7 @@ ha_codeowners:
|
||||
- '@Jc2k'
|
||||
---
|
||||
|
||||
The `eafm` integration offers integration with the [UK Environment Agency Flood Monitoring](https://flood-warning-information.service.gov.uk/) API to provide sensors for nearby water levels. Combined with Home Assistant notifications, you could give yourself a warning if a nearby river was likely to flood your local cycle path or the only road out of your village.
|
||||
The `eafm` integration offers integration with the [UK Environment Agency Flood Monitoring](https://environment.data.gov.uk/flood-monitoring/doc/reference) API to provide sensors for nearby water levels. Combined with Home Assistant notifications, you could give yourself a warning if a nearby river was likely to flood your local cycle path or the only road out of your village.
|
||||
|
||||
{% important %}
|
||||
|
||||
@ -22,6 +22,6 @@ The UK Environment Agency Flood Monitoring only provides data for England - Nort
|
||||
|
||||
Home Assistant offers the flood monitoring integration through **Settings** -> **Devices & services** -> **Environment Agency Flood Gauges**.
|
||||
|
||||
You will be prompted to select a monitoring station. You can find the name of nearby monitoring stations on the Flood information service [website](https://flood-warning-information.service.gov.uk/river-and-sea-levels).
|
||||
You will be prompted to select a monitoring station. You can find the name of nearby monitoring stations on the Flood information service [website](https://check-for-flooding.service.gov.uk/river-and-sea-levels).
|
||||
|
||||
Sensors for that monitoring station should then appear in your Home Assistant instance.
|
||||
|
@ -92,6 +92,10 @@ Fetches the hourly prices for gas.
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the easyEnergy actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Response data
|
||||
|
||||
The response data is a dictionary with the gas timestamps and prices as string and float values.
|
||||
@ -122,6 +126,10 @@ Fetches the hourly prices for energy that you use (buy).
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the easyEnergy actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Response data
|
||||
|
||||
The response data is a dictionary with the energy timestamps as strings and prices as float values.
|
||||
@ -151,6 +159,10 @@ Fetches the hourly prices for energy that you return (sell).
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices from. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the easyEnergy actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Response data
|
||||
|
||||
The response data is a dictionary with the energy timestamps as strings and prices as float values.
|
||||
|
@ -39,4 +39,8 @@ The integration will display a Server IP / Host Name, Path, and Port. You can in
|
||||
- Enter the Server IP / Host Name, Path, and Port from the integration.
|
||||
- Save
|
||||
|
||||
Ecowitt doesn't support TLS/SSL, you can use the NGINX TLS Proxy Add-on to support HTTPS and HTTP at the same time.
|
||||
## TLS/SSL limitations
|
||||
|
||||
Ecowitt devices do not support TLS/SSL connections (HTTPS). If your Home Assistant instance is configured to use HTTPS only, the Ecowitt integration will not work properly. You must ensure your Home Assistant instance is accessible via HTTP (non-secure) for the Ecowitt devices to successfully send data.
|
||||
|
||||
If you're using SSL/TLS for your Home Assistant instance, you'll need to configure your setup to accept both secure (HTTPS) and non-secure (HTTP) connections. This can typically be done by adjusting your reverse proxy configuration or by using the NGINX Home Assistant add-on which can handle both HTTP and HTTPS traffic simultaneously.
|
||||
|
@ -15,7 +15,7 @@ related:
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This `edimax` switch {% term integration %} allows you to control the state of your [Edimax](https://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches.
|
||||
This Edimax {% term integration %} allows you to control the state of your [Edimax](https://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches.
|
||||
|
||||
To use your Edimax switch in your installation, add the following to your {% term "`configuration.yaml`" %} file.
|
||||
{% include integrations/restart_ha_after_config_inclusion.md %}
|
||||
@ -48,25 +48,3 @@ name:
|
||||
default: Edimax Smart Plug
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
## Power consumption sensor
|
||||
|
||||
Starting with [version 2 of the firmware](https://www.edimax.com/edimax/download/download/data/edimax/global/download/), the Edimax switches can also report the current and accumulated daily power consumption in their state objects. Use a [template sensor](/integrations/template) to extract their values:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
template:
|
||||
- sensor:
|
||||
- name: Edimax Current power consumption
|
||||
unit_of_measurement: "W"
|
||||
state: "{{ state_attr('switch.edimax_smart_plug', 'current_power_w') | default(0, true) }}"
|
||||
|
||||
- name: Edimax Accumulated daily power consumption
|
||||
unit_of_measurement: "kWh"
|
||||
state: "{{ state_attr('switch.edimax_smart_plug', 'today_energy_kwh') | default(0, true) }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Note that if the smart plug is off, these states report the string `None`. By using a `replace()` in the template, these sensors report purely numerical values.
|
||||
|
@ -20,6 +20,7 @@ Compatible transceivers:
|
||||
|
||||
- [DIY](https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-rs232-ausgang)
|
||||
- [Weidmann Elektronik Schreib-/Lesekopf USB](https://shop.weidmann-elektronik.de/index.php?page=product&info=24)
|
||||
- [Wattwächter](https://www.smartcircuits.de)
|
||||
|
||||
Tested smart meters:
|
||||
|
||||
@ -29,6 +30,7 @@ Tested smart meters:
|
||||
- EMH metering eHZ Generation K (enable InF as described in manual to retrieve full data)
|
||||
- efr SGM-C4 (enable InF as described in manual to retrieve full data)
|
||||
- easymeter Q3 ([Link](https://www.easymeter.com/products/zaehler/q3a))
|
||||
- EBZ DD3 (tested version: DD3 2R06 DTA - SMZ1)
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -72,7 +72,7 @@ Currently, the following devices and entities are supported:
|
||||
|
||||
Support for additional EHEIM Digital devices and entities will be added in future updates.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -70,7 +70,7 @@ actions:
|
||||
{% endraw %}
|
||||
{% enddetails %}
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -81,6 +81,10 @@ Fetches the gas prices. The `config_entry` value be found using the **Actions**
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the EnergyZero actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Response data
|
||||
|
||||
The response data is a dictionary with the gas timestamps and prices as string and float values.
|
||||
@ -116,6 +120,10 @@ Fetches the energy prices. The `config_entry` value be found using the **Actions
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the EnergyZero actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Response data
|
||||
|
||||
The response data is a dictionary with the energy timestamps and prices as string and float values.
|
||||
|
@ -90,7 +90,7 @@ There are two possible solutions to resolve this problem:
|
||||
If you choose to enable VPN access without authentication, ensure your network is properly secured as OpenWebif is not designed for publicly facing the internet.
|
||||
{% endnote %}
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -46,16 +46,111 @@ works_with:
|
||||
- local
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This integration allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html).
|
||||
|
||||
ESPHome is a firmware generator and configuration system that enables the transformation of microcontrollers into fully customizable smart home devices. Using a simple YAML configuration file, ESPHome allows users to define hardware components like sensors, actuators, and peripherals. These configurations are then compiled into custom firmware that can be flashed onto the target device.
|
||||
|
||||
### Key Features
|
||||
- **YAML Configuration**: Specify hardware components, sensors, actuators, and integrations using a clean and straightforward YAML syntax.
|
||||
- **Custom Firmware Generation**: ESPHome compiles the provided configuration into a highly optimized, device-specific firmware image that is ready to be flashed onto microcontrollers.
|
||||
- **Seamless Integration**: After flashing, ESPHome devices can integrate seamlessly with Home Assistant using the ESPHome native API. This documentation page focuses on the [native API](https://esphome.io/components/api.html), which allows devices to communicate directly with Home Assistant for real-time automation and monitoring. For other integrations, such as MQTT or HTTP, please refer to the relevant sections of the [ESPHome documentation](https://esphome.io/).
|
||||
|
||||
ESPHome supports a variety of microcontrollers beyond just the ESP family. These include:
|
||||
|
||||
- **ESP32**: A powerful microcontroller with Wi-Fi and Bluetooth capabilities.
|
||||
- **ESP8266**: A low-cost microcontroller with Wi-Fi support.
|
||||
- **BK72xx**: A series of microcontrollers from Beken, commonly used in smart home applications.
|
||||
- **RP2040**: A microcontroller developed by Raspberry Pi, known for its flexibility and cost-effectiveness.
|
||||
- **RTL87xx**: A series of microcontrollers from Realtek, supporting various wireless communication protocols.
|
||||
|
||||
For a list of officially supported microcontrollers and devices, refer to the [ESPHome device database](https://devices.esphome.io/). Keep in mind that this database represents only a portion of the ecosystem—many other devices and peripherals are supported but may not appear in the database.
|
||||
|
||||
For inspiration and examples of complete, ready-to-use configurations, check out the [ESPHome ready-made projects](https://esphome.io/projects/index.html). These include setups like [Bluetooth proxies](https://esphome.io/components/bluetooth_proxy.html), which can extend the [Bluetooth](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) range of Home Assistant.
|
||||
|
||||
If you're looking for pre-built solutions, the [Voice PE](https://www.home-assistant.io/voice-pe/) is an excellent example. It's a pre-built voice assistant device powered by ESPHome, offering an easy way to integrate voice control into your Home Assistant system. Many pre-built solutions, like the Voice PE, are open-source and can be customized, giving you flexibility to adapt them to your needs.
|
||||
|
||||
For detailed information on configuring unsupported or custom devices, consult the official [ESPHome documentation](https://esphome.io/), which provides in-depth guides on expanding and customizing your setup beyond the pre-configured devices.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Home Assistant actions
|
||||
### Required manual input
|
||||
|
||||
ESPHome devices can perform actions to any [Home Assistant action](https://esphome.io/components/api.html#homeassistant-service-action). This functionality is not enabled by default for newly configured device, but can be turned on the options flow on a per device basis.
|
||||
To configure an ESPHome device, enter the following information:
|
||||
|
||||
{% configuration_basic %}
|
||||
|
||||
host:
|
||||
description: "IP address or hostname of the ESPHome device. <br> This will be pre-filled if the device was auto-discovered."
|
||||
port:
|
||||
description: "Port used by the ESPHome native API (default: 6053). <br> This will be pre-filled if the device was auto-discovered."
|
||||
noise_psk:
|
||||
description: "The pre-shared key used for encryption. <br> This is a 32‑byte base64‑encoded string. Leave blank if native encryption is not enabled."
|
||||
password:
|
||||
description: "Device password (deprecated). <br> Use a Noise PSK (encryption key) instead – password support will be removed in a future release."
|
||||
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
For more information, see the [ESPHome Native API Component documentation](https://esphome.io/components/api.html).
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows the standard integration removal process; no extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
These options are disabled by default and not required—only set them if specifically needed.
|
||||
|
||||
{% configuration_basic %}
|
||||
Allow the device to perform Home Assistant actions:
|
||||
description: "No/Yes <br> When enabled, ESPHome devices can perform Home Assistant actions, such as calling services or sending events. Only enable this if you trust the device."
|
||||
Subscribe to logs from the device:
|
||||
description: "No/Yes <br> When enabled, the device will send logs to Home Assistant and you can view them in the logs panel."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Supported devices
|
||||
|
||||
The ESPHome integration works with devices that run ESPHome firmware and expose their functionality through the [native ESPHome API](https://esphome.io/components/api.html). This API is designed for tight, efficient integration with Home Assistant, enabling ESPHome devices to push updates directly to Home Assistant in **near real time**.
|
||||
|
||||
## Updating data
|
||||
|
||||
Rather than polling for sensor values or device states, Home Assistant maintains a persistent connection to each ESPHome device using the native API. This allows state changes—such as a temperature sensor update, a button press, or a binary sensor trigger—to be sent immediately as they happen, reducing latency and improving responsiveness in automations.
|
||||
|
||||
### Additional Technical Details
|
||||
- **Efficient Communication Protocol**: ESPHome uses a lightweight, bi-directional protocol over TCP, optimized for microcontrollers. This protocol is implemented in [aioesphomeapi](https://github.com/esphome/aioesphomeapi), the async Python library used by Home Assistant to handle real-time communication with ESPHome devices. It enables low-latency updates and near instant command execution.
|
||||
- **Automatic Reconnection**: Home Assistant maintains a persistent connection to each ESPHome device and will automatically attempt to reconnect if the connection is lost. This includes support for "sleepy" or battery-powered devices that periodically wake from deep sleep. When such a device comes online, Home Assistant quickly re-establishes the connection—especially when **mDNS** (Multicast DNS) is available—allowing the device to be discovered and connected without requiring static IPs or manual configuration.
|
||||
|
||||
This real-time behavior enables fast, reactive automations and a smooth user experience compared to traditional polling-based integrations.
|
||||
|
||||
## Supported Functionality
|
||||
|
||||
### Entities
|
||||
|
||||
The available entities depend on the components defined in the ESPHome YAML configuration for each device. These entities are exposed through the [Native API Component](https://esphome.io/components/api.html).
|
||||
|
||||
### Firing Events on the Home Assistant Event Bus
|
||||
|
||||
When using the native API with Home Assistant, you can trigger events on the Home Assistant event bus directly from ESPHome. For more details, see the [homeassistant.event Action](https://esphome.io/components/api.html#homeassistant-event-action).
|
||||
|
||||
### Actions
|
||||
|
||||
Each device can define Home Assistant Actions based on its ESPHome YAML configuration. For more information, refer to the [Actions](https://esphome.io/components/api.html#actions) section in the [Native API Component](https://esphome.io/components/api.html) documentation.
|
||||
|
||||
### Retrieving Data from Home Assistant
|
||||
|
||||
ESPHome can retrieve the state of Home Assistant entities using the [Native API](https://esphome.io/components/api.html) with [User-Defined Actions](https://esphome.io/components/api.html#user-defined-actions).
|
||||
|
||||
### Home Assistant Actions
|
||||
|
||||
ESPHome devices can call any [Home Assistant Action](https://esphome.io/components/api.html#homeassistant-service-action). This feature is not enabled by default for newly added devices but can be enabled through the options flow on a per-device basis.
|
||||
|
||||
### Tag Scanning Support
|
||||
|
||||
The [Native API Component](https://esphome.io/components/api.html) also supports sending tag scan events to Home Assistant. See the [homeassistant.tag_scanned Action](https://esphome.io/components/api.html#homeassistant-tag-scanned-action) for more information.
|
||||
|
||||
## Entity naming and IDs
|
||||
|
||||
- Entity name is a combination of the friendly name (or name if unset) and component name
|
||||
@ -86,7 +181,22 @@ sensor:
|
||||
|
||||
The entity will be named `livingroomdesk Temperature` and will default to having an entity ID of `sensor.livingroomdesk_temperature`.
|
||||
|
||||
## Obtaining logs from the device
|
||||
## Troubleshooting
|
||||
|
||||
### Viewing Live Logs
|
||||
|
||||
To troubleshoot your ESPHome devices, you can easily view live logs, whether you're using the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon) or the **ESPHome CLI**. The logs contain detailed information such as Wi-Fi connection status, errors, and debug messages, which can help you identify and resolve issues with your device.
|
||||
|
||||
#### Using the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon)
|
||||
1. In the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon) add-on, find the device you're working with.
|
||||
2. Click the **LOGS** button to open the log view.
|
||||
|
||||
#### Using the **ESPHome CLI**
|
||||
If you're using the **ESPHome CLI**, follow the instructions for the [logs Command](https://esphome.io/guides/cli.html#logs-command) to access the logs.
|
||||
|
||||
### Obtaining Logs from the Device
|
||||
|
||||
If you want the device to send logs without requiring you to be actively monitoring, follow these steps:
|
||||
|
||||
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.
|
||||
@ -101,41 +211,8 @@ The entity will be named `livingroomdesk Temperature` and will default to having
|
||||
homeassistant.components.esphome: debug
|
||||
```
|
||||
|
||||
## Reconfiguration and Device Replacement
|
||||
## Known Limitations
|
||||
|
||||
This integration supports reconfiguration, allowing you to make changes—such as updating the IP address—even after a device has already been set up.
|
||||
Each ESPHome device must have a **unique name**. This name is important for mDNS announcements, ensuring that the device can be properly discovered, quickly reconnected when it comes online or wakes from deep sleep (for devices that support deep sleep), and correctly linked to the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon). It's also crucial for **DHCP discovery** if mDNS is not available.
|
||||
|
||||
### Name Conflict Resolution
|
||||
|
||||
If Home Assistant detects multiple devices with the same [**name**](https://esphome.io/components/esphome.html#configuration-variables), it will automatically initiate **Name Conflict Resolution**. This process is designed to help you seamlessly replace a failed or retired device with new hardware, while preserving your existing configuration if desired.
|
||||
|
||||
This process gives you two options:
|
||||
|
||||
- **Migrate**: Transfers the existing entity configuration to the new device. This preserves all your settings, entity names, and history. Use this when you're replacing the hardware but keeping the same YAML configuration.
|
||||
- **Overwrite**: Replaces the existing configuration with the new device.
|
||||
**Caution:** This will **erase all existing settings** for the old device including entity names, customizations, and history will be lost. Use this only if the new device is completely different and you don’t need anything from the previous setup.
|
||||
|
||||
{% tip %}
|
||||
If you’re using the same YAML file on the new device, choose **Migrate**. If it’s a totally different device (even if it shares the same name), **Overwrite** is the safer option.
|
||||
{% endtip %}
|
||||
|
||||
---
|
||||
|
||||
### Requirements for Name Conflict Resolution
|
||||
|
||||
To trigger Name Conflict Resolution, all of the following must be true:
|
||||
|
||||
- The new device must be running **ESPHome 2025.4.0 or later**.
|
||||
- The new device must use the same [**name**](https://esphome.io/components/esphome.html#configuration-variables) (not just the friendly name).
|
||||
- The original (old) device must be **offline**.
|
||||
|
||||
---
|
||||
|
||||
### How to Trigger Name Conflict Resolution
|
||||
|
||||
You can trigger Name Conflict Resolution in several ways:
|
||||
|
||||
- Connecting a new device with the same name and a **static IP address** will automatically launch a repair flow.
|
||||
- Using the **Reconfigure** option in the UI to point to a different IP that hosts a device with the same name.
|
||||
- Configuring a **newly discovered device** that uses the same name.
|
||||
- **Manually adding** a device with the same name via the integration setup.
|
||||
Using duplicate names can lead to connection issues, failed discovery, and unexpected behavior with both the integration and the add-on.
|
||||
|
@ -15,7 +15,7 @@ ha_iot_standard: matter
|
||||
ha_brand: true
|
||||
---
|
||||
|
||||
[Eve](https://www.evehome.com/) is a manufacturer of Matter products.
|
||||
[Eve](https://www.evehome.com/) is a member of the Works with Home Assistant partner program for their Matter products. Eve is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
Eve Matter devices work locally and integrate seamlessly with the Matter integration in Home Assistant. As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
|
||||
@ -25,13 +25,13 @@ Eve Matter devices work locally and integrate seamlessly with the Matter integra
|
||||
|
||||
The following devices are supported:
|
||||
|
||||
- [Door & Window](https://www.evehome.com/en/eve-door-window)
|
||||
- [Energy Outlet](https://www.evehome.com/en/eve-energy-outlet)
|
||||
- [Energy Outdoor](https://www.evehome.com/en/eve-energy-outdoor)
|
||||
- [Energy](https://www.evehome.com/en/eve-energy)
|
||||
- [Light Switch](https://www.evehome.com/en/eve-light-switch)
|
||||
- [Dimmer Switch](https://www.evehome.com/en/eve-dimmer-switch)
|
||||
- [Motion](https://www.evehome.com/en/eve-motion)
|
||||
- [MotionBlinds](https://www.evehome.com/en/eve-blinds-collection)
|
||||
- [Thermo](https://www.evehome.com/en/eve-thermo)
|
||||
- [Weather](https://www.evehome.com/en/eve-weather)
|
||||
- [Eve Door & Window](https://www.evehome.com/en/eve-door-window)
|
||||
- [Eve Energy Outlet](https://www.evehome.com/en/eve-energy-outlet)
|
||||
- [Eve Energy Outdoor](https://www.evehome.com/en/eve-energy-outdoor)
|
||||
- [Eve Energy](https://www.evehome.com/en/eve-energy)
|
||||
- [Eve Light Switch](https://www.evehome.com/en/eve-light-switch)
|
||||
- [Eve Dimmer Switch](https://www.evehome.com/en/eve-dimmer-switch)
|
||||
- [Eve Motion](https://www.evehome.com/en/eve-motion)
|
||||
- [Eve MotionBlinds](https://www.evehome.com/en/eve-blinds-collection)
|
||||
- [Eve Thermo](https://www.evehome.com/en/eve-thermo)
|
||||
- [Eve Weather](https://www.evehome.com/en/eve-weather)
|
||||
|
@ -12,8 +12,8 @@ ha_platforms:
|
||||
- event
|
||||
ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
- docs: /common-tasks/general/#defining-a-custom-polling-interval
|
||||
title: Defining a custom polling interval
|
||||
ha_codeowners:
|
||||
- '@mib1185'
|
||||
---
|
||||
@ -22,9 +22,23 @@ Add an RSS/Atom feed reader that polls feeds every hour and sends new entries in
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
URL:
|
||||
description: The URL of the RSS/Atom feed you want to integrate.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Maximum feed entries:
|
||||
description: The maximum number of entries to extract from each feed.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Usage
|
||||
|
||||
Feedreader events can be used out of the box to trigger automation actions, e.g.:
|
||||
### Automation
|
||||
|
||||
Feedreader events can be used out of the box to {% term trigger %} automation actions, e.g.:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
@ -58,18 +72,28 @@ automation:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Any field under the `<entry>` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry.
|
||||
The `trigger.event.data` variable contains at least the following keys, there might be more depending on the data the configured feed is providing.
|
||||
|
||||
### Event
|
||||
| Key | Description |
|
||||
| --- | --- |
|
||||
| `trigger.event.data.link` | The URL to this feed entry. |
|
||||
| `trigger.event.data.title` | The title of this feed entry. |
|
||||
| `trigger.event.data.description` | The description of this feed entry. |
|
||||
| `trigger.event.data.content` | The content of this feed entry. |
|
||||
|
||||
An event entity will be created for each configured feed which always represents the latest entry of the feed.
|
||||
### Event entity
|
||||
|
||||
An {% term "Event entity" %} entity will be created for each configured feed which always represents the latest entry of the feed.
|
||||
|
||||
### Video tutorial
|
||||
This video tutorial explains how to set up the feedreader and show the latest news feed item on your dashboard in Home Assistant.
|
||||
|
||||
<lite-youtube videoid="Va4JOKbesi0" videotitle="How to view RSS feeds on your Dashboard in Home Assistant" posterquality="maxresdefault"></lite-youtube>
|
||||
This video tutorial explains how to set up the feedreader and show a list of news feed items on your dashboard in Home Assistant.
|
||||
|
||||
For more advanced use cases, a custom integration registering to the `feedreader` event type could be used instead:
|
||||
<lite-youtube videoid="wqmLnjWQ4eY" videotitle="Show RSS News feeds on your Dashboard in Home Assistant!" posterquality="maxresdefault"></lite-youtube>
|
||||
|
||||
### Event listener
|
||||
|
||||
For more advanced use cases, a custom integration registering to the `feedreader` {% term Event %} type could be used instead:
|
||||
|
||||
```python
|
||||
EVENT_FEEDREADER = "feedreader"
|
||||
@ -78,4 +102,10 @@ hass.bus.listen(EVENT_FEEDREADER, event_listener)
|
||||
|
||||
To get started developing custom integrations, please refer to the [developers](/developers) documentation
|
||||
|
||||
### Other examples
|
||||
|
||||
For a drop in packaged complete example of Feedreader, you can use the [PodCast notifier](https://github.com/CCOSTAN/Home-AssistantConfig/blob/22c19375ac5dcb49e0648aa16c431537407aa5e4/config/packages/hasspodcast.yaml).
|
||||
|
||||
## Remove the integration
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -103,7 +103,7 @@ actions:
|
||||
|
||||
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
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: FrankEver
|
||||
description: Integrate FrankEver (Powered by Shelly) devices
|
||||
description: Connect and control your FrankEver devices using the Shelly integration
|
||||
ha_category:
|
||||
- Binary sensor
|
||||
- Climate
|
||||
@ -15,17 +15,18 @@ ha_category:
|
||||
- Text
|
||||
- Update
|
||||
- Valve
|
||||
ha_release: '0.115'
|
||||
ha_release: 0.115
|
||||
ha_domain: frankever
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_codeowners:
|
||||
- '@balloob'
|
||||
- '@bieniu'
|
||||
- '@thecode'
|
||||
- '@chemelli74'
|
||||
- '@bdraco'
|
||||
ha_iot_class: Local Push
|
||||
ha_domain: frankever
|
||||
ha_config_flow: true
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- button
|
||||
@ -41,9 +42,8 @@ ha_platforms:
|
||||
- text
|
||||
- update
|
||||
- valve
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_iot_class: Local Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -43,20 +43,48 @@ There is support for the following platform types within Home Assistant:
|
||||
- **{% term Switch %}** - call deflection, port forward, parental control and Wi-Fi networks.
|
||||
- **{% term Update %}** - firmware status of the device.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
## Prerequisites
|
||||
|
||||
{% important %}
|
||||
Both the TR-064 (_Permit access for apps_) and UPnP (_Transmit status information over UPnP_) protocol needs to be enabled in the FRITZ!Box under **Home Network** > **Network** > **Network settings** > **Access Settings in the Home Network** for Home Assistant to login and read device info.
|
||||
{% endimportant %}
|
||||
|
||||
## Username
|
||||
### Username
|
||||
|
||||
It is recommended to create a separate user to connect Home Assistant to your FRITZ!Box. To create a user, in the FRITZ!Box go to **System** > **FRITZ!Box Users** > **Users** > **Add User**. Make sure the user has the **FRITZ!Box Settings** permission.
|
||||
|
||||
{% note %}
|
||||
If you still want to use the predefined user, please note that as of FRITZ!OS 7.24, the FRITZ!Box creates a random username for the admin user if you didn't set one yourself. This can be found after logging into the FRITZ!Box and visiting **System** > **FRITZ!Box Users** > **Users**. The username starts with `fritz` followed by four random numbers. Under properties on the right it says `created automatically`. Prior to FRITZ!OS 7.24, the default username was `admin`.
|
||||
If you still want to use the predefined user, please note that as of FRITZ!OS 7.24, the FRITZ!Box creates a random username for the admin user if you didn't set one yourself. This can be found after logging into the FRITZ!Box and visiting **System** > **FRITZ!Box Users** > **Users**. The username starts with `fritz` followed by four random numbers. Under properties on the right it says `created automatically`. Before FRITZ!OS 7.24, the default username was `admin`.
|
||||
{% endnote %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Host:
|
||||
description: "The hostname or IP address of your FRITZ!Box router."
|
||||
Port:
|
||||
description: "The port used to connect to your FRITZ!Box router. Leave it empty to use the default port."
|
||||
Username:
|
||||
description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_)"
|
||||
Password:
|
||||
description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_)"
|
||||
Uses an SSL certificate:
|
||||
description: "Whether to use SSL encryption for connecting to your FRITZ!Box router."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Consider home:
|
||||
description: Number of seconds that must elapse before considering a disconnected device "not at home".
|
||||
Enable old discovery method:
|
||||
description: Required in scenarios such as networks without mesh support (_FritzOS <= 6.x_) or mixed brands network devices or LAN switches.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Data updates
|
||||
|
||||
This integration fetches the data every 30 seconds from the FRITZ!Box router.
|
||||
|
||||
## Actions
|
||||
|
||||
Available {% term actions %}: `set_guest_wifi_password`
|
||||
@ -71,19 +99,6 @@ Set a new password for the guest wifi. The password Length must be between 8 and
|
||||
| `password` | no | New password for the guest wifi (_will be auto-generated if not defined_) |
|
||||
| `length` | no | Length of the auto-generated password. (_default 12_) |
|
||||
|
||||
## Integration options
|
||||
|
||||
It is possible to change some behaviors through the integration options.
|
||||
To change the settings, go to {% my integrations title="**Settings** > **Devices & services**" %}. Select the **AVM FRITZ!Box Tools** integration, then select **Configure**.
|
||||
|
||||
### Consider home
|
||||
|
||||
Number of seconds that must elapse before considering a disconnected device "not at home".
|
||||
|
||||
### Enable old discovery method
|
||||
|
||||
Needed on some scenarios like no mesh support (_FritzOS <= 6.x_) or mixed brands network devices or LAN switches.
|
||||
|
||||
## Additional information
|
||||
|
||||
### Parental control switches
|
||||
@ -170,3 +185,9 @@ Check if one of the following cases applies:
|
||||
- You're using additional network equipment like a network switch or Wi-Fi access point other than an AVM Fritz!Repeater or other AVM components, but not configured as a [mesh](https://en.avm.de/service/knowledge-base/dok/FRITZ-Box-7590/3329_Mesh-with-FRITZ/) in your home network.
|
||||
|
||||
If one of the above cases applies to your setup, try [enabling the old discovery method](#enable-old-discovery-method) in the [integration options](#integration-options). This might resolve the issue.
|
||||
|
||||
## Remove the integration
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
If you don't use the separately created FRITZ!Box user anymore, then remove it from the FRITZ!Box under **System** > **FRITZ!Box Users** > **Users**.
|
||||
|
@ -15,7 +15,7 @@ ha_platforms:
|
||||
- sensor
|
||||
ha_dhcp: true
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: gold
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
The Fronius integration polls a [Fronius](https://www.fronius.com/) solar inverter or datalogger for details of a Fronius SolarNet setup and integrate it in your Home Assistant installation.
|
||||
@ -196,7 +196,7 @@ The Solar API used by this integration is read-only. It does not provide any mea
|
||||
Some data, like photovoltaic production, is only provided by the Fronius device when non-zero.
|
||||
When the integration is added at night, there might be no entities added providing photovoltaic related data. Entities will be added on sunrise, when the Fronius devices begin to provide more data.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -115,7 +115,7 @@ The integration provides the data exposed by means of the plant API. The light m
|
||||
|
||||
Please note that in order to be able to access your plant data over the API, you need a [FYTA hub](https://fyta.de/collections/all/products/single-hub) that uploads the data from the Beam sensor to the FYTA server. Alternatively, the mobile app can serve as a gateway to upload the data from the Beam to the server. No direct connection to the FYTA Beam is supported (as the Beam only provides raw data, that needs to be processed on the FYTA server).
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
For this integration the general process to remove integrations applies:
|
||||
|
||||
|
@ -52,7 +52,8 @@ The paring of the device may require a [factory reset](#factory-reset) before it
|
||||
|
||||
### Limitations
|
||||
|
||||
Irrigation valves are currently untested, but expected to work.
|
||||
- Irrigation valves are currently untested, but expected to work.
|
||||
- Irrigation Valve 9 V Bluetooth requires firmware version 1.7.23.29 or newer (update via Gardena Bluetooth App).
|
||||
|
||||
## Lawn mowers
|
||||
|
||||
|
@ -76,7 +76,7 @@ To use Google Assistant, your Home Assistant configuration has to be [externally
|
||||
5. Go to **Keys** and **Add key**.
|
||||
6. Create a private key in JSON format.
|
||||
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`" %}.
|
||||
8. Go to the **Search (/) for resources, documentation, products, and more** at the top middle and search for **Homegraph API** and select it.
|
||||
9. Enable the HomeGraph API.
|
||||
|
@ -8,6 +8,7 @@ ha_iot_class: Cloud Polling
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@tronikos'
|
||||
- '@ivanlh'
|
||||
ha_domain: google_generative_ai_conversation
|
||||
ha_integration_type: service
|
||||
ha_platforms:
|
||||
@ -69,8 +70,65 @@ Maximum Tokens to Return in Response:
|
||||
description: The maximum number of words or "tokens" that the AI model should generate.
|
||||
Safety settings:
|
||||
description: Thresholds for different [harmful categories](https://ai.google.dev/gemini-api/docs/safety-settings).
|
||||
Enable Google Search tool:
|
||||
description: Enables the model to [query Google Search](https://ai.google.dev/gemini-api/docs/grounding). This can only be enabled when the "Control Home Assistant" setting is set to "No control". See below for a workaround using it with "Assist".
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Google Search
|
||||
|
||||
Due to an API limitation we cannot have the [Google Search tool](https://ai.google.dev/gemini-api/docs/grounding) together with other tools. Request fails with `400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': 'Tool use with function calling is unsupported', 'status': 'INVALID_ARGUMENT'}}`.
|
||||
But you can do the following workaround that exposes a script to voice assistants. The script calls a Google Generative AI Conversation that only has the Google Search tool enabled.
|
||||
|
||||
{% details "Workaround for Google Search tool" %}
|
||||
|
||||
1. Add a second Google Generative AI service.
|
||||
2. Select **Configure**
|
||||
3. Select **No control** under **Control Home Assistant**
|
||||
4. Uncheck **Recommended model settings**
|
||||
5. Select **Submit**
|
||||
6. Check **Enable Google Search tool**
|
||||
7. Increase **Maximum tokens to return in response**
|
||||
8. Select **Submit**
|
||||
9. Create a script (**Settings** > **Automations & scenes** > **Scripts** > **Create script**)
|
||||
10. Select 3 dots > **Edit in YAML** and enter the following (edit the `conversation.google_generative_ai_2` to match the entity created from the 1st step):
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
sequence:
|
||||
- action: conversation.process
|
||||
metadata: {}
|
||||
data:
|
||||
agent_id: conversation.google_generative_ai_2
|
||||
text: "{{ query }}"
|
||||
response_variable: result
|
||||
- variables:
|
||||
result:
|
||||
response: "{{ result.response.speech.plain.speech }}"
|
||||
- stop: ""
|
||||
response_variable: result
|
||||
alias: "Assist: Search Google"
|
||||
description: >-
|
||||
Makes a Google search to answer questions that are completely unrelated with
|
||||
the smart home and are exclusively about current events or information in
|
||||
real-time like the current president, results of last night's game, release
|
||||
dates, etc.
|
||||
fields:
|
||||
query:
|
||||
selector:
|
||||
text: null
|
||||
name: Query
|
||||
description: The query to search Google for
|
||||
required: true
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
11. Select **Save script**
|
||||
12. Select 3 dots > **Settings** > **Voice assistants**
|
||||
13. Check **Expose** **Assist**
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Talking to Super Mario
|
||||
|
||||
You can use this integration to [talk to Super Mario and, if you want, have him control devices in your home](/voice_control/assist_create_open_ai_personality/).
|
||||
|
@ -574,7 +574,7 @@ The Habitica integration relies on an active internet connection to communicate
|
||||
|
||||
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
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -27,6 +27,7 @@ ha_platforms:
|
||||
- select
|
||||
- sensor
|
||||
- switch
|
||||
- time
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
@ -93,6 +94,7 @@ The integration configuration will ask for the *Client ID* and *Client Secret* c
|
||||
{% note %}
|
||||
|
||||
- The entities availability depends on the appliance type, but the appliance might not support all the entities for its type.
|
||||
- The program option entities will not be provided by the integration until they are available in the selected or active program.
|
||||
- Some appliances don't report data while they are turned off, so corresponding entities will not appear in the Home Connect integration after loading until the appliances are turned on.
|
||||
{% endnote %}
|
||||
|
||||
|
@ -4,10 +4,13 @@ description: Home Assistant Hardware provides functionality shared between Home
|
||||
ha_release: 2022.12
|
||||
ha_category:
|
||||
- Other
|
||||
- Update
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: homeassistant_hardware
|
||||
ha_integration_type: system
|
||||
ha_platforms:
|
||||
- update
|
||||
---
|
||||
|
||||
The Home Assistant Hardware integration provides functionality
|
||||
|
@ -4,11 +4,14 @@ description: Home Assistant Connect ZBT-1 provides hardware information for the
|
||||
ha_release: 2022.9
|
||||
ha_category:
|
||||
- Other
|
||||
- Update
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: homeassistant_sky_connect
|
||||
ha_integration_type: hardware
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- update
|
||||
---
|
||||
|
||||
The Home Assistant Connect ZBT-1 integration provides hardware information for the hardware configuration page.
|
||||
|
@ -4,10 +4,13 @@ description: Home Assistant Yellow provides hardware information for the hardwar
|
||||
ha_release: 2022.7
|
||||
ha_category:
|
||||
- Other
|
||||
- Update
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: homeassistant_yellow
|
||||
ha_integration_type: hardware
|
||||
ha_platforms:
|
||||
- update
|
||||
---
|
||||
|
||||
The Home Assistant Yellow integration provides hardware information for the hardware configuration page.
|
||||
|
@ -181,7 +181,7 @@ It may happen that you can't find your devices or they won't show up in the inte
|
||||
|
||||
Some sensors are disabled by default. You can enable them in the integration setup. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities) documentation for more information.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal.
|
||||
|
||||
|
@ -35,7 +35,7 @@ server_host:
|
||||
type: [list, string]
|
||||
default: "0.0.0.0, ::"
|
||||
server_port:
|
||||
description: Let you set a port to use.
|
||||
description: Allows you to specify which port Home Assistant should listen on.
|
||||
required: false
|
||||
type: integer
|
||||
default: 8123
|
||||
@ -75,7 +75,7 @@ ip_ban_enabled:
|
||||
type: boolean
|
||||
default: true
|
||||
login_attempts_threshold:
|
||||
description: "Number of failed login attempt from single IP after which it will be automatically banned if `ip_ban_enabled` is `true`. When set to -1 no new automatic bans will be added."
|
||||
description: "Number of failed login attempts from a single IP after which it will be automatically banned if `ip_ban_enabled` is `true`. When set to -1 no new automatic bans will be added."
|
||||
required: false
|
||||
type: integer
|
||||
default: -1
|
||||
@ -129,7 +129,7 @@ The `http` platforms are not real platforms within the meaning of the terminolog
|
||||
|
||||
To use those kind of [sensors](#sensor) or [binary sensors](#binary-sensor) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived.
|
||||
|
||||
If you want to use HTTP sensors, create a [Long-Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) in the Home Assistant UI in the **Security** section of your {% my profile title="**User profile**" %} page.
|
||||
If you want to use an HTTP sensor, create a [Long-Lived Access Token](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) in the Home Assistant UI in the **Security** section of your {% my profile title="**User profile**" %} page.
|
||||
|
||||
All [requests](https://developers.home-assistant.io/docs/api/rest#post-apistatesentity_id) need to be sent to the endpoint of the device and must be **POST**.
|
||||
|
||||
@ -142,7 +142,14 @@ If you want to apply additional IP filtering, and automatically ban brute force
|
||||
banned_at: "2016-11-16T19:20:03"
|
||||
```
|
||||
|
||||
After a ban is added a Persistent Notification is populated to the Home Assistant frontend.
|
||||
After a ban is added a Persistent Notification will appear in the Home Assistant frontend.
|
||||
|
||||
To clear an IP ban, you can either:
|
||||
|
||||
- Remove the specific IP entry from `ip_bans.yaml`, or
|
||||
- Delete the entire `ip_bans.yaml` file. It will be recreated automatically the next time a ban occurs.
|
||||
|
||||
After making changes, restart Home Assistant to apply them.
|
||||
|
||||
## Hosting files
|
||||
|
||||
|
@ -75,8 +75,29 @@ entities varies by device model and firmware version.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
Unauthenticated mode and default list of notification recipient phone
|
||||
numbers can be set using the integration's configuration options.
|
||||
{% configuration_basic %}
|
||||
URL:
|
||||
description: Base URL to the API of the router. Typically, something like `http://192.168.X.1` where `X` is, for example, `1`, `8`, or `100`. This is the beginning of the location shown in a browser when accessing the router's web interface.
|
||||
Verify SSL certificate:
|
||||
description: Whether to verify the SSL certificate of the router when accessing it. Applicable only if the router is accessed via HTTPS. In other words, if the configured URL starts with `https://`.
|
||||
Username:
|
||||
description: Username for accessing the router's API. Typically, either `admin`, or left empty (recommended if that works).
|
||||
Password:
|
||||
description: Password for accessing the router's API.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Notification service name:
|
||||
description: Name of the notification service. Used to distinguish between notification services in case there are multiple Huawei LTE devices configured. The name here will be prefixed with `notify.`. For example, specifying `huawei_lte` will yield `notify.huawei_lte` as the complete service name.
|
||||
Notification recipients:
|
||||
description: Comma separated list of default recipient SMS phone numbers for the notification service, used in case the notification sender does not specify any. Accepted formats may vary between device models and subscription types, but international [E.164](https://en.wikipedia.org/wiki/E.164) format including the `+` prefix and country code, numbers only, is a good first bet.
|
||||
Track wired network clients:
|
||||
description: Whether the device tracker entities track also clients attached to the router's wired Ethernet network, in addition to wireless clients.
|
||||
Unauthenticated mode:
|
||||
description: Whether to run in unauthenticated mode. See above for more information between authenticated and unauthenticated modes.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Actions
|
||||
|
||||
@ -106,3 +127,9 @@ It is the intention and highly likely that this integration works with all devic
|
||||
[reported working with the underlying huawei-lte-api library](https://github.com/Salamek/huawei-lte-api#tested-on).
|
||||
|
||||
It will not work on ones noted as not working in that list.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -226,7 +226,7 @@ data:
|
||||
- The mower can only be started using the `lawn_mower.start_mowing` action during the schedules configured in the Automower Connect App. To start the mower outside the scheduled times, use the `husqvarna_automower.override_schedule` action. In both cases, the battery must be fully charged beforehand.
|
||||
- Stay-out zone handling is not supported for mowers equipped with EPOS technology.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -10,6 +10,7 @@ ha_codeowners:
|
||||
- '@keithle888'
|
||||
ha_domain: igloohome
|
||||
ha_platforms:
|
||||
- lock
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: bronze
|
||||
|
@ -20,6 +20,7 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
ha_config_flow: true
|
||||
ha_dhcp: true
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
This integration links Home Assistant with your Intergas gateway, including the boiler and any room thermostats attached to it.
|
||||
@ -92,7 +93,7 @@ In case setting up an older gateway type fails, then try to leave `username` and
|
||||
|
||||
The Intergas gateway will fetch state data from the gateway every 30 seconds. When the target temperature on the thermostat is changed, it might take some time for the set point to be updated on the Home Assistant climate {% term entity %}.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -14,6 +14,7 @@ ha_iot_class: Local Polling
|
||||
ha_config_flow: true
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- sensor
|
||||
---
|
||||
|
||||
@ -58,7 +59,7 @@ The following sensors are supported:
|
||||
|
||||
There are no commonly known issues with this integration.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
|
@ -25,6 +25,7 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
- update
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
The **IronOS** {% term integration %} seamlessly connects Home Assistant with PINE64's Pinecil V2 soldering irons, allowing for remote monitoring and control. This integration provides real-time updates on temperature, power, and various other settings and diagnostic information.
|
||||
|
@ -107,7 +107,13 @@ The integration checks for new readings every 24 hours.
|
||||
- The integration does not support two-factor authentication. To connect Home Assistant to **ista Ecotrend**, you must first disable two-factor authentication. To do this, navigate to **Menü -> Benutzerkonto -> Zwei-Stufen-Authentifizierung** and remove any registered authentication devices.
|
||||
- Sensor values reflect the meter readings from the previous month, as **ista** publishes new readings a few days after the end of the billing period. Long-term statistics are adjusted to display these readings as of the last day of the corresponding month.
|
||||
|
||||
## Remove integration
|
||||
## Troubleshooting
|
||||
|
||||
The **ista EcoTrend** integration relies on an active internet connection to communicate with ista. If you encounter issues, verify that your network connection is stable. Additionally, the ista EcoTrend service itself may experience downtime, whether unexpected or due to scheduled maintenance.
|
||||
|
||||
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.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -36,7 +36,7 @@ This defines how many minutes before sunset is considered candle-lighting time.
|
||||
|
||||
### Minutes after sunset for Havdalah
|
||||
|
||||
By default havdalah time is considered the moment the sun is 8.5 degrees below the horizon. By specifying this offset, havdalah time will be calculated as a static offset pas the time of sunset.
|
||||
By default havdalah time is considered the moment the sun is 8.5 degrees below the horizon. By specifying this offset, havdalah time will be calculated as a static offset past the time of sunset.
|
||||
|
||||
### Latitude, Longitude, Time Zone and Elevation
|
||||
|
||||
@ -71,6 +71,7 @@ Time sensor states are represented as ISO8601 formatted *UTC time*.
|
||||
- `plag_hamincha`: Time of the Plag Hamincha (פלג המנחה)
|
||||
- `shkia`: Sunset (Shkiya - שקיעה)
|
||||
- `t_set_hakochavim`: Time at which the first stars are visible (Tseit Hakochavim - צאת הכוכבים)
|
||||
- `t_set_hakochavim_3_stars`: Time at which 3 stars are visible, mostly used for Havdalah
|
||||
- `upcoming_shabbat_candle_lighting`: The time of candle lighting for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat.
|
||||
- `upcoming_shabbat_havdalah`: The time of havdalah for either the current Shabbat (if it is currently Shabbat) or the immediately upcoming Shabbat. If it is currently a three-day holiday, this value *could* be None (i.e., if a holiday is Sat./Sun./Mon. and it's Saturday, there will be no `shabbat_havdalah` value. See comments in hdate library for details.)
|
||||
- `upcoming_candle_lighting`: The time of candle lighting for either the current Shabbat OR Yom Tov, or the immediately upcoming Shabbat OR Yom Tov. If, for example, today is Sunday, and Rosh Hashana is Monday night through Wednesday night, this reports the candle lighting for Rosh Hashana on Monday night. This avoids a situation of triggering pre-candle-lighting automations while it is currently Yom Tov. To always get the Shabbat times, use the `upcoming_shabbat_candle_lighting` sensor.
|
||||
|
@ -2456,7 +2456,7 @@ The `unique_id` for KNX entities is generated based on required configuration va
|
||||
|
||||
There can not be multiple entities on the same platform sharing these exact group addresses, even if they differ in other configuration.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -813,7 +813,7 @@ The motor values specify which hardware relay or outputs configuration will be u
|
||||
Whenever a key has to be provided, it is defined by a joint string consisting of the table identifier (`a`, `b`, `c`, `d`) and the corresponding key number.
|
||||
Examples: `a1`, `a5`, `d8`.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -114,7 +114,7 @@ When **Light on** and **Light off** are set to the same time, the built-in light
|
||||
|
||||
The integration receives updates when the device state changes, enabling immediate updates of the data in Home Assistant.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
@ -19,6 +19,7 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
- vacuum
|
||||
- water_heater
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: LinkedGo
|
||||
description: Integrate LinkedGo (Powered by Shelly) devices
|
||||
description: Connect and control your LinkedGo devices using the Shelly integration
|
||||
ha_category:
|
||||
- Binary sensor
|
||||
- Climate
|
||||
@ -15,17 +15,18 @@ ha_category:
|
||||
- Text
|
||||
- Update
|
||||
- Valve
|
||||
ha_release: '0.115'
|
||||
ha_release: 0.115
|
||||
ha_domain: linkedgo
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_codeowners:
|
||||
- '@balloob'
|
||||
- '@bieniu'
|
||||
- '@thecode'
|
||||
- '@chemelli74'
|
||||
- '@bdraco'
|
||||
ha_iot_class: Local Push
|
||||
ha_domain: linkedgo
|
||||
ha_config_flow: true
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- button
|
||||
@ -41,9 +42,8 @@ ha_platforms:
|
||||
- text
|
||||
- update
|
||||
- valve
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_iot_class: Local Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -139,7 +139,7 @@ Make sure you have all these components ready before trying to add a Matter devi
|
||||
- On the device packaging, check for both the Matter logo and for either the Wi-Fi or the {% term Thread %} logo.
|
||||
- Check if the QR code or the numeric setup code is on the device.
|
||||
- If you reset your device you'll need the QR code *or* numeric setup code to {% term commission %} that device again! Without this information, commissioning won't be possible.
|
||||
- If the QR code or the numeric setup code is only in accompanied documentation, it is good practice to snap a picture of the QR code and/or numeric setup code as a backup, ideally along with the device for reference, and store the code in a safe place.
|
||||
- If the QR code or the numeric setup code is only in accompanied documentation, it is a good practice to snap a picture of the QR code and/or numeric setup code as a backup, ideally along with the device for reference, and store it in a safe place.
|
||||
|
||||
#### Prepare Android or iPhone
|
||||
|
||||
|
@ -105,8 +105,7 @@ general tips on debugging MCP. If you are developing your own MCP server and hav
|
||||
with Home Assistant, you can also use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector)
|
||||
to verify that your MCP server is working correctly.
|
||||
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -234,7 +234,7 @@ To understand the root cause, first check debug logs on the client. For example
|
||||
this means that the long live access token is not correct.
|
||||
...
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration can be removed by following these steps:
|
||||
|
||||
|
@ -96,4 +96,19 @@ data:
|
||||
media_content_id: "media-source://media_source/local/videos/favourites/Epic Sax Guy 10 Hours.mp4"
|
||||
```
|
||||
|
||||
[basic-configuration]: /integrations/homeassistant/#media_dirs
|
||||
[basic-configuration]: /integrations/homeassistant/#media_dirs
|
||||
|
||||
### Identifying a media source from the media browser
|
||||
|
||||
If you wish to make use of the `media-source://` URI for an action, and the media is already available in the media browser (either as locally stored on the Home Assistant machine, or mapped using network storage) the following steps can help to determine the `media-source` uri.
|
||||
|
||||
1. Select **Media** in the sidebar.
|
||||
2. Navigate to the folder containing the media you wish to play.\
|
||||
*In this example, we will go **My media** > **NAS_Media**. This folder is a network share containing a collection of .mp3 files. One of which is named `my-music.mp3`.*
|
||||
3. Copy the current URL from the URL bar.\
|
||||
*for example: `https://home-assistant.local/media-browser/browser/app%2Cmedia-source%3A%2F%2Fmedia_source/%2Cmedia-source%3A%2F%2Fmedia_source%2Flocal%2FNAS_Media`*
|
||||
4. Search for an online URL Decoder, paste in the copied text and decode.\
|
||||
*`https://home-assistant.local/media-browser/browser/app,media-source://media_source/,media-source://media_source/local/NAS_Media`*
|
||||
|
||||
The last media source, in this case `media-source://media_source/local/NAS_Media` makes up the first part of the path, with the complete path being:
|
||||
`media-source://media_source/local/NAS_Media/my-music.mp3`
|
||||
|
@ -27,6 +27,7 @@ This integration also offers a button to pick up and then hang up the call to pr
|
||||
|
||||
Reported models with this integration include that work:
|
||||
- [StarTech.com USB56KEMH2](https://www.startech.com/en-us/networking-io/usb56kemh2)
|
||||
- Zoom USB Modem Model 3095
|
||||
|
||||
Devices that did not work:
|
||||
- [StarTech.com USB56KEM3](https://www.startech.com/en-us/networking-io/usb56kem3)
|
||||
|
@ -15,7 +15,7 @@ ha_zeroconf: true
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The **Music Assistant** (MA) {% term integration %} allows you to connect Home Assistant to a [Music Assistant Server](https://music-assistant.io/). Once configured, all [MA Players](https://music-assistant.io/player-support/) show up as Home Assistant [media player entities](/integrations/media_player/). Media players will allow you to control media playback and see the currently playing item.
|
||||
The **Music Assistant** (MA) {% term integration %} allows you to connect Home Assistant to a [Music Assistant Server](https://music-assistant.io/) (Required version 2.4 or later). Once configured, all [MA Players](https://music-assistant.io/player-support/) show up as Home Assistant [media player entities](/integrations/media_player/). Media players will allow you to control media playback and see the currently playing item.
|
||||
|
||||
There is currently support for the following Home Assistant Platforms:
|
||||
|
||||
@ -39,15 +39,17 @@ These URIs can be obtained from, for example, the output of the `get_library` or
|
||||
|
||||
Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If there is something special about the Home Assistant or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. If the Music Assistant Server is not installed, then follow these [installation instructions](https://music-assistant.io/installation/).
|
||||
|
||||
## Media player entities
|
||||
## Supported functionality
|
||||
|
||||
The Music Assistant integration creates media player entities for all players available in MA, including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls.
|
||||
### Media player entities
|
||||
|
||||
The Music Assistant integration creates media player entities for all players and groups available in MA, including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. This full functionality includes transfer of the playing queue of music from one player to another, automatic pausing of playback during announcements, and richer options for selecting the media for playback. These entities will display media information, playback progress, and playback controls.
|
||||
|
||||
## Actions
|
||||
|
||||
### Action `music_assistant.play_media`
|
||||
|
||||
Play media on a Music Assistant player with more fine-grained control options.
|
||||
Play media on a Music Assistant player with more fine-grained control options. This action is more powerful than the [`media_player.play_media`](https://www.home-assistant.io/integrations/media_player/#action-media_playerplay_media) action because it allows multiple items to be added to the queue at once, it allows more specific control of the media item to be played (e.g. a track from a specific album can be specified) and Music Assistant's radio mode (where the queue is filled with similar tracks to that enqueued) can be enabled.
|
||||
|
||||
- **Data attribute**: `media_id`
|
||||
- **Optional**: No.
|
||||
@ -81,7 +83,7 @@ Play media on a Music Assistant player with more fine-grained control options.
|
||||
|
||||
### Action `music_assistant.play_announcement`
|
||||
|
||||
Play announcement on a Music Assistant player with more fine-grained control options.
|
||||
Play an announcement which is accessible via URL on a Music Assistant player. Home Assistant [TTS](https://www.home-assistant.io/integrations/tts/) actions are used for announcements provided as text.
|
||||
|
||||
- **Data attribute**: `url`
|
||||
- **Optional**: No.
|
||||
@ -98,7 +100,7 @@ Play announcement on a Music Assistant player with more fine-grained control opt
|
||||
|
||||
### Action `music_assistant.transfer_queue`
|
||||
|
||||
Transfer the player's queue to another player.
|
||||
Transfer the player's queue to another player. This could be combined with presence sensors to allow music to follow you around the house.
|
||||
|
||||
- **Data attribute**: `source_player`
|
||||
- **Optional**: Yes.
|
||||
@ -109,13 +111,31 @@ Transfer the player's queue to another player.
|
||||
- **Description**: Start playing the queue on the target player. Omit to use the default behavior.
|
||||
- **Example**: `true`
|
||||
|
||||
#### Example
|
||||
|
||||
In this example, the queue of the first player found playing will be transferred to the kitchen when a motion sensor is triggered in that room.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- id: auto_queue_transfer_kitchen
|
||||
alias: Automatically Transfer Queue to Kitchen
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.kitchen_motion_sensor_occupancy
|
||||
to: 'on'
|
||||
action:
|
||||
service: music_assistant.transfer_queue
|
||||
target:
|
||||
entity_id: media_player.ma_kitchen_speaker
|
||||
```
|
||||
|
||||
### Action `music_assistant.search`
|
||||
|
||||
Perform a global search on the Music Assistant library and all providers.
|
||||
Perform a global search on the Music Assistant library and all providers. This allows programmatic access to all of the music provider's catalogs and could be used to build a HA dashboard where any track could be found for playback.
|
||||
|
||||
- **Data attribute**: `config_entry_id`
|
||||
- **Optional**: No.
|
||||
- **Description**: The Music Assistant instance that the search will be performed upon. Allows for multiple servers to be running.
|
||||
- **Description**: The Music Assistant instance that the search will be performed upon. Allows for multiple servers to be running. This is obtained from a dropdown in the GUI editor. Users of YAML can use the dev tools action tab and select from the dropdown and then switch to YAML to get the actual value.
|
||||
- **Example**: `Music Assistant`
|
||||
- **Data attribute**: `name`
|
||||
- **Optional**: No.
|
||||
@ -144,7 +164,7 @@ Perform a global search on the Music Assistant library and all providers.
|
||||
|
||||
### Action `music_assistant.get_library`
|
||||
|
||||
Perform a local search on the Music Assistant library.
|
||||
Perform a local search on the Music Assistant library. This provides programmatic access to concise information about the media item. This information could be used to create a queue of tracks for playback.
|
||||
|
||||
- **Data attribute**: `config_entry_id`
|
||||
- **Optional**: No.
|
||||
@ -183,19 +203,86 @@ Perform a local search on the Music Assistant library.
|
||||
- **Description**: When `album` is the `media_type` then this option will restrict the result according to the selection of either album, single, compilation, EP or unknown.
|
||||
- **Example**: `album`
|
||||
|
||||
#### Example
|
||||
|
||||
This example will start playback of ten random tracks.
|
||||
|
||||
```yaml
|
||||
script:
|
||||
create_random_queue:
|
||||
mode: single
|
||||
sequence:
|
||||
- service: music_assistant.get_library
|
||||
data:
|
||||
limit: 10
|
||||
media_type: track
|
||||
config_entry_id: 01JEXNDHT21V0BHJXM7A5SZANV
|
||||
order_by: random
|
||||
response_variable: random_tracks
|
||||
- action: music_assistant.play_media
|
||||
data:
|
||||
media_id: {% raw %}"{{ random_tracks['items'] | map(attribute='uri') | list }}" {% endraw %}
|
||||
media_type: track
|
||||
enqueue: replace
|
||||
target:
|
||||
entity_id: media_player.ma_kitchen_speaker
|
||||
```
|
||||
|
||||
### Action `music_assistant.get_queue`
|
||||
|
||||
Get the queue details of a Music Assistant player queue.
|
||||
Get the queue details of a Music Assistant player queue. This provides programmatic access to comprehensive information about the current and next media item in the queue. This information could be used to create a bespoke media dashboard.
|
||||
|
||||
- **Data attribute**: `entity_id`
|
||||
- **Optional**: No.
|
||||
- **Description**: The entity_id of the player holding the queue to be retrieved.
|
||||
- **Example**: `media_player.kitchen_speaker`
|
||||
|
||||
#### Example
|
||||
|
||||
This example sets the name of the currently playing track in an [`input_text`](https://www.home-assistant.io/integrations/input_text/) which could then be used on a dashboard.
|
||||
|
||||
```yaml
|
||||
script:
|
||||
get_now_playing:
|
||||
mode: queued
|
||||
alias: "Get Now Playing Track Name"
|
||||
sequence:
|
||||
- action: music_assistant.get_queue
|
||||
data:
|
||||
entity_id: media_player.ma_kitchen_speaker
|
||||
response_variable: queue_info
|
||||
- service: input_text.set_value
|
||||
data:
|
||||
entity_id: input_text.now_playing
|
||||
value: {% raw %}"{{ queue_info['media_player.ma_kitchen_speaker'].current_item.name }}" {% endraw %}
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Any Home Assistant players added to Music Assistant will appear duplicated as the MA version of the player is created. The original HA player can be hidden if desired.
|
||||
|
||||
## Known limitations
|
||||
|
||||
The data returned by the `get_queue` action will be partially limited if the item is not in the library (For example, if an item was selected for playback directly from Spotify). Metadata such as favorite status, explicit status, last played, played count, and disc art URL are only available for items that are in the MA library.
|
||||
|
||||
Radio mode is only available with certain music providers, and an error will be shown if attempting to enable radio mode on an item that isn't linked to one of those providers. Review the [Music Assistant documentation](https://www.music-assistant.io/music-providers/#summary) to identify which providers support this functionality.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Can’t find the MA actions
|
||||
|
||||
#### Symptom: No Music Assistant actions are shown in the editor
|
||||
|
||||
When trying to set up a script or automation via the GUI, no MA actions can be found.
|
||||
|
||||
##### Description
|
||||
|
||||
This means the add-on may have been installed, but the integration has not.
|
||||
|
||||
##### Resolution
|
||||
|
||||
Go to the [Configuration section](https://www.home-assistant.io/integrations/music_assistant/#configuration) and install the integration.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal.
|
||||
|
@ -46,6 +46,19 @@ You are in control of the information and capabilities exposed to Home Assistant
|
||||
|
||||
## Configuration
|
||||
|
||||
{% details "Important: Remove existing Google credentials first" %}
|
||||
|
||||
If you have previously set up the Google integration or a Nest integration, you should remove any existing Google integration credentials before proceeding.
|
||||
|
||||
To remove existing credentials:
|
||||
1. Go to **{% my integrations title="Settings > Devices & services" %}**.
|
||||
2. Select the three dots (⋮) menu in the upper right corner.
|
||||
3. Review the list for any previous Google or Nest integrations.
|
||||
4. Remove any existing Google/Nest integration by selecting it and choosing "Delete".
|
||||
|
||||
This ensures that Home Assistant will use your latest Google integration configuration and prevents authentication conflicts.
|
||||
{% enddetails %}
|
||||
|
||||
To add the **Nest** integration to your Home Assistant, use this My Button:
|
||||
{% my config_flow_start badge domain=page.ha_domain %}
|
||||
|
||||
@ -311,10 +324,6 @@ This feature is enabled by the following permissions:
|
||||
- *Allow Home Assistant to access and control your thermostat*
|
||||
|
||||
{% endnote %}
|
||||
{% note %}
|
||||
Additional Nest Temperature Sensors are not supported by the SDM API. The Temperature reported by the API will be pulled from whichever device is currently configured as the Active Sensor, which can be adjusted via manual selection or the schedule offered in the Nest App.
|
||||
{% endnote %}
|
||||
|
||||
|
||||
## Camera
|
||||
|
||||
@ -524,15 +533,71 @@ This feature is enabled by the following permissions:
|
||||
|
||||
{% endnote %}
|
||||
|
||||
## Known limitations
|
||||
|
||||
### Google account types
|
||||
|
||||
There are limitations to which Google accounts can use the SDM API. See the [Device Access Registration](https://developers.google.com/nest/device-access/registration) documentation for details.
|
||||
|
||||
The primary limitations are the following:
|
||||
|
||||
- Google Workspace accounts are not supported. Only consumer accounts (for example, gmail.com) can be used.
|
||||
- Once a Google Account is associated with your Device Access Project, it cannot be changed. Be sure you are signed in to the correct Google Account before continuing.
|
||||
|
||||
Keep in mind, the US$5 registration fee is non-refundable.
|
||||
|
||||
### Google Home App migration and cameras
|
||||
|
||||
Migrating your cameras to the Google Home App converts cameras from RTSP to WebRTC, which results in the loss of snapshot functionality. Additionally, there is a known issue where media is not currently published for these events; this has been reported to the Nest SDM team and is an unexpected side effect of their migration.
|
||||
|
||||
### Temperature sensors partially supported
|
||||
|
||||
Additional Nest temperature sensors are not supported by the SDM API. The temperature reported by the API will be pulled from whichever device is currently configured as the Active Sensor, which can be adjusted via manual selection or the schedule offered in the Nest App. If multiple sensors are available, only the temperature from the active sensor will be displayed.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- *No access to partner information* "Information could not be retrieved" error message during the setup wizard means that the Google Account used is not able to access the Home. Please ensure that you have successfully migrated your Nest Account to a Google Account using the Google Nest App. Additionally, if your home has multiple members, please note that the individual who initially set up the home must complete the migration of their Nest Account to a Google Account before you can establish a connection with Home Assistant.
|
||||
### Can't link Google account
|
||||
|
||||
- You can add or remove devices and permissions granted to Home Assistant in the Nest [Partner Connections Manager](https://nestservices.google.com/partnerconnections). Reload the Nest integration to make new devices available. See the [SDM API Troubleshooting](https://developers.google.com/nest/device-access/authorize#modify_account_permissions) documentation for more details.
|
||||
#### Symptom: Can’t link to [Project Name]: Please contact [Project Name] if the issue persists
|
||||
|
||||
- *Error 400: redirect_uri_mismatch* means that your OAuth Client ID is not configured to match the *My Home Assistant* callback URL. Home Assistant's redirect URL behavior may have changed since you initially set this up!
|
||||
##### Description
|
||||
|
||||
{% details "Details about resolving redirect_uri_mismatch" %}
|
||||
The error *Can’t link to [Project Name]* typically means that the *OAuth Client ID* used is
|
||||
mismatched in Home Assistant [Application Credentials](/integrations/application_credentials/).
|
||||
|
||||
##### Resolution
|
||||
|
||||
The simplest approach is to remove Application Credentials from Home Assistant and then verify
|
||||
that the *OAuth Client ID* used must be consistent across these three places:
|
||||
|
||||
- [Google Cloud Console](https://console.cloud.google.com/apis/credentials) - See instructions above to create new Web Auth OAuth Credentials if needed.
|
||||
- [Device Access Project](https://console.nest.google.com/device-access/project-list) - The OAuth Client ID for your Device Access Project must refer to the Web Auth OAuth Client ID in the Google Cloud Console.
|
||||
- Make sure you are using the same Google Account in the Device Access Console and Google Cloud Console. For example, double-check the photo and account name in the top right of the screen.
|
||||
- [Application Credentials](/integrations/application_credentials/) - Home Assistant needs to be configured with the same credentials. Delete any existing entries if they do not match, then either manually enter or re-enter as part of the setup.
|
||||
|
||||

|
||||
|
||||
#### Symptom: No access to partner information or Information could not be retrieved
|
||||
|
||||
##### Description
|
||||
|
||||
The error *No access to partner information* or *Information could not be retrieved* shown
|
||||
during the account linking process means that the Google Account used cannot access the Google Home.
|
||||
|
||||
##### Resolution
|
||||
|
||||
- You can organize your homes and devices in the Google Home App and [share homes and devices](https://support.google.com/googlenest/answer/9155535) across accounts. Ensure the account being used has access to the Home.
|
||||
- If you formerly had a Nest account, ensure that it is migrated successfully to a Google Account. If your Google Home has multiple members, please note that the individual who initially set up the home must complete the migration of their Nest Account to a Google Account before you can establish a connection with Home Assistant.
|
||||
|
||||
#### Symptom: Error 400: redirect_uri_mismatch
|
||||
|
||||
##### Description
|
||||
|
||||
This error *Error 400: redirect_uri_mismatch* means that your OAuth Client ID is not configured to match the *My Home Assistant* callback URL. Home Assistant's redirect URL behavior may have changed since you initially set this up!
|
||||
|
||||
##### Resolution
|
||||
|
||||
For users with a default configuration:
|
||||
|
||||
- This should show the redirect URI `https://my.home-assistant.io/redirect/oauth` in the error message. If the error message has a different URL, then you are running an older version of Home Assistant need to upgrade or manually disabled My Home Assistant (see below).
|
||||
|
||||
@ -543,77 +608,171 @@ This feature is enabled by the following permissions:
|
||||
|
||||

|
||||
|
||||
{% enddetails %}
|
||||
For users who have manually disabled *My Home Assistant*:
|
||||
|
||||
{% details "I have manually disabled My Home Assistant" %}
|
||||
- Google applies strict [Redirect URI validation rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) to keep your login credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain*. See the documentation on [Securing](/docs/configuration/securing/) and note that you don't actually need to enable remote access.
|
||||
|
||||
Google applies strict [Redirect URI validation rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) to keep your login credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain*. See the documentation on [Securing](/docs/configuration/securing/) and note that you don't actually need to enable remote access.
|
||||
|
||||
If you don't have [My Home Assistant](/integrations/my) on your installation,
|
||||
- If you don't have [My Home Assistant](/integrations/my) on your installation,
|
||||
you can use `<HOME_ASSISTANT_URL>/auth/external/callback` as the redirect URI
|
||||
instead.
|
||||
|
||||
The `<HOME_ASSISTANT_URL>` must be the same as used during the configuration/
|
||||
- The `<HOME_ASSISTANT_URL>` must be the same as used during the configuration/
|
||||
authentication process.
|
||||
|
||||
{% enddetails %}
|
||||
#### Symptom: Something went wrong: Please contact the developer of this app if the issue persists
|
||||
|
||||
- *Something went wrong: Please contact the developer of this app if the issue persists*: This
|
||||
typically means you are using the wrong type of credential or have credentials
|
||||
mixed up between accounts. Make sure the credential in the [Google Cloud Console](https://console.developers.google.com/apis/credentials) is a *Web Application* credential following the instructions above. If you have multiple Google accounts logged into the current browser session, Google may default to the first logged in account while switching between pages. To avoid this, log out of other accounts or use a private/incognito browser window with only the desired Google account logged in.
|
||||
##### Description
|
||||
|
||||
- *Something went wrong, please try again in a few minutes*: According to Google's [Partner Connections Manager Error Reference](https://developers.google.com/nest/device-access/reference/errors/pcm), this error covers all other undocumented internal errors within Partner Connections. One of the issues that cause this error is synchronization problems between the Nest and Google Home apps. Confirm that your Nest device is visible within both apps under the same Home. If it is missing within Google Home, create a new dummy home on the Nest app, which triggers the synchronization process. (This is the workaround recommended by the Google support team). The dummy entry can be deleted once the Nest device is visible within the Google Home app.
|
||||
This typically means you are using the wrong type of credential or have credentials
|
||||
mixed up between accounts.
|
||||
|
||||
- *Can’t link to [Project Name]: Please contact [Project Name] if the issue persists*: This typically means that the *OAuth Client ID* used is mismatched
|
||||
##### Resolution
|
||||
|
||||
{% details "Resolving mismatched OAuth Client ID" %}
|
||||
Make sure the credential in the [Google Cloud Console](https://console.developers.google.com/apis/credentials) is a *Web Application* credential following the instructions above. If you have multiple Google accounts logged into the current browser session, Google may default to the first logged in account while switching between pages. To avoid this, log out of other accounts or use a private/incognito browser window with only the desired Google account logged in.
|
||||
|
||||
The *OAuth Client ID* used must be consistent, so check these:
|
||||
#### Symptom: Something went wrong, please try again in a few minutes
|
||||
|
||||
- [Google Cloud Console](https://console.cloud.google.com/apis/credentials) - See instructions above to create new Web Auth OAuth Credentials if needed
|
||||
- [Device Access Project](https://console.nest.google.com/device-access/project-list) - The OAuth Client ID for your Device Access Project must refer to the Web Auth OAuth Client ID in the Google Cloud Console
|
||||
- Make sure you are using the same Google Account in the Device Access Console and Google Cloud Console e.g. double-check the photo and account name in the top right of the screen
|
||||
- [Application Credentials](/integrations/application_credentials/) - Home Assistant needs to be configured with the same credentials. Delete any existing entries if they do not match, then either manually enter or re-enter as part of the setup.
|
||||
##### Description
|
||||
|
||||

|
||||
According to Google's [Partner Connections Manager Error Reference](https://developers.google.com/nest/device-access/reference/errors/pcm), this error covers all other undocumented internal errors within Partner Connections. One of the issues that cause this error is synchronization problems between the Nest and Google Home apps.
|
||||
|
||||
##### Resolution
|
||||
|
||||
{% enddetails %}
|
||||
Confirm that your Nest device is visible within the Google Home App and Nest App under the same Home. If it is missing within Google Home, create a new dummy home on the Nest app, which triggers the synchronization process. (This is the workaround recommended by the Google support team). The dummy entry can be deleted once the Nest device is visible within the Google Home app.
|
||||
|
||||
- *Reauthentication required often*: If you are getting logged out every 7 days, this means an OAuth Consent Screen misconfiguration or your authentication token was revoked by Google for some other reason.
|
||||
#### Symptom: Error 403: access_denied or Access blocked: home-assistant.io has not completed Google's verification process
|
||||
|
||||
{% details "Details about reauthentication issues" %}
|
||||
##### Description
|
||||
|
||||
The error *Error 403: access_denied* means that the OAuth Consent screen may be misconfigured,
|
||||
either because it does not allow access to your Google Account or because you have entered
|
||||
extra information that triggered Google's verification process. Google will require
|
||||
verification when you add extra information to the branding page.
|
||||
|
||||
#### Resolution
|
||||
|
||||
Visit the OAuth [Verification Center](https://console.cloud.google.com/auth/verification) and
|
||||
confirm the *Verification Status* is *Verification not required*. If verification
|
||||
is required:
|
||||
|
||||
1. Navigate to the [Branding](https://console.cloud.google.com/auth/branding) page.
|
||||
2. Remove additional fields that are not required and Save. See the set up instruction above and
|
||||
make sure not to enter extra fields.
|
||||
3. Go back to the Verification Center and confirm the status is correct.
|
||||
|
||||
Additionally you need to make sure the Audience configuration is correct by following these steps:
|
||||
|
||||
1. Visit the OAuth [Audience](https://console.cloud.google.com/auth/audience) page.
|
||||
2. Make sure the account is set to *In production*.
|
||||
|
||||
You may now repeat the integration setup and account linking steps.
|
||||
|
||||
#### Symptom: Error: invalid_client no application name
|
||||
|
||||
##### Description
|
||||
|
||||
The error *Error: invalid_client no application name* means the OAuth Consent screen has not been
|
||||
fully configured for the project and needs additional information.
|
||||
|
||||
#### Resolution
|
||||
|
||||
Visit the [OAuth Consent Screen](https://console.developers.google.com/apis/credentials/consent) and
|
||||
enter the required fields (App Name, Support Email, Developer Email) and leave everything else as default.
|
||||
|
||||
### Can't find devices
|
||||
|
||||
#### Symptom: Devices do not appear in Home Assistant
|
||||
|
||||
##### Description
|
||||
|
||||
This typically means that Home Assistant does not have access to the device because it was not returned
|
||||
from the SDM API.
|
||||
|
||||
##### Resolution
|
||||
|
||||
You can add or remove devices and permissions granted to Home Assistant in the Nest [Partner Connections Manager](https://nestservices.google.com/partnerconnections). Reload the Nest integration to make new devices available. See the [SDM API Troubleshooting](https://developers.google.com/nest/device-access/authorize#modify_account_permissions) documentation for more details.
|
||||
|
||||
#### Symptom: Thermostats do not appear in Home Assistant or are unavailable
|
||||
|
||||
There have been reports that Thermostats may not appear or are unavailable due to a bug in the SDM API. A common fix to get the API to work again is to try these steps:
|
||||
|
||||
- Restart the Thermostat device. See [How to restart or reset a Nest thermostat](https://support.google.com/googlenest/answer/9247296) for more details.
|
||||
- In the official Nest app or on https://home.nest.com: Move the Thermostat to a different or fake/temporary room.
|
||||
- Reload the integration in Home Assistant: Navigate to {% my integrations title="**Settings** > **Devices & services**" %}, select {% icon "mdi:dots-vertical" %} next to *Nest* and choose **Reload**.
|
||||
|
||||
#### Symptom: Devices do not appear when the API is disabled
|
||||
|
||||
##### Description
|
||||
|
||||
The SDM API may not return devices for the authorized account when the SDM API is disabled.
|
||||
|
||||
##### Resolution
|
||||
|
||||
Double-check that GCP is configured correctly and [Enable the API](https://developers.google.com/nest/device-access/get-started#set_up_google_cloud_platform) and authorize at least one device in the OAuth setup flow. If you have trouble here, then you may want to walk through the Google instructions and issue commands directly against the API until you successfully get back the devices.
|
||||
|
||||
### Authentication problems
|
||||
|
||||
#### Symptom: Re-authentication required often
|
||||
|
||||
##### Description
|
||||
|
||||
You may be asked to reauthenticate more often than you expect, such as every 7 days. This means an OAuth Consent Screen is misconfigured, or your authentication token was revoked by Google for some other reason.
|
||||
|
||||
##### Resolution
|
||||
|
||||
- This most likely reason is the *OAuth Consent Screen* is set to *Testing* by default which expires the token after 7 days.
|
||||
- Follow the steps above to set it to *Production* to resolve this and reauthorize your integration one more time to get a new token.
|
||||
- You may also see this as the error message *invalid_grant: Token has been expired or revoked*.
|
||||
- See [Google Identity: Refresh token expiration](https://developers.google.com/identity/protocols/oauth2#expiration) for more reasons on why your token may have expired.
|
||||
|
||||
{% enddetails %}
|
||||
### Integration set up failure
|
||||
|
||||
- Check **Settings** -> **System** -> **Logs** to see if there are any error messages or misconfigurations then see the error messages below.
|
||||
#### Symptom: Configuration error: Failed to create subscriber `subscription/name` was not found
|
||||
|
||||
- *Thermostat does not appear or is unavailable* happens due to a bug where the SDM API does return the devices. A common fix get the API to work again is to:
|
||||
##### Description
|
||||
|
||||
{% details "How to restart thermostat" %}
|
||||
The integration fails to start because it attempts to create a subscriber with a subscription
|
||||
name that is not found in your Google Account. By default, Google pub/sub subscriptions will be deleted after 31 days of inactivity ([reference](https://cloud.google.com/knowledge/kb/pub-sub-subscriptions-disappeared-without-any-deletion-logs-000004170)). If this happens, then the integration will fail, and you will see the preceding log line in your Home Assistant logs.
|
||||
|
||||
- Restart the Thermostat device. See [How to restart or reset a Nest thermostat](https://support.google.com/googlenest/answer/9247296) for more details.
|
||||
- In the official Nest app or on https://home.nest.com: Move the Thermostat to a different or fake/temporary room.
|
||||
- Reload the integration in Home Assistant: Navigate to **Configuration** then **Devices & services**, click `...` next to *Nest* and choose **Reload**.
|
||||
##### Resolution.
|
||||
|
||||
{% enddetails %}
|
||||
To repair the subscriber:
|
||||
|
||||
- *No devices or entities are created* if the SDM API is not returning any devices for the authorized account. Double-check that GCP is configured correctly to [Enable the API](https://developers.google.com/nest/device-access/get-started#set_up_google_cloud_platform) and authorize at least one device in the OAuth setup flow. If you have trouble here, then you may want to walk through the Google instructions and issue commands directly against the API until you successfully get back the devices.
|
||||
1. Go to the [Device Access Console](https://console.nest.google.com/device-access/project-list) and re-enable the Pub/Sub topic.
|
||||
2. The Nest integration may need to be recreated to pick up the new Pub/Sub topic.
|
||||
3. (Optional) To prevent future expirations, go to your [Google Cloud Console Pub/Sub subscription page](https://console.cloud.google.com/cloudpubsub/subscription/list) and edit the Pub/Sub subscription created by Nest to not expire by default.
|
||||
|
||||
- *Error 403: access_denied* means that you need to visit the [OAuth Consent Screen](https://console.developers.google.com/apis/credentials/consent) and add your Google Account as a *Test User*.
|
||||
### Nest integration data issues
|
||||
|
||||
- *Error: invalid_client no application name* means the [OAuth Consent Screen](https://console.developers.google.com/apis/credentials/consent) has not been fully configured for the project. Enter the required fields (App Name, Support Email, Developer Email) and leave everything else as default.
|
||||
#### Symptom: Not receiving camera motion and person events
|
||||
|
||||
- *Not receiving updates* typically means a problem with the subscriber configuration. Make sure to check the logs for any error messages. Changes for things like sensors or thermostat temperature set points should be instantly published to a topic and received by the Home Assistant subscriber when everything is configured correctly.
|
||||
The Nest integration subscribes a Google Pub/sub subscription to listen for camera motion
|
||||
or person events. The settings in the Google Home app also control which events
|
||||
are published, so if they are not set properly you may not receive events.
|
||||
|
||||
- You can see stats about your subscriber in the [Cloud Console](https://console.cloud.google.com/cloudpubsub/subscription/list) which includes counts of messages published by your devices, and how many have been acknowledged by your Home Assistant subscriber. You can also `View Messages` to see examples of published. Many old unacknowledged messages indicate the subscriber is not receiving the messages and working properly or not connected at all.
|
||||
#### Resolution
|
||||
|
||||
- To aid in diagnosing subscriber problems or camera stream issues it may help to turn up verbose logging by adding some or all of these to your {% term "`configuration.yaml`" %} depending on where you are having trouble:
|
||||
- Verify that you have allowed Home Assistant to access camera streams, and permissions are correctly set in [Partner Connections Manager](https://nestservices.google.com/partnerconnections).
|
||||
- If you are then still not seeing events, it's possible you need to adjust the Google Home App settings. Refer to the [Google Home App Notification Settings](#google-home-app-notification-settings) for details.
|
||||
|
||||
#### Symptom: Devices not receiving updated information
|
||||
|
||||
##### Description
|
||||
|
||||
You may see changes in Google Home that are unexpectedly not reflected in Home Assistant. The Nest integration subscribes to updates from a Google Pub/sub subscription and problems with stale information
|
||||
usually indicate a problem with subscriber configuration.
|
||||
|
||||
Changes for things like sensors or thermostat temperature set points should be instantly published to a topic and received by the Home Assistant subscriber when everything is configured correctly.
|
||||
|
||||
##### Resolution
|
||||
|
||||
To learn more about how Google Pub/Sub works see the [Pull subscription workflow documentation](https://cloud.google.com/pubsub/docs/pull#pull-workflow). To investigate subscription related issues follow these steps:
|
||||
|
||||
- Check the logs for any relevant error messages.
|
||||
- View stats about your subscriber in the [Cloud Console](https://console.cloud.google.com/cloudpubsub/subscription/list). The stats include the number of messages published by your devices, and how many have been acknowledged by your Home Assistant subscriber. You can also `View Messages` to see examples of published. Many old unacknowledged messages indicate the subscriber is not receiving the messages and working properly or not connected at all.
|
||||
- Note that it is normal to see info messages such as *API error in streaming pull: 503 The service was unable to fulfill your request. Please try again* as part of the streaming pull flow. The pull requests are long
|
||||
running requests that will send an error after a few minutes and then are retried as needed. These are described in more detail in the [Pull subscription workflow documentation](https://cloud.google.com/pubsub/docs/pull#pull-workflow).
|
||||
- Enable verbose logging by adding some or all of these to your {% term "`configuration.yaml`" %} depending on where you are having trouble:
|
||||
|
||||
```yaml
|
||||
|
||||
@ -633,10 +792,13 @@ logger:
|
||||
google_nest_sdm.event: debug
|
||||
```
|
||||
|
||||
- *Not receiving camera motion and person events*: assuming the integration is correctly configured (for example, the oauth and SDM API are set up correctly, you can see camera streams, and permissions are correctly set in [Partner Connections Manager](https://nestservices.google.com/partnerconnections)): If you are then still not seeing events, it's possible you need to adjust the Google Home App settings. Refer to the [Google Home App Notification Settings](#google-home-app-notification-settings) for details.
|
||||
## Removing the integration
|
||||
|
||||
- **Configuration error: Failed to create subscriber `subscription/name` was not found** - By default, Google pub/sub subscriptions will be deleted after 31 days of inactivity ([reference](https://cloud.google.com/knowledge/kb/pub-sub-subscriptions-disappeared-without-any-deletion-logs-000004170)). If this happens, then the integration will fail, and you will see the preceding log line in your Home Assistant logs. If that is the case, then:
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
1. Go to the [Device Access Console](https://console.nest.google.com/device-access/project-list) and re-enable the Pub/Sub Topic.
|
||||
2. The Nest integration may need to be recreated to pick up the new Pub/Sub topic.
|
||||
3. (Optional) To prevent future expirations, go to your [Google Cloud Console Pub/Sub subscription page](https://console.cloud.google.com/cloudpubsub/subscription/list) and edit the Pub/Sub subscription created by Nest to not expire by default.
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
After deleting the integration, you may also want to remove any unused information in
|
||||
your Google Account that was added during the set up process. See the integration
|
||||
configuration instructions for how to find where OAuth credentials and Device Access projects
|
||||
are configured.
|
||||
|
@ -97,7 +97,7 @@ The block price sensors are not enabled by default.
|
||||
| Sensor | Type | Description |
|
||||
| ------------------------- | ----------------- | --------------------------------------------------------------------------------- |
|
||||
| Currency | [Currency] | The configured currency. |
|
||||
| Exchange rate | Integer | The exchange rate between the configure currency and Euro's. |
|
||||
| Exchange rate | Decimal | The exchange rate between the configure currency and Euro's. |
|
||||
| Last updated | Datetime | The time when the market prices were last updated. |
|
||||
|
||||
## Actions
|
||||
@ -129,6 +129,10 @@ Tomorrow's prices are typically released around 13:00 CET, and trying to get the
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the Nord Pool actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
#### Example action with data
|
||||
|
||||
{% raw %}
|
||||
@ -193,11 +197,15 @@ template:
|
||||
Using a trigger template, you can create a template sensor to calculate tomorrow's lowest price which also puts the list of all prices in the attributes of the sensor. All prices are returned in [Currency]/MWh.
|
||||
|
||||
{% note %}
|
||||
You need to replace the `config_entry` with your own Nord Pool config entry id.
|
||||
|
||||
Below example will convert the action call response to kWh prices in the selected currency and add all prices for tomorrow as a list in an attribute.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% tip %}
|
||||
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the Nord Pool actions and view the YAML.
|
||||
{% endtip %}
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
|
@ -78,7 +78,7 @@ Many Nuki Smart Locks support local alternatives. Consult the [Nuki website](htt
|
||||
|
||||
### HomeKit support
|
||||
|
||||
The 2nd and 3rd Generation Smart Locks support [HomeKit via Bluetooth](https://help.nuki.io/hc/en-001/articles/19948907390737-Apple-HomeKit-via-Bluetooth) and can directly integrate with Home Assistant through the (HomeKit integration)(/integrations/homekit_controller/#adding-a-homekit-device-through-bluetooth).
|
||||
The 2nd and 3rd Generation Smart Locks support [HomeKit via Bluetooth](https://help.nuki.io/hc/en-001/articles/19948907390737-Apple-HomeKit-via-Bluetooth) and can directly integrate with Home Assistant through the [HomeKit integration](/integrations/homekit_controller/#adding-a-homekit-device-through-bluetooth).
|
||||
|
||||
### MQTT support
|
||||
|
||||
|
@ -3,8 +3,8 @@ title: Network UPS Tools (NUT)
|
||||
description: Instructions on how to set up NUT sensors within Home Assistant.
|
||||
ha_category:
|
||||
- Button
|
||||
- System monitor
|
||||
- Switch
|
||||
- System monitor
|
||||
ha_iot_class: Local Polling
|
||||
ha_release: 0.34
|
||||
ha_domain: nut
|
||||
@ -28,6 +28,10 @@ related:
|
||||
|
||||
The **Network UPS Tools (NUT)** {% term integration %} allows you to monitor and manage an Uninterruptible Power Supply (UPS) for battery backup, a Power Distribution Unit (PDU), or other similar power device using a [NUT](https://networkupstools.org/) server. It lets you view the status, receive notifications about important events, and execute commands as device actions for one or more such devices.
|
||||
|
||||
This integration cannot communicate directly with a UPS or power device.
|
||||
For this reason, a NUT server is required. The integration talks to the
|
||||
NUT server using the NUT protocol to retrieve data and status information.
|
||||
|
||||
## Supported devices
|
||||
|
||||
This integration supports hardware devices compatible with
|
||||
@ -58,9 +62,9 @@ Host:
|
||||
Port:
|
||||
description: "The network port of your NUT server. The NUT server's default port is '3493'."
|
||||
Username:
|
||||
description: "The username to log into the NUT server. This is configured in NUT."
|
||||
description: "The username to sign in to your NUT server. The username is optional."
|
||||
Password:
|
||||
description: "The password associated with the username to log into the NUT server. This is configured in NUT."
|
||||
description: "The password to sign in to your NUT server. The password is optional."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
You can update these settings after installation. To do so,
|
||||
@ -71,6 +75,12 @@ and select **Reconfigure**.
|
||||
|
||||
## Supported functionality
|
||||
|
||||
{% note %}
|
||||
This NUT integration uses the NUT protocol to retrieve "variables"
|
||||
from the NUT server. Only sensors and diagnostic sensors available for
|
||||
your device are added to Home Assistant.
|
||||
{% endnote %}
|
||||
|
||||
{% important %}
|
||||
The username and password configured for the device must be granted
|
||||
`instcmds` permissions on the NUT server to use buttons and
|
||||
@ -80,6 +90,178 @@ documentation](https://networkupstools.org/documentation.html) for
|
||||
configuration information.
|
||||
{% endimportant %}
|
||||
|
||||
### Sensors
|
||||
|
||||
Sensors provide information about a NUT device.
|
||||
|
||||
The following sensors may be available:
|
||||
|
||||
- **Alarms**: UPS alarms
|
||||
- **Battery charge (%)**: Battery charge
|
||||
- **Charging status**: Status of the battery charger, with the available states: `charging`, `discharging`, `floating`, `resting`, `unknown`, `disabled`, and `off`
|
||||
- **Input current (A)**: Input current
|
||||
- **Input load (%)**: Load on (ePDU) input
|
||||
- **Input voltage (V)**: Input voltage
|
||||
- **Load (%)**: Load on UPS
|
||||
- **Outlet voltage (V)**: Total output voltage
|
||||
- **Output phases**: Output phases
|
||||
- **Output voltage (V)**: Output voltage
|
||||
- **Status**: Human-readable version of "Status data" (see below)
|
||||
- **Status data**: UPS status
|
||||
|
||||
The **Status data** sensor is translated into a human-readable virtual
|
||||
sensor named **Status**.
|
||||
|
||||
Some power devices provide monitoring information about individual
|
||||
outlets. The following sensors may be available for each such outlet:
|
||||
|
||||
- **Outlet NAME current (A)**: Current of named outlet
|
||||
- **Outlet NAME description**: Description of named outlet
|
||||
- **Outlet NAME power (VA)**: Apparent power of named outlet
|
||||
- **Outlet NAME real power (W)**: Real power of named outlet
|
||||
|
||||
Additional information about the values reported for these sensors can
|
||||
be found in the Network UPS Tools repository documentation on
|
||||
[variable names](https://github.com/networkupstools/nut/blob/master/docs/nut-names.txt).
|
||||
|
||||
### Diagnostic sensors
|
||||
|
||||
Diagnostic sensors provide additional information about a NUT device.
|
||||
|
||||
{% important %}
|
||||
Most of this integration's diagnostic sensors are disabled by default
|
||||
to reduce storage overhead for Home Assistant. The diagnostic sensors
|
||||
marked with an asterisk \* are enabled by default. To use a disabled
|
||||
sensor, you need to enable them first. See the [enabling or disabling
|
||||
entities](/common-tasks/general/#enabling-or-disabling-entities)
|
||||
documentation for information on how to do this.
|
||||
{% endimportant %}
|
||||
|
||||
{% note %}
|
||||
Certain diagnostic sensor values are described as "opaque by mfg" in
|
||||
the table below and NUT's documentation. This means the value returned
|
||||
for the sensor may vary by manufacturer.
|
||||
{% endnote %}
|
||||
|
||||
The following diagnostic sensors may be available:
|
||||
|
||||
- **Ambient humidity (%)**\*: Ambient relative humidity
|
||||
- **Ambient humidity status**\*: Ambient humidity status relative to the thresholds, with the available states: `good`, `warning-low`, `critical-low`, `warning-high`, and `critical-high`
|
||||
- **Ambient temperature (°C)**\*: Ambient temperature
|
||||
- **Ambient temperature status**\*: Ambient temperature status relative to the thresholds, with the available states: `good`, `warning-low`, `critical-low`, `warning-high`, and `critical-high`
|
||||
- **Apparent power (VA)**: Current value of apparent power
|
||||
- **Battery alarm threshold**: Battery alarm threshold
|
||||
- **Battery capacity (Ah)**: Battery capacity
|
||||
- **Battery chemistry**: Battery chemistry (opaque by mfg)
|
||||
- **Battery current (A)**: Battery current
|
||||
- **Battery date**: Battery installation or last change date (opaque by mfg)
|
||||
- **Battery manuf date**: Battery manufacturing date (opaque by mfg)
|
||||
- **Battery runtime (secs)**: Battery runtime
|
||||
- **Battery temperature (°C)**: Battery temperature
|
||||
- **Battery voltage (V)**: Battery voltage
|
||||
- **Beeper status**: UPS beeper status, with the available states: `enabled`, `disabled`, and `muted`
|
||||
- **Efficiency (%)**: Efficiency of the UPS (ratio of output to input current)
|
||||
- **External contacts**: UPS external contact sensors (opaque by mfg)
|
||||
- **High battery voltage (V)**: Maximum battery voltage (100% charge)
|
||||
- **High voltage transfer (V)**: High voltage transfer point
|
||||
- **Input L1 current (A)**: Input L1 current
|
||||
- **Input L1 line frequency (Hz)**: Input L1 line frequency
|
||||
- **Input L1 real power (W)**: Input L1 current sum value of all (ePDU) phases real power
|
||||
- **Input L1-N voltage (V)**: Input L1-N voltage
|
||||
- **Input L2 current (A)**: Input L2 current
|
||||
- **Input L2 line frequency (Hz)**: Input L2 line frequency
|
||||
- **Input L2 real power (W)**: Input L2 current sum value of all (ePDU) phases real power
|
||||
- **Input L2-N voltage (V)**: Input L2-N voltage
|
||||
- **Input L3 current (A)**: Input L3 current
|
||||
- **Input L3 line frequency (Hz)**: Input L3 line frequency
|
||||
- **Input L3-N voltage (V)**: Input L3-N voltage
|
||||
- **Input L3 real power (W)**: Input L3 current sum value of all (ePDU) phases real power
|
||||
- **Input bypass L1 current (A)**: Input bypass L1 current
|
||||
- **Input bypass L1 real power (W)**: Input bypass L1 value of real power
|
||||
- **Input bypass L1-N voltage (V)**: Input bypass L1-N voltage
|
||||
- **Input bypass L2 current (A)**: Input bypass L2 current
|
||||
- **Input bypass L2 real power (W)**: Input bypass L2 value of real power
|
||||
- **Input bypass L2-N voltage (V)**: Input bypass L2-N voltage
|
||||
- **Input bypass L3 current (A)**: Input bypass L3 current
|
||||
- **Input bypass L3 real power (W)**: Input bypass L3 value of real power
|
||||
- **Input bypass L3-N voltage (V)**: Input bypass L3-N voltage
|
||||
- **Input bypass current (A)**: Input bypass current
|
||||
- **Input bypass frequency (Hz)**: Input bypass line frequency
|
||||
- **Input bypass phases**: Input bypass line phases
|
||||
- **Input bypass real power (W)**: Input bypass value of real power
|
||||
- **Input bypass voltage (V)**: Input bypass voltage
|
||||
- **Input current status**: Current status relative to the thresholds, with the available states: `good`, `warning-low`, `critical-low`, `warning-high`, and `critical-high`
|
||||
- **Input frequency (Hz)**: Input line frequency
|
||||
- **Input frequency status**: Frequency status, with the available states: `good` and `out-of-range`
|
||||
- **Input nominal frequency (Hz)**: Nominal input line frequency
|
||||
- **Input phases**: Input line phases
|
||||
- **Input power (VA)**: Current sum value of all (ePDU) phases apparent power
|
||||
- **Input power sensitivity**: Input power sensitivity
|
||||
- **Input real power (W)**: Current sum value of all (ePDU) phases real power
|
||||
- **Input voltage status**: Status relative to the thresholds
|
||||
- **Language**: Language to use on front panel (opaque by mfg)
|
||||
- **Load reboot timer (secs)**: Time before the load will be rebooted
|
||||
- **Load restart delay (secs)**: Interval to wait before restarting the load
|
||||
- **Load shutdown timer (secs)**: Time before the load will be shutdown
|
||||
- **Load start timer (secs)**: Time before the load will be started
|
||||
- **Low battery runtime (secs)**: Remaining battery runtime when UPS switches to low battery (LB)
|
||||
- **Low battery setpoint (%)**: Remaining battery level when UPS switches to low battery (LB)
|
||||
- **Low battery voltage (V)**: Minimum battery voltage that triggers FSD status
|
||||
- **Low voltage transfer (V)**: Low voltage transfer point
|
||||
- **Minimum battery runtime to start (secs)**: Minimum battery runtime for UPS restart after power-off
|
||||
- **Minimum battery to start (%)**: Minimum battery level for UPS restart after power-off
|
||||
- **Nominal battery voltage (V)**: Nominal battery voltage
|
||||
- **Nominal input voltage (V)**: Nominal input voltage
|
||||
- **Nominal output current (A)**: Nominal output current
|
||||
- **Nominal output frequency (Hz)**: Nominal output frequency
|
||||
- **Nominal output power (VA)**: Nominal output apparent power
|
||||
- **Nominal output real power (W)**: Nominal output real power
|
||||
- **Nominal output voltage (V)**: Nominal output voltage
|
||||
- **Nominal power (VA)**: Nominal value of apparent power
|
||||
- **Nominal real power (W)**: Nominal value of real power
|
||||
- **Number of bad batteries**: Number of bad battery packs
|
||||
- **Number of batteries**: Number of internal battery packs
|
||||
- **Output L1 current (A)**: Output L1 current
|
||||
- **Output L1 power percent (%)**: Output L1 percentage of apparent power relative to maximum load
|
||||
- **Output L1 real power (W)**: Output L1 real power
|
||||
- **Output L1-N voltage (V)**: Output L1-N voltage
|
||||
- **Output L2 current (A)**: Output L2 current
|
||||
- **Output L2 power percent (%)**: Output L2 percentage of apparent power relative to maximum load
|
||||
- **Output L2 real power (W)**: Output L2 real power
|
||||
- **Output L2-N voltage (V)**: Output L2-N voltage
|
||||
- **Output L3 current (A)**: Output L3 current
|
||||
- **Output L3 power percent (%)**: Output L3 percentage of apparent power relative to maximum load
|
||||
- **Output L3 real power (W)**: Output L3 real power
|
||||
- **Output L3-N voltage (V)**: Output L3-N voltage
|
||||
- **Output apparent power (VA)**: Output apparent power
|
||||
- **Output current (A)**: Output current
|
||||
- **Output frequency (Hz)**: Output frequency
|
||||
- **Output phases**: Output phases
|
||||
- **Output real power (W)**: Output real power
|
||||
- **Overload setting (%)**: Load when UPS switches to overload condition
|
||||
- **Real power (W)**: Current value of real power
|
||||
- **Reboot on battery**: UPS coldstarts from battery
|
||||
- **Self test date**: Date of last self test (opaque by mfg)
|
||||
- **Self test interval (secs)**: Interval between self tests
|
||||
- **Self test result**: Results of last self test (opaque by mfg)
|
||||
- **Shutdown ability**: Enable or disable UPS shutdown ability
|
||||
- **Start on ac**: UPS starts when power is applied or re-applied
|
||||
- **Start on battery**: Allow to start UPS from battery
|
||||
- **System identifier**: UPS system identifier (opaque by mfg)
|
||||
- **Total battery current (A)**: Total battery current
|
||||
- **UPS reboot delay (secs)**: Interval to wait before rebooting the UPS
|
||||
- **UPS shutdown delay (secs)**: Interval to wait after shutdown with delay command
|
||||
- **UPS temperature (°C)**: UPS temperature
|
||||
- **UPS type**: UPS type (opaque by mfg)
|
||||
- **Voltage transfer reason**: Reason for last transfer to battery (opaque by mfg)
|
||||
- **Warning battery setpoint (%)**: Battery level when UPS switches to "Warning" state
|
||||
- **Watchdog status**: UPS watchdog status
|
||||
|
||||
The following diagnostic sensors may be available for each
|
||||
individually monitored outlet:
|
||||
|
||||
- **Outlet NAME current status**: Current status relative to the thresholds for the named outlet
|
||||
|
||||
### Buttons
|
||||
|
||||
This NUT integration will add buttons for NUT server commands
|
||||
@ -106,12 +288,88 @@ also [define a custom polling
|
||||
interval](/common-tasks/general/#defining-a-custom-polling-interval)
|
||||
if needed.
|
||||
|
||||
## Example Resources
|
||||
## Actions
|
||||
|
||||
Given the following example output from NUT (your variables may differ):
|
||||
{% important %}
|
||||
The username and password configured for the device must be granted
|
||||
`instcmds` permissions on the NUT server to use buttons and
|
||||
switches. Device {% term actions %} will not be available if user
|
||||
credentials are not specified. See the [NUT server
|
||||
documentation](https://networkupstools.org/documentation.html) for
|
||||
configuration information.
|
||||
{% endimportant %}
|
||||
|
||||
An action is available for each parameterless NUT
|
||||
[command](https://networkupstools.org/docs/user-manual.chunked/apcs03.html)
|
||||
supported.
|
||||
|
||||
## Automation example
|
||||
|
||||
Home Assistant {% term automations %} can be created to monitor and
|
||||
take actions on one or more power devices using NUT.
|
||||
|
||||
The following example illustrates how to use this integration in a
|
||||
Home Assistant automation. This example is just a starting point, and
|
||||
you can use it as inspiration to create your own automations.
|
||||
|
||||
### UPS Power Failure Notification
|
||||
|
||||
The following example sends a notification to your mobile device when
|
||||
a monitored UPS loses power and begins using the battery.
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
- The NUT integration must be installed and
|
||||
configured.
|
||||
- Your mobile device must be configured for
|
||||
notification.
|
||||
- In the example below, the NUT server device is `ups` with the status
|
||||
sensor named `ups_status`. You must change the YAML sensor name to
|
||||
match your system.
|
||||
|
||||
#### Example in YAML
|
||||
|
||||
```yaml
|
||||
$ upsc ups_name@192.168.11.5
|
||||
# Send notification on UPS power failure
|
||||
automation:
|
||||
alias: "NUT Power failure notification"
|
||||
triggers:
|
||||
- trigger: state
|
||||
entity_id:
|
||||
- sensor.ups_status
|
||||
to: "On Battery Battery Discharging"
|
||||
actions:
|
||||
- action: notify.notify
|
||||
data:
|
||||
title: "UPS power failure"
|
||||
message: "The UPS lost power and is now on battery"
|
||||
```
|
||||
|
||||
## Known limitations
|
||||
|
||||
Not all NUT functionality is available through this integration. The
|
||||
following are known limitations:
|
||||
|
||||
- This NUT integration only supports a subset of NUT "variables" and
|
||||
"commands".
|
||||
- This NUT integration only supports retrieving, but not setting, NUT
|
||||
"variables".
|
||||
- This NUT integration does not support NUT "commands" that require
|
||||
parameters.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Using NUT to list all variables
|
||||
|
||||
The NUT server provides "variables" about your power device. If you
|
||||
have command line access to the system running your NUT server, you
|
||||
can query NUT directly using the `upsc` command.
|
||||
|
||||
Below is an example where the NUT server is configured with a device
|
||||
named `my_ups`:
|
||||
|
||||
```shell
|
||||
$ upsc my_ups
|
||||
ups.timer.reboot: 0
|
||||
battery.voltage: 27.0
|
||||
ups.firmware.aux: L3 -P
|
||||
@ -147,19 +405,15 @@ output.voltage: 121.50
|
||||
output.voltage.nominal: 120
|
||||
```
|
||||
|
||||
Use the values from the left hand column. Support is included for most
|
||||
values with `ups`, `battery`, `input` and `output` prefixes.
|
||||
### Using NUT to list all commands
|
||||
|
||||
## UPS Status - human-readable version
|
||||
The NUT server provides commands for controlling your power device. If
|
||||
you have command line access to the system running your NUT server,
|
||||
you can query NUT directly for the available remote commands using
|
||||
`upscmd -l`.
|
||||
|
||||
An additional virtual sensor type `ups.status.display` is available
|
||||
translating the UPS status value retrieved from `ups.status` into a
|
||||
human-readable version.
|
||||
|
||||
## Device Actions
|
||||
|
||||
A device action is available for each parameterless NUT [command](https://networkupstools.org/docs/user-manual.chunked/apcs03.html) supported by the device. To find the list of supported commands for
|
||||
your specific UPS device, you can use the `upscmd -l` command followed by the UPS name:
|
||||
Below is an example where the NUT server is configured with a device
|
||||
named `my_ups`:
|
||||
|
||||
```bash
|
||||
$ upscmd -l my_ups
|
||||
@ -170,9 +424,7 @@ test.battery.start.quick - Start a quick battery test
|
||||
test.battery.stop - Stop the battery test
|
||||
```
|
||||
|
||||
These commands will be available as device actions in Home Assistant, allowing you to interact with your UPS.
|
||||
|
||||
### User Credentials and Permissions
|
||||
### User credentials and permissions
|
||||
|
||||
To execute device actions through the NUT integration, you must specify user credentials in the configuration. These credentials are stored in the `upsd.users` file, part of the NUT server configuration. This file defines the usernames, passwords, and permissions for users accessing the UPS devices.
|
||||
|
||||
@ -191,7 +443,7 @@ In this example, the user `my_user` has permission to execute all commands (`ins
|
||||
|
||||
Please note that Home Assistant cannot determine whether a user can access a specific action without executing it. If you attempt to perform an action for which the user does not have permission, an exception will be thrown at runtime.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps
|
||||
are required.
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Ogemray
|
||||
description: Integrate Ogemray (Powered by Shelly) devices
|
||||
description: Connect and control your Ogemray devices using the Shelly integration
|
||||
ha_category:
|
||||
- Binary sensor
|
||||
- Climate
|
||||
@ -15,17 +15,18 @@ ha_category:
|
||||
- Text
|
||||
- Update
|
||||
- Valve
|
||||
ha_release: '0.115'
|
||||
ha_release: 0.115
|
||||
ha_domain: ogemray
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_codeowners:
|
||||
- '@balloob'
|
||||
- '@bieniu'
|
||||
- '@thecode'
|
||||
- '@chemelli74'
|
||||
- '@bdraco'
|
||||
ha_iot_class: Local Push
|
||||
ha_domain: ogemray
|
||||
ha_config_flow: true
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- button
|
||||
@ -41,9 +42,8 @@ ha_platforms:
|
||||
- text
|
||||
- update
|
||||
- valve
|
||||
ha_integration_type: virtual
|
||||
ha_supporting_domain: shelly
|
||||
ha_supporting_integration: Shelly
|
||||
ha_iot_class: Local Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -12,6 +12,7 @@ ha_config_flow: true
|
||||
ha_domain: ohme
|
||||
ha_platforms:
|
||||
- button
|
||||
- diagnostics
|
||||
- number
|
||||
- select
|
||||
- sensor
|
||||
|
@ -15,11 +15,14 @@ related:
|
||||
title: Backups
|
||||
ha_quality_scale: platinum
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
---
|
||||
|
||||
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) as well as uploading generic files to your OneDrive.
|
||||
|
||||
Backup encryption is enabled by default and can be disabled as shown in the [backup documentation](/common-tasks/general/#to-define-the-backup-location-for-automatic-backups).
|
||||
|
||||
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.
|
||||
|
||||
|
@ -55,7 +55,7 @@ This is typically the same information needed to access your utility's website.
|
||||
|
||||
## Utility Authentication Requirements
|
||||
|
||||
For many utilities, only a username and password are required to access your accounts. Some utilities requires additional authentication information.
|
||||
For many utilities, only a username and password are required to access your accounts. Some utilities require additional authentication information.
|
||||
It might be necessary to configure your utility account with an authentication method that is compatible with the Opower integration.
|
||||
Utility-specific authentication requirements are listed below:
|
||||
|
||||
|
@ -139,7 +139,7 @@ There are a few known limitations for using the integration:
|
||||
This means you can only have 1 Home Assistant instance connected to your Overseerr instance at a time.
|
||||
- The integration is not able to function with <abbr title="cross-site request forgery">CSRF</abbr> protection turned on. In Overseer, go to **Settings** and turn off the **CSRF Protection**.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
||||
|
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