mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-22 16:56:50 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
1beb5a06ac
4
.github/ISSUE_TEMPLATE/config.yml
vendored
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -7,8 +7,8 @@ contact_links:
|
||||
url: https://www.home-assistant.io/help
|
||||
about: We use GitHub for tracking bugs, check our website for resources on getting help.
|
||||
- name: Feature Request
|
||||
url: https://community.home-assistant.io/c/feature-requests
|
||||
about: Please use our Community Forum for doing feature requests.
|
||||
url: https://github.com/orgs/home-assistant/discussions
|
||||
about: Please use this link to request new features or enhancements to existing features.
|
||||
- name: I'm unsure where to go
|
||||
url: https://www.home-assistant.io/join-chat
|
||||
about: If you are unsure where to go, then joining our chat is recommended; Just ask!
|
||||
|
10
.github/workflows/test.yml
vendored
10
.github/workflows/test.yml
vendored
@ -14,6 +14,16 @@ jobs:
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
- name: Check for .md files and suggest renaming
|
||||
run: |
|
||||
echo "Checking for .md files in source/_integrations..."
|
||||
MD_FILES=$(find source/_integrations -type f -name "*.md")
|
||||
if [ -n "$MD_FILES" ]; then
|
||||
echo "Found the following .md files:"
|
||||
echo "$MD_FILES"
|
||||
echo "⚠️ Please rename these files from .md to .markdown"
|
||||
exit 1
|
||||
fi
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
env:
|
||||
|
26
CODEOWNERS
26
CODEOWNERS
@ -15,7 +15,7 @@ source/_integrations/acaia.markdown @zweckj
|
||||
source/_integrations/accuweather.markdown @bieniu
|
||||
source/_integrations/acmeda.markdown @atmurray
|
||||
source/_integrations/acomax.markdown @starkillerOG
|
||||
source/_integrations/adax.markdown @danielhiversen
|
||||
source/_integrations/adax.markdown @danielhiversen @lazytarget
|
||||
source/_integrations/adguard.markdown @frenck
|
||||
source/_integrations/ads.markdown @mrpasztoradam
|
||||
source/_integrations/advantage_air.markdown @Bre77
|
||||
@ -41,6 +41,7 @@ source/_integrations/alarm_control_panel.template.markdown @home-assistant/core
|
||||
source/_integrations/alert.markdown @home-assistant/core @frenck
|
||||
source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh
|
||||
source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh
|
||||
source/_integrations/amazon_devices.markdown @chemelli74
|
||||
source/_integrations/amazon_polly.markdown @jschlyter
|
||||
source/_integrations/amberelectric.markdown @madpilot
|
||||
source/_integrations/ambient_network.markdown @thomaskistler
|
||||
@ -92,6 +93,7 @@ source/_integrations/auth.markdown @home-assistant/core
|
||||
source/_integrations/automation.markdown @home-assistant/core
|
||||
source/_integrations/avea.markdown @pattyland
|
||||
source/_integrations/awair.markdown @ahayworth @danielsjf
|
||||
source/_integrations/aws_s3.markdown @tomasbedrich
|
||||
source/_integrations/axis.markdown @Kane610
|
||||
source/_integrations/azure_data_explorer.markdown @kaareseras
|
||||
source/_integrations/azure_devops.markdown @timmo001
|
||||
@ -112,7 +114,7 @@ source/_integrations/blebox.markdown @bbx-a @swistakm
|
||||
source/_integrations/blink.markdown @fronzbot @mkmer
|
||||
source/_integrations/bliss_automation.markdown @starkillerOG
|
||||
source/_integrations/bloc_blinds.markdown @starkillerOG
|
||||
source/_integrations/blue_current.markdown @Floris272 @gleeuwen
|
||||
source/_integrations/blue_current.markdown @gleeuwen @NickKoepr @jtodorova23
|
||||
source/_integrations/bluemaestro.markdown @bdraco
|
||||
source/_integrations/blueprint.markdown @home-assistant/core
|
||||
source/_integrations/bluesound.markdown @thrawnarn @LouisChrist
|
||||
@ -177,7 +179,6 @@ source/_integrations/cozytouch.markdown @imicknl
|
||||
source/_integrations/cpuspeed.markdown @fabaff
|
||||
source/_integrations/cribl.markdown @Bre77
|
||||
source/_integrations/crownstone.markdown @Crownstone @RicArch97
|
||||
source/_integrations/cups.markdown @fabaff
|
||||
source/_integrations/dacia.markdown @epenet
|
||||
source/_integrations/daikin.markdown @fredrike
|
||||
source/_integrations/date.markdown @home-assistant/core
|
||||
@ -269,7 +270,7 @@ source/_integrations/event.markdown @home-assistant/core
|
||||
source/_integrations/evergy.markdown @tronikos
|
||||
source/_integrations/evil_genius_labs.markdown @balloob
|
||||
source/_integrations/evohome.markdown @zxdavb
|
||||
source/_integrations/ezviz.markdown @RenierM26 @baqs
|
||||
source/_integrations/ezviz.markdown @RenierM26
|
||||
source/_integrations/faa_delays.markdown @ntilley905
|
||||
source/_integrations/fan.markdown @home-assistant/core
|
||||
source/_integrations/fan.template.markdown @home-assistant/core
|
||||
@ -414,6 +415,7 @@ source/_integrations/image_upload.markdown @home-assistant/core
|
||||
source/_integrations/imap.markdown @jbouwh
|
||||
source/_integrations/imeon_inverter.markdown @Imeon-Energy
|
||||
source/_integrations/imgw_pib.markdown @bieniu
|
||||
source/_integrations/immich.markdown @mib1185
|
||||
source/_integrations/improv_ble.markdown @emontnemery
|
||||
source/_integrations/incomfort.markdown @jbouwh
|
||||
source/_integrations/indianamichiganpower.markdown @tronikos
|
||||
@ -454,6 +456,7 @@ source/_integrations/jewish_calendar.markdown @tsvi
|
||||
source/_integrations/juicenet.markdown @jesserockz
|
||||
source/_integrations/justnimbus.markdown @kvanzuijlen
|
||||
source/_integrations/jvc_projector.markdown @SteveEasley @msavazzi
|
||||
source/_integrations/kaiser_nienhaus.markdown @starkillerOG
|
||||
source/_integrations/kaiterra.markdown @Michsior14
|
||||
source/_integrations/kaleidescape.markdown @SteveEasley
|
||||
source/_integrations/keba.markdown @dannerph
|
||||
@ -647,7 +650,7 @@ source/_integrations/openhome.markdown @bazwilliams
|
||||
source/_integrations/opensky.markdown @joostlek
|
||||
source/_integrations/opentherm_gw.markdown @mvn23
|
||||
source/_integrations/openuv.markdown @bachya
|
||||
source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi
|
||||
source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi @wittypluck
|
||||
source/_integrations/opnsense.markdown @mtreinish
|
||||
source/_integrations/opower.markdown @tronikos
|
||||
source/_integrations/oralb.markdown @bdraco @Lash-L
|
||||
@ -662,6 +665,7 @@ source/_integrations/ovo_energy.markdown @timmo001
|
||||
source/_integrations/p1_monitor.markdown @klaasnicolaas
|
||||
source/_integrations/palazzetti.markdown @dotvav
|
||||
source/_integrations/panel_custom.markdown @home-assistant/frontend
|
||||
source/_integrations/paperless_ngx.markdown @fvgarrel
|
||||
source/_integrations/pcs_lighting.markdown @gwww
|
||||
source/_integrations/peblar.markdown @frenck
|
||||
source/_integrations/peco.markdown @IceBotYT
|
||||
@ -689,6 +693,7 @@ source/_integrations/portlandgeneral.markdown @tronikos
|
||||
source/_integrations/powerfox.markdown @klaasnicolaas
|
||||
source/_integrations/powerwall.markdown @bdraco @jrester @daniel-simpson
|
||||
source/_integrations/private_ble_device.markdown @Jc2k
|
||||
source/_integrations/probe_plus.markdown @pantherale0
|
||||
source/_integrations/profiler.markdown @bdraco
|
||||
source/_integrations/profilo.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
|
||||
source/_integrations/progettihwsw.markdown @ardaseremet
|
||||
@ -768,7 +773,6 @@ source/_integrations/russound_rnet.markdown @noahhusby
|
||||
source/_integrations/ruuvi_gateway.markdown @akx
|
||||
source/_integrations/ruuvitag_ble.markdown @akx
|
||||
source/_integrations/rympro.markdown @OnFreund @elad-bar @maorcc
|
||||
source/_integrations/s3.markdown @tomasbedrich
|
||||
source/_integrations/sabnzbd.markdown @shaiu @jpbede
|
||||
source/_integrations/saj.markdown @fredericvl
|
||||
source/_integrations/samsam.markdown @klaasnicolaas
|
||||
@ -827,6 +831,7 @@ source/_integrations/slide_local.markdown @dontinelli
|
||||
source/_integrations/slimproto.markdown @marcelveldt
|
||||
source/_integrations/sma.markdown @kellerza @rklomp @erwindouna
|
||||
source/_integrations/smappee.markdown @bsmappee
|
||||
source/_integrations/smarla.markdown @explicatis @rlint-explicatis
|
||||
source/_integrations/smart_blinds.markdown @starkillerOG
|
||||
source/_integrations/smart_home.markdown @starkillerOG
|
||||
source/_integrations/smart_meter_texas.markdown @grahamwetzler
|
||||
@ -871,7 +876,7 @@ source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter
|
||||
source/_integrations/stt.markdown @home-assistant/core
|
||||
source/_integrations/subaru.markdown @G-Two
|
||||
source/_integrations/suez_water.markdown @ooii @jb101010-2
|
||||
source/_integrations/sun.markdown @Swamp-Ig
|
||||
source/_integrations/sun.markdown @home-assistant/core
|
||||
source/_integrations/supla.markdown @mwegrzynek
|
||||
source/_integrations/surepetcare.markdown @benleb @danielhiversen
|
||||
source/_integrations/swepco.markdown @tronikos
|
||||
@ -881,7 +886,7 @@ source/_integrations/switch.markdown @home-assistant/core
|
||||
source/_integrations/switch.template.markdown @home-assistant/core
|
||||
source/_integrations/switch_as_x.markdown @home-assistant/core
|
||||
source/_integrations/switchbee.markdown @jafar-atili
|
||||
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
|
||||
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
|
||||
source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur
|
||||
source/_integrations/switcher_kis.markdown @thecode @YogevBokobza
|
||||
source/_integrations/switchmate.markdown @danielhiversen @qiz-li
|
||||
@ -904,7 +909,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 @Petro31 @PhracturedBlue @home-assistant/core
|
||||
source/_integrations/template.markdown @Petro31 @home-assistant/core
|
||||
source/_integrations/tesla_fleet.markdown @Bre77
|
||||
source/_integrations/tesla_wall_connector.markdown @einarhauks
|
||||
source/_integrations/teslemetry.markdown @Bre77
|
||||
@ -984,7 +989,7 @@ source/_integrations/vizio.markdown @raman325
|
||||
source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare
|
||||
source/_integrations/vodafone_station.markdown @paoloantinori @chemelli74
|
||||
source/_integrations/voice_assistant.markdown @balloob @synesthesiam
|
||||
source/_integrations/voip.markdown @balloob @synesthesiam
|
||||
source/_integrations/voip.markdown @balloob @synesthesiam @jaminh
|
||||
source/_integrations/volumio.markdown @OnFreund
|
||||
source/_integrations/volvooncall.markdown @molobrakos
|
||||
source/_integrations/vulcan.markdown @Antoni-Czaplicki
|
||||
@ -1049,6 +1054,7 @@ source/_integrations/zeroconf.markdown @bdraco
|
||||
source/_integrations/zerproc.markdown @emlove
|
||||
source/_integrations/zeversolar.markdown @kvanzuijlen
|
||||
source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly @TheJulianJES
|
||||
source/_integrations/zimi.markdown @markhannon
|
||||
source/_integrations/zodiac.markdown @JulienTant
|
||||
source/_integrations/zondergas.markdown @klaasnicolaas
|
||||
source/_integrations/zone.markdown @home-assistant/core
|
||||
|
8
Gemfile
8
Gemfile
@ -3,16 +3,16 @@ source 'https://rubygems.org'
|
||||
ruby '> 2.5.0'
|
||||
|
||||
group :development do
|
||||
gem 'rake', '13.2.1'
|
||||
gem 'rake', '13.3.0'
|
||||
gem 'jekyll', '4.4.1'
|
||||
gem 'compass', '1.0.3'
|
||||
gem 'sass-globbing', '1.1.5'
|
||||
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.89.0'
|
||||
gem 'rubocop', '1.75.7'
|
||||
gem 'ruby-lsp', '0.23.23'
|
||||
gem 'sass-embedded', '1.89.2'
|
||||
gem 'rubocop', '1.76.2'
|
||||
gem 'ruby-lsp', '0.24.1'
|
||||
gem 'rackup', '2.2.1'
|
||||
end
|
||||
|
||||
|
36
Gemfile.lock
36
Gemfile.lock
@ -4,8 +4,8 @@ GEM
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
ast (2.4.3)
|
||||
base64 (0.2.0)
|
||||
bigdecimal (3.1.9)
|
||||
base64 (0.3.0)
|
||||
bigdecimal (3.2.2)
|
||||
chunky_png (1.4.0)
|
||||
colorator (1.1.0)
|
||||
commonmarker (0.23.11)
|
||||
@ -22,7 +22,7 @@ GEM
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
concurrent-ruby (1.3.5)
|
||||
csv (3.3.4)
|
||||
csv (3.3.5)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
@ -30,10 +30,10 @@ GEM
|
||||
ffi (1.17.2-arm64-darwin)
|
||||
ffi (1.17.2-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.31.0-arm64-darwin)
|
||||
google-protobuf (4.31.1-arm64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.31.0-x86_64-linux-gnu)
|
||||
google-protobuf (4.31.1-x86_64-linux-gnu)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
@ -99,7 +99,7 @@ GEM
|
||||
prism (1.4.0)
|
||||
public_suffix (6.0.2)
|
||||
racc (1.8.1)
|
||||
rack (3.1.15)
|
||||
rack (3.1.16)
|
||||
rack-protection (4.1.1)
|
||||
base64 (>= 0.1.0)
|
||||
logger (>= 1.6.0)
|
||||
@ -110,7 +110,7 @@ GEM
|
||||
rackup (2.2.1)
|
||||
rack (>= 3)
|
||||
rainbow (3.1.1)
|
||||
rake (13.2.1)
|
||||
rake (13.3.0)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
@ -119,7 +119,7 @@ GEM
|
||||
regexp_parser (2.10.0)
|
||||
rexml (3.4.1)
|
||||
rouge (4.5.2)
|
||||
rubocop (1.75.7)
|
||||
rubocop (1.76.2)
|
||||
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.44.0, < 2.0)
|
||||
rubocop-ast (>= 1.45.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.44.1)
|
||||
rubocop-ast (1.45.1)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.4)
|
||||
ruby-lsp (0.23.23)
|
||||
ruby-lsp (0.24.1)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 1.2, < 2.0)
|
||||
rbs (>= 3, < 5)
|
||||
@ -142,9 +142,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.89.0-arm64-darwin)
|
||||
sass-embedded (1.89.2-arm64-darwin)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.89.0-x86_64-linux-gnu)
|
||||
sass-embedded (1.89.2-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.31)
|
||||
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.12130)
|
||||
sorbet-runtime (0.5.12189)
|
||||
stringex (2.8.6)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -184,10 +184,10 @@ DEPENDENCIES
|
||||
jekyll-toc (= 0.19.0)
|
||||
nokogiri (= 1.18.8)
|
||||
rackup (= 2.2.1)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.75.7)
|
||||
ruby-lsp (= 0.23.23)
|
||||
sass-embedded (= 1.89.0)
|
||||
rake (= 13.3.0)
|
||||
rubocop (= 1.76.2)
|
||||
ruby-lsp (= 0.24.1)
|
||||
sass-embedded (= 1.89.2)
|
||||
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: 5
|
||||
current_patch_version: 3
|
||||
date_released: 2025-05-23
|
||||
current_minor_version: 6
|
||||
current_patch_version: 1
|
||||
date_released: 2025-06-13
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
|
1400
package-lock.json
generated
1400
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.7.2",
|
||||
"textlint": "^14.8.4",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
|
@ -161,7 +161,7 @@ Assuming you have only the owner created though onboarding process, no other use
|
||||
|
||||
The command line auth provider executes a configurable shell command to perform user authentication. Two environment variables, `username` and `password`, are passed to the command. Access is granted when the command exits successfully (with exit code 0).
|
||||
|
||||
This provider can be used to integrate Home Assistant with arbitrary external authentication services, from plaintext databases over LDAP to RADIUS. A compatible script for LDAP authentication is [this one](https://github.com/bob1de/ldap-auth-sh), for instance. Please note, this will only work when using the Home Assistant Core installation type.
|
||||
This provider can be used to integrate Home Assistant with arbitrary external authentication services, from plaintext databases over LDAP to RADIUS.
|
||||
|
||||
Here is a configuration example:
|
||||
|
||||
|
@ -16,16 +16,18 @@ related:
|
||||
|
||||
## The blueprint schema
|
||||
|
||||
Blueprint schemas currently supports three types of schema depending on its domain: [`automation`](/docs/automation/yaml/); `script`; and [`template`](/integrations/template/#using-blueprints).
|
||||
|
||||
The configuration schema of a blueprint consists of 2 parts:
|
||||
|
||||
1. The blueprint's high-level metadata: name, description, the input required from the user.
|
||||
2. The schema of the thing the blueprint describes.
|
||||
1. The blueprint's high-level metadata: name, domain and, optionally, any input required from the user.
|
||||
2. The schema for the blueprint domain it describes.
|
||||
|
||||
The first part is referred to as the *blueprint schema*. It contains the
|
||||
blueprint's metadata.
|
||||
|
||||
The only requirement for a blueprint is a name. In its most basic form,
|
||||
a blueprint would look like:
|
||||
Minimum required metadata for a blueprint is its name and domain. In its most basic form,
|
||||
a blueprint looks like:
|
||||
|
||||
```yaml
|
||||
blueprint:
|
||||
@ -35,10 +37,9 @@ blueprint:
|
||||
|
||||
Although this is a valid blueprint, it is not very useful.
|
||||
|
||||
The second part depends on the use case of the blueprint. For example, if you create a blueprint for an automation, the full
|
||||
The second part depends on its domain, the type of blueprint. For example, when creating a blueprint for an automation, the full
|
||||
schema for an [automation](/docs/automation/yaml/) applies.
|
||||
|
||||
You can add a description of the blueprint's use case and user inputs.
|
||||
|
||||
This is the full blueprint schema:
|
||||
|
||||
@ -50,13 +51,13 @@ name:
|
||||
description:
|
||||
description: >
|
||||
The description of the blueprint. While optional, this field is highly
|
||||
recommended. Describe what the blueprint does and describe the inputs the blueprint provide. The description can
|
||||
recommended. Describe what the blueprint does and describe the inputs the blueprint requires. The description can
|
||||
include [Markdown](https://commonmark.org/help/).
|
||||
type: string
|
||||
required: false
|
||||
domain:
|
||||
description: >
|
||||
The domain in which this blueprint is used. Currently, only
|
||||
The domain in which this blueprint is used. Currently, only three types,
|
||||
[`automation`](/docs/automation/yaml/), `script` and [`template`](/integrations/template/#using-blueprints) are supported.
|
||||
type: string
|
||||
required: true
|
||||
@ -66,7 +67,7 @@ author:
|
||||
required: false
|
||||
homeassistant:
|
||||
description: >
|
||||
Home Assistant requirements to be able to use the blueprint successfully.
|
||||
Home Assistant version required for the blueprint to work successfully.
|
||||
type: map
|
||||
required: false
|
||||
keys:
|
||||
@ -90,10 +91,9 @@ input:
|
||||
|
||||
### Blueprint inputs
|
||||
|
||||
As described above, a blueprint can accept one (or multiple)
|
||||
inputs from the blueprint user.
|
||||
A blueprint can accept one or multiple inputs from the user, but does not require any input.
|
||||
|
||||
These inputs can be of any type (string, boolean, list, dictionary). They can have
|
||||
These inputs can be of any type (string, boolean, list, map). They can have
|
||||
a default value and also provide a [selector](/docs/blueprint/selectors/) that
|
||||
ensures a matching input field in the user interface.
|
||||
|
||||
@ -126,9 +126,9 @@ A blueprint input has the following configuration:
|
||||
{% endconfiguration %}
|
||||
|
||||
Each input field can be referred to, outside of the blueprint metadata, using
|
||||
the `!input` custom YAML tag.
|
||||
the `!input` custom YAML tag before its name.
|
||||
|
||||
The following example shows a minimal blueprint with a single input:
|
||||
The following example shows a minimal *blueprint schema* with a single input:
|
||||
|
||||
```yaml
|
||||
blueprint:
|
||||
@ -161,7 +161,7 @@ A section is differentiated from an input by the presence of an additional `inpu
|
||||
Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions. See [this section](/docs/blueprint/schema/#min_version) for more details.
|
||||
{% endcaution %}
|
||||
|
||||
The full configuration for a section is below:
|
||||
The full configuration for an input section is below:
|
||||
|
||||
{% configuration %}
|
||||
|
||||
@ -194,7 +194,7 @@ input:
|
||||
|
||||
|
||||
|
||||
The following example shows a blueprint with some inputs in a section:
|
||||
The following example shows a *blueprint schema* with some inputs in a section:
|
||||
|
||||
```yaml
|
||||
blueprint:
|
||||
@ -232,7 +232,8 @@ variables:
|
||||
The [built-in blueprints][blueprint-built-in]
|
||||
are great examples to get a bit of a feeling of how blueprints work.
|
||||
|
||||
Here is the built-in motion light automation blueprint:
|
||||
Here is the built-in motion light automation blueprint.
|
||||
Note the *blueprint schema* under the blueprint key is followed by its domain schema. In this example, an automation schema.
|
||||
|
||||
```yaml
|
||||
blueprint:
|
||||
|
@ -52,8 +52,8 @@ There are a few very important rules to remember when adding templates to YAML:
|
||||
|
||||
1. You **must** surround single-line templates with double quotes (`"`) or single quotes (`'`).
|
||||
2. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.default), or both.
|
||||
3. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters).
|
||||
4. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables.
|
||||
3. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters).
|
||||
4. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables.
|
||||
|
||||
Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates.
|
||||
|
||||
@ -97,7 +97,7 @@ In your automations, you could then reuse this macro by importing it:
|
||||
{{ format_entity('sensor.temperature') }}
|
||||
```
|
||||
|
||||
{$ endraw %}
|
||||
{% endraw %}
|
||||
|
||||
Home Assistant also allows you to write macros with non-string return values by
|
||||
taking a named argument called `returns` and calling it with a return value. Once created,
|
||||
@ -774,7 +774,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
|
||||
{% endraw %}
|
||||
|
||||
- `as_datetime(value, default)` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. When the input is already a datetime object it will be returned as is. in case the input is a datetime.date object, midnight will be added as time. This function can also be used as a filter.
|
||||
- `as_datetime(value, default)` converts a string containing a timestamp or a valid UNIX timestamp to a datetime object. If conversion fails, the function returns the `default` value. If no `default` is provided and the input is a string that cannot be converted to a datetime, it returns `None`. For other invalid inputs (e.g., a list, dictionary, or a numeric value too large to convert), it raises an error when no `default` is supplied. In case the input is already a datetime object, it is returned unchanged. If the input is a `datetime.date` object, midnight is added as the time. This function can also be used as a filter.
|
||||
- `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.
|
||||
|
@ -1,6 +1,9 @@
|
||||
---
|
||||
title: "Z-Wave Controllers"
|
||||
description: "Extended instructions how to setup Z-Wave."
|
||||
related:
|
||||
- docs: /integrations/zwave_js/
|
||||
title: Z-Wave integration
|
||||
---
|
||||
|
||||
## Supported Z-Wave USB Sticks & Hardware Modules
|
||||
|
@ -69,13 +69,11 @@
|
||||
{%- endif -%}
|
||||
|
||||
{% if page.works_with %}
|
||||
{%- for type in page.works_with -%}
|
||||
<div class="section">
|
||||
<a href="https://works-with.home-assistant.io/">
|
||||
<img src="../../images/works_with/works-with.png" alt="Works with Home assistant">
|
||||
</a>
|
||||
</div>
|
||||
{%- endfor -%}
|
||||
<div class="section">
|
||||
<a href="https://works-with.home-assistant.io/">
|
||||
<img src="../../images/works_with/works-with.png" alt="Works with Home assistant">
|
||||
</a>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
||||
{% if page.ha_domain %}
|
||||
|
@ -9,14 +9,6 @@ To list all your currently connected network storages, go to **{% my storage tit
|
||||
You need to update to Home Assistant Operating System 10.2 before you can use this feature.
|
||||
{% endimportant %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% important %}
|
||||
|
||||
You need to make sure you run a supported {% term "Home Assistant Supervised" %} installation with the latest version of the [os-agent](https://github.com/home-assistant/os-agent). Make sure that your supervisor uses [slave bind propagation](https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation) for the data volume.
|
||||
|
||||
{% endimportant %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
<p class='img'>
|
||||
|
@ -1,9 +1,12 @@
|
||||
Best practice for updating Home Assistant Core:
|
||||
#### Prerequisites
|
||||
|
||||
1. [Back up your installation](/common-tasks/general/#backups) and store the backup and the [backup emergency kit](/more-info/backup-emergency-kit/) somewhere safe.
|
||||
- This ensures that you can [restore your installation from backup](/common-tasks/general/#restoring-a-backup) if needed.
|
||||
2. Check the release notes for backward-incompatible changes on [Home Assistant release notes](/blog/categories/core/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f` / `CMD + f`) and search for **Backward-incompatible changes**.
|
||||
3. To update Home Assistant Core, choose one of the following options.
|
||||
|
||||
#### To update Home Assistant Core
|
||||
|
||||
To update Home Assistant Core, choose one of the following options.
|
||||
|
||||
{% if page.installation == "os" %}
|
||||
|
||||
@ -20,6 +23,10 @@ Best practice for updating Home Assistant Core:
|
||||
- Go to {% my updates title="**System** > **Updates**" %}.
|
||||
- Select the update notification.
|
||||
- Select the cogwheel {% icon "mdi:cog-outline" %}, then set **Visible** to active.
|
||||
4. Open the notification for the component you want to update.
|
||||
5. If you want to backup the system first (recommended), enable the backup toggle.
|
||||
6. Select **Update**.
|
||||
7. After the update completed, check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
|
||||
|
||||
- title: Using the CLI
|
||||
content: |
|
||||
@ -57,6 +64,7 @@ Best practice for updating Home Assistant Core:
|
||||
|
||||
{% endtabbed_block %}
|
||||
|
||||
After the update, check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
|
||||
|
||||
{% endif %}
|
||||
|
||||
4. Check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
|
||||
|
@ -1,13 +1,6 @@
|
||||
<!-- Left column begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- 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>
|
||||
|
||||
{% assign releases_post_limit = 2 %}
|
||||
{% assign blog_post_limit = 4 %}
|
||||
<!-- Home Assistant updates posts -->
|
||||
@ -37,33 +30,40 @@
|
||||
</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>
|
||||
<!-- 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 %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
{% 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>
|
||||
|
||||
<!-- Community Day 2025 - To move on/after event -->
|
||||
<a href="https://lu.ma/homeassistant" class="material-card picture-promo" target="_blank" style="
|
||||
background-image: url(/images/frontpage/community-meetup.webp);
|
||||
aspect-ratio: 500/263;
|
||||
" aria-label="State of the Open Home - Saturday April 12th 2025">
|
||||
</a>
|
||||
|
||||
<!-- OHF notice -->
|
||||
<a href="https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/"
|
||||
|
@ -68,7 +68,7 @@ If you change the configuration, you have to restart the server. To do that you
|
||||
`docker compose` should [already be installed](https://www.docker.com/blog/announcing-compose-v2-general-availability/) on your system. If not, you can [manually](https://docs.docker.com/compose/install/linux/) install it.
|
||||
{% endtip %}
|
||||
|
||||
As the Docker command becomes more complex, switching to `docker compose` can be preferable and support automatically restarting on failure or system restart. Create a `compose.yml` file:
|
||||
As the Docker command becomes more complex, switching to `docker compose` can be preferable and support automatically restarting on failure or system restart. Create a `compose.yaml` file:
|
||||
|
||||
{% include installation/container/compose.md %}
|
||||
|
||||
|
46
source/_includes/integrations/wwha.md
Normal file
46
source/_includes/integrations/wwha.md
Normal file
@ -0,0 +1,46 @@
|
||||
{% capture name %}{{ include.name | default: page.title }}{% endcapture %}
|
||||
{% capture url %}{{ include.url }}{% endcapture %}
|
||||
|
||||
{% for type in page.works_with %}
|
||||
{% case type %}
|
||||
{% when "zwave" %}{% assign formatted_type = "Z-Wave" %}
|
||||
{% when "zigbee" %}{% assign formatted_type = "Zigbee" %}
|
||||
{% when "matter" %}{% assign formatted_type = "Matter" %}
|
||||
{% else %}{% assign formatted_type = type | capitalize %}
|
||||
{% endcase %}
|
||||
{% if forloop.first %}
|
||||
{% assign formatted_types = formatted_type %}
|
||||
{% elsif forloop.last %}
|
||||
{% assign formatted_types = formatted_types | append: " and " | append: formatted_type %}
|
||||
{% else %}
|
||||
{% assign formatted_types = formatted_types | append: ", " | append: formatted_type %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
**[{{ name }}]({{ url }})** is a member of the Works with Home Assistant partner program for their {{ formatted_types }} products. {{ name }} is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
{% if page.works_with contains "zwave" %}
|
||||
{{ name }} Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
|
||||
{% my add_zwave_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/)
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if page.works_with contains "zigbee" %}
|
||||
{{ name }} Zigbee devices work locally and integrate seamlessly with the Zigbee integration in Home Assistant (Zigbee stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
|
||||
{% my add_zigbee_device badge brand=page.ha_domain %}
|
||||
|
||||
[Learn more about Zigbee in Home Assistant.](/integrations/zha/)
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if page.works_with contains "matter" %}
|
||||
{{ name }} 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.
|
||||
|
||||
{% my add_matter_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Matter in Home Assistant.](/integrations/matter/)
|
||||
{% endif %}
|
@ -29,8 +29,9 @@
|
||||
<li><a class="external-link" href="https://design.home-assistant.io">Design Portal {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://data.home-assistant.io">Data Science Portal {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://community.home-assistant.io">Community Forum {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://creators.home-assistant.io/">Creator Network {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://works-with.home-assistant.io/">Works With Home Assistant {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a href="/help/reporting_issues/">Reporting issues</a></li>
|
||||
<li><a href="https://home-assistant-store.creator-spring.com/">Community Merch Store</a></li>
|
||||
</ul>
|
||||
<h3>System status</h3>
|
||||
<ul>
|
||||
|
@ -3,14 +3,17 @@ title: Adax
|
||||
description: Instructions on how to integrate Adax heater into Home Assistant.
|
||||
ha_category:
|
||||
- Climate
|
||||
- Sensor
|
||||
ha_release: 2021.8
|
||||
ha_iot_class: Local Polling
|
||||
ha_codeowners:
|
||||
- '@danielhiversen'
|
||||
- '@lazytarget'
|
||||
ha_domain: adax
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- climate
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
@ -41,3 +44,13 @@ You will also need a credential, which you can create in the Adax app:
|
||||
In the configuration popup you will need the Account ID, and the generated API password (not the account password)
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Energy monitoring
|
||||
|
||||
When using the cloud integration, the Adax integration provides energy monitoring sensors that track the power consumption of your heaters. These sensors are only available when using the cloud connection, as the local integration does not support energy data.
|
||||
|
||||
The integration creates the following energy sensors:
|
||||
|
||||
- **Individual energy sensors** - One sensor for each Adax heater showing its energy consumption in Wh
|
||||
|
||||
The energy sensors use the `total_increasing` state class, making them suitable for use with Home Assistant's energy dashboard to track your heating costs and consumption over time.
|
||||
|
@ -27,6 +27,18 @@ ha_zeroconf: true
|
||||
The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/).
|
||||
AirGradient creates indoor and outdoor air quality monitors that enable you know if the air quality is healthy or not. They measure metrics such as PM2.5, CO2, TVOCs, and NOx. Both the software and hardware are open-source, allowing you to customize or extend the device functionality.
|
||||
|
||||
## Use cases
|
||||
|
||||
- Monitor indoor and outdoor air quality.
|
||||
- Warn to open windows when CO2 levels are too high.
|
||||
- Control ventilation systems based on air quality.
|
||||
|
||||
## Supported devices
|
||||
|
||||
- AirGradient DIY Air Quality Monitor
|
||||
- AirGradient Indoor Air Quality Monitor
|
||||
- AirGradient Outdoor Air Quality Monitor
|
||||
|
||||
{% important %}
|
||||
In order for the device to be set up or discovered by Home Assistant, the [firmware](https://www.airgradient.com/documentation/firmwares) version should be at least 3.1.1.
|
||||
{% endimportant %}
|
||||
@ -38,7 +50,11 @@ Host:
|
||||
description: "The IP address or hostname for your AirGradient device."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Available sensors
|
||||
## Supported functionality
|
||||
|
||||
Below is a complete overview of the entities this integration provides.
|
||||
|
||||
### Available sensors
|
||||
|
||||
The integration will fetch data from each device. The following sensors are supported:
|
||||
|
||||
@ -65,7 +81,7 @@ A number of configuration entities are available as sensors to automate with if
|
||||
- Display temperature unit
|
||||
- Display brightness
|
||||
|
||||
## Available configuration entities
|
||||
### Available configuration entities
|
||||
|
||||
The integration provides a few configuration entities to customize the device experience.
|
||||
The settings are only available when the configuration source is set to local.
|
||||
@ -84,6 +100,67 @@ The following entities are supported:
|
||||
- NOx learning offset
|
||||
- Total volatile organic compounds learning offset
|
||||
|
||||
### Updates
|
||||
|
||||
The AirGradient integration provides an update entity that checks for firmware updates for your AirGradient device.
|
||||
To install the update, the device needs to be rebooted.
|
||||
|
||||
## Data updates
|
||||
|
||||
This integration uses local {% term polling %}, meaning it checks for changes to all entities by regularly communicating with the AirGradient device.
|
||||
|
||||
The integration will retrieve data from the device every minute.
|
||||
|
||||
The updates for the device are checked once every hour.
|
||||
|
||||
## Actions
|
||||
|
||||
This integration does not provide additional actions. All actions available
|
||||
for this integration are provided by their respective entities.
|
||||
|
||||
## Examples
|
||||
|
||||
The following examples show how to use the AirGradient integration in Home
|
||||
Assistant automations. These examples are just a starting point, and you can
|
||||
use them as inspiration to create your own automations.
|
||||
|
||||
### Notify when the CO2 level is too high
|
||||
|
||||
The following example sends a notification to your mobile device when the CO2 level exceeds 1000 ppm.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Notify when CO2 level is too high"
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.airgradient_carbon_dioxide
|
||||
above: 1000
|
||||
|
||||
actions:
|
||||
- action: notify.mobile_app_your_device
|
||||
data:
|
||||
title: "High CO2 Level Alert"
|
||||
message: >
|
||||
The CO2 level is too high at {{ states('sensor.airgradient_carbon_dioxide') }} ppm.
|
||||
Please consider ventilating the room.
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
## Known limitations
|
||||
|
||||
The AirGradient integration currently has the following limitations:
|
||||
- The update entity is not able to install updates automatically. You will need to reboot the device manually after installing the update.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you're experiencing issues with your AirGradient integration, try these general troubleshooting steps:
|
||||
|
||||
1. Make sure your AirGradient is powered on and properly connected to your home network.
|
||||
2. If the integration shows as unavailable, try restarting both your AirGradient and Home Assistant.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
|
@ -15,6 +15,7 @@ ha_config_flow: true
|
||||
ha_platforms:
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
Integrates Airthings sensors into Home Assistant.
|
||||
|
@ -12,12 +12,12 @@ ha_integration_type: entity
|
||||
related:
|
||||
- docs: /integrations/manual/
|
||||
title: Manual alarm
|
||||
- docs: /integrations/alarm_control_panel.template/
|
||||
- docs: /integrations/template/#alarm-control-panel
|
||||
title: Template alarm
|
||||
---
|
||||
|
||||
Home Assistant can give you an interface which is similar to a classic alarm system.
|
||||
Please see [manual alarm](/integrations/manual) or [template alarm](/integrations/alarm_control_panel.template) for alarm configuration.
|
||||
Please see [manual alarm](/integrations/manual) or [template alarm](/integrations/template/#alarm-control-panel) for alarm configuration.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
|
@ -1,147 +0,0 @@
|
||||
---
|
||||
title: "Template Alarm control panel"
|
||||
description: "Instructions on how to integrate template alarm control panels into Home Assistant."
|
||||
ha_category:
|
||||
- Alarm
|
||||
- Helper
|
||||
ha_release: 0.105
|
||||
ha_iot_class: "Local Push"
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` {% term integration %} creates alarm control panels that combine integrations or adds preprocessing logic to actions.
|
||||
|
||||
There are several powerful ways to use this {% term integration %}, including grouping existing integrations into a simpler integrations, or adding logic that Home Assistant will execute when accessed.
|
||||
|
||||
For example, if you want to expose a true alarm panel to Google Home, Alexa, or HomeKit - but limit its ability to disarm when there's no one home, you can do that using a template.
|
||||
|
||||
Another use case could be grouping a series of sensors and services together to represent various "armed" and "disarmed" states and actions.
|
||||
|
||||
This can simplify the GUI and make it easier to write automations.
|
||||
|
||||
In optimistic mode, the alarm control panel will immediately change state after every command. Otherwise, the alarm control panel will wait for state confirmation from the template. Try to enable it, if experiencing incorrect operation.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## YAML Configuration
|
||||
|
||||
To enable a template alarm control panel in your installation, add the following to your {% term "`configuration.yaml`" %} file.
|
||||
{% include integrations/restart_ha_after_config_inclusion.md %}
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
alarm_control_panel:
|
||||
- platform: template
|
||||
panels:
|
||||
safe_alarm_panel:
|
||||
value_template: "{{ states('alarm_control_panel.real_alarm') }}"
|
||||
arm_away:
|
||||
action: alarm_control_panel.alarm_arm_away
|
||||
target:
|
||||
entity_id: alarm_control_panel.real_alarm
|
||||
data:
|
||||
code: !secret alarm_code
|
||||
arm_home:
|
||||
action: alarm_control_panel.alarm_arm_home
|
||||
target:
|
||||
entity_id: alarm_control_panel.real_alarm
|
||||
data:
|
||||
code: !secret alarm_code
|
||||
disarm:
|
||||
- condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: "home"
|
||||
- action: alarm_control_panel.alarm_disarm
|
||||
target:
|
||||
entity_id: alarm_control_panel.real_alarm
|
||||
data:
|
||||
code: !secret alarm_code
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
panels:
|
||||
description: List of your panels.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
alarm_control_panel_name:
|
||||
description: The slug of the panel.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
default: Template Alarm Control Panel
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this alarm control panel. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: "Defines a template to set the state of the alarm panel. Only the states `armed_away`, `armed_home`, `armed_night`, `armed_vacation`, `arming`, `disarmed`, `pending`, `triggered` and `unavailable` are used."
|
||||
required: false
|
||||
type: template
|
||||
disarm:
|
||||
description: Defines an action to run when the alarm is disarmed.
|
||||
required: false
|
||||
type: action
|
||||
arm_away:
|
||||
description: Defines an action to run when the alarm is armed to away mode.
|
||||
required: false
|
||||
type: action
|
||||
arm_home:
|
||||
description: Defines an action to run when the alarm is armed to home mode.
|
||||
required: false
|
||||
type: action
|
||||
arm_night:
|
||||
description: Defines an action to run when the alarm is armed to night mode.
|
||||
required: false
|
||||
type: action
|
||||
arm_vacation:
|
||||
description: Defines an action to run when the alarm is armed to vacation mode.
|
||||
required: false
|
||||
type: action
|
||||
arm_custom_bypass:
|
||||
description: Defines an action to run when the alarm is armed to custom bypass mode.
|
||||
required: false
|
||||
type: action
|
||||
trigger:
|
||||
description: Defines an action to run when the alarm is triggered.
|
||||
required: false
|
||||
type: action
|
||||
code_arm_required:
|
||||
description: If true, the code is required to arm the alarm.
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
code_format:
|
||||
description: One of `number`, `text` or `no_code`. Format for the code used to arm/disarm the alarm.
|
||||
required: false
|
||||
type: string
|
||||
default: number
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of an integration that takes extra time to load, the template alarm control panel may get an `unknown` state during startup. This results in error messages in your log file until that integration has completed loading. If you use `is_state()` function in your template, you can avoid this situation.
|
||||
|
||||
For example, you would replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
|
@ -4,15 +4,17 @@ description: Instructions on how to integrate Alexa Devices into Home Assistant.
|
||||
ha_category:
|
||||
- Binary Sensor
|
||||
- Notify
|
||||
- Switch
|
||||
ha_release: '2025.6'
|
||||
ha_domain: alexa_devices
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@chemelli74'
|
||||
ha_iot_class: Local Polling
|
||||
ha_iot_class: Cloud Polling
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- notify
|
||||
- switch
|
||||
ha_integration_type: hub
|
||||
ha_quality_scale: bronze
|
||||
---
|
||||
@ -31,7 +33,7 @@ There is support for the following device families within Home Assistant:
|
||||
- **Amazon Echo Plus**
|
||||
- **Amazon Echo Show**
|
||||
- **Amazon Fire TV Stick**
|
||||
- **Fire Tablet**
|
||||
- **Amazon Fire Tablet**
|
||||
|
||||
and all 3rd party that has Alexa capabilities built-in
|
||||
|
||||
@ -113,6 +115,7 @@ The **Alexa Devices** {% term integration %} provides the following entities:
|
||||
|
||||
- Binary sensor - main and Bluetooth connectivity
|
||||
- Notify - Speak and Announce notifications
|
||||
- Switch - Do not disturb
|
||||
|
||||
## Removing the integration
|
||||
|
||||
|
@ -15,10 +15,4 @@ ha_iot_standard: matter
|
||||
ha_brand: true
|
||||
---
|
||||
|
||||
[Aqara](https://www.aqara.com/) is a member of the Works with Home Assistant partner program for their Matter products. Aqara is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
Aqara 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.
|
||||
|
||||
{% my add_matter_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Matter in Home Assistant.](/integrations/matter/)
|
||||
{% include integrations/wwha.md url="https://www.aqara.com/" %}
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -13,6 +13,7 @@ ha_codeowners:
|
||||
- '@jtodorova23'
|
||||
ha_domain: blue_current
|
||||
ha_platforms:
|
||||
- button
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
@ -7,8 +7,8 @@ ha_release: 0.51
|
||||
ha_iot_class: Local Polling
|
||||
ha_domain: bluesound
|
||||
ha_platforms:
|
||||
- media_player
|
||||
- button
|
||||
- media_player
|
||||
ha_codeowners:
|
||||
- '@thrawnarn'
|
||||
- '@LouisChrist'
|
||||
|
@ -21,6 +21,7 @@ ha_platforms:
|
||||
- switch
|
||||
ha_integration_type: device
|
||||
ha_quality_scale: bronze
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
The **Bosch Alarm Panel** {% term integration %} allows you to connect your [Bosch Alarm Panel](https://www.boschsecurity.com) to Home Assistant to control and monitor your Bosch Alarm Panel.
|
||||
|
@ -26,7 +26,7 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
ha_integration_type: hub
|
||||
ha_quality_scale: bronze
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
||||
The **Comelit SimpleHome** {% term integration %} allows you to control your [Comelit home automation devices](https://comelitgroup.it/installatore/offerta/home-building-automation/).
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -1,376 +0,0 @@
|
||||
---
|
||||
title: "Template cover"
|
||||
description: "Instructions on how to integrate template covers into Home Assistant."
|
||||
ha_category:
|
||||
- Cover
|
||||
- Helper
|
||||
ha_release: 0.48
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- cover
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform can create covers that combine integrations and provides
|
||||
the ability to run scripts or invoke actions for each of the open,
|
||||
close, stop, position and tilt commands of a cover.
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable Template Covers in your installation,
|
||||
add the following to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
cover:
|
||||
- platform: template
|
||||
covers:
|
||||
garage_door:
|
||||
device_class: garage
|
||||
friendly_name: "Garage Door"
|
||||
value_template: "{{ states('sensor.garage_door')|float > 0 }}"
|
||||
open_cover:
|
||||
action: script.open_garage_door
|
||||
close_cover:
|
||||
action: script.close_garage_door
|
||||
stop_cover:
|
||||
action: script.stop_garage_door
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
covers:
|
||||
description: List of your covers.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
friendly_name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this cover. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: Defines a template to get the state of the cover. Valid output values from the template are `open`, `opening`, `closing` and `closed` which are directly mapped to the corresponding states. In addition, `true` is valid as a synonym to `open` and `false` as a synonym to `closed`. If [both a `value_template` and a `position_template`](#combining-value_template-and-position_template) are specified, only `opening` and `closing` are set from the `value_template`. If the template produces a `None` value the state will be set to `unknown`.
|
||||
required: false
|
||||
type: template
|
||||
position_template:
|
||||
description: Defines a template to get the position of the cover. Legal values are numbers between `0` (closed) and `100` (open). If the template produces a `None` value the current position will be set to `unknown`.
|
||||
required: false
|
||||
type: template
|
||||
icon_template:
|
||||
description: Defines a template to specify which icon to use.
|
||||
required: false
|
||||
type: template
|
||||
entity_picture_template:
|
||||
description: Defines a template for the entity picture of the cover.
|
||||
required: false
|
||||
type: template
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison is not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
device_class:
|
||||
description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend.
|
||||
required: false
|
||||
type: string
|
||||
open_cover:
|
||||
description: Defines an action to open the cover. If [`open_cover`](#open_cover) is specified, [`close_cover`](#close_cover) must also be specified. At least one of [`open_cover`](#open_cover) and [`set_cover_position`](#set_cover_position) must be specified.
|
||||
required: inclusive
|
||||
type: action
|
||||
close_cover:
|
||||
description: Defines an action to close the cover.
|
||||
required: inclusive
|
||||
type: action
|
||||
stop_cover:
|
||||
description: Defines an action to stop the cover.
|
||||
required: false
|
||||
type: action
|
||||
set_cover_position:
|
||||
description: Defines an action to set to a cover position (between `0` and `100`). The variable `position` will contain the entity's set position.
|
||||
required: false
|
||||
type: action
|
||||
set_cover_tilt_position:
|
||||
description: Defines an action to set the tilt of a cover (between `0` and `100`). The variable `tilt` will contain the entity's set tilt position.
|
||||
required: false
|
||||
type: action
|
||||
optimistic:
|
||||
description: Force cover position to use [optimistic mode](#optimistic-mode).
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
tilt_optimistic:
|
||||
description: Force cover tilt position to use [optimistic mode](#optimistic-mode).
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
tilt_template:
|
||||
description: Defines a template to get the tilt state of the cover. Legal values are numbers between `0` (closed) and `100` (open). If the template produces a `None` value the current tilt state will be set to `unknown`.
|
||||
required: false
|
||||
type: template
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of a platform that takes extra time to load, the
|
||||
Template Cover may get an `unknown` state during startup. This results in error
|
||||
messages in your log file until that platform has completed loading.
|
||||
If you use `is_state()` function in your template, you can avoid this situation.
|
||||
For example, you would replace
|
||||
{% raw %}`{{ states.cover.source.state == 'open' }}`{% endraw %}
|
||||
with this equivalent that returns `true`/`false` and never gives an unknown
|
||||
result:
|
||||
{% raw %}`{{ is_state('cover.source', 'open') }}`{% endraw %}
|
||||
|
||||
## Optimistic mode
|
||||
|
||||
In optimistic mode, the cover position state is maintained internally. This mode
|
||||
is automatically enabled if neither [`value_template`](#value_template) or
|
||||
[`position_template`](#position_template) are specified. Note that this is
|
||||
unlikely to be very reliable without some feedback mechanism, since there is
|
||||
otherwise no way to know if the cover is moving properly. The cover can be
|
||||
forced into optimistic mode by using the [`optimistic`](#optimistic) attribute.
|
||||
There is an equivalent mode for `tilt_position` that is enabled when
|
||||
[`tilt_template`](#tilt_template) is not specified or when the
|
||||
[`tilt_optimistic`](#tilt_optimistic) attribute is used.
|
||||
|
||||
## Combining `value_template` and `position_template`
|
||||
|
||||
If both a [`value_template`](#value_template) and a [`position_template`](#position_template) are specified only `opening` and `closing` states are set directly from the `value_template`, the `open` and `closed` states will instead be derived from the cover position.
|
||||
|
||||
| value_template output | result |
|
||||
| --------------------- | ------------------------------------ |
|
||||
| open | state defined by `position_template` |
|
||||
| closed | state defined by `position_template` |
|
||||
| true | state defined by `position_template` |
|
||||
| false | state defined by `position_template` |
|
||||
| opening | state set to `opening` |
|
||||
| closing | state set to `closing` |
|
||||
| <any other output> | No change of state or position |
|
||||
|
||||
## Examples
|
||||
|
||||
In this section you will find some real-life examples of how to use this cover.
|
||||
|
||||
### Garage door
|
||||
|
||||
This example converts a garage door with a controllable switch and position
|
||||
sensor into a cover. The condition check is optional, but suggested if you
|
||||
use the same switch to open and close the garage.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
cover:
|
||||
- platform: template
|
||||
covers:
|
||||
garage_door:
|
||||
device_class: garage
|
||||
friendly_name: "Garage Door"
|
||||
position_template: "{{ states('sensor.garage_door') }}"
|
||||
open_cover:
|
||||
- condition: state
|
||||
entity_id: sensor.garage_door
|
||||
state: "off"
|
||||
- action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.garage_door
|
||||
close_cover:
|
||||
- condition: state
|
||||
entity_id: sensor.garage_door
|
||||
state: "on"
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.garage_door
|
||||
stop_cover:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.garage_door
|
||||
icon_template: >-
|
||||
{% if states('sensor.garage_door')|float > 0 %}
|
||||
mdi:garage-open
|
||||
{% else %}
|
||||
mdi:garage
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Multiple covers
|
||||
|
||||
This example allows you to control two or more covers at once.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
homeassistant:
|
||||
customize:
|
||||
cover_group:
|
||||
assumed_state: true
|
||||
|
||||
cover:
|
||||
- platform: template
|
||||
covers:
|
||||
cover_group:
|
||||
friendly_name: "Cover Group"
|
||||
open_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "open"
|
||||
close_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "close"
|
||||
stop_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "stop"
|
||||
set_cover_position:
|
||||
action: script.cover_group_position
|
||||
data:
|
||||
position: "{{position}}"
|
||||
set_cover_tilt_position:
|
||||
action: script.cover_group_tilt_position
|
||||
data:
|
||||
tilt: "{{tilt}}"
|
||||
value_template: "{{is_state('sensor.cover_group', 'open')}}"
|
||||
icon_template: >-
|
||||
{% if is_state('sensor.cover_group', 'open') %}
|
||||
mdi:window-open
|
||||
{% else %}
|
||||
mdi:window-closed
|
||||
{% endif %}
|
||||
|
||||
sensor:
|
||||
- platform: template
|
||||
sensors:
|
||||
cover_group:
|
||||
value_template: >-
|
||||
{% if is_state('cover.bedroom', 'open') %}
|
||||
open
|
||||
{% elif is_state('cover.livingroom', 'open') %}
|
||||
open
|
||||
{% else %}
|
||||
closed
|
||||
{% endif %}
|
||||
|
||||
script:
|
||||
cover_group:
|
||||
sequence:
|
||||
- action: "cover.{{modus}}_cover"
|
||||
target:
|
||||
entity_id:
|
||||
- cover.bedroom
|
||||
- cover.livingroom
|
||||
cover_group_position:
|
||||
sequence:
|
||||
- action: cover.set_cover_position
|
||||
target:
|
||||
entity_id:
|
||||
- cover.bedroom
|
||||
- cover.livingroom
|
||||
data:
|
||||
position: "{{position}}"
|
||||
|
||||
automation:
|
||||
- alias: "Close covers at night"
|
||||
triggers:
|
||||
- trigger: sun
|
||||
event: sunset
|
||||
offset: "+00:30:00"
|
||||
actions:
|
||||
- action: cover.set_cover_position
|
||||
target:
|
||||
entity_id: cover.cover_group
|
||||
data:
|
||||
position: 25
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change the icon
|
||||
|
||||
This example shows how to change the icon based on the cover state.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
cover:
|
||||
- platform: template
|
||||
covers:
|
||||
cover_group:
|
||||
friendly_name: "Cover Group"
|
||||
open_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "open"
|
||||
close_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "close"
|
||||
stop_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "stop"
|
||||
value_template: "{{is_state('sensor.cover_group', 'open')}}"
|
||||
icon_template: >-
|
||||
{% if is_state('sensor.cover_group', 'open') %}
|
||||
mdi:window-open
|
||||
{% else %}
|
||||
mdi:window-closed
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change the entity picture
|
||||
|
||||
This example shows how to change the entity picture based on the cover state.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
cover:
|
||||
- platform: template
|
||||
covers:
|
||||
cover_group:
|
||||
friendly_name: "Cover Group"
|
||||
open_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "open"
|
||||
close_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "close"
|
||||
stop_cover:
|
||||
action: script.cover_group
|
||||
data:
|
||||
modus: "stop"
|
||||
value_template: "{{is_state('sensor.cover_group', 'open')}}"
|
||||
entity_picture_template: >-
|
||||
{% if is_state('sensor.cover_group', 'open') %}
|
||||
/local/cover-open.png
|
||||
{% else %}
|
||||
/local/cover-closed.png
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -1,27 +1,27 @@
|
||||
---
|
||||
title: UK Environment Agency Flood Monitoring
|
||||
description: Monitor nearby water levels and be prepared for flooding with the UK Environment Agency API integration.
|
||||
ha_category:
|
||||
- Sensor
|
||||
ha_release: 0.115
|
||||
ha_iot_class: Cloud Polling
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@Jc2k'
|
||||
---
|
||||
|
||||
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 %}
|
||||
|
||||
The UK Environment Agency Flood Monitoring only provides data for England - Northern Ireland, Scotland and Wales have their own flood agencies.
|
||||
|
||||
{% endimportant %}
|
||||
|
||||
## Configuration
|
||||
|
||||
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://check-for-flooding.service.gov.uk/river-and-sea-levels).
|
||||
|
||||
Sensors for that monitoring station should then appear in your Home Assistant instance.
|
||||
---
|
||||
title: UK Environment Agency Flood Monitoring
|
||||
description: Monitor nearby water levels and be prepared for flooding with the UK Environment Agency API integration.
|
||||
ha_category:
|
||||
- Sensor
|
||||
ha_release: 0.115
|
||||
ha_iot_class: Cloud Polling
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@Jc2k'
|
||||
---
|
||||
|
||||
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 %}
|
||||
|
||||
The UK Environment Agency Flood Monitoring only provides data for England - Northern Ireland, Scotland and Wales have their own flood agencies.
|
||||
|
||||
{% endimportant %}
|
||||
|
||||
## Configuration
|
||||
|
||||
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://check-for-flooding.service.gov.uk/river-and-sea-levels).
|
||||
|
||||
Sensors for that monitoring station should then appear in your Home Assistant instance.
|
@ -18,6 +18,7 @@ ha_domain: eheimdigital
|
||||
ha_integration_type: hub
|
||||
ha_platforms:
|
||||
- climate
|
||||
- diagnostics
|
||||
- light
|
||||
- number
|
||||
- select
|
||||
|
@ -49,11 +49,12 @@ ha_quality_scale: platinum
|
||||
|
||||
## 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).
|
||||
The **ESPHome** {% term 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
|
||||
### 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/).
|
||||
@ -95,12 +96,6 @@ password:
|
||||
|
||||
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.
|
||||
@ -114,25 +109,26 @@ Subscribe to logs from the device:
|
||||
|
||||
## 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**.
|
||||
The ESPHome {% term 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
|
||||
### 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
|
||||
## 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
|
||||
### 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).
|
||||
|
||||
@ -140,15 +136,15 @@ When using the native API with Home Assistant, you can trigger events on the Hom
|
||||
|
||||
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
|
||||
### 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
|
||||
### 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
|
||||
### 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.
|
||||
|
||||
@ -184,18 +180,20 @@ The entity will be named `livingroomdesk Temperature` and will default to having
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Viewing Live Logs
|
||||
### 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
|
||||
### Obtaining logs from the device
|
||||
|
||||
If you want the device to send logs without requiring you to be actively monitoring, follow these steps:
|
||||
|
||||
@ -216,7 +214,7 @@ If you want the device to send logs without requiring you to be actively monitor
|
||||
|
||||
This integration supports reconfiguration, allowing you to make changes—such as updating the IP address—even after a device has already been set up.
|
||||
|
||||
### Name Conflict Resolution
|
||||
### 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.
|
||||
|
||||
@ -232,7 +230,7 @@ If you’re using the same YAML file on the new device, choose **Migrate**. If i
|
||||
|
||||
---
|
||||
|
||||
### Requirements for Name Conflict Resolution
|
||||
### Requirements for name conflict resolution
|
||||
|
||||
To trigger Name Conflict Resolution, all of the following must be true:
|
||||
|
||||
@ -242,7 +240,7 @@ To trigger Name Conflict Resolution, all of the following must be true:
|
||||
|
||||
---
|
||||
|
||||
### How to Trigger Name Conflict Resolution
|
||||
### How to trigger name conflict resolution
|
||||
|
||||
You can trigger Name Conflict Resolution in several ways:
|
||||
|
||||
@ -251,8 +249,14 @@ You can trigger Name Conflict Resolution in several ways:
|
||||
- Configuring a **newly discovered device** that uses the same name.
|
||||
- **Manually adding** a device with the same name via the integration setup.
|
||||
|
||||
## Known Limitations
|
||||
## Known limitations
|
||||
|
||||
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.
|
||||
|
||||
Using duplicate names can lead to connection issues, failed discovery, and unexpected behavior with both the integration and the add-on.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows the standard integration removal process; no extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
@ -13,15 +13,11 @@ ha_platforms:
|
||||
- sensor
|
||||
ha_iot_standard: matter
|
||||
ha_brand: true
|
||||
works_with:
|
||||
- matter
|
||||
---
|
||||
|
||||
[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.
|
||||
|
||||
{% my add_matter_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Matter in Home Assistant.](/integrations/matter/)
|
||||
{% include integrations/wwha.md url="https://www.evehome.com/" %}
|
||||
|
||||
The following devices are supported:
|
||||
|
||||
|
@ -9,7 +9,6 @@ ha_iot_class: Cloud Polling
|
||||
ha_domain: ezviz
|
||||
ha_codeowners:
|
||||
- '@RenierM26'
|
||||
- '@baqs'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
|
@ -1,266 +0,0 @@
|
||||
---
|
||||
title: "Template fan"
|
||||
description: "Instructions how to setup the template fans within Home Assistant."
|
||||
ha_category:
|
||||
- Fan
|
||||
- Helper
|
||||
ha_release: 0.69
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- fan
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The **Template** {% term integration %} creates fans that combine integrations and provides the
|
||||
ability to run scripts or invoke actions for each of the `turn_on`, `turn_off`, `set_percentage`,
|
||||
`set_preset_mode`, `set_oscillating`, and `set_direction` commands of a fan.
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable template fans in your installation, add the following to your
|
||||
{% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
fan:
|
||||
- platform: template
|
||||
fans:
|
||||
bedroom_fan:
|
||||
friendly_name: "Bedroom fan"
|
||||
value_template: "{{ states('input_boolean.state') }}"
|
||||
percentage_template: "{{ states('input_number.percentage') }}"
|
||||
preset_mode_template: "{{ states('input_select.preset_mode') }}"
|
||||
oscillating_template: "{{ states('input_select.osc') }}"
|
||||
direction_template: "{{ states('input_select.direction') }}"
|
||||
turn_on:
|
||||
action: script.fan_on
|
||||
turn_off:
|
||||
action: script.fan_off
|
||||
set_percentage:
|
||||
action: script.fans_set_speed
|
||||
data:
|
||||
percentage: "{{ percentage }}"
|
||||
set_preset_mode:
|
||||
action: script.fans_set_preset_mode
|
||||
data:
|
||||
preset_mode: "{{ preset_mode }}"
|
||||
set_oscillating:
|
||||
action: script.fan_oscillating
|
||||
data:
|
||||
oscillating: "{{ oscillating }}"
|
||||
set_direction:
|
||||
action: script.fan_direction
|
||||
data:
|
||||
direction: "{{ direction }}"
|
||||
speed_count: 6
|
||||
preset_modes:
|
||||
- 'auto'
|
||||
- 'smart'
|
||||
- 'whoosh'
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
fans:
|
||||
description: List of your fans.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
friendly_name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this fan. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: "Defines a template to get the state of the fan. Valid values: `on`, `off`"
|
||||
required: true
|
||||
type: template
|
||||
percentage_template:
|
||||
description: Defines a template to get the speed percentage of the fan.
|
||||
required: false
|
||||
type: template
|
||||
preset_mode_template:
|
||||
description: Defines a template to get the preset mode of the fan.
|
||||
required: false
|
||||
type: template
|
||||
oscillating_template:
|
||||
description: "Defines a template to get the osc state of the fan. Valid values: `true`, `false`"
|
||||
required: false
|
||||
type: template
|
||||
direction_template:
|
||||
description: "Defines a template to get the direction of the fan. Valid values: `forward`, `reverse`"
|
||||
required: false
|
||||
type: template
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
turn_on:
|
||||
description: Defines an action to run when the fan is turned on.
|
||||
required: true
|
||||
type: action
|
||||
turn_off:
|
||||
description: Defines an action to run when the fan is turned off.
|
||||
required: true
|
||||
type: action
|
||||
set_percentage:
|
||||
description: Defines an action to run when the fan is given a speed percentage command.
|
||||
required: false
|
||||
type: action
|
||||
set_preset_mode:
|
||||
description: Defines an action to run when the fan is given a preset command.
|
||||
required: false
|
||||
type: action
|
||||
set_oscillating:
|
||||
description: Defines an action to run when the fan is given an osc state command.
|
||||
required: false
|
||||
type: action
|
||||
set_direction:
|
||||
description: Defines an action to run when the fan is given a direction command.
|
||||
required: false
|
||||
type: action
|
||||
preset_modes:
|
||||
description: List of preset modes the fan is capable of. This is an arbitrary list of strings and must not contain any speeds.
|
||||
required: false
|
||||
type: [string, list]
|
||||
default: []
|
||||
speed_count:
|
||||
description: The number of speeds the fan supports. Used to calculate the percentage step for the `fan.increase_speed` and `fan.decrease_speed` actions.
|
||||
required: false
|
||||
type: integer
|
||||
default: 100
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Converting from speeds to percentage
|
||||
|
||||
When converting a fan with 3 speeds from the old fan entity model, the following percentages can be used:
|
||||
|
||||
0 - `off`
|
||||
33 - `low`
|
||||
66 - `medium`
|
||||
100 - `high`
|
||||
|
||||
## Examples
|
||||
|
||||
### Helper fan
|
||||
|
||||
This example uses an input_boolean and an input_number to mimic a fan, and
|
||||
the example shows multiple actions for `set_percentage`.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
fan:
|
||||
- platform: template
|
||||
fans:
|
||||
helper_fan:
|
||||
friendly_name: "Helper Fan"
|
||||
value_template: "{{ states('input_boolean.state') }}"
|
||||
turn_on:
|
||||
- action: input_boolean.turn_on
|
||||
target:
|
||||
entity_id: input_boolean.state
|
||||
turn_off:
|
||||
- action: input_boolean.turn_off
|
||||
target:
|
||||
entity_id: input_boolean.state
|
||||
percentage_template: >
|
||||
{{ states('input_number.percentage') if is_state('input_boolean.state', 'on') else 0 }}
|
||||
speed_count: 6
|
||||
set_percentage:
|
||||
- action: input_boolean.turn_{{ 'on' if percentage > 0 else 'off' }}
|
||||
target:
|
||||
entity_id: input_boolean.state
|
||||
- action: input_number.set_value
|
||||
target:
|
||||
entity_id: input_number.percentage
|
||||
data:
|
||||
value: "{{ percentage }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Preset modes fan
|
||||
|
||||
This example uses an existing fan with only a percentage. It extends the
|
||||
percentage value into useable preset modes without a helper entity.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
fan:
|
||||
- platform: template
|
||||
fans:
|
||||
preset_mode_fan:
|
||||
friendly_name: "Preset Mode Fan Example"
|
||||
value_template: "{{ states('fan.percentage_fan') }}"
|
||||
turn_on:
|
||||
- action: fan.turn_on
|
||||
target:
|
||||
entity_id: fan.percentage_fan
|
||||
turn_off:
|
||||
- action: fan.turn_off
|
||||
target:
|
||||
entity_id: fan.percentage_fan
|
||||
percentage_template: >
|
||||
{{ state_attr('fan.percentage_fan', 'percentage') }}
|
||||
speed_count: 3
|
||||
set_percentage:
|
||||
- action: fan.set_percentage
|
||||
target:
|
||||
entity_id: fan.percentage_fan
|
||||
data:
|
||||
percentage: "{{ percentage }}"
|
||||
preset_modes:
|
||||
- "off"
|
||||
- "low"
|
||||
- "medium"
|
||||
- "high"
|
||||
preset_mode_template: >
|
||||
{% if is_state('fan.percentage_fan', 'on') %}
|
||||
{% if state_attr('fan.percentage_fan', 'percentage') == 100 %}
|
||||
high
|
||||
{% elif state_attr('fan.percentage_fan', 'percentage') == 66 %}
|
||||
medium
|
||||
{% else %}
|
||||
low
|
||||
{% endif %}
|
||||
{% else %}
|
||||
off
|
||||
{% endif %}
|
||||
set_preset_mode:
|
||||
- action: fan.set_percentage
|
||||
target:
|
||||
entity_id: fan.percentage_fan
|
||||
data:
|
||||
percentage: >-
|
||||
{% if preset_mode == 'high' %}
|
||||
100
|
||||
{% elif preset_mode == 'medium' %}
|
||||
66
|
||||
{% elif preset_mode == 'low' %}
|
||||
33
|
||||
{% else %}
|
||||
0
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -32,7 +32,7 @@ The Govee BLE integration will automatically discover devices once the [Bluetoot
|
||||
- H5071 Hygrometer Thermometer
|
||||
- H5072 Hygrometer Thermometer
|
||||
- H5074 Hygrometer Thermometer (Active scans required)
|
||||
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075)
|
||||
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075) (Active scans required)
|
||||
- [H5100 Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-h5100-mini-hygrometer-thermometer-sensors)
|
||||
- H5101 Hygrometer Thermometer
|
||||
- H5102 Hygrometer Thermometer
|
||||
@ -49,6 +49,7 @@ The Govee BLE integration will automatically discover devices once the [Bluetoot
|
||||
- H5125 2 Button Switch
|
||||
- H5126 6 Button Switch
|
||||
- H5127 Presence Sensor
|
||||
- [H5129 Hygrometer Thermometer](https://us.govee.com/products/wi-fi-temperature-humidity-sensor) (Active scans required)
|
||||
- H5130 Pressure Sensor
|
||||
- [H5177/5178 Bluetooth Thermo-Hygrometer](https://us.govee.com/collections/thermo-hydrometer/products/bluetooth-thermo-hygrometer)
|
||||
- H5174 Hygrometer Thermometer
|
||||
|
@ -24,4 +24,9 @@ Users keen to explore all current supported servers and configuration possibilit
|
||||
|
||||
Once integrated, the sensor logs into the user's Growatt account and accesses the first "Plant." It then retrieves the inverters associated with this plant and generates sensors for these inverters, as well as overall plant sensors.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Growatt account
|
||||
- Login credentials to that Growatt account, you will need them during setup of the integration
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- time
|
||||
ha_integration_type: integration
|
||||
ha_zeroconf: true
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
The Home Connect integration allows users to integrate their home appliances supporting the Home Connect standard for Bosch and Siemens using the [official cloud API](https://developer.home-connect.com).
|
||||
@ -725,7 +726,7 @@ Both entities can use these options, but the availability of these will depend o
|
||||
|
||||
### Sensor
|
||||
|
||||
{% details "List of binary sensors" %}
|
||||
{% details "List of sensors" %}
|
||||
|
||||
- **Finish time**:
|
||||
- **Description**: Represents the time when the program will end.
|
||||
|
@ -10,7 +10,7 @@ ha_codeowners:
|
||||
- '@Taraman17'
|
||||
ha_domain: homee
|
||||
ha_platforms:
|
||||
- alarm-control-panel
|
||||
- alarm_control_panel
|
||||
- binary_sensor
|
||||
- button
|
||||
- climate
|
||||
|
@ -14,7 +14,8 @@ ha_platforms:
|
||||
- sensor
|
||||
ha_codeowners:
|
||||
- '@mib1185'
|
||||
ha_integration_type: service
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
||||
This integration allows adding an [Immich](https://immich.app/) user account to Home Assistant.
|
||||
|
@ -1,18 +1,18 @@
|
||||
---
|
||||
title: Internet Printing Protocol (IPP)
|
||||
description: Instructions on how to integrate printers that support the Internet Printing Protocol (IPP) into Home Assistant.
|
||||
ha_category:
|
||||
- System monitor
|
||||
ha_release: 0.108
|
||||
ha_iot_class: Local Polling
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@ctalkington'
|
||||
ha_domain: ipp
|
||||
---
|
||||
|
||||
The `Internet Printing Protocol (IPP)` integration allows you to read current data from your networked printer that supports the [Internet Printing Protocol](https://www.pwg.org/ipp/everywhere.html).
|
||||
|
||||
It provides information about the printer's state and remaining ink levels.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
---
|
||||
title: Internet Printing Protocol (IPP)
|
||||
description: Instructions on how to integrate printers that support the Internet Printing Protocol (IPP) into Home Assistant.
|
||||
ha_category:
|
||||
- System monitor
|
||||
ha_release: 0.108
|
||||
ha_iot_class: Local Polling
|
||||
ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@ctalkington'
|
||||
ha_domain: ipp
|
||||
---
|
||||
|
||||
The `Internet Printing Protocol (IPP)` integration allows you to read current data from your networked printer that supports the [Internet Printing Protocol](https://www.pwg.org/ipp/everywhere.html).
|
||||
|
||||
It provides information about the printer's state and remaining ink levels.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
@ -17,10 +17,4 @@ ha_iot_standard: zwave
|
||||
ha_brand: true
|
||||
---
|
||||
|
||||
[Jasco](https://byjasco.com/) is a member of the Works with Home Assistant partner program for their Z-Wave products. Jasco is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
Jasco Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
|
||||
{% my add_zwave_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/)
|
||||
{% include integrations/wwha.md url="https://byjasco.com/" %}
|
||||
|
@ -10,6 +10,7 @@ ha_codeowners:
|
||||
ha_domain: jewish_calendar
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_config_flow: true
|
||||
|
@ -14,6 +14,7 @@ ha_domain: knocki
|
||||
ha_platforms:
|
||||
- event
|
||||
ha_integration_type: hub
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
The **Knocki** {% term integration %} allows you to trigger your favorite automations simply by tapping custom patterns (such as triple taps) on ordinary surfaces.
|
||||
|
@ -555,7 +555,7 @@ address:
|
||||
required: true
|
||||
type: [string, list]
|
||||
remove:
|
||||
description: If `True` the group address will be removed.
|
||||
description: If `true` the group address will be removed.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -571,7 +571,7 @@ The `knx.exposure_register` action can be used to register (or unregister) expos
|
||||
|
||||
{% configuration %}
|
||||
remove:
|
||||
description: In addition to the configuration variables of [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus) `remove` set to `True` can be used to remove exposures. Only `address` is required for removal.
|
||||
description: In addition to the configuration variables of [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus) `remove` set to `true` can be used to remove exposures. Only `address` is required for removal.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -1279,7 +1279,7 @@ state_address:
|
||||
required: false
|
||||
type: [string, list]
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -1346,7 +1346,7 @@ state_address:
|
||||
required: false
|
||||
type: [string, list]
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -1750,7 +1750,7 @@ type:
|
||||
required: true
|
||||
type: [string, integer]
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -1883,7 +1883,7 @@ options:
|
||||
required: true
|
||||
type: integer
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -2219,7 +2219,7 @@ invert:
|
||||
type: boolean
|
||||
default: false
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -2282,7 +2282,7 @@ type:
|
||||
type: [string, integer]
|
||||
default: latin_1
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -2335,7 +2335,7 @@ state_address:
|
||||
required: false
|
||||
type: [string, list]
|
||||
respond_to_read:
|
||||
description: Respond to GroupValueRead telegrams received to the configured `address`.
|
||||
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
@ -39,6 +39,27 @@ The `lcn` integration allows connections to more than one hardware coupler. For
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
To set up the integration, you need to provide the following information:
|
||||
|
||||
{% configuration_basic %}
|
||||
Name:
|
||||
description: "Name to identify the integration entry"
|
||||
IP address:
|
||||
description: "IP address or hostname of the PCHK server"
|
||||
Port:
|
||||
description: "Port used by the PCHK server"
|
||||
Username:
|
||||
description: "Username for authorization on the PCHK server"
|
||||
Password:
|
||||
description: "Password for authorization on the PCHK server"
|
||||
Segment coupler scan attempts:
|
||||
description: "Number of attempts to find a segment coupler in your installation. Increase this number, if not all segment couplers are identified correctly. If no segment coupler is in your installation, leave this number at 0."
|
||||
Dimming mode:
|
||||
description: "The number of steps used for dimming outputs of all LCN modules. This setting is system-specific and depends on the capabilities of the installed LCN modules."
|
||||
Request acknowledgement from modules:
|
||||
description: "LCN modules can transmit a confirmation message for received commands. Commands are resent if this confirmation is not received. However, the activation of acknowledgements increases the bus traffic, which can lead to message losses if there are many modules in the installation."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Supported device types
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
@ -1,430 +0,0 @@
|
||||
---
|
||||
title: "Template Light"
|
||||
description: "Instructions on how to integrate Template Lights into Home Assistant."
|
||||
ha_category:
|
||||
- Light
|
||||
- Helper
|
||||
ha_release: 0.46
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- light
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates lights that combine integrations and provides the
|
||||
ability to run scripts or invoke actions for each of the on, off, and
|
||||
brightness commands of a light.
|
||||
|
||||
To enable Template Lights in your installation, add the following to your
|
||||
{% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
light:
|
||||
- platform: template
|
||||
lights:
|
||||
theater_lights:
|
||||
friendly_name: "Theater Lights"
|
||||
level_template: "{{ state_attr('sensor.theater_brightness', 'lux')|int }}"
|
||||
value_template: "{{ state_attr('sensor.theater_brightness', 'lux')|int > 0 }}"
|
||||
temperature_template: "{{states('input_number.temperature_input') | int}}"
|
||||
hs_template: "({{states('input_number.h_input') | int}}, {{states('input_number.s_input') | int}})"
|
||||
effect_list_template: "{{ state_attr('light.led_strip', 'effect_list') }}"
|
||||
turn_on:
|
||||
action: script.theater_lights_on
|
||||
turn_off:
|
||||
action: script.theater_lights_off
|
||||
set_level:
|
||||
action: script.theater_lights_level
|
||||
data:
|
||||
brightness: "{{ brightness }}"
|
||||
set_temperature:
|
||||
action: input_number.set_value
|
||||
data:
|
||||
value: "{{ color_temp }}"
|
||||
entity_id: input_number.temperature_input
|
||||
set_hs:
|
||||
- action: input_number.set_value
|
||||
data:
|
||||
value: "{{ h }}"
|
||||
entity_id: input_number.h_input
|
||||
- action: input_number.set_value
|
||||
data:
|
||||
value: "{{ s }}"
|
||||
entity_id: input_number.s_input
|
||||
- action: light.turn_on
|
||||
data:
|
||||
entity_id:
|
||||
- light.led_strip
|
||||
transition: "{{ transition | float }}"
|
||||
hs_color:
|
||||
- "{{ hs[0] }}"
|
||||
- "{{ hs[1] }}"
|
||||
set_effect:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
entity_id:
|
||||
- light.led_strip
|
||||
effect: "{{ effect }}"
|
||||
supports_transition_template: "{{ true }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
lights:
|
||||
description: List of your lights.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
friendly_name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this light. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: Defines a template to get the state of the light.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
level_template:
|
||||
description: Defines a template to get the brightness of the light.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
temperature_template:
|
||||
description: Defines a template to get the color temperature of the light.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
hs_template:
|
||||
description: Defines a template to get the HS color of the light. Must render a tuple (hue, saturation).
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
rgb_template:
|
||||
description: Defines a template to get the RGB color of the light. Must render a tuple or a list (red, green, blue).
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
rgbw_template:
|
||||
description: Defines a template to get the RGBW color of the light. Must render a tuple or a list (red, green, blue, white).
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
rgbww_template:
|
||||
description: Defines a template to get the RGBWW color of the light. Must render a tuple or a list (red, green, blue, cold white, warm white).
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
supports_transition_template:
|
||||
description: Defines a template to get if light supports transition. Should return boolean value (True/False). If this value is `True` transition parameter in a turn on or turn off call will be passed as a named parameter `transition` to either of the scripts.
|
||||
required: false
|
||||
type: template
|
||||
default: false
|
||||
effect_list_template:
|
||||
description: Defines a template to get the list of supported effects. Must render a list
|
||||
required: inclusive
|
||||
type: template
|
||||
default: optimistic
|
||||
effect_template:
|
||||
description: Defines a template to get the effect of the light.
|
||||
required: inclusive
|
||||
type: template
|
||||
default: optimistic
|
||||
min_mireds_template:
|
||||
description: Defines a template to get the min mireds value of the light.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
max_mireds_template:
|
||||
description: Defines a template to get the max mireds value of the light.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
icon_template:
|
||||
description: Defines a template for an icon or picture, e.g., showing a different icon for different states.
|
||||
required: false
|
||||
type: template
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
turn_on:
|
||||
description: Defines an action to run when the light is turned on. May receive variables `brightness` and/or `transition`.
|
||||
required: true
|
||||
type: action
|
||||
turn_off:
|
||||
description: Defines an action to run when the light is turned off. May receive variable `transition`.
|
||||
required: true
|
||||
type: action
|
||||
set_level:
|
||||
description: Defines an action to run when the light is given a brightness command. The script will only be called if the `turn_on` call only has brightness, and optionally transition. Receives variables `brightness` and optionally `transition`.
|
||||
required: false
|
||||
type: action
|
||||
set_temperature:
|
||||
description: Defines an action to run when the light is given a color temperature command. Receives variable `color_temp`. May also receive variables `brightness` and/or `transition`.
|
||||
required: false
|
||||
type: action
|
||||
set_hs:
|
||||
description: "Defines an action to run when the light is given a hs color command. Available variables: `hs` as a tuple, `h` and `s`"
|
||||
required: false
|
||||
type: action
|
||||
set_rgb:
|
||||
description: "Defines an action to run when the light is given an RGB color command. Available variables: `rgb` as a tuple, `r`, `g` and `b`."
|
||||
required: false
|
||||
type: action
|
||||
set_rgbw:
|
||||
description: "Defines an action to run when the light is given an RGBW color command. Available variables: `rgbw` as a tuple, `rgb` as a tuple, `r`, `g`, `b` and `w`."
|
||||
required: false
|
||||
type: action
|
||||
set_rgbww:
|
||||
description: "Defines an action to run when the light is given an RGBWW color command. Available variables: `rgbww` as a tuple, `rgb` as a tuple, `r`, `g`, `b`, `cw` and `ww`."
|
||||
required: false
|
||||
type: action
|
||||
set_effect:
|
||||
description: Defines an action to run when the light is given an effect command. Receives variable `effect`. May also receive variables `brightness` and/or `transition`.
|
||||
required: inclusive
|
||||
type: action
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of a platform that takes extra time to load, the
|
||||
Template Light may get an `unknown` state during startup. This results
|
||||
in error messages in your log file until that platform has completed loading.
|
||||
If you use `is_state()` function in your template, you can avoid this situation.
|
||||
For example, you would replace
|
||||
{% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %}
|
||||
with this equivalent that returns `true`/`false` and never gives an unknown
|
||||
result:
|
||||
{% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
|
||||
Transition doesn't have its own script, it will instead be passed as a named parameter `transition` to the `turn_on`, `turn_off`, `brightness`, `color_temp`, `effect`, `hs_color`, `rgb_color`, `rgbw_color` or `rgbww_color` scripts.
|
||||
Brightness will be passed as a named parameter `brightness` to either of `turn_on`, `color_temp`, `effect`, `hs_color`, `rgb_color`, `rgbw_color` or `rgbww_color` scripts if the corresponding parameter is also in the call. In this case, the brightness script (`set_level`) will not be called.
|
||||
If only brightness is passed to `light.turn_on` action, then `set_level` script is called.
|
||||
|
||||
## Examples
|
||||
|
||||
In this section you will find some real-life examples of how to use this light.
|
||||
|
||||
### Theater Volume Control
|
||||
|
||||
This example shows a light that is actually a home theater's volume. This
|
||||
integration gives you the flexibility to provide whatever you'd like to send as
|
||||
the payload to the consumer including any scale conversions you may need to
|
||||
make; the [media player integration](/integrations/media_player/) needs a floating
|
||||
point percentage value from `0.0` to `1.0`.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
light:
|
||||
- platform: template
|
||||
lights:
|
||||
theater_volume:
|
||||
friendly_name: "Receiver Volume"
|
||||
value_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{% if state_attr('media_player.receiver', 'is_volume_muted') %}
|
||||
off
|
||||
{% else %}
|
||||
on
|
||||
{% endif %}
|
||||
{% else %}
|
||||
off
|
||||
{% endif %}
|
||||
turn_on:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
set_level:
|
||||
action: media_player.volume_set
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
volume_level: "{{ (brightness / 255 * 100)|int / 100 }}"
|
||||
level_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{{ (state_attr('media_player.receiver', 'volume_level')|float * 255)|int }}
|
||||
{% else %}
|
||||
0
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change The Icon
|
||||
|
||||
This example shows how to change the icon based on the light state.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
light:
|
||||
- platform: template
|
||||
lights:
|
||||
theater_volume:
|
||||
friendly_name: "Receiver Volume"
|
||||
value_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{% if state_attr('media_player.receiver', 'is_volume_muted') %}
|
||||
off
|
||||
{% else %}
|
||||
on
|
||||
{% endif %}
|
||||
{% else %}
|
||||
off
|
||||
{% endif %}
|
||||
icon_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{% if state_attr('media_player.receiver', 'is_volume_muted') %}
|
||||
mdi:lightbulb-off
|
||||
{% else %}
|
||||
mdi:lightbulb-on
|
||||
{% endif %}
|
||||
{% else %}
|
||||
mdi:lightbulb-off
|
||||
{% endif %}
|
||||
turn_on:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change The Entity Picture
|
||||
|
||||
This example shows how to change the entity picture based on the light state.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
light:
|
||||
- platform: template
|
||||
lights:
|
||||
theater_volume:
|
||||
friendly_name: "Receiver Volume"
|
||||
value_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{% if state_attr('media_player.receiver', 'is_volume_muted') %}
|
||||
off
|
||||
{% else %}
|
||||
on
|
||||
{% endif %}
|
||||
{% else %}
|
||||
off
|
||||
{% endif %}
|
||||
icon_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
{% if state_attr('media_player.receiver', 'is_volume_muted') %}
|
||||
/local/lightbulb-off.png
|
||||
{% else %}
|
||||
/local/lightbulb-on.png
|
||||
{% endif %}
|
||||
{% else %}
|
||||
/local/lightbulb-off.png
|
||||
{% endif %}
|
||||
turn_on:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
action: media_player.volume_mute
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Make a global light entity for a multi-segment WLED light
|
||||
|
||||
This example shows how to group together 2 RGBW segments from the same WLED controller into a single usable light
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
light:
|
||||
- platform: template
|
||||
lights:
|
||||
wled_global:
|
||||
unique_id: 28208f257b54c44e50deb2d618d44710
|
||||
friendly_name: "Multi-segment Wled control"
|
||||
value_template: "{{ states('light.wled_master') }}"
|
||||
level_template: "{{ state_attr('light.wled_master', 'brightness')|d(0,true)|int }}"
|
||||
rgbw_template: (
|
||||
{{ (state_attr('light.wled_segment_0', 'rgbw_color')[0]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[0]|d(0))/2 }},
|
||||
{{ (state_attr('light.wled_segment_0', 'rgbw_color')[1]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[1]|d(0))/2 }},
|
||||
{{ (state_attr('light.wled_segment_0', 'rgbw_color')[2]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[2]|d(0))/2 }},
|
||||
{{ (state_attr('light.wled_segment_0', 'rgbw_color')[3]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[3]|d(0))/2 }}
|
||||
)
|
||||
effect_list_template: "{{ state_attr('light.wled_segment_0', 'effect_list') }}"
|
||||
effect_template: "{{ state_attr('light.wled_segment_0', 'effect') if state_attr('light.wled_segment_0', 'effect') == state_attr('light.wled_segment_1', 'effect') else none }}"
|
||||
availability_template: "{{ not is_state('light.wled_master', 'unknown') }}"
|
||||
|
||||
turn_on:
|
||||
action: light.turn_on
|
||||
entity_id: light.wled_segment_0, light.wled_segment_1, light.wled_master
|
||||
turn_off:
|
||||
action: light.turn_off
|
||||
entity_id: light.wled_master
|
||||
set_level:
|
||||
action: light.turn_on
|
||||
entity_id: light.wled_master
|
||||
data:
|
||||
brightness: "{{ brightness }}"
|
||||
set_rgbw:
|
||||
action: light.turn_on
|
||||
entity_id: light.wled_segment_0, light.wled_segment_1
|
||||
data:
|
||||
rgbw_color:
|
||||
- "{{ r }}"
|
||||
- "{{ g }}"
|
||||
- "{{ b }}"
|
||||
- "{{ w }}"
|
||||
effect: "Solid"
|
||||
set_effect:
|
||||
action: light.turn_on
|
||||
entity_id: light.wled_segment_0, light.wled_segment_1
|
||||
data:
|
||||
effect: "{{ effect }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -1,54 +1,54 @@
|
||||
---
|
||||
title: LinkPlay
|
||||
description: Connect and control your LinkPlay media players using the LinkPlay integration
|
||||
ha_category:
|
||||
- Media player
|
||||
ha_domain: linkplay
|
||||
ha_zeroconf: true
|
||||
ha_integration_type: integration
|
||||
ha_release: 2024.8
|
||||
ha_codeowners:
|
||||
- '@Velleman'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- media_player
|
||||
- button
|
||||
ha_iot_class: Local Polling
|
||||
---
|
||||
|
||||
The LinkPlay {% term integrations %} for Home Assistant allows you to control various media players based on the LinkPlay protocol. The integration supports auto-discovery on your local network through [Zeroconf](/integrations/zeroconf).
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Features
|
||||
|
||||
### Media Player
|
||||
|
||||
The media player entity offers robust controls and playback features from the media player integration and provides additionally:
|
||||
|
||||
- **Preset playback**: Play LinkPlay presets configured on the device using the action `linkplay.play_preset`.
|
||||
- **Multiroom**: Combine multiple LinkPlay devices in a multiroom. Use the actions `media_player.join` and `media_player.unjoin`.
|
||||
|
||||
### Buttons
|
||||
|
||||
The button entities provide some additional LinkPlay features available on the device:
|
||||
|
||||
- **Time Sync**: Synchronize the device's internal clock with the current time in Home Assistant.
|
||||
- **Restart Device**: Reboot the device, allowing for convenient troubleshooting and maintenance.
|
||||
|
||||
## Actions
|
||||
|
||||
The LinkPlay integration makes various custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions).
|
||||
|
||||
### Action `linkplay.play_preset`
|
||||
|
||||
Play a preset on a LinkPlay media player.
|
||||
|
||||
{% note %}
|
||||
Companion apps, such as 4stream, allow to save music presets (for example, Spotify playlists). This action can be used to start playing these presets.
|
||||
{% endnote %}
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | The speakers to target. To target all LinkPlay devices, use `all`.
|
||||
| `preset_number` | no | The number of the preset to play.
|
||||
---
|
||||
title: LinkPlay
|
||||
description: Connect and control your LinkPlay media players using the LinkPlay integration
|
||||
ha_category:
|
||||
- Media player
|
||||
ha_domain: linkplay
|
||||
ha_zeroconf: true
|
||||
ha_integration_type: integration
|
||||
ha_release: 2024.8
|
||||
ha_codeowners:
|
||||
- '@Velleman'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- media_player
|
||||
- button
|
||||
ha_iot_class: Local Polling
|
||||
---
|
||||
|
||||
The LinkPlay {% term integrations %} for Home Assistant allows you to control various media players based on the LinkPlay protocol. The integration supports auto-discovery on your local network through [Zeroconf](/integrations/zeroconf).
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Features
|
||||
|
||||
### Media Player
|
||||
|
||||
The media player entity offers robust controls and playback features from the media player integration and provides additionally:
|
||||
|
||||
- **Preset playback**: Play LinkPlay presets configured on the device using the action `linkplay.play_preset`.
|
||||
- **Multiroom**: Combine multiple LinkPlay devices in a multiroom. Use the actions `media_player.join` and `media_player.unjoin`.
|
||||
|
||||
### Buttons
|
||||
|
||||
The button entities provide some additional LinkPlay features available on the device:
|
||||
|
||||
- **Time Sync**: Synchronize the device's internal clock with the current time in Home Assistant.
|
||||
- **Restart Device**: Reboot the device, allowing for convenient troubleshooting and maintenance.
|
||||
|
||||
## Actions
|
||||
|
||||
The LinkPlay integration makes various custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions).
|
||||
|
||||
### Action `linkplay.play_preset`
|
||||
|
||||
Play a preset on a LinkPlay media player.
|
||||
|
||||
{% note %}
|
||||
Companion apps, such as 4stream, allow to save music presets (for example, Spotify playlists). This action can be used to start playing these presets.
|
||||
{% endnote %}
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | The speakers to target. To target all LinkPlay devices, use `all`.
|
||||
| `preset_number` | no | The number of the preset to play.
|
@ -1,23 +1,23 @@
|
||||
---
|
||||
title: "Locative"
|
||||
description: "Instructions on how to use Locative to track devices in Home Assistant."
|
||||
ha_category:
|
||||
- Presence detection
|
||||
ha_release: 0.86
|
||||
ha_iot_class: Cloud Push
|
||||
ha_domain: locative
|
||||
---
|
||||
|
||||
This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.
|
||||
|
||||
Install on your smartphone:
|
||||
|
||||
- [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4)
|
||||
|
||||
To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant instance at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on its first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/screenshots/locative.png'/>
|
||||
</p>
|
||||
|
||||
When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home".
|
||||
---
|
||||
title: "Locative"
|
||||
description: "Instructions on how to use Locative to track devices in Home Assistant."
|
||||
ha_category:
|
||||
- Presence detection
|
||||
ha_release: 0.86
|
||||
ha_iot_class: Cloud Push
|
||||
ha_domain: locative
|
||||
---
|
||||
|
||||
This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.
|
||||
|
||||
Install on your smartphone:
|
||||
|
||||
- [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4)
|
||||
|
||||
To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant instance at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on its first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/screenshots/locative.png'/>
|
||||
</p>
|
||||
|
||||
When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home".
|
@ -1,213 +0,0 @@
|
||||
---
|
||||
title: "Template Lock"
|
||||
description: "Instructions on how to integrate Template Locks into Home Assistant."
|
||||
ha_category:
|
||||
- Lock
|
||||
- Helper
|
||||
ha_release: 0.81
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- lock
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates locks that combines components.
|
||||
|
||||
For example, if you have a garage door with a toggle switch that operates the motor and a sensor that allows you know whether the door is open or closed, you can combine these into a lock that knows whether the garage door is open or closed.
|
||||
|
||||
This can simplify the GUI and make it easier to write automations.
|
||||
|
||||
In optimistic mode, the lock will immediately change state after every command. Otherwise, the lock will wait for state confirmation from the template. Try to enable it, if experiencing incorrect lock operation.
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable Template Locks in your installation, add the following to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
lock:
|
||||
- platform: template
|
||||
name: Garage door
|
||||
value_template: "{{ is_state('sensor.door', 'on') }}"
|
||||
lock:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.door
|
||||
unlock:
|
||||
action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.door
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
default: Template Lock
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this lock. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: Defines a template to set the state of the lock.
|
||||
required: true
|
||||
type: template
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
code_format_template:
|
||||
description: Defines a template to get the `code_format` attribute of the entity. This template must evaluate to a valid [Python regular expression](https://docs.python.org/3/library/re.html#regular-expression-syntax) or `None`. If it evaluates to a not-`None` value, the user is prompted to enter a code when interacting with the lock. The code will be matched against the regular expression, and only if it matches, the lock/unlock actions will be executed. The actual _validity_ of the entered code must be verified within these actions. If there's a syntax error in the template, the entity will be unavailable. If the template fails to render for other reasons or if the regular expression is invalid, no code will be accepted and the lock/unlock actions will never be invoked.
|
||||
required: false
|
||||
type: template
|
||||
default: None
|
||||
lock:
|
||||
description: Defines an action to run when the lock is locked.
|
||||
required: true
|
||||
type: action
|
||||
unlock:
|
||||
description: Defines an action to run when the lock is unlocked.
|
||||
required: true
|
||||
type: action
|
||||
open:
|
||||
description: Defines an action to run when the lock is opened.
|
||||
required: false
|
||||
type: action
|
||||
optimistic:
|
||||
description: Flag that defines if lock works in optimistic mode.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of a platform that takes extra time to load, the Template Lock may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. If you use `is_state()` function in your template, you can avoid this situation. For example, you would replace {% raw %}`{{ state('switch.source') == 'on') }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
|
||||
|
||||
## Examples
|
||||
|
||||
In this section, you find some real-life examples of how to use this lock.
|
||||
|
||||
### Lock from Switch
|
||||
|
||||
This example shows a lock that copies data from a switch.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
lock:
|
||||
- platform: template
|
||||
name: Garage Door
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
lock:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.source
|
||||
unlock:
|
||||
action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.source
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Optimistic mode
|
||||
|
||||
This example shows a lock in optimistic mode. This lock will immediately change state after command and will not wait for state update from the sensor.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
lock:
|
||||
- platform: template
|
||||
name: Garage Door
|
||||
value_template: "{{ is_state('sensor.skylight.state', 'on') }}"
|
||||
optimistic: true
|
||||
lock:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.source
|
||||
unlock:
|
||||
action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.source
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Sensor and Two Switches
|
||||
|
||||
This example shows a lock that takes its state from a sensor, and uses two momentary switches to control a device.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
lock:
|
||||
- platform: template
|
||||
name: Garage Door
|
||||
value_template: "{{ is_state('sensor.skylight.state', 'on') }}"
|
||||
lock:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
unlock:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Lock from switch with dynamic code
|
||||
|
||||
This example shows a lock that copies data from a switch. It needs a PIN code defined as a [secret](/docs/configuration/secrets) to unlock and no code to lock. Note that the actual validity check of the code is part of the `unlock` action and should always happen there or in scripts called from these actions. In this way, you can not only perform code checks against static values, but also dynamic ones (for instance, TOTPs).
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
lock:
|
||||
- platform: template
|
||||
name: Garage Door
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
code_format_template: "{{ '\\d{4}' if is_state('switch.source', 'on') else None }}"
|
||||
lock:
|
||||
- action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.source
|
||||
unlock:
|
||||
- variables:
|
||||
pin: !secret garage_door_pin
|
||||
- condition: "{{ code == pin }}"
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.source
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
In `secrets.yaml`:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
garage_door_pin: "1234"
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -386,7 +386,7 @@ NOTE for Android users: You need to follow the instructions at the bottom of the
|
||||
|
||||
### General recommendations
|
||||
|
||||
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements.
|
||||
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Home Assistant OS with the Matter Server add-on is the supported path for using Matter with Home Assistant. Running Matter Server as a standalone Docker container is unsupported, but we provide [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) including a description of the host and networking requirements.
|
||||
|
||||
- To use {% term Thread %} devices you will need a {% term Thread %} network with at least one Thread border router in your network nearby the {% term Thread %} device(s). Apple users, for example, need the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub (2nd Gen). Use the Thread integration in Home Assistant to diagnose your {% term Thread %} network(s).
|
||||
|
||||
|
@ -17,14 +17,14 @@ ha_integration_type: integration
|
||||
The Met Éireann integration uses the [Met Éireann](https://met.ie) (The Irish Meteorological Service) Public Weather Forecast API to provide current and forecasted weather data for a given location. This integration is in no way affiliated with or endorsed by Met Éireann.
|
||||
|
||||
{% note %}
|
||||
The Met Éireann API will only provide data for Ireland, the UK and a small part of northern France. For specific coverage, please see the Notes on API document available [here](https://data.gov.ie/dataset/met-eireann-weather-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1).
|
||||
The Met Éireann API will only provide data for Ireland, the UK and a small part of northern France. For specific coverage, please see the Notes on API document available [here](https://data.gov.ie/dataset/met-eireann-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1).
|
||||
{% endnote %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Data license
|
||||
|
||||
The data provided by Met Éireann is licensed under the Met Éireann Open Data Custom License (similar to a Creative Commons CC BY 4.0 license). A license summary and the full license are available [here](https://data.gov.ie/dataset/met-eireann-weather-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1). In short, if you distribute, broadcast or make Met Éireann data available on the public internet you must give credit to Met Éireann and display their weather warnings.
|
||||
The data provided by Met Éireann is licensed under the Met Éireann Open Data Custom License (similar to a Creative Commons CC BY 4.0 license). A license summary and the full license are available [here](https://data.gov.ie/dataset/met-eireann-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1). In short, if you distribute, broadcast or make Met Éireann data available on the public internet you must give credit to Met Éireann and display their weather warnings.
|
||||
|
||||
## Data changes
|
||||
|
||||
|
@ -1,115 +1,115 @@
|
||||
---
|
||||
title: Vogel's MotionMount
|
||||
description: Instructions on how to integrate Vogel's MotionMount into Home Assistant.
|
||||
ha_category:
|
||||
- Number
|
||||
- Select
|
||||
- Binary sensor
|
||||
- Sensor
|
||||
ha_release: 2024.1
|
||||
ha_iot_class: Local Push
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- number
|
||||
- select
|
||||
- binary_sensor
|
||||
- sensor
|
||||
ha_codeowners:
|
||||
- '@RJPoelstra'
|
||||
ha_domain: motionmount
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
The `motionmount` {% term integration %} allows you to control the position of your [TVM 7675 Pro](https://www.vogels.com/p/tvm-7675-pro-motorized-tv-wall-mount-black) SIGNATURE MotionMount from Vogel's.
|
||||
|
||||
This integration uses the Ethernet (IP) connection of your MotionMount. It's not possible to connect using the RS-232 connection.
|
||||
|
||||
It provides information about the current position of the mount and allows setting a new position.
|
||||
|
||||
A use case would be to position the TV based on whether anyone is actively watching. The MotionMount provides an HDMI connection to monitor whether the TV is turned on and in response move it to a preset position or the last known position. However, if you also use the TV for background music, you probably don't want the MotionMount to extend. By using a presence sensor to check whether anyone is actually in front of the TV, you can ensure the MotionMount only extends when the TV is actively being watched.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Host:
|
||||
description: Hostname or IP address of the device, for example:`192.168.1.2`.
|
||||
Port:
|
||||
description: The TCP port of the device. Defaults to 23. Only change this when you're absolutely certain that it shouldn't be 23.
|
||||
PIN:
|
||||
description: The user level pincode, if configured on the device.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
## Data updates
|
||||
|
||||
The MotionMount pushes new data to the integration.
|
||||
The only exception is the presets. Changes to the presets are {% term polling polled %}, by default every 60 seconds.
|
||||
|
||||
## Known limitations
|
||||
|
||||
The integration does not provide the ability to configure the MotionMount.
|
||||
All settings, including configuring presets, should be done via the MotionMount app.
|
||||
|
||||
Only IP connections are supported. Connection via RS-232 or Bluetooth Low Energy is not supported.
|
||||
|
||||
## Supported devices
|
||||
|
||||
The following devices are supported:
|
||||
|
||||
- TVM 7675 Pro (SIGNATURE MotionMount with Pro extension)
|
||||
|
||||
## Unsupported devices
|
||||
|
||||
The following devices are *not* supported:
|
||||
|
||||
- TVM 7675 (SIGNATURE MotionMount without Pro extension)
|
||||
- TVM 7355 (NEXT MotionMount)
|
||||
|
||||
## Supported functionality
|
||||
|
||||
### Entities
|
||||
|
||||
#### Sensors
|
||||
|
||||
- **Moving**
|
||||
- **Description**: Indicates whether the MotionMount is moving.
|
||||
|
||||
- **Error Status**
|
||||
- **Description**: The error status of the MotionMount.
|
||||
- None: There is no error.
|
||||
- Motor: There is a problem communicating with the motor.
|
||||
- HDMI CEC: There is a problem communicating with the TV. Check the HDMI cable.
|
||||
- Obstruction: The MotionMount detected an obstacle and stopped moving.
|
||||
- TV Width Constraint: The MotionMount detected that the TV moved too close to the wall and stopped moving.
|
||||
- Internal: There is an internal error. Refer to the MotionMount app for support.
|
||||
|
||||
#### Numbers
|
||||
|
||||
- **Extension**
|
||||
- **Description**: The current extension of the MotionMount from the wall.
|
||||
|
||||
- **Turn**
|
||||
- **Description**: The current rotation of the MotionMount.
|
||||
|
||||
#### Selects
|
||||
|
||||
- **Presets**
|
||||
- **Description**: If the MotionMount is at a preset location, this shows the corresponding preset.
|
||||
Any preset can be selected to move the MotionMount to this preset position.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Can't connect to device
|
||||
|
||||
1. Make sure the device is powered on.
|
||||
2. Make sure the device is connected to the same network as Home Assistant.
|
||||
3. Make sure the IP address of the MotionMount is configured correctly.
|
||||
- In case of doubt, perform a network reset by holding the reset button for approx. 5 seconds.
|
||||
- **Result**: The LED will start to blink slowly. This indicates that the network configuration is being reset to use DHCP.
|
||||
- **Important**: Don't hold the reset button for too long (approx. 10 s). Holding the button for 10 s or longer starts a factory reset. A factory reset is indicated by the LED blinking fast.
|
||||
|
||||
---
|
||||
title: Vogel's MotionMount
|
||||
description: Instructions on how to integrate Vogel's MotionMount into Home Assistant.
|
||||
ha_category:
|
||||
- Number
|
||||
- Select
|
||||
- Binary sensor
|
||||
- Sensor
|
||||
ha_release: 2024.1
|
||||
ha_iot_class: Local Push
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- number
|
||||
- select
|
||||
- binary_sensor
|
||||
- sensor
|
||||
ha_codeowners:
|
||||
- '@RJPoelstra'
|
||||
ha_domain: motionmount
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
The `motionmount` {% term integration %} allows you to control the position of your [TVM 7675 Pro](https://www.vogels.com/p/tvm-7675-pro-motorized-tv-wall-mount-black) SIGNATURE MotionMount from Vogel's.
|
||||
|
||||
This integration uses the Ethernet (IP) connection of your MotionMount. It's not possible to connect using the RS-232 connection.
|
||||
|
||||
It provides information about the current position of the mount and allows setting a new position.
|
||||
|
||||
A use case would be to position the TV based on whether anyone is actively watching. The MotionMount provides an HDMI connection to monitor whether the TV is turned on and in response move it to a preset position or the last known position. However, if you also use the TV for background music, you probably don't want the MotionMount to extend. By using a presence sensor to check whether anyone is actually in front of the TV, you can ensure the MotionMount only extends when the TV is actively being watched.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Host:
|
||||
description: Hostname or IP address of the device, for example:`192.168.1.2`.
|
||||
Port:
|
||||
description: The TCP port of the device. Defaults to 23. Only change this when you're absolutely certain that it shouldn't be 23.
|
||||
PIN:
|
||||
description: The user level pincode, if configured on the device.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
## Data updates
|
||||
|
||||
The MotionMount pushes new data to the integration.
|
||||
The only exception is the presets. Changes to the presets are {% term polling polled %}, by default every 60 seconds.
|
||||
|
||||
## Known limitations
|
||||
|
||||
The integration does not provide the ability to configure the MotionMount.
|
||||
All settings, including configuring presets, should be done via the MotionMount app.
|
||||
|
||||
Only IP connections are supported. Connection via RS-232 or Bluetooth Low Energy is not supported.
|
||||
|
||||
## Supported devices
|
||||
|
||||
The following devices are supported:
|
||||
|
||||
- TVM 7675 Pro (SIGNATURE MotionMount with Pro extension)
|
||||
|
||||
## Unsupported devices
|
||||
|
||||
The following devices are *not* supported:
|
||||
|
||||
- TVM 7675 (SIGNATURE MotionMount without Pro extension)
|
||||
- TVM 7355 (NEXT MotionMount)
|
||||
|
||||
## Supported functionality
|
||||
|
||||
### Entities
|
||||
|
||||
#### Sensors
|
||||
|
||||
- **Moving**
|
||||
- **Description**: Indicates whether the MotionMount is moving.
|
||||
|
||||
- **Error Status**
|
||||
- **Description**: The error status of the MotionMount.
|
||||
- None: There is no error.
|
||||
- Motor: There is a problem communicating with the motor.
|
||||
- HDMI CEC: There is a problem communicating with the TV. Check the HDMI cable.
|
||||
- Obstruction: The MotionMount detected an obstacle and stopped moving.
|
||||
- TV Width Constraint: The MotionMount detected that the TV moved too close to the wall and stopped moving.
|
||||
- Internal: There is an internal error. Refer to the MotionMount app for support.
|
||||
|
||||
#### Numbers
|
||||
|
||||
- **Extension**
|
||||
- **Description**: The current extension of the MotionMount from the wall.
|
||||
|
||||
- **Turn**
|
||||
- **Description**: The current rotation of the MotionMount.
|
||||
|
||||
#### Selects
|
||||
|
||||
- **Presets**
|
||||
- **Description**: If the MotionMount is at a preset location, this shows the corresponding preset.
|
||||
Any preset can be selected to move the MotionMount to this preset position.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Can't connect to device
|
||||
|
||||
1. Make sure the device is powered on.
|
||||
2. Make sure the device is connected to the same network as Home Assistant.
|
||||
3. Make sure the IP address of the MotionMount is configured correctly.
|
||||
- In case of doubt, perform a network reset by holding the reset button for approx. 5 seconds.
|
||||
- **Result**: The LED will start to blink slowly. This indicates that the network configuration is being reset to use DHCP.
|
||||
- **Important**: Don't hold the reset button for too long (approx. 10 s). Holding the button for 10 s or longer starts a factory reset. A factory reset is indicated by the LED blinking fast.
|
||||
|
@ -1082,7 +1082,7 @@ payload_not_available:
|
||||
required: false
|
||||
type: string
|
||||
default: offline
|
||||
{% endconfiguration %}
|
||||
{% endconfiguration %}
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
@ -1225,7 +1225,7 @@ Setting up a light, switch etc. is similar but requires a `command_topic` as men
|
||||
- Configuration topic: `homeassistant/switch/irrigation/config`
|
||||
- State topic: `homeassistant/switch/irrigation/state`
|
||||
- Command topic: `homeassistant/switch/irrigation/set`
|
||||
- Payload:
|
||||
- Payload:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -1371,7 +1371,7 @@ The following software has built-in support for MQTT discovery:
|
||||
- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted)
|
||||
- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud)
|
||||
- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0)
|
||||
- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/)
|
||||
- [Tydom2MQTT](https://tydom2mqtt.github.io/tydom2mqtt/)
|
||||
- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0)
|
||||
- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt)
|
||||
- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks)
|
||||
@ -1433,7 +1433,7 @@ Note that MQTT device payloads often contain information for updating multiple e
|
||||
|
||||
### The last reported state attribute
|
||||
|
||||
Because MQTT state updates are often repeated frequently, even when no actual changes exist, it is up to the MQTT subscriber to determine whether a status update was received. If the latest update is missed, it might take some time before the next one arrives. If a retained payload exists at the broker, that value will be replayed first, but it will be an update of a previous last state.
|
||||
Because MQTT state updates are often repeated frequently, even when no actual changes exist, it is up to the MQTT subscriber to determine whether a status update was received. If the latest update is missed, it might take some time before the next one arrives. If a retained payload exists at the broker, that value will be replayed first, but it will be an update of a previous last state.
|
||||
|
||||
MQTT devices often continuously generate numerous state updates. MQTT does not update `last_reported` to avoid impacting system stability unless `force_update` is set. Alternatively, an MQTT sensor can be created to measure the last update.
|
||||
|
||||
|
@ -28,11 +28,14 @@ The `media_content_id` payload for `media_player.play_media` can be any of the f
|
||||
- The name of a track, artist, or album. For example, `Queen`.
|
||||
- A track or album combined with the artist's name. For example, `Queen - Innuendo`.
|
||||
- A streaming provider URI. For example, `spotify://artist/12345`.
|
||||
- A streaming provider URL. For example, `https://open.spotify.com/track/31cWPvM99ZHxMl3mdgiw4I`.
|
||||
|
||||
The `media_content_id` payload for `media_player.browse_media` must be a URI of the form `library://artist/1`, `library://album/20`, or `spotify://album/5zj4Ej0FrlJQaSo0d6cttH`. The type of item that the URI refers to must be an album or artist.
|
||||
|
||||
These URIs can be obtained from, for example, the output of the `get_library` or `search` actions described below or the `media_player.browse_media` action from Home Assistant.
|
||||
|
||||
Streaming provider URLs can be obtained from the web interface of the provider.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
### Manual configuration
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -35,3 +35,100 @@ This integration has the following Nextcloud Server prerequisites:
|
||||
- (Recommended) A Nextcloud App password should be generated for use in Home Assistant (__*Nextcloud*__ > __*Settings*__ > __*Personal*__ > __*Security*__ > __*Devices & sessions*__ > __*Create new app password*__)
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Sensors
|
||||
|
||||
For each entry, the integration will create the following {% term sensors %}:
|
||||
|
||||
| Sensor | Enabled by default |
|
||||
| ------ | ------------------ |
|
||||
| Amount of active users last 5 minutes | ✅ |
|
||||
| Amount of active users last day | ✅ |
|
||||
| Amount of active users last hour | ✅ |
|
||||
| Amount of files | ✅ |
|
||||
| Amount of group shares | ✅ |
|
||||
| Amount of link shares | ✅ |
|
||||
| Amount of local storages | ✅ |
|
||||
| Amount of mail shares | ✅ |
|
||||
| Amount of other storages | ✅ |
|
||||
| Amount of passwordless link shares | ✅ |
|
||||
| Amount of room shares | ✅ |
|
||||
| Amount of shares | ✅ |
|
||||
| Amount of shares received | ✅ |
|
||||
| Amount of shares sent | ✅ |
|
||||
| Amount of storages | ✅ |
|
||||
| Amount of storages at home | ✅ |
|
||||
| Amount of user | ✅ |
|
||||
| Amount of user shares | ✅ |
|
||||
| Apps installed | ✅ |
|
||||
| Avatars enabled | ✅ |
|
||||
| CPU load last 1 minute | ✅ |
|
||||
| CPU load last 15 minutes | ✅ |
|
||||
| CPU load last 5 minutes | ✅ |
|
||||
| Cache TTL | ❌ |
|
||||
| Cache expunges | ❌ |
|
||||
| Cache memory | ❌ |
|
||||
| Cache memory size | ✅ |
|
||||
| Cache number of entries | ❌ |
|
||||
| Cache number of hits | ❌ |
|
||||
| Cache number of inserts | ❌ |
|
||||
| Cache number of misses | ❌ |
|
||||
| Cache number of slots | ❌ |
|
||||
| Cache start time | ❌ |
|
||||
| Database size | ✅ |
|
||||
| Database type | ✅ |
|
||||
| Database version | ✅ |
|
||||
| Debug enabled | ✅ |
|
||||
| Filelocking enabled | ✅ |
|
||||
| Free memory | ✅ |
|
||||
| Free space | ✅ |
|
||||
| Free swap memory | ✅ |
|
||||
| Interned buffer size | ❌ |
|
||||
| Interned free memory | ❌ |
|
||||
| Interned number of strings | ❌ |
|
||||
| Interned used memory | ❌ |
|
||||
| JIT active | ❌ |
|
||||
| JIT buffer free | ❌ |
|
||||
| JIT buffer size | ❌ |
|
||||
| JIT enabled | ❌ |
|
||||
| JIT kind | ❌ |
|
||||
| JIT opt flags | ❌ |
|
||||
| JIT opt level | ❌ |
|
||||
| Opcache blacklist miss ratio | ❌ |
|
||||
| Opcache blacklist misses | ❌ |
|
||||
| Opcache cached keys | ❌ |
|
||||
| Opcache cached scripts | ❌ |
|
||||
| Opcache current wasted percentage | ❌ |
|
||||
| Opcache free memory | ❌ |
|
||||
| Opcache hash restarts | ❌ |
|
||||
| Opcache hit rate | ❌ |
|
||||
| Opcache hits | ❌ |
|
||||
| Opcache last restart time | ❌ |
|
||||
| Opcache manual restarts | ❌ |
|
||||
| Opcache max cached keys | ❌ |
|
||||
| Opcache misses | ❌ |
|
||||
| Opcache out of memory restarts | ❌ |
|
||||
| Opcache start time | ❌ |
|
||||
| Opcache used memory | ❌ |
|
||||
| Opcache wasted memory | ❌ |
|
||||
| PHP max execution time | ✅ |
|
||||
| PHP memory limit | ✅ |
|
||||
| PHP upload maximum filesize | ✅ |
|
||||
| PHP version | ✅ |
|
||||
| Previews enabled | ✅ |
|
||||
| SMA available memory | ❌ |
|
||||
| SMA number of segments | ❌ |
|
||||
| SMA segment size | ❌ |
|
||||
| System memcache distributed | ❌ |
|
||||
| System memcache local | ❌ |
|
||||
| System memcache locking | ❌ |
|
||||
| System theme | ✅ |
|
||||
| System version | ✅ |
|
||||
| Total memory | ✅ |
|
||||
| Total swap memory | ✅ |
|
||||
| Updates available | ✅ |
|
||||
| Webserver | ✅ |
|
||||
|
||||
## Update entity
|
||||
|
||||
An {% term update %} entity will be created for each entry.
|
||||
|
@ -61,10 +61,14 @@ The OctoPrint integration lets you monitor various states of your 3D printer and
|
||||
|
||||
Supported sensors:
|
||||
|
||||
- Actual Bed Temperature
|
||||
- Actual Tool (Nozzle) Temperature
|
||||
- Current Printer State
|
||||
- Job Completed Percentage
|
||||
- Estimated Finish Time
|
||||
- Job Completed Percentage
|
||||
- Estimated Start Time
|
||||
- Target Bed Temperature
|
||||
- Target Tool (Nozzle) Temperature
|
||||
|
||||
## Camera
|
||||
|
||||
@ -75,11 +79,11 @@ The OctoPrint integration provides a camera feed if one is configured in OctoPri
|
||||
The OctoPrint integration provides the following buttons:
|
||||
|
||||
- Pause Job
|
||||
- Resume Job
|
||||
- Stop Job
|
||||
- Shutdown System
|
||||
- Reboot System
|
||||
- Restart Octoprint
|
||||
- Resume Job
|
||||
- Shutdown System
|
||||
- Stop Job
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
|
@ -11,6 +11,7 @@ ha_codeowners:
|
||||
- '@fabaff'
|
||||
- '@freekode'
|
||||
- '@nzapponi'
|
||||
- '@wittypluck'
|
||||
ha_domain: openweathermap
|
||||
ha_platforms:
|
||||
- sensor
|
||||
|
@ -105,7 +105,7 @@ Even though most Overkiz hubs support adding Zigbee, Z-Wave, Hue, and Sonos devi
|
||||
|
||||
### Stateless RTS covers
|
||||
|
||||
RTS covers do not report their state back to the hub, so Home Assistant cannot track their state after they are controlled. If you only control your RTS cover from Home Assistant, you can use the [template cover](/integrations/cover.template/) to create a stateful cover entity. This will help you track the current state (open or closed) and use the cover in automations and scenes.
|
||||
RTS covers do not report their state back to the hub, so Home Assistant cannot track their state after they are controlled. If you only control your RTS cover from Home Assistant, you can use the [template cover](/integrations/template/#cover) to create a stateful cover entity. This will help you track the current state (open or closed) and use the cover in automations and scenes.
|
||||
|
||||
```yaml
|
||||
cover:
|
||||
|
@ -15,6 +15,9 @@ ha_quality_scale: silver
|
||||
related:
|
||||
- url: https://docs.paperless-ngx.com/
|
||||
title: Paperless-ngx
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
---
|
||||
|
||||
The **Paperless-ngx** {% term integration %} allows you to connect your [Paperless-ngx](https://docs.paperless-ngx.com/) instance to Home Assistant and monitor its status and activity.
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -4,7 +4,7 @@ description: Instructions on how to integrate Probe Plus food temperature probes
|
||||
ha_release: 2025.6
|
||||
ha_category:
|
||||
- Sensor
|
||||
ha_iot_class: local_push
|
||||
ha_iot_class: Local Push
|
||||
ha_config_flow: true
|
||||
ha_domain: probe_plus
|
||||
ha_platforms:
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -253,6 +253,39 @@ Perform the action `recorder.disable` to stop saving events and states to the da
|
||||
|
||||
Perform the action `recorder.enable` to start again saving events and states to the database. This is the opposite of `recorder.disable`.
|
||||
|
||||
### Action `get_statistics`
|
||||
|
||||
Perform the action `recorder.get_statistics` to retrieve statistics for one or more entities from the recorder database. This action is useful for automations or scripts that need to access historical statistics, such as mean, min, max, or sum values, for supported entities like sensors.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `statistic_ids`| no | The entity IDs or statistic IDs to get statistics for. |
|
||||
| `start_time` | no | The start time for the statistics query. |
|
||||
| `end_time` | yes | The end time for the statistics query. If omitted, returns all statistics from start time onward. |
|
||||
| `period` | no | The time period to group statistics by (`5minute`, `hour`, `day`, `week`, or `month`). |
|
||||
| `types` | no | The types of statistics values to return (`change`, `last_reset`, `max`, `mean`, `min`, `state`, or `sum`). |
|
||||
| `units` | yes | Optional unit conversion mapping. An object where keys are [device classes](https://www.home-assistant.io/integrations/sensor#device-class) and values are the desired target units. This allows retrieving statistics converted to different units than what's stored in the database. |
|
||||
|
||||
#### Example using get_statistics
|
||||
|
||||
```yaml
|
||||
action: recorder.get_statistics
|
||||
data:
|
||||
statistic_ids:
|
||||
- sensor.energy_meter
|
||||
- sensor.water_usage
|
||||
start_time: "2025-06-10 00:00:00"
|
||||
end_time: "2025-06-11 23:00:00"
|
||||
period: hour
|
||||
types:
|
||||
- sum
|
||||
- mean
|
||||
units:
|
||||
energy: kWh
|
||||
volume: L
|
||||
response_variable: consumption_stats
|
||||
```
|
||||
|
||||
## Handling disk corruption and hardware failures
|
||||
|
||||
When using SQLite, if the system encounters unrecoverable disk corruption, it will move the database aside and create a new database to keep the system online. In this case, having at least 2.5x the database size available in free disk space is essential. Starting a new database is the system's last resort recovery option and is usually caused by failing flash storage, an inadequate power supply, an unclean shutdown, or another hardware failure.
|
||||
|
@ -12,6 +12,7 @@ ha_codeowners:
|
||||
ha_dhcp: true
|
||||
ha_domain: rehlko
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: silver
|
||||
|
@ -20,7 +20,7 @@ The **Remote calendar** {% term integration %} allows you to read a calendar in
|
||||
|
||||
## Known limitations
|
||||
|
||||
The integration does not provide the ability to connect to an resource that requires authentication or special headers.
|
||||
The integration does not provide the ability to connect to a resource that requires authentication or special headers.
|
||||
|
||||
## Installation instructions
|
||||
|
||||
|
@ -27,6 +27,7 @@ This integration allows you to connect the following controllers:
|
||||
|
||||
- Russound MBX-PRE
|
||||
- Russound MBX-AMP
|
||||
- Russound ACA-E5
|
||||
- Russound MCA-C3
|
||||
- Russound MCA-C5
|
||||
- Russound MCA-66
|
||||
|
@ -27,7 +27,6 @@ Connecting to the Russound device is only possible by TCP, you can make use of a
|
||||
|
||||
This integration allows you to connect the following controllers:
|
||||
|
||||
- Russound ACA-E5
|
||||
- Russound CAS44
|
||||
- Russound CAA66
|
||||
- Russound CAM6.6
|
||||
|
@ -54,6 +54,10 @@ payload:
|
||||
description: The payload to send with a POST request. Depends on the service, but usually formed as JSON.
|
||||
required: false
|
||||
type: string
|
||||
payload_template:
|
||||
description: The payload to send with a POST request with template support.
|
||||
required: false
|
||||
type: template
|
||||
verify_ssl:
|
||||
description: Verify the SSL certificate of the endpoint.
|
||||
required: false
|
||||
|
@ -43,6 +43,7 @@ ha_platforms:
|
||||
- update
|
||||
- valve
|
||||
ha_integration_type: device
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
||||
Integrate [Shelly devices](https://shelly.com) into Home Assistant.
|
||||
|
@ -9,8 +9,6 @@ ha_category:
|
||||
- Plug
|
||||
ha_domain: shelly
|
||||
ha_integration_type: brand
|
||||
works_with:
|
||||
- zwave
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- sensor
|
||||
@ -19,9 +17,7 @@ ha_iot_standard: zwave
|
||||
ha_brand: true
|
||||
---
|
||||
|
||||
[Shelly](https://shelly.com) is a member of the Works with Home Assistant partner program for their Z-Wave products. Shelly is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
Shelly Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
[Shelly](https://shelly.com) Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
|
||||
|
||||
{% my add_zwave_device badge domain=page.ha_domain %}
|
||||
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -29,7 +29,7 @@ library from Home Assistant.
|
||||
- Spotify compatible playback [source](#selecting-output-source) device
|
||||
- A Spotify Developer application. Instructions for that are in
|
||||
the next step.
|
||||
|
||||
|
||||
### Create a Spotify application
|
||||
|
||||
For Home Assistant to communicate with Spotify, we need to create
|
||||
@ -45,17 +45,17 @@ to allow you to log in with your Spotify account.
|
||||
|
||||
3. Select the [**Create app**](https://developer.spotify.com/dashboard/create) button in the top right.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
4. Enter a name and description; feel free to use any name and description you like.
|
||||
|
||||
Set the _"Redirect URI"_ to the following:
|
||||
|
||||
`https://my.home-assistant.io/redirect/oauth`
|
||||
- Set the _"Redirect URI"_ to the following:
|
||||
|
||||
Please copy and paste the exact URL above. You **do not** have to change it.
|
||||
`https://my.home-assistant.io/redirect/oauth`
|
||||
|
||||

|
||||
- Please copy and paste the exact URL above. You **do not** have to change it.
|
||||
|
||||

|
||||
|
||||
5. Select Web API.
|
||||
|
||||
@ -65,22 +65,22 @@ to allow you to log in with your Spotify account.
|
||||
7. Spotify will now show the new application you have just created. Select
|
||||
the **Settings** button in the top right to configure it.
|
||||
|
||||

|
||||

|
||||
|
||||
8. Before we can start configuring Home Assistant, we need to grab the application
|
||||
credentials Home Assistant needs.
|
||||
|
||||
Select on the **View client secret** button to reveal the client secret.
|
||||
- Select on the **View client secret** button to reveal the client secret.
|
||||
|
||||

|
||||

|
||||
|
||||
9. The _"Client ID"_ and _"Client secret"_ are the two pieces of information
|
||||
that Home Assistant needs to communicate with Spotify and is what we
|
||||
call: Application credentials.
|
||||
|
||||

|
||||

|
||||
|
||||
You will need the _"Client ID"_ and _"Client secret"_ during the Spotify
|
||||
- You will need the _"Client ID"_ and _"Client secret"_ during the Spotify
|
||||
integration setup process in Home Assistant.
|
||||
|
||||
You can now continue with the next chapter to configure the Spotify integration
|
||||
@ -103,7 +103,7 @@ Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://hom
|
||||
|
||||
## Data updates
|
||||
|
||||
The integration polls at least every 30 seconds.
|
||||
The integration {% term polling polls %} at least every 30 seconds.
|
||||
If the track that is playing ends in less than 30 seconds, the integration will poll again after the track has ended to update the state again.
|
||||
|
||||
## Using multiple Spotify accounts
|
||||
|
@ -120,6 +120,17 @@ sql:
|
||||
type: template
|
||||
{% endconfiguration %}
|
||||
|
||||
## Data updates
|
||||
|
||||
By default, the integration executes the SQL query to update the sensor every 30 seconds.
|
||||
If you wish to update at a different interval, you can disable the automatic refresh in the integration’s system options (**Enable polling for updates**) and create your own automation with your desired frequency.
|
||||
|
||||
For more detailed steps on how to define a custom interval, follow the procedure below.
|
||||
|
||||
### Defining a custom polling interval
|
||||
|
||||
{% include common-tasks/define_custom_polling.md %}
|
||||
|
||||
## Information
|
||||
|
||||
See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration.
|
||||
|
@ -3,6 +3,7 @@ title: Squeezebox (Lyrion Music Server)
|
||||
description: Instructions on how to integrate Squeezebox players and a Lyrion Music Server (LMS) into Home Assistant.
|
||||
ha_category:
|
||||
- Media player
|
||||
- Update
|
||||
ha_release: pre 0.7
|
||||
ha_iot_class: Local Polling
|
||||
ha_domain: squeezebox
|
||||
|
@ -6,7 +6,7 @@ ha_category:
|
||||
ha_release: pre 0.7
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@Swamp-Ig'
|
||||
- '@home-assistant/core'
|
||||
ha_iot_class: Calculated
|
||||
ha_domain: sun
|
||||
ha_config_flow: true
|
||||
|
@ -1,285 +0,0 @@
|
||||
---
|
||||
title: "Template Switch"
|
||||
description: "Instructions on how to integrate Template Switches into Home Assistant."
|
||||
ha_category:
|
||||
- Switch
|
||||
- Helper
|
||||
ha_release: 0.13
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- switch
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates switches that combines components.
|
||||
|
||||
For example, if you have a garage door with a toggle switch that operates the motor and a sensor that allows you know whether the door is open or closed, you can combine these into a switch that knows whether the garage door is open or closed.
|
||||
|
||||
This can simplify the GUI and make it easier to write automations.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% important %}
|
||||
To be able to add **{% my helpers title="Helpers" %}** via the user interface, you should have `default_config:` in your {% term "`configuration.yaml`" %}. It should already be there by default unless you removed it.
|
||||
{% endimportant %}
|
||||
|
||||
{% note %}
|
||||
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.
|
||||
|
||||
If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
|
||||
{% endnote %}
|
||||
|
||||
## YAML Configuration
|
||||
|
||||
To enable Template Switches in your installation, add the following to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
skylight:
|
||||
value_template: "{{ is_state('sensor.skylight', 'on') }}"
|
||||
turn_on:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
turn_off:
|
||||
action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
switches:
|
||||
description: List of your switches.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
friendly_name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this switch. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: Defines a template to set the state of the switch. If not defined, the switch will optimistically assume all commands are successful.
|
||||
required: false
|
||||
type: template
|
||||
default: optimistic
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
turn_on:
|
||||
description: Defines an action or list of actions to run when the switch is turned on.
|
||||
required: true
|
||||
type: action
|
||||
turn_off:
|
||||
description: Defines an action or list of actions to run when the switch is turned off.
|
||||
required: true
|
||||
type: action
|
||||
icon_template:
|
||||
description: Defines a template for the icon of the switch.
|
||||
required: false
|
||||
type: template
|
||||
entity_picture_template:
|
||||
description: Defines a template for the picture of the switch.
|
||||
required: false
|
||||
type: template
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an entity's state and attribute in templates and actions.
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of a platform that takes extra time to load, the Template Switch may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. If you use `is_state()` function in your template, you can avoid this situation. For example, you would replace {% raw %}`{{ states.switch.source.state == 'on') }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %}
|
||||
|
||||
## Examples
|
||||
|
||||
In this section you find some real-life examples of how to use this switch.
|
||||
|
||||
### Invert a Switch
|
||||
|
||||
This example shows a switch that is the inverse of another switch.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
invert:
|
||||
value_template: "{{ not is_state('switch.target', 'on') }}"
|
||||
availability_template: "{{ has_value('switch.target') }}"
|
||||
turn_on:
|
||||
action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.target
|
||||
turn_off:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.target
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Toggle Switch
|
||||
|
||||
This example shows a switch that takes its state from a sensor and toggles a switch.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
blind:
|
||||
friendly_name: "Blind"
|
||||
value_template: "{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}"
|
||||
turn_on:
|
||||
action: switch.toggle
|
||||
target:
|
||||
entity_id: switch.blind_toggle
|
||||
turn_off:
|
||||
action: switch.toggle
|
||||
target:
|
||||
entity_id: switch.blind_toggle
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Multiple actions for turn_on or turn_off
|
||||
|
||||
This example shows multiple actions for turn_on and turn_off.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
copy:
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
turn_on:
|
||||
- action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.target
|
||||
- action: light.turn_on
|
||||
target:
|
||||
entity_id: light.target
|
||||
data:
|
||||
brightness_pct: 40
|
||||
turn_off:
|
||||
- action: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.target
|
||||
- action: light.turn_off
|
||||
target:
|
||||
entity_id: light.target
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Sensor and Two Switches
|
||||
|
||||
This example shows a switch that takes its state from a sensor, and uses two
|
||||
momentary switches to control a device.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
skylight:
|
||||
friendly_name: "Skylight"
|
||||
value_template: "{{ is_state('sensor.skylight', 'on') }}"
|
||||
turn_on:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
turn_off:
|
||||
action: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change The Icon
|
||||
|
||||
This example shows how to change the icon based on the state of the garage door.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
garage:
|
||||
value_template: "{{ is_state('cover.garage_door', 'open') }}"
|
||||
turn_on:
|
||||
action: cover.open_cover
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
turn_off:
|
||||
action: cover.close_cover
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
icon_template: >-
|
||||
{% if is_state('cover.garage_door', 'open') %}
|
||||
mdi:garage-open
|
||||
{% else %}
|
||||
mdi:garage
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Change The Entity Picture
|
||||
|
||||
This example shows how to change the entity picture based on the state of the garage door.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
garage:
|
||||
value_template: "{{ is_state('cover.garage_door', 'open') }}"
|
||||
turn_on:
|
||||
action: cover.open_cover
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
turn_off:
|
||||
action: cover.close_cover
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
entity_picture_template: >-
|
||||
{% if is_state('cover.garage_door', 'open') %}
|
||||
/local/garage-open.png
|
||||
{% else %}
|
||||
/local/garage-closed.png
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -4,12 +4,12 @@ description: Instructions on how to set up SwitchBot Devices.
|
||||
ha_category:
|
||||
- Binary sensor
|
||||
- Cover
|
||||
- Fan
|
||||
- Light
|
||||
- Lock
|
||||
- Sensor
|
||||
- Switch
|
||||
- Vacuum
|
||||
- Fan
|
||||
ha_release: 0.78
|
||||
ha_iot_class: Local Push
|
||||
ha_codeowners:
|
||||
@ -18,6 +18,7 @@ ha_codeowners:
|
||||
- '@murtas'
|
||||
- '@Eloston'
|
||||
- '@dsypniewski'
|
||||
- '@zerzhang'
|
||||
ha_domain: switchbot
|
||||
ha_bluetooth: true
|
||||
ha_platforms:
|
||||
@ -33,6 +34,7 @@ ha_platforms:
|
||||
- vacuum
|
||||
ha_config_flow: true
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: gold
|
||||
---
|
||||
|
||||
The SwitchBot integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) such as sensors, locks, shades, lights, plugs, robot vacuums, hubs and etc.
|
||||
@ -258,7 +260,7 @@ The close button will close the blinds to the closest closed position (either 0%
|
||||
|
||||
##### Simple cover template entity
|
||||
|
||||
Some integrations may expose your SwitchBot Blind Tilt to other actions which expect that 100% is open and 0% is fully closed. Using a [Cover Template](/integrations/cover.template), a proxy entity can be created which will be open at 100% and closed at 0%. This template entity is limited to closing in one direction.
|
||||
Some integrations may expose your SwitchBot Blind Tilt to other actions which expect that 100% is open and 0% is fully closed. Using a [Cover Template](/integrations/template/#cover), a proxy entity can be created which will be open at 100% and closed at 0%. This template entity is limited to closing in one direction.
|
||||
|
||||
{% raw %}
|
||||
|
||||
|
@ -76,4 +76,4 @@ For vacuums, the states are updated from SwitchBot's cloud.
|
||||
|
||||
{% warning %}
|
||||
Only ONE webhook URL seems to be accepted by the SwitchBot's cloud. So, if you want several applications notified, you need to use a “proxy” to re-dispatch the message to the other applications.
|
||||
{% endwarning %}
|
||||
{% endwarning %}
|
||||
|
@ -31,7 +31,7 @@ This integration allows you to control [Tasmota](https://tasmota.github.io/docs/
|
||||
- MQTT broker and the [MQTT integration](/integrations/mqtt/) set up in Home Assistant.
|
||||
- Tasmota devices' MQTT setting configured to communicate with the MQTT broker.
|
||||
- Tasmota devices flashed with version 9.2, or later (`tasmota-lite.bin` does not support this integration).
|
||||
- Tasmota devices configured for native discovery (`SetOption19 0`).
|
||||
- Tasmota devices configured for native discovery (`SetOption19 0`). Go to the web interface of your Tasmota device, select **Tools** and then **Console**. Where you can see the placeholder **Enter command** type or paste `SetOption19 0` and hit **Return**.
|
||||
- Although the Tasmota integration supports custom fulltopic it is strongly suggested to leave fulltopic at its default, Tasmota does not prevent setting an invalid or non-unique fulltopic, for example a fulltopic without the `%prefix%` or `%topic%` tokens.
|
||||
|
||||
## Supported features
|
||||
|
@ -58,6 +58,10 @@ This integration supports
|
||||
- **Semi locked**: indicates whether the lock is in a "semi-locked" position. "Semi-locked" means the lock has been turned manually and is between its normal end positions. The lock itself will be unavailable in this position.
|
||||
- **Lock uncalibrated** (disabled by default): Shows when the lock is in an "uncalibrated state".
|
||||
|
||||
{% note %}
|
||||
The `lock.open` service will only pull the spring if the lock is configured with "**auto pull-spring enabled**" in the tedee app. That is due to a limitation in tedee's API.
|
||||
{% endnote %}
|
||||
|
||||
## Sensors
|
||||
|
||||
The integration currently offers two sensors: A **battery** sensor, indicating the charge of your lock, and a **"pull spring duration"** sensor, indicating how long (in seconds) your latch will stay pulled after a pull operation (if supported).
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -36,11 +36,11 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The Tesla Fleet API {% term integration %} exposes various sensors from Tesla vehicles and energy sites using the [Tesla Fleet API](https://developer.tesla.com/).
|
||||
The **Tesla Fleet** {% term integration %} lets you control Tesla vehicles and energy sites using the [Tesla Fleet API](https://developer.tesla.com/).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You must have:
|
||||
You need to configure developer credentials and host a public key file to allow Home Assistant to communicate with your Tesla account.
|
||||
|
||||
- A [Tesla](https://tesla.com) account
|
||||
- A [Developer Application](https://developer.tesla.com/en_US/dashboard)
|
||||
@ -97,51 +97,55 @@ While the [Tesla Fleet API documentation Step 3](https://developer.tesla.com/doc
|
||||
1. During the integration setup, you will be provided your public key. Save this as `com.tesla.3p.public-key.pem`
|
||||
2. Host this file on your domain at the path `/.well-known/appspecific/com.tesla.3p.public-key.pem`. Do not use redirection logic to handle this, or the Tesla API will not recognize your app later in the process.
|
||||
|
||||
{% enddetails %}
|
||||
### Step 4: Connect to Home Assistant
|
||||
|
||||
{% details "Linking the Developer Application with Home Assistant" %}
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
1. Get your OAuth details by going to your [Developer dashboard](https://developer.tesla.com/en_US/dashboard). Select **View Details** under the app you set up for Home Assistant integration. Then, select the **Credentials & APIs** tab. Note the `Client ID` and `Client Secret` strings, these will be needed later.
|
||||
2. In Home Assistant, the integration wizard should walk you through the default steps. If not already started, scroll above and select the **ADD INTEGRATION TO MY** button to start the integration wizard. The integration will ask you for all of the necessary integration configurations.
|
||||
3. In the **Add credentials** step in the wizard, enter your Tesla Fleet developer application name (from step 5 in the **Setting up the Developer Application** section above), and the Oauth Client ID and Client Secret (from step 1 above). Select **Submit**.
|
||||
4. At this step, you should be taken to the Tesla authentication page. You will need to re-enter your Tesla account login credentials.
|
||||
5. At the confirmation page with the header **Allow ha-integration access to your Tesla Account** (the specific application name will be whatever you set earlier), select the **Select All** button. This list of scopes is already limited to the specific scopes you chose for the application information earlier, so it is not necessary to review them again. Select **Allow**.
|
||||
6. You should now see a Home Assistant page asking if you would like to **Link account to Home Assistant?**. Select **Link account**.
|
||||
7. You're all set! The integration should fetch your device details into Home Assistant.
|
||||
1. Start the integration setup:
|
||||
- In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}
|
||||
- Select **Add Integration** and search for **Tesla Fleet**
|
||||
|
||||
{% enddetails %}
|
||||
2. Enter your application details:
|
||||
- **Application name**: Enter the name you used when creating your Tesla Developer Application
|
||||
- **Client ID: From** your Tesla Developer Dashboard
|
||||
- **Client Secret**: From your Tesla Developer Dashboard
|
||||
|
||||
## Vehicle data polling interval
|
||||
3. Authenticate with Tesla:
|
||||
- You'll be redirected to Tesla's login page
|
||||
- Enter your Tesla account credentials
|
||||
- On the authorization page, select **Select All** and then **Allow**
|
||||
|
||||
The integration is configured to {% term polling poll %} each vehicle every 10 minutes while it's awake.
|
||||
This is long enough that a single vehicle can be polled 24/7 without exceeding the USD$10 credit Tesla provides.
|
||||
It is expected that most vehicles are asleep over 50% of the day, so the defaults should also suit users with multiple vehicles or that want to run automated commands.
|
||||
4. Complete the setup:
|
||||
- Confirm you want to **Link account to Home Assistant**
|
||||
- The {% term integration %} will automatically discover your Tesla vehicles and energy products
|
||||
|
||||
If the default polling interval does not suit your needs, you can [define a custom polling interval](https://www.home-assistant.io/common-tasks/general/#defining-a-custom-polling-interval).
|
||||
{% tip %}
|
||||
If you encounter any issues during setup, check the troubleshooting section below for common solutions.
|
||||
{% endtip %}
|
||||
|
||||
## Scopes
|
||||
## Data updates
|
||||
|
||||
When connecting your Tesla account to Home Assistant, you **must** select at least one of the `Vehicle Information` or `Energy Product Information` scopes. It is recommended you select all scopes for full functionality. The `Vehicle Location` scope was added in Home Assistant 2024.1, so any authorizations performed on previous releases that want this scope will need to be [modified](https://accounts.tesla.com/en_au/account-settings/security?tab=tpty-apps).
|
||||
The {% term integration %} {% term polling polls %} each vehicle every 10 minutes while it's awake. This is designed to stay within Tesla's $10 monthly credit for most users. Energy product APIs are free to use.
|
||||
|
||||
## Pay per use
|
||||
{% note %}
|
||||
Tesla charges for API calls starting January 2025. The default polling interval is optimized to stay within the free tier for typical usage.
|
||||
{% endnote %}
|
||||
|
||||
Previously, Tesla restricted this integration to a very modest rate limit. However, from January 2025, accounts in eligible countries will be charged for every API call. Here's what you need to know:
|
||||
If you need different polling intervals, you can [define a custom polling interval](https://www.home-assistant.io/common-tasks/general/#defining-a-custom-polling-interval).
|
||||
|
||||
- Tesla provides a USD$10 credit per developer account per calendar month
|
||||
- Every vehicle coordinator refresh, vehicle command, and wake up has a cost
|
||||
- This credit only allows for a maximum of 5000 coordinator refreshes
|
||||
- Energy product APIs are free to use at this time
|
||||
- To go beyond the free credit, you must provide payment details to Tesla
|
||||
## Scopes and billing
|
||||
|
||||
For more details, please see [developer.tesla.com](https://developer.tesla.com).
|
||||
When connecting your Tesla account, you **must** select at least one of **Vehicle Information** or **Energy Product Information**. All scopes are recommended for full functionality.
|
||||
|
||||
Note that Tesla does not support billing in all countries yet. **Developers in countries that do not yet support payments will not be able to review their billing or usage**. For countries that do support billing, the current billing usage can be viewed at any time by going to your [Developer Dashboard](https://developer.tesla.com/en_US/dashboard), select **View Details** under the app you set up for Home Assistant integration. Then, select the **Application Usage** tab.
|
||||
Tesla provides a $10 monthly credit for personal API usage. You can monitor usage in your [Tesla Developer Dashboard](https://developer.tesla.com/en_US/dashboard).
|
||||
|
||||
## Command signing
|
||||
|
||||
Certain vehicles, including all vehicles manufactured since late 2023, require vehicle commands to be signed with a private key. All actions on vehicle entities will fail with an error if this is required and the key has not been setup correctly.W
|
||||
Certain vehicles, including all vehicles manufactured since late 2023, require vehicle commands to be signed with a private key. All {% term actions %} on vehicle {% term entities %} will fail with an error if this is required and the key has not been setup correctly.
|
||||
|
||||
Your public key must be added to each of your vehicles by visiting https://tesla.com/_ak/YOUR.DOMAIN and following the instructions in the Tesla app.
|
||||
The {% term integration %} expects your private key to be located at `config/tesla_fleet.key`. This should be the same private key file (`tesla_fleet.key`) that you created during the prerequisites setup, copied to this location as instructed in the setup steps above.
|
||||
|
||||
Your public key must be added to each of your vehicles by visiting `https://tesla.com/_ak/YOUR_DOMAIN` and following the instructions in the Tesla app.
|
||||
If you're using an iPhone, you may need to use Safari to open the webpage and finish the setup.
|
||||
|
||||
For more details see [Tesla Fleet API vehicle commands documentation](https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-commands#key-pairing).
|
||||
@ -295,22 +299,19 @@ These are the entities available in the Tesla Fleet integration. Not all entitie
|
||||
|
||||
## Vehicle sleep
|
||||
|
||||
Constant API polling will prevent most Model S and Model X vehicles manufactured before 2021 from sleeping, so the integration will stop polling these vehicles for 15 minutes, after 15 minutes of inactivity. You can call the `homeassistant.update_entity` service to force polling the API, which will reset the timer.
|
||||
Constant API {% term polling %} will prevent most Model S and Model X vehicles manufactured before 2021 from sleeping. The {% term integration %} automatically stops {% term polling %} these vehicles for 15 minutes after inactivity. You can call the `homeassistant.update_entity` {% term action %} to force {% term polling %}, which will reset the timer.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
- Removing the {% term integration %} does not delete your Tesla Developer Application - you can remove it manually from the [Tesla Developer Dashboard](https://developer.tesla.com/en_US/dashboard) if no longer needed.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **General troubleshooting steps**
|
||||
1. Confirm that your vehicle or energy product can be accessed and updates within the official Tesla app. This rules out any issues that are outside the control of Home Assistant or this integration.
|
||||
2. For some errors in the integration, waking the vehicle or energy product through the official app, then restarting Home Assistant will sometimes help re-authenticate the connection with Tesla's API. You may be asked to re-authenticate through the Tesla website.
|
||||
- **Setup errors**: Verify your public key is accessible at the correct URL and you've completed all registration steps with Tesla
|
||||
- **Command failures**: Ensure `tesla_fleet.key` exists in your Home Assistant config directory and add your public key to vehicles via `https://tesla.com/_ak/YOUR_DOMAIN`
|
||||
- **{% term Integration %} stopped working**: Use the reconfigure option in {% my integrations title="**Settings** > **Devices & services**" %} > **Tesla Fleet**
|
||||
- **Billing errors**: Check your Tesla Developer Dashboard for usage limits and add billing information if needed
|
||||
|
||||
- **Integration is broken or needs to be reconfigured**
|
||||
1. Ensure that you have a Tesla developer application ready for usage (refer to the instructions in the **Setting up the Developer Application** section above).
|
||||
2. Go to your Tesla Fleet integration page in Home Assistant, then select the **Reconfigure** button to bring the integration wizard up.
|
||||
- If the **Reconfigure** button is not visible, clear any Application Credentials related to Tesla Fleet from your Application Credentials page (can be found at `http://homeassistant.local:PORT/config/application_credentials`), then restart Home Assistant. After the restart, navigate to the Tesla Fleet integration page, and the **Reconfigure ** button should be visible.
|
||||
3. Follow the steps in the **Linking the Developer Application with Home Assistant** section above.
|
||||
|
||||
- **Integration no longer works after the January 2025 API pricing updates**
|
||||
1. Refer to the **Integration is broken** troubleshooting steps above.
|
||||
|
||||
- **Integration shows `a condition has not been met to process the request`**
|
||||
1. Confirm that you've run all the steps from both the **Hosting a Public/Private Key Pair** and **Register your application as a Fleet API partner** sections above.
|
||||
If you have an error with your credentials, you can delete them in the {% my application_credentials title="Application Credentials" %} user interface.
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -28,18 +28,4 @@ ha_iot_standard:
|
||||
ha_brand: true
|
||||
---
|
||||
|
||||
[Third Reality](https://3reality.com) is a member of the Works with Home Assistant partner program for their Zigbee and Matter products. Third Reality is committed to making sure their products are up-to-date and ready to use in Home Assistant.
|
||||
|
||||
Third Reality Zigbee devices work locally and integrate seamlessly with the Zigbee integration in Home Assistant (Zigbee stick required).
|
||||
|
||||
To add Third Reality products, pair them as Zigbee or Matter devices, depending on which you have purchased:
|
||||
|
||||
{% my add_zigbee_device badge brand=page.ha_domain %}
|
||||
|
||||
[Learn more about Zigbee in Home Assistant.](/integrations/zha/)
|
||||
|
||||
Third Reality 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.
|
||||
|
||||
{% my add_matter_device badge domain=page.ha_domain %}
|
||||
|
||||
[Learn more about Matter in Home Assistant.](/integrations/matter/)
|
||||
{% include integrations/wwha.md url="https://3reality.com/" %}
|
||||
|
@ -46,7 +46,7 @@ Screenshot showing the state of a text-to-speech entity in the developer tools.
|
||||
|
||||
Modern platforms will create entities under the `tts` domain, where each entity represents one text-to-speech service provider. These entities may be used as targets for the `tts.speak` action.
|
||||
|
||||
the `tts.speak` action supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`.
|
||||
The `tts.speak` action supports `message`, `language`, `cache`, `media_player_entity_id` and `options` options. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`. The language can be set with `language`, using the format required by the target entity platform (refer to specific platform documentation). See [cache section](#cache) for information on `cache` option. Additional settings can be specified with the `options` option, which include preferred audio settings (see [preferred audio settings](#preferred-audio-settings) section for more info) and further settings of the target entity platform, e.g., _voice, motion, speed, etc._ (refer to specific platform documentation for any supported settings).
|
||||
|
||||
```yaml
|
||||
action: tts.speak
|
||||
@ -59,7 +59,7 @@ data:
|
||||
|
||||
### Action say (legacy)
|
||||
|
||||
The `say` action supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`. Since release 0.92, action name can be defined in configuration `service_name` option.
|
||||
The `say` action supports `message`, `language`, `cache` and `options` options. The text that should be spoken is set with `message`. The language can be set with `language`, using the format required by the platform (refer to specific platform documentation). See [cache section](#cache) for information on `cache` option. Additional settings can be specified with the `options` option, which include preferred audio settings (see [preferred audio settings](#preferred-audio-settings) section for more info) and further settings of the target platform, e.g., _voice, motion, speed, etc._ (refer to specific platform documentation for any supported settings). Since release 0.92, action name can be defined in configuration `service_name` option.
|
||||
|
||||
Say to all `media_player` entities:
|
||||
|
||||
@ -105,13 +105,40 @@ data:
|
||||
|
||||
## Cache
|
||||
|
||||
The integration cache can be controlled with the `cache` option in the action to `speak` or `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
|
||||
The integration cache can be controlled with the `cache` option in the action to `speak` or `say`, setting it to `True` to enable it (default), or `False` to disable it. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
|
||||
|
||||
## Preferred audio settings
|
||||
|
||||
Each TTS platform produces audio samples in different formats, not always compatible with every media player. TTS integration building block supports a way to configure preferred target audio format through `options` option of `speak` or `say` actions.
|
||||
|
||||
TTS integration building block uses [FFmpeg integration](/integrations/ffmpeg) to perform audio transcoding when target entity platform does not support one or all the specified preferred audio format settings (refer to specific platform documentation for any supported setting with related supported values).
|
||||
|
||||
Available preferred audio settings, all optional, are:
|
||||
|
||||
- `preferred_format`: Set the audio format. When not supported by the target entity platform, the value is a file extension like `wav`, `mp3`, `ogg`, etc., among ones supported by FFmpeg tool for output files.
|
||||
- `preferred_sample_rate`: Set the sample rate. When not supported by the target entity platform, the value is in Hz as a number, among ones supported by the `-ar` parameter of FFmpeg tool.
|
||||
- `preferred_sample_channels`: Set the number of audio channels. When not supported by the target entity platform, the value is a number among ones supported by the `-ac` parameter of FFmpeg tool.
|
||||
- `preferred_sample_bytes`: Set the audio bit sampling. When not supported by the target entity platform, can only be set to `2` to use 16-bit audio sampling (any other value is ignored).
|
||||
|
||||
Example to produce an MP3 audio at 22050Hz:
|
||||
|
||||
```yaml
|
||||
action: tts.speak
|
||||
target:
|
||||
entity_id: tts.example
|
||||
data:
|
||||
media_player_entity_id: media_player.kitchen
|
||||
message: "May the force be with you."
|
||||
options:
|
||||
preferred_format: mp3
|
||||
preferred_sample_rate: 22050
|
||||
```
|
||||
|
||||
## REST API
|
||||
|
||||
### POST `/api/tts_get_url`
|
||||
|
||||
Returns a URL to the generated TTS file. The `engine_id` or `platform` parameter together with `message` are required.
|
||||
Returns a URL to the generated TTS file. The `engine_id` (which is the entity id) or `platform` parameter together with `message` are required. Additional parameters `cache`, `language` and `options` are supported, as JSON attributes, as described for `speak` action.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -166,3 +193,9 @@ These requirements present the following problems, all of which create problems
|
||||
- If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection.
|
||||
|
||||
The recommended way to overcome these obstacles is to not manually configure a local Home Assistant URL.
|
||||
|
||||
### Partial, corrupted or no audio
|
||||
|
||||
Some media players could reproduce only partial, corrupted or no audio at all when the audio format is not fully supported. In such cases it is required to experiment with different combinations of audio formats, channels, sample rates and bits using [preferred audio settings](#preferred-audio-settings) options.
|
||||
|
||||
For example, some Google Cast devices skip initial audio part when the audio is sampled at 22050Hz, and to fix the problem it is required to set the `preferred_sample_rate` setting in the `options` option to `44100`.
|
||||
|
@ -57,7 +57,7 @@ UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware [`
|
||||
|
||||
### Software support
|
||||
|
||||
The absolute **minimal** software version is [`v1.20.0`](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011) for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported.
|
||||
The **absolute minimum** software version is [`v1.20.0`](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011) for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect are supported.
|
||||
|
||||
{% important %}
|
||||
**Early Access and Release Candidate versions are not supported by Home Assistant.**
|
||||
@ -420,9 +420,9 @@ actions:
|
||||
|
||||
You can obtain the `nfc_id` using the [Action unifiprotect.get_user_keyring_info](#action-unifiprotectget_user_keyring_info).
|
||||
|
||||
**Warning:**
|
||||
|
||||
{% warning %}
|
||||
When processing NFC scans, always validate the scanned ID. Unknown NFC cards also trigger the scan event. Additionally, this event was developed using third-party cards, as the developer did not have access to official UniFi cards at the time. With third-party cards, the scan relies on the card's serial number. While this approach is not uncommon, it is essential to note that the card's serial number is generally not considered a secure identifier and can be duplicated relatively easily. When the device becomes unavailable and becomes available again in Home Assistant, repeated event processing can occur. The state change is not an issue with the integration but should be considered, mainly if the device is used for actions such as unlocking doors.
|
||||
{% endwarning %}
|
||||
|
||||
### Fingerprint Identified Event
|
||||
|
||||
@ -463,39 +463,9 @@ action:
|
||||
title: "Fingerprint Scan Notification"
|
||||
```
|
||||
|
||||
**Warning:**
|
||||
|
||||
{% warning %}
|
||||
Similar to NFC, an event is triggered when a fingerprint is recognized and not recognized. However, unlike NFC, at the time of implementation, no fingerprint ID is included in the event if the fingerprint is unknown. When the device becomes unavailable and becomes available again in Home Assistant, repeated event processing can occur. The state change is not an issue with the integration but should be considered, mainly if the device is used for actions such as unlocking doors.
|
||||
|
||||
#### Example G4 Doorbell Fingerprint Identified Automation
|
||||
|
||||
```yaml
|
||||
alias: G4 Doorbell Fingerprint Identified Automation
|
||||
description: Automation that triggers when a fingerprint is successfully identified on the G4 Doorbell Pro
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: state_changed
|
||||
event_data:
|
||||
entity_id: event.g4_doorbell_pro_poe_fingerprint # Replace with your doorbell entity
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: >
|
||||
{% raw %}{{
|
||||
trigger.event.data.new_state is not none and
|
||||
trigger.event.data.new_state.attributes.event_type == 'identified' and
|
||||
(trigger.event.data.new_state.attributes.ulp_id|default('')) != '' and
|
||||
trigger.event.data.new_state.attributes.ulp_id in ['ALLOWED_ID1', 'ALLOWED_ID2']
|
||||
}}{% endraw %}
|
||||
action:
|
||||
- service: notify.mobile_app_your_device # Replace with your notification target
|
||||
data:
|
||||
{% raw %}message: "Fingerprint identified with ID: {{ trigger.event.data.new_state.attributes.ulp_id }}"{% endraw %}
|
||||
title: "Fingerprint Scan Notification"
|
||||
```
|
||||
|
||||
**Warning:**
|
||||
|
||||
Similar to NFC, an event is triggered when a fingerprint is recognized and not recognized. However, unlike NFC, at the time of implementation, no fingerprint ID is included in the event if the fingerprint is unknown.
|
||||
{% endwarning %}
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
|
@ -1,217 +0,0 @@
|
||||
---
|
||||
title: "Template vacuum"
|
||||
description: "Instructions how to setup template vacuums within Home Assistant."
|
||||
ha_category:
|
||||
- Vacuum
|
||||
- Helper
|
||||
ha_release: 0.96
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- vacuum
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates vacuums that combine integrations and provides the
|
||||
ability to run scripts or invoke actions for each of the start, pause, stop,
|
||||
return_to_base, clean_spot, locate and set_fan_speed commands of a vacuum.
|
||||
|
||||
To enable Template Vacuums in your installation, add the following to your
|
||||
`configuration.yaml` file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
vacuum:
|
||||
- platform: template
|
||||
vacuums:
|
||||
living_room_vacuum:
|
||||
start:
|
||||
action: script.vacuum_start
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
vacuums:
|
||||
description: List of your vacuums.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
friendly_name:
|
||||
description: Name to use in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this vacuum. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
value_template:
|
||||
description: "Defines a template to get the state of the vacuum. Valid value: `docked`/`cleaning`/`idle`/`paused`/`returning`/`error`"
|
||||
required: false
|
||||
type: template
|
||||
battery_level_template:
|
||||
description: "Defines a template to get the battery level of the vacuum. Legal values are numbers between `0` and `100`."
|
||||
required: false
|
||||
type: template
|
||||
fan_speed_template:
|
||||
description: Defines a template to get the fan speed of the vacuum.
|
||||
required: false
|
||||
type: template
|
||||
attribute_templates:
|
||||
description: Defines templates for attributes of the sensor.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
"attribute: template":
|
||||
description: The attribute and corresponding template.
|
||||
required: true
|
||||
type: template
|
||||
availability_template:
|
||||
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison not case sensitive; `"TrUe"` and `"yEs"` are allowed.
|
||||
required: false
|
||||
type: template
|
||||
default: true
|
||||
start:
|
||||
description: Defines an action to run when the vacuum is started.
|
||||
required: true
|
||||
type: action
|
||||
pause:
|
||||
description: Defines an action to run when the vacuum is paused.
|
||||
required: false
|
||||
type: action
|
||||
stop:
|
||||
description: Defines an action to run when the vacuum is stopped.
|
||||
required: false
|
||||
type: action
|
||||
return_to_base:
|
||||
description: Defines an action to run when the vacuum is given a return to base command.
|
||||
required: false
|
||||
type: action
|
||||
clean_spot:
|
||||
description: Defines an action to run when the vacuum is given a clean spot command.
|
||||
required: false
|
||||
type: action
|
||||
locate:
|
||||
description: Defines an action to run when the vacuum is given a locate command.
|
||||
required: false
|
||||
type: action
|
||||
set_fan_speed:
|
||||
description: Defines an action to run when the vacuum is given a command to set the fan speed.
|
||||
required: false
|
||||
type: action
|
||||
fan_speeds:
|
||||
description: List of fan speeds supported by the vacuum.
|
||||
required: false
|
||||
type: [string, list]
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template and action variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates and actions. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an {% term entity %}'s state and attribute in templates and actions.
|
||||
|
||||
## Examples
|
||||
|
||||
### Control vacuum with Harmony Hub
|
||||
|
||||
This example shows how you can use a Template Vacuum to control an IR vacuum cleaner using the [Harmony Hub Remote integration](/integrations/harmony).
|
||||
|
||||
```yaml
|
||||
vacuum:
|
||||
- platform: template
|
||||
vacuums:
|
||||
living_room_vacuum:
|
||||
start:
|
||||
- action: remote.send_command
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: Clean
|
||||
device: 52840686
|
||||
return_to_base:
|
||||
- action: remote.send_command
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: Home
|
||||
device: 52840686
|
||||
clean_spot:
|
||||
- action: remote.send_command
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: SpotCleaning
|
||||
device: 52840686
|
||||
```
|
||||
|
||||
### Vacuum with state
|
||||
|
||||
This example shows how to use templates to specify the state of the vacuum.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
vacuum:
|
||||
- platform: template
|
||||
vacuums:
|
||||
living_room_vacuum:
|
||||
value_template: "{{ states('sensor.vacuum_state') }}"
|
||||
battery_level_template: "{{ states('sensor.vacuum_battery_level')|int }}"
|
||||
fan_speed_template: "{{ states('sensor.vacuum_fan_speed') }}"
|
||||
start:
|
||||
action: script.vacuum_start
|
||||
pause:
|
||||
action: script.vacuum_pause
|
||||
stop:
|
||||
action: script.vacuum_stop
|
||||
return_to_base:
|
||||
action: script.vacuum_return_to_base
|
||||
clean_spot:
|
||||
action: script.vacuum_clean_spot
|
||||
locate:
|
||||
action: script.vacuum_locate_vacuum
|
||||
set_fan_speed:
|
||||
action: script.vacuum_set_fan_speed
|
||||
data:
|
||||
speed: "{{ fan_speed }}"
|
||||
fan_speeds:
|
||||
- Low
|
||||
- Medium
|
||||
- High
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Add custom attributes
|
||||
|
||||
This example shows how to add custom attributes.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
vacuum:
|
||||
- platform: template
|
||||
vacuums:
|
||||
living_room_vacuum:
|
||||
value_template: "{{ states('sensor.vacuum_state') }}"
|
||||
battery_level_template: "{{ states('sensor.vacuum_battery_level')|int }}"
|
||||
fan_speed_template: "{{ states('sensor.vacuum_fan_speed') }}"
|
||||
attribute_templates:
|
||||
status: >-
|
||||
{% if (states('sensor.robot_vacuum_robot_cleaner_movement') == "after" and states('sensor.robot_vacuum_robot_cleaner_cleaning_mode') == "stop") %}
|
||||
Charging to Resume
|
||||
{% elif states('sensor.robot_vacuum_robot_cleaner_cleaning_mode') == "auto" %}
|
||||
Cleaning
|
||||
{% else %}
|
||||
Charging
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
{% endraw %}
|
@ -8,6 +8,7 @@ ha_release: '2023.5'
|
||||
ha_codeowners:
|
||||
- '@balloob'
|
||||
- '@synesthesiam'
|
||||
- '@jaminh'
|
||||
ha_domain: voip
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: internal
|
||||
|
@ -1,148 +0,0 @@
|
||||
---
|
||||
title: "Template Weather Provider"
|
||||
description: "Instructions on how to integrate Template Weather provider into Home Assistant."
|
||||
ha_category:
|
||||
- Weather
|
||||
- Helper
|
||||
ha_release: 2021.3
|
||||
ha_iot_class: "Local Push"
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- weather
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` integrations creates weather provider that combines integrations and an existing weather provider into a fused weather provider.
|
||||
|
||||
There are several powerful ways to use this {% term integration %}, including localizing your weather provider information with local information from temperature, humidity, pressure sensors that you own.
|
||||
|
||||
Another use case could be using temperature and humidity from one weather platform, with forecasts from a different one.
|
||||
|
||||
Output will be converted according to the user's unit system or {% term entity %} override, see [documentation](https://developers.home-assistant.io/docs/core/entity/weather/#unit-conversion).
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable a Template Weather provider in your installation, add the following to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
(Note, be sure to update my_region in the condition and forecast templates to an appropriate value for your setup).
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
weather:
|
||||
- platform: template
|
||||
name: "My Weather Station"
|
||||
condition_template: "{{ states('weather.my_region') }}"
|
||||
temperature_template: "{{ states('sensor.temperature') | float }}"
|
||||
temperature_unit: "°C"
|
||||
humidity_template: "{{ states('sensor.humidity') | float }}"
|
||||
forecast_daily_template: "{{ state_attr('weather.my_region', 'forecast_data') }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% configuration %}
|
||||
name:
|
||||
description: Name to use in the frontend.
|
||||
required: true
|
||||
type: template
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this weather entity. Set this to a unique value to allow customization through the UI.
|
||||
required: false
|
||||
type: string
|
||||
condition_template:
|
||||
description: The current weather condition.
|
||||
required: true
|
||||
type: template
|
||||
temperature_template:
|
||||
description: The current temperature.
|
||||
required: true
|
||||
type: template
|
||||
dew_point_template:
|
||||
description: The current dew point.
|
||||
required: false
|
||||
type: template
|
||||
apparent_temperature_template:
|
||||
description: The current apparent (feels-like) temperature.
|
||||
required: false
|
||||
type: template
|
||||
temperature_unit:
|
||||
description: Unit for temperature_template output. Valid options are °C, °F, and K.
|
||||
required: false
|
||||
type: string
|
||||
humidity_template:
|
||||
description: The current humidity.
|
||||
required: true
|
||||
type: template
|
||||
attribution_template:
|
||||
description: The attribution to be shown in the frontend.
|
||||
required: false
|
||||
type: string
|
||||
pressure_template:
|
||||
description: The current air pressure.
|
||||
required: false
|
||||
type: template
|
||||
pressure_unit:
|
||||
description: Unit for pressure_template output. Valid options are Pa, hPa, kPa, bar, cbar, mbar, mmHg, inHg, psi.
|
||||
required: false
|
||||
type: string
|
||||
wind_speed_template:
|
||||
description: The current wind speed.
|
||||
required: false
|
||||
type: template
|
||||
wind_gust_speed_template:
|
||||
description: The current wind gust speed.
|
||||
required: false
|
||||
type: template
|
||||
wind_speed_unit:
|
||||
description: Unit for wind_speed_template output. Valid options are m/s, km/h, mph, mm/d, in/d, and in/h.
|
||||
required: false
|
||||
type: string
|
||||
wind_bearing_template:
|
||||
description: The current wind bearing.
|
||||
required: false
|
||||
type: template
|
||||
ozone_template:
|
||||
description: The current ozone level.
|
||||
required: false
|
||||
type: template
|
||||
cloud_coverage_template:
|
||||
description: The current cloud coverage.
|
||||
required: false
|
||||
type: template
|
||||
visibility_template:
|
||||
description: The current visibility.
|
||||
required: false
|
||||
type: template
|
||||
visibility_unit:
|
||||
description: Unit for visibility_template output. Valid options are km, mi, ft, m, cm, mm, in, yd.
|
||||
required: false
|
||||
type: string
|
||||
forecast_daily_template:
|
||||
description: Daily forecast data.
|
||||
required: false
|
||||
type: template
|
||||
forecast_hourly_template:
|
||||
description: Hourly forecast data.
|
||||
required: false
|
||||
type: template
|
||||
forecast_twice_daily_template:
|
||||
description: Twice daily forecast data.
|
||||
required: false
|
||||
type: template
|
||||
precipitation_unit:
|
||||
description: Unit for precipitation output. Valid options are km, mi, ft, m, cm, mm, in, yd.
|
||||
required: false
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
### Template variables
|
||||
|
||||
State-based template entities have the special template variable `this` available in their templates. The `this` variable aids [self-referencing](/integrations/template#self-referencing) of an {% term entity %}'s state and attribute in templates.
|
@ -1,12 +1,11 @@
|
||||
---
|
||||
title: Zimi Cloud Controller
|
||||
title: zimi
|
||||
description: Access and control your Zimi Cloud Controller and its connected Zimi-based devices.
|
||||
featured: false
|
||||
ha_iot_class: Local Push
|
||||
ha_release: 2025.6
|
||||
ha_codeowners:
|
||||
- '@markhannon'
|
||||
- '@mhannon11'
|
||||
ha_category:
|
||||
- Cover
|
||||
- Fan
|
||||
@ -25,6 +24,8 @@ quality_scale: bronze
|
||||
integration_type: hub
|
||||
related:
|
||||
- url: https://zimi.life/
|
||||
ha_quality_scale: bronze
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The **Zimi Cloud Controller** {% term integration %} allows you to connect your Zimi Cloud Controller to Home Assistant and, via this integration, control local devices connected to the Zimi mesh.
|
||||
|
@ -82,7 +82,7 @@ For more Z-Wave term definitions, refer to the [terminology section](#z-wave-ter
|
||||
To run a Z-Wave network, you need the following elements:
|
||||
|
||||
- A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-controller-should-i-buy).
|
||||
- A running Z-Wave JS server.
|
||||
- A running [Z-Wave JS server](#setting-up-a-z-wave-js-server).
|
||||
- An installed Z-Wave integration in Home Assistant.
|
||||
|
||||
### Setting up a Z-Wave JS server
|
||||
@ -95,8 +95,11 @@ Follow these steps:
|
||||
|
||||
1. Open the Home Assistant user interface.
|
||||
2. Plug the Z-Wave dongle into the device running Home Assistant.
|
||||
- Most likely, your dongle will be recognized automatically. On the user interface, you will be asked if you want to set up this device with the Z-Wave JS add-on. Select **Submit**.
|
||||
- If your dongle is not recognized, follow these steps:
|
||||
- Most likely, your dongle will be recognized automatically.
|
||||
- In the dialog, select **Recommended installation**.
|
||||
- This will install the Z-Wave JS add-on on the Home Assistant server.
|
||||
- Add the device to an {% term area %} and select **Finish**.
|
||||
- **Troubleshooting**: If your dongle is not recognized, follow these steps:
|
||||
|
||||
{% details "Manual setup steps" %}
|
||||
Use this My button:
|
||||
@ -113,7 +116,7 @@ Use this My button:
|
||||
{% enddetails %}
|
||||
|
||||
3. Wait for the installation to complete.
|
||||
4. You are prompted for network security keys.
|
||||
4. Depending on your Home Assistant version, you may be prompted for network security keys.
|
||||
- If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you.
|
||||
- If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you.
|
||||
- Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe.
|
||||
@ -155,6 +158,8 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
|
||||
|
||||
### Removing a device from the Z-Wave network
|
||||
|
||||
Do this before using the device with another controller, or when you don't use the device anymore. It removes the device from the Z-Wave network stored on the controller. It also removes the device and all its entities from Home Assistant. You can not join a device to a new network if it is still paired with a controller.
|
||||
|
||||
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select **Configure**.
|
||||
3. Select **Remove device**, then **Start exclusion**.
|
||||
@ -162,6 +167,122 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
|
||||
4. Put the device you want to remove in exclusion mode. Refer to its manual how this is done.
|
||||
5. The UI should confirm that the device was removed and the device and entities will be removed from Home Assistant.
|
||||
|
||||
## Migrating a Z-Wave network to a new controller
|
||||
|
||||
Do this if you have an existing Z-Wave network and want to use a new controller. This will reset your current controller (remove all network information from it) and remove the controller from Home Assistant. The Z-Wave integration with all its entities will stay in Home Assistant. The new controller is added to Home Assistant and paired with the existing network.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Administrator rights in Home Assistant
|
||||
- If you want to migrate from a 500 series controller, before starting migration, update the controller to SDK 6.61+
|
||||
- Check the documentation of your device to see if and how they can be updated.
|
||||
- [Steps to update Aeotec Z-Stick 5](https://aeotec.freshdesk.com/support/solutions/articles/6000252294-z-stick-gen5-v1-02-firmware-update).
|
||||
|
||||
### To migrate a Z-Wave network to a new controller
|
||||
|
||||
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select **Configure**.
|
||||
3. Under **Backup and restore**, select **Migrate controller**.
|
||||
4. Select **Migrate to a new controller**.
|
||||
- To confirm device reset, select **Submit**.
|
||||
- **Info**: This will initiate a backup of the network information and factory reset the controller. All the stored network information will be removed.
|
||||
5. When the **Unplug your controller** dialog shows up, unplug your old controller.
|
||||
- Connect the new controller.
|
||||
- Confirm that you connected the new controller by selecting **Submit**.
|
||||
6. Follow the steps on screen.
|
||||
|
||||
## Overriding the radio frequency region of the controller in the Z-Wave JS add-on
|
||||
|
||||
The frequency used by Z-Wave devices depends on your region. For 700 and 800 series controllers, this frequency can be changed. The frequency of end devices cannot, so you need to make sure to buy devices specific to your region.
|
||||
|
||||
If you are using the Z-Wave JS add-on, Home Assistant automatically changes the radio frequency region to match the region/country you're in. If needed, you can override this setting.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Administrator rights in Home Assistant
|
||||
- All your Z-Wave devices must be specified for that region
|
||||
- Note: this procedure only applies if your controller is [set up using the Z-Wave JS add-on](#setting-up-a-z-wave-js-server)
|
||||
|
||||
### To override the radio frequency region of your Z-Wave controller
|
||||
|
||||
1. Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %}.
|
||||
2. Open the **Configuration** tab.
|
||||
3. In the **Options** section, select the **Radio Frequency Region**.
|
||||
4. To apply your changes, select **Save**.
|
||||
- Your Z-Wave controller is now ready to communicate with devices that were specified for your chosen region.
|
||||
5. To return to the default setting and use the region defined by Home Assistant, under **Radio Frequency Region** choose **Automatic**.
|
||||
|
||||
## Backing up your Z-Wave network
|
||||
|
||||
It's recommended to create a backup before making any major changes to your Z-Wave network. For example, before migrating from one controller to another, or before resetting your controller. The backup stores your Z-Wave controller's non-volatile memory (NVM), which contains your network information including paired devices. It is stored in a binary file that you can download.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Administrator rights in Home Assistant
|
||||
|
||||
### To backup your Z-Wave network
|
||||
|
||||
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select **Configure**.
|
||||
3. Under **Backup and restore**, select **Download backup**.
|
||||
- **Result**: The backup file is downloaded to the device from which you initiated the download.
|
||||
4. Done! Store the backup file somewhere safe in case you need it later to restore your Z-Wave network.
|
||||
|
||||
## Updating the firmware of your Z-Wave device
|
||||
|
||||
Controllers and devices with the Firmware Update Metadata Command Class allow you to update the firmware by uploading a firmware file. In those cases, you can start the firmware update from the device page in Home Assistant. Refer to the documentation of the device manufacturer to find the corresponding firmware file. An example is the [firmware page by Zooz](https://www.support.getzooz.com/kb/article/1158-zooz-ota-firmware-files/).
|
||||
|
||||
{% caution %}
|
||||
**Risk of damage to the device due to firmware update**
|
||||
|
||||
A firmware update can damage your Z-Wave device.
|
||||
|
||||
- Before updating your Z-Wave device, make sure an update is necessary, and that you have the correct firmware file matching your device.
|
||||
- Once you have started the update process, you must not interrupt the update process but let it complete.
|
||||
|
||||
The Home Assistant and Z-Wave JS teams do not take any responsibility for any damages to your device as a result of the firmware update and will not be able to help you if you render your device useless due to firmware update.
|
||||
{% endcaution %}
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Administrator rights in Home Assistant
|
||||
- Downloaded the firmware file from the manufacturer website
|
||||
|
||||
### To update firmware of a Z-Wave device
|
||||
|
||||
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select **Configure** and select the controller.
|
||||
3. Under **Device info**, select **Update**.
|
||||
4. Select the firmware file that you previously downloaded to your computer.
|
||||
- **Caution: Risk of damage to the device**
|
||||
- Make sure you select the correct firmware file.
|
||||
- An incorrect firmware file can damage your device.
|
||||
- Once you start the update process, you must wait for the update to complete.
|
||||
- An interrupted update can damage your device.
|
||||
5. Select **Begin firmware update** and wait for it to complete.
|
||||
|
||||
## Resetting a Z-Wave controller
|
||||
|
||||
It is recommended to back up your Z-Wave network before resetting the device.
|
||||
|
||||
- The controller will forget all devices it is paired with.
|
||||
- All Z-Wave devices for this network will be removed from Home Assistant.
|
||||
- If there are any devices still paired with the controller when it is reset, they will have to go through the exclusion process before they can be re-paired.
|
||||
- The device firmware will remain on the device.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Administrator rights on Home Assistant
|
||||
|
||||
### To reset a Z-Wave controller
|
||||
|
||||
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select the controller.
|
||||
3. Under **Device info**, select the three dots {% icon "mdi:dots-vertical" %} menu, then select **Factory reset**.
|
||||
|
||||

|
||||
4. Once the process is finished, you can use this controller to start a new network, or pass it on to someone else.
|
||||
|
||||
## Special Z-Wave entities
|
||||
|
||||
The Z-Wave integration provides several special entities, some of which are available for every Z-Wave device, and some of which are conditional based on the device.
|
||||
@ -201,19 +322,6 @@ Some features can be accessed from the menu of integration itself. As they are n
|
||||
|
||||
- **[Download diagnostics](/docs/configuration/troubleshooting/#download-diagnostics):** Exports a JSON file describing the entities of all devices registered with this integration.
|
||||
|
||||
### Device panel
|
||||
|
||||
#### Controller
|
||||
|
||||
The following features can be accessed from the device panel of a Z-Wave controller:
|
||||
|
||||
- **Factory reset:** Exercise extreme caution when using this action! Once initiated, your controller will be reset to factory settings, it will forget all devices it is paired with, it will establish a new network ID that will prevent any recovery of your old network, and all Z-Wave devices for this network will be removed from Home Assistant. If there are any devices still paired with the controller when it is reset, they will have to go through the exclusion process before they can be re-paired.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/z-wave/z-wave-controller-commands.png' alt='Screenshot showing the device panel of a Z-Wave controller' />
|
||||
Screenshot showing the device panel of a Z-Wave controller.
|
||||
</p>
|
||||
|
||||
#### Network devices
|
||||
|
||||
The following features can be accessed from the device panel of any Z-Wave device on your network aside from the controller:
|
||||
@ -819,7 +927,7 @@ You can also keep track of the road map for the Z-Wave integration [here](https:
|
||||
|
||||
### Which Z-Wave controller should I buy?
|
||||
|
||||
Z-Wave supports all known 500 and 700 series Z-Wave controllers. If you are just starting out, we recommend that you purchase a 700 series controller (with firmware updated to >=7.17.2).
|
||||
Z-Wave supports all known 500-, 700-, and 800-series Z-Wave controllers. If you are just starting out, we recommend that you purchase a 800-series controller (with firmware updated to >=7.23.2).
|
||||
|
||||
For more information, see [Supported Z-Wave dongles](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules)
|
||||
|
||||
@ -946,7 +1054,7 @@ If the interview is complete, then the device does not yet have a device file fo
|
||||
When trying to determine why something isn't working as you expect, or when reporting an issue with the integration, it is helpful to know what Z-Wave JS sees as the current state of your Z-Wave network. To get a dump of your current network state, follow these steps:
|
||||
|
||||
1. Go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the **Z-Wave** integration. Then, select the three dots.
|
||||
2. Select the **Z-Wave** integration. Then, select the three dots {% icon "mdi:dots-vertical" %} menu.
|
||||
3. From the dropdown menu, select **Download diagnostics**.
|
||||
|
||||
### How do I address interference issues?
|
||||
@ -1062,3 +1170,25 @@ No further action is required and the SmartStart product will be added automatic
|
||||
### Terminology mapping table
|
||||
|
||||
For some of the concepts, the terminology used in Home Assistant does not correspond to the terminology used in Z-Wave documentation. Refer to the [terminology mapping table](#z-wave-terminology-and-home-assistant) for a list of term equivalents.
|
||||
|
||||
## Removing Z-Wave JS from Home Assistant
|
||||
|
||||
This removes all paired Z-Wave devices and their entities, the Z-Wave JS add-on, and the Z-Wave integration from Home Assistant.
|
||||
|
||||
### To remove Z-Wave JS from Home Assistant
|
||||
|
||||
1. [Remove the device from your Z-Wave network](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network).
|
||||
- Do this for each device that is joined to your network so that it is no longer paired to the controller.
|
||||
- You cannot add a device to a new controller while it is still paired with an old one.
|
||||
- Alternatively, you can factory reset each device. Refer to the device manual to see how this is done.
|
||||
- This usually involves finding the device in your household and pressing a button.
|
||||
2. Remove the Z-Wave integration.
|
||||
- Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
|
||||
- Next to the integration entry, select the three-dot {% icon "mdi:dots-vertical" %} menu.
|
||||
- Select **Delete**.
|
||||
3. If it hasn't been deleted automatically, remove the Z-Wave JS add-on.
|
||||
- Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %}.
|
||||
- Select **Uninstall**.
|
||||
- Decide whether to also delete the data related to the add-on or whether to keep it.
|
||||
4. Done. Z-Wave JS is now completely removed from your Home Assistant server.
|
||||
- You can now use your Z-Wave devices and controller on a new server.
|
||||
|
@ -108,7 +108,7 @@ Not only did we gain a lot of test coverage, we also attracted a lot of new deve
|
||||
[Snapcast]: /integrations/snapcast
|
||||
[mqtt-publish]: /integrations/mqtt/#publish-service
|
||||
[REST]: /integrations/notify.rest/
|
||||
[template]: /integrations/switch.template/
|
||||
[template]: /integrations/template/#switch
|
||||
[Honeywell]: /integrations/honeywell/
|
||||
[zwave-polling]: /integrations/zwave/#configuration
|
||||
[zwave-scene]: /integrations/zwave/#events
|
||||
|
@ -83,7 +83,7 @@ repository, and [we are looking for contributions](https://github.com/home-assis
|
||||
So, feel free to jump in and help out!
|
||||
|
||||
An overview of the current status of all intents and languages can be found on
|
||||
[this page](https://home-assistant.github.io/intents/). The page gives insight
|
||||
[this page](https://ohf-voice.github.io/intents/). The page gives insight
|
||||
into the parts we need help with.
|
||||
|
||||
Lastly, we are also looking for language leaders! Each language is maintained
|
||||
|
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