Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2024-06-18 11:55:10 +02:00
commit 8fe8b61762
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
175 changed files with 5349 additions and 657 deletions

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out files from GitHub - name: Check out files from GitHub
uses: actions/checkout@v4.1.6 uses: actions/checkout@v4.1.7
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v4.0.2 uses: actions/setup-node@v4.0.2
with: with:
@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out files from GitHub - name: Check out files from GitHub
uses: actions/checkout@v4.1.6 uses: actions/checkout@v4.1.7
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v4.0.2 uses: actions/setup-node@v4.0.2
with: with:

View File

@ -21,6 +21,7 @@ source/_integrations/aep_ohio.markdown @tronikos
source/_integrations/aep_texas.markdown @tronikos source/_integrations/aep_texas.markdown @tronikos
source/_integrations/agent_dvr.markdown @ispysoftware source/_integrations/agent_dvr.markdown @ispysoftware
source/_integrations/air_quality.markdown @home-assistant/core source/_integrations/air_quality.markdown @home-assistant/core
source/_integrations/airgradient.markdown @airgradienthq @joostlek
source/_integrations/airly.markdown @bieniu source/_integrations/airly.markdown @bieniu
source/_integrations/airnow.markdown @asymworks source/_integrations/airnow.markdown @asymworks
source/_integrations/airq.markdown @Sibgatulin @dl2080 source/_integrations/airq.markdown @Sibgatulin @dl2080
@ -60,9 +61,11 @@ source/_integrations/application_credentials.markdown @home-assistant/core
source/_integrations/apprise.markdown @caronc source/_integrations/apprise.markdown @caronc
source/_integrations/aprilaire.markdown @chamberlain2007 source/_integrations/aprilaire.markdown @chamberlain2007
source/_integrations/aprs.markdown @PhilRW source/_integrations/aprs.markdown @PhilRW
source/_integrations/aranet.markdown @aschmitz @thecode source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH
source/_integrations/aranet.markdown @aschmitz @thecode @anrijs
source/_integrations/arcam_fmj.markdown @elupus source/_integrations/arcam_fmj.markdown @elupus
source/_integrations/arris_tg2492lg.markdown @vanbalken source/_integrations/arris_tg2492lg.markdown @vanbalken
source/_integrations/arve.markdown @ikalnyi
source/_integrations/aseko_pool_live.markdown @milanmeu source/_integrations/aseko_pool_live.markdown @milanmeu
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
source/_integrations/asuswrt.markdown @kennedyshead @ollo69 source/_integrations/asuswrt.markdown @kennedyshead @ollo69
@ -192,7 +195,7 @@ source/_integrations/downloader.markdown @erwindouna
source/_integrations/dremel_3d_printer.markdown @tkdrob source/_integrations/dremel_3d_printer.markdown @tkdrob
source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer
source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr.markdown @Robbie1221 @frenck
source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox @erwindouna
source/_integrations/duotecno.markdown @cereal2nd source/_integrations/duotecno.markdown @cereal2nd
source/_integrations/duquesne_light.markdown @tronikos source/_integrations/duquesne_light.markdown @tronikos
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo
@ -217,6 +220,7 @@ source/_integrations/emoncms.markdown @borpin
source/_integrations/emonitor.markdown @bdraco source/_integrations/emonitor.markdown @bdraco
source/_integrations/emulated_hue.markdown @bdraco @Tho85 source/_integrations/emulated_hue.markdown @bdraco @Tho85
source/_integrations/emulated_kasa.markdown @kbickar source/_integrations/emulated_kasa.markdown @kbickar
source/_integrations/energenie_power_sockets.markdown @gnumpi
source/_integrations/energie_vanons.markdown @klaasnicolaas source/_integrations/energie_vanons.markdown @klaasnicolaas
source/_integrations/energy.markdown @home-assistant/core source/_integrations/energy.markdown @home-assistant/core
source/_integrations/energyzero.markdown @klaasnicolaas source/_integrations/energyzero.markdown @klaasnicolaas
@ -311,9 +315,9 @@ source/_integrations/gree.markdown @cmroche
source/_integrations/greeneye_monitor.markdown @jkeljo source/_integrations/greeneye_monitor.markdown @jkeljo
source/_integrations/group.markdown @home-assistant/core source/_integrations/group.markdown @home-assistant/core
source/_integrations/guardian.markdown @bachya source/_integrations/guardian.markdown @bachya
source/_integrations/habitica.markdown @ASMfreaK @leikoilja source/_integrations/habitica.markdown @ASMfreaK @leikoilja @tr4nt0r
source/_integrations/hardware.markdown @home-assistant/core source/_integrations/hardware.markdown @home-assistant/core
source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan source/_integrations/harmony.markdown @ehendrix23 @bdraco @mkeesey @Aohzan
source/_integrations/hassio.markdown @home-assistant/supervisor source/_integrations/hassio.markdown @home-assistant/supervisor
source/_integrations/havana_shade.markdown @starkillerOG source/_integrations/havana_shade.markdown @starkillerOG
source/_integrations/hdmi_cec.markdown @inytar source/_integrations/hdmi_cec.markdown @inytar
@ -368,6 +372,7 @@ source/_integrations/image.markdown @home-assistant/core
source/_integrations/image_processing.markdown @home-assistant/core source/_integrations/image_processing.markdown @home-assistant/core
source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/image_upload.markdown @home-assistant/core
source/_integrations/imap.markdown @jbouwh source/_integrations/imap.markdown @jbouwh
source/_integrations/imgw_pib.markdown @bieniu
source/_integrations/improv_ble.markdown @emontnemery source/_integrations/improv_ble.markdown @emontnemery
source/_integrations/incomfort.markdown @zxdavb source/_integrations/incomfort.markdown @zxdavb
source/_integrations/indianamichiganpower.markdown @tronikos source/_integrations/indianamichiganpower.markdown @tronikos
@ -390,6 +395,7 @@ source/_integrations/iperf3.markdown @rohankapoorcom
source/_integrations/ipma.markdown @dgomes source/_integrations/ipma.markdown @dgomes
source/_integrations/iqvia.markdown @bachya source/_integrations/iqvia.markdown @bachya
source/_integrations/irish_rail_transport.markdown @ttroy50 source/_integrations/irish_rail_transport.markdown @ttroy50
source/_integrations/isal.markdown @bdraco
source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair
source/_integrations/ismartwindow.markdown @starkillerOG source/_integrations/ismartwindow.markdown @starkillerOG
source/_integrations/iss.markdown @DurgNomis-drol source/_integrations/iss.markdown @DurgNomis-drol
@ -491,6 +497,7 @@ source/_integrations/modern_forms.markdown @wonderslug
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
source/_integrations/monessen.markdown @jeeftor source/_integrations/monessen.markdown @jeeftor
source/_integrations/monoprice.markdown @etsinko @OnFreund source/_integrations/monoprice.markdown @etsinko @OnFreund
source/_integrations/monzo.markdown @jakemartin-icl
source/_integrations/moon.markdown @fabaff @frenck source/_integrations/moon.markdown @fabaff @frenck
source/_integrations/mopeka.markdown @bdraco source/_integrations/mopeka.markdown @bdraco
source/_integrations/motion_blinds.markdown @starkillerOG source/_integrations/motion_blinds.markdown @starkillerOG
@ -674,6 +681,7 @@ source/_integrations/sabnzbd.markdown @shaiu @jpbede
source/_integrations/saj.markdown @fredericvl source/_integrations/saj.markdown @fredericvl
source/_integrations/samsam.markdown @klaasnicolaas source/_integrations/samsam.markdown @klaasnicolaas
source/_integrations/samsungtv.markdown @chemelli74 @epenet source/_integrations/samsungtv.markdown @chemelli74 @epenet
source/_integrations/sanix.markdown @tomaszsluszniak
source/_integrations/scene.markdown @home-assistant/core source/_integrations/scene.markdown @home-assistant/core
source/_integrations/schedule.markdown @home-assistant/core source/_integrations/schedule.markdown @home-assistant/core
source/_integrations/schlage.markdown @dknowles2 source/_integrations/schlage.markdown @dknowles2
@ -725,7 +733,6 @@ source/_integrations/smart_blinds.markdown @starkillerOG
source/_integrations/smart_home.markdown @starkillerOG source/_integrations/smart_home.markdown @starkillerOG
source/_integrations/smart_meter_texas.markdown @grahamwetzler source/_integrations/smart_meter_texas.markdown @grahamwetzler
source/_integrations/smarther.markdown @cgtobi source/_integrations/smarther.markdown @cgtobi
source/_integrations/smartthings.markdown @andrewsayre
source/_integrations/smarttub.markdown @mdz source/_integrations/smarttub.markdown @mdz
source/_integrations/smarty.markdown @z0mbieprocess source/_integrations/smarty.markdown @z0mbieprocess
source/_integrations/smhi.markdown @gjohansson-ST source/_integrations/smhi.markdown @gjohansson-ST
@ -775,7 +782,7 @@ source/_integrations/switch.markdown @home-assistant/core
source/_integrations/switch_as_x.markdown @home-assistant/core source/_integrations/switch_as_x.markdown @home-assistant/core
source/_integrations/switchbee.markdown @jafar-atili source/_integrations/switchbee.markdown @jafar-atili
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
source/_integrations/switchbot_cloud.markdown @SeraphicRav source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland
source/_integrations/switcher_kis.markdown @thecode source/_integrations/switcher_kis.markdown @thecode
source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/switchmate.markdown @danielhiversen @qiz-li
source/_integrations/symfonisk.markdown @jjlawren @peterager source/_integrations/symfonisk.markdown @jjlawren @peterager
@ -806,7 +813,7 @@ source/_integrations/tfiac.markdown @fredrike @mellado
source/_integrations/thermobeacon.markdown @bdraco source/_integrations/thermobeacon.markdown @bdraco
source/_integrations/thermoplus.markdown @bdraco source/_integrations/thermoplus.markdown @bdraco
source/_integrations/thermopro.markdown @bdraco @h3ss source/_integrations/thermopro.markdown @bdraco @h3ss
source/_integrations/thethingsnetwork.markdown @fabaff source/_integrations/thethingsnetwork.markdown @angelnu
source/_integrations/thread.markdown @home-assistant/core source/_integrations/thread.markdown @home-assistant/core
source/_integrations/tibber.markdown @danielhiversen source/_integrations/tibber.markdown @danielhiversen
source/_integrations/tile.markdown @bachya source/_integrations/tile.markdown @bachya

View File

@ -10,8 +10,8 @@ group :development do
gem 'stringex', '2.8.6' gem 'stringex', '2.8.6'
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
gem 'sassc', '2.1.0' gem 'sassc', '2.1.0'
gem 'rubocop', '1.64.0' gem 'rubocop', '1.64.1'
gem 'ruby-lsp', '0.16.7' gem 'ruby-lsp', '0.17.3'
gem 'rackup', '2.1.0' gem 'rackup', '2.1.0'
end end
@ -23,7 +23,7 @@ group :jekyll_plugins do
end end
gem 'sinatra', '4.0.0' gem 'sinatra', '4.0.0'
gem 'nokogiri', '1.16.5' gem 'nokogiri', '1.16.6'
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library # and associated library

View File

@ -21,14 +21,14 @@ GEM
sass (>= 3.3.0, < 3.5) sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5) compass-import-once (1.0.5)
sass (>= 3.2, < 3.5) sass (>= 3.2, < 3.5)
concurrent-ruby (1.2.3) concurrent-ruby (1.3.3)
em-websocket (0.5.3) em-websocket (0.5.3)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0) http_parser.rb (~> 0)
eventmachine (1.2.7) eventmachine (1.2.7)
ffi (1.16.3) ffi (1.17.0-x86_64-linux-gnu)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
google-protobuf (4.27.0-x86_64-linux) google-protobuf (4.27.1-x86_64-linux)
bigdecimal bigdecimal
rake (>= 13) rake (>= 13)
http_parser.rb (0.8.0) http_parser.rb (0.8.0)
@ -72,22 +72,23 @@ GEM
listen (3.9.0) listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10) rb-inotify (~> 0.9, >= 0.9.10)
logger (1.6.0)
mercenary (0.4.0) mercenary (0.4.0)
multi_json (1.15.0) multi_json (1.15.0)
mustermann (3.0.0) mustermann (3.0.0)
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
nokogiri (1.16.5-x86_64-linux) nokogiri (1.16.6-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
parallel (1.24.0) parallel (1.25.1)
parser (3.3.1.0) parser (3.3.3.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
pathutil (0.16.2) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
prism (0.29.0) prism (0.30.0)
public_suffix (5.0.5) public_suffix (5.1.0)
racc (1.8.0) racc (1.8.0)
rack (3.0.11) rack (3.1.3)
rack-protection (4.0.0) rack-protection (4.0.0)
base64 (>= 0.1.0) base64 (>= 0.1.0)
rack (>= 3.0.0, < 4) rack (>= 3.0.0, < 4)
@ -101,11 +102,13 @@ GEM
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
rb-inotify (0.11.1) rb-inotify (0.11.1)
ffi (~> 1.0) ffi (~> 1.0)
rbs (3.5.1)
logger
regexp_parser (2.9.2) regexp_parser (2.9.2)
rexml (3.2.8) rexml (3.3.0)
strscan (>= 3.0.9) strscan
rouge (4.2.1) rouge (4.3.0)
rubocop (1.64.0) rubocop (1.64.1)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (>= 3.17.0)
parallel (~> 1.10) parallel (~> 1.10)
@ -118,15 +121,16 @@ GEM
unicode-display_width (>= 2.4.0, < 3.0) unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3) rubocop-ast (1.31.3)
parser (>= 3.3.1.0) parser (>= 3.3.1.0)
ruby-lsp (0.16.7) ruby-lsp (0.17.3)
language_server-protocol (~> 3.17.0) language_server-protocol (~> 3.17.0)
prism (>= 0.29.0, < 0.30) prism (>= 0.29.0, < 0.31)
rbs (>= 3, < 4)
sorbet-runtime (>= 0.5.10782) sorbet-runtime (>= 0.5.10782)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass (3.4.25) sass (3.4.25)
sass-embedded (1.77.2-x86_64-linux-gnu) sass-embedded (1.77.5-x86_64-linux-gnu)
google-protobuf (>= 3.25, < 5.0) google-protobuf (>= 3.25, < 5.0)
sass-globbing (1.1.5) sass-globbing (1.1.5)
sass (>= 3.1) sass (>= 3.1)
@ -138,7 +142,7 @@ GEM
rack-protection (= 4.0.0) rack-protection (= 4.0.0)
rack-session (>= 2.0.0, < 3) rack-session (>= 2.0.0, < 3)
tilt (~> 2.0) tilt (~> 2.0)
sorbet-runtime (0.5.11394) sorbet-runtime (0.5.11435)
stringex (2.8.6) stringex (2.8.6)
strscan (3.1.0) strscan (3.1.0)
terminal-table (3.0.2) terminal-table (3.0.2)
@ -161,11 +165,11 @@ DEPENDENCIES
jekyll-paginate (= 1.1.0) jekyll-paginate (= 1.1.0)
jekyll-sitemap (= 1.4.0) jekyll-sitemap (= 1.4.0)
jekyll-toc (= 0.19.0) jekyll-toc (= 0.19.0)
nokogiri (= 1.16.5) nokogiri (= 1.16.6)
rackup (= 2.1.0) rackup (= 2.1.0)
rake (= 13.2.1) rake (= 13.2.1)
rubocop (= 1.64.0) rubocop (= 1.64.1)
ruby-lsp (= 0.16.7) ruby-lsp (= 0.17.3)
sass-globbing (= 1.1.5) sass-globbing (= 1.1.5)
sassc (= 2.1.0) sassc (= 2.1.0)
sinatra (= 4.0.0) sinatra (= 4.0.0)

View File

@ -30,8 +30,6 @@ task :generate do
abort("Generating alerts data failed") unless success abort("Generating alerts data failed") unless success
success = system "rake version_data" success = system "rake version_data"
abort("Generating version data failed") unless success abort("Generating version data failed") unless success
success = system "rake blueprint_exchange_data"
abort("Generating blueprint exchange data failed") unless success
success = system "jekyll build" success = system "jekyll build"
abort("Generating site failed") unless success abort("Generating site failed") unless success
if ENV["CONTEXT"] != 'production' if ENV["CONTEXT"] != 'production'
@ -70,7 +68,6 @@ task :preview, :listen do |t, args|
system "rake analytics_data" system "rake analytics_data"
system "rake version_data" system "rake version_data"
system "rake alerts_data" system "rake alerts_data"
system "rake blueprint_exchange_data"
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build -t --watch --incremental") jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build -t --watch --incremental")
compassPid = Process.spawn("compass watch") compassPid = Process.spawn("compass watch")
rackupPid = Process.spawn("rackup --port #{server_port} --host #{listen_addr}") rackupPid = Process.spawn("rackup --port #{server_port} --host #{listen_addr}")
@ -116,14 +113,3 @@ task :version_data do
file.write(JSON.generate(remote_data)) file.write(JSON.generate(remote_data))
end end
end end
desc "Download data from the blueprint exchange @ community.home-assistant.io"
task :blueprint_exchange_data do
uri = URI('https://community.home-assistant.io/c/blueprints-exchange/53/l/top.json?period=all')
remote_data = JSON.parse(Net::HTTP.get(uri))
File.open("#{source_dir}/_data/blueprint_exchange_data.json", "w") do |file|
file.write(JSON.generate(remote_data['topic_list']['topics']))
end
end

View File

@ -67,8 +67,6 @@ titlecase: true # Converts page and post titles to titlecase
collections: collections:
integrations: integrations:
output: true output: true
examples:
output: true
docs: docs:
output: true output: true
addons: addons:
@ -109,9 +107,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 2024 current_major_version: 2024
current_minor_version: 5 current_minor_version: 6
current_patch_version: 5 current_patch_version: 3
date_released: 2024-05-24 date_released: 2024-06-15
# Either # or the anchor link to latest release notes in the blog post. # Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it. # Must be prefixed with a # and have double quotes around it.

22
package-lock.json generated
View File

@ -23,7 +23,7 @@
"textlint": "^14.0.4", "textlint": "^14.0.4",
"textlint-filter-rule-comments": "^1.2.2", "textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^5.0.9" "textlint-rule-terminology": "^5.0.13"
} }
}, },
"node_modules/@aashutoshrathi/word-wrap": { "node_modules/@aashutoshrathi/word-wrap": {
@ -1064,12 +1064,12 @@
} }
}, },
"node_modules/braces": { "node_modules/braces": {
"version": "3.0.2", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"fill-range": "^7.0.1" "fill-range": "^7.1.1"
}, },
"engines": { "engines": {
"node": ">=8" "node": ">=8"
@ -1443,9 +1443,9 @@
} }
}, },
"node_modules/fill-range": { "node_modules/fill-range": {
"version": "7.0.1", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"to-regex-range": "^5.0.1" "to-regex-range": "^5.0.1"
@ -6113,9 +6113,9 @@
} }
}, },
"node_modules/textlint-rule-terminology": { "node_modules/textlint-rule-terminology": {
"version": "5.0.9", "version": "5.0.13",
"resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.0.9.tgz", "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.0.13.tgz",
"integrity": "sha512-+6z9J8plZEtJdnaWyj0qpPtQBKEW9dq+a9mfJzOA6ZseHycnvlQzD66toyLBgm4XoGUe8ZNabS0h/eVYvY7Yyw==", "integrity": "sha512-1LONlbrn0fRhz/eCWPrnrxc5nz07NDjLLa4yiPm/hMtn/4Gi11R0lHbVgl+Ux6l8NC/a/NS5f6zQkJqqWy5bMw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"lodash": "^4.17.15", "lodash": "^4.17.15",

View File

@ -18,7 +18,7 @@
"textlint": "^14.0.4", "textlint": "^14.0.4",
"textlint-filter-rule-comments": "^1.2.2", "textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^5.0.9" "textlint-rule-terminology": "^5.0.13"
}, },
"resolutions": { "resolutions": {
"minimist": ">=1.2.5" "minimist": ">=1.2.5"
@ -26,6 +26,6 @@
"scripts": { "scripts": {
"markdown:lint": "remark --quiet --frail .", "markdown:lint": "remark --quiet --frail .",
"textlint:all": "textlint source", "textlint:all": "textlint source",
"textlint": "textlint source/_examples source/_docs source/_faq source/_integrations source/_dashboards source/cloud source/getting-started source/hassio source/dashboards" "textlint": "textlint source/_docs source/_faq source/_integrations source/_dashboards source/cloud source/getting-started source/hassio source/dashboards"
} }
} }

27
plugins/site_pages.rb Normal file
View File

@ -0,0 +1,27 @@
module Jekyll
class SitePagesGenerator < Jekyll::Generator
def generate(site)
all_pages = Array.new
site.collections.each do |name, collection|
all_pages.concat(collection.docs)
end
site.data["site_pages"] = all_pages
.concat(site.pages)
.concat(site.documents)
.map { |entry|
[
entry.url.to_s,
{
"title" => entry["title"],
"description" => entry["description"],
"url" => entry.url,
"relative_path" => entry.relative_path
}
]
}
.to_h
end
end
end

View File

@ -490,6 +490,10 @@ article.listing {
box-shadow: none; box-shadow: none;
} }
video {
max-width: 100%;
}
&>table, &>table,
&>.entry-content>table { &>.entry-content>table {
background-color: #f3fcf5; background-color: #f3fcf5;

View File

@ -128,7 +128,12 @@ type: button
entity: light.living_room entity: light.living_room
``` ```
Button card with a button name and a script that runs when card is tapped: Button card with a button name and a [script](/docs/scripts/) that runs when card is tapped:
<p class='img'>
<img src='/images/dashboards/entity_button_complex_card.png' alt='Screenshot of the Button card with script service'>
Screenshot of the button card with script service.
</p>
```yaml ```yaml
type: button type: button
@ -141,7 +146,60 @@ tap_action:
entity_id: script.turn_off_lights entity_id: script.turn_off_lights
``` ```
Example of 4 buttons on a vertical stack card:
<p class='img'> <p class='img'>
<img src='/images/dashboards/entity_button_complex_card.png' alt='Screenshot of the Button card with script service'> <img src='/images/dashboards/buttons_on_vertical_stack_card.png' alt='Screenshot of a vertical stack card with 4 buttons and an entity selector'>
Screenshot of the button card with script service. Screenshot of a vertical stack card with 4 buttons and an entity selector.
</p> </p>
The image shows a vertical stack card with 4 buttons arranged in a horizontal stack card and an entity selector. The buttons use the toggle action to run a script, for example, the Netflix script, which starts up the TV and opens Netflix. To learn how to create scripts, refer to [scripts](/docs/scripts/).
```yaml
cards:
- entities:
- entity: input_select.living_room_scene
name: Scene
show_header_toggle: false
type: entities
- type: horizontal-stack
cards:
- name: Watch Netflix
entity: script.netflix
type: button
tap_action:
action: toggle
hold_action:
action: more-info
show_name: true
show_icon: true
- name: Watch YouTube
entity: script.youtube
type: button
tap_action:
action: toggle
hold_action:
action: more-info
show_name: true
show_icon: true
- name: Wake PC
entity: script.wake_on_lan
type: button
tap_action:
action: toggle
icon: mdi:desktop-tower
show_name: true
show_icon: true
show_state: false
- name: Go to sleep
entity: script.sleep
type: button
tap_action:
action: toggle
icon: mdi:sleep
hold_action:
action: more-info
show_name: true
show_icon: true
type: vertical-stack
```

View File

@ -6,6 +6,8 @@ description: The Conditional card displays another card based on conditions.
related: related:
- docs: /dashboards/cards/ - docs: /dashboards/cards/
title: Dashboard cards title: Dashboard cards
- docs: /dashboards/cards/#show-or-hide-a-card-conditionally
title: Conditional settings on the card's visibility tab
--- ---
The conditional card displays another card based on conditions. The conditional card displays another card based on conditions.
@ -15,6 +17,8 @@ The conditional card displays another card based on conditions.
{% include dashboard/edit_dashboard.md %} {% include dashboard/edit_dashboard.md %}
Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions. Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions.
The conditional card can still be used. However, it is now possible to define a setting to show or hide a card conditionally directly on each card type, on its [Visibility](/dashboards/cards/#show-or-hide-a-card-conditionally) tab.
Most options for this card can be configured via the user interface. Most options for this card can be configured via the user interface.
## YAML configuration ## YAML configuration

View File

@ -562,7 +562,7 @@
uses its radio frequency (RF) radio to communicate with the Thread mesh uses its radio frequency (RF) radio to communicate with the Thread mesh
network. In case of Matter, the data that is forwarded is encrypted. network. In case of Matter, the data that is forwarded is encrypted.
Examples of Thread border routers are the Nest Hub (2nd gen), the HomePod Examples of Thread border routers are the Nest Hub (2nd gen), the HomePod
mini, and the Home Assistant SkyConnect together with the OpenThread Border mini, and the Home Assistant Connect&nbsp;ZBT-1 together with the OpenThread Border
Router add-on. Router add-on.
link: /integrations/thread/#about-thread-border-routers link: /integrations/thread/#about-thread-border-routers
aliases: aliases:

View File

@ -40,11 +40,11 @@ File access depends on your [installation method](/installation/#advanced-instal
- [Configure file access on the Operating System](/common-tasks/os/#configuring-access-to-files): - [Configure file access on the Operating System](/common-tasks/os/#configuring-access-to-files):
- If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on). - If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on).
- Alternatively, use the [VS Code add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor. - Alternatively, use the [Studio Code Server add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor.
- If you prefer to use a file editor on your computer, use the [Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on). - If you prefer to use a file editor on your computer, use the [Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on).
- [Configure file access on Supervised](/common-tasks/supervised/#configuring-access-to-files): - [Configure file access on Supervised](/common-tasks/supervised/#configuring-access-to-files):
- Using the [File editor add-on](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on). - Using the [File editor add-on](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on).
- Using the [VS Code add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on). - Using the [Studio Code Server add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on).
- Using the [Samba add-on](/common-tasks/supervised/#installing-and-using-the-samba-add-on). - Using the [Samba add-on](/common-tasks/supervised/#installing-and-using-the-samba-add-on).
2. To look up the path to your configuration directory, go to {% my system_health title="**Settings** > **System** > **Repairs**" %}. 2. To look up the path to your configuration directory, go to {% my system_health title="**Settings** > **System** > **Repairs**" %}.
@ -87,4 +87,4 @@ For configuration changes to become effective, the configuration must be reloade
## Troubleshooting the configuration ## Troubleshooting the configuration
If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml). If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/).

View File

@ -6,31 +6,35 @@ related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: configuration.yaml file title: configuration.yaml file
- docs: /docs/configuration/troubleshooting/ - docs: /docs/configuration/troubleshooting/
- docs: /docs/organizing/labels/
--- ---
## Changing entity name and entity ID ## Customizing an entity
After adding a new device, the entity may not have a name and the automatically assigned entity ID might look very technical. If you like, you can use your own naming concept for devices. After adding a new device, you might find the automatically assigned entity ID too technical and the entity lacking a friendly name. You can personalize these elements to better fit your naming conventions or modify other attributes like the icon.
To change the entity ID and friendly name of supported entities, follow these steps: To change entity attributes, follow these steps:
1. Go to {% my entities title="**Settings** > **Devices & services** > **Entities**" %} and select the entity from the list. 1. Go to {% my entities title="**Settings** > **Devices & services** > **Entities**" %} and select the entity from the list.
2. In the top right corner, select the cog icon. 2. In the top right corner, select the cog icon.
![Entity dialog box with cog icon.](/images/docs/configuration/customizing-entity-dialog.png) ![Entity dialog box with cog icon.](/images/docs/configuration/customizing-entity-dialog.png)
3. Enter the new name or the new entity ID. 3. Enter or edit the attributes:
- For example, the entity ID here could be `light.bedroom_lightstrip_3`. - For example, the entity ID here could be shortened to `binary_sensor.living_room_motion_1`.
- Do not change the domain of the entity - the part before the `.` (period). - Do not change the domain of the entity - the part before the `.` (binary_sensor, in this example).
- You can use lowercase letters, numbers, and underscores. - You can use lowercase letters, numbers, and underscores.
- The name must not start or end with an underscore. - The ID must not start or end with an underscore.
- Enter or edit the friendly name.
- If needed, from the **Shown as** menu, you can select a different [device class](/integrations/homeassistant/#device-class).
- If you like, add a [label](/docs/organizing/labels/).
![Settings for entity.](/images/docs/configuration/customizing-entity.png) ![Settings for entity.](/images/docs/configuration/customizing-entity.png)
4. Select **Update**. 4. To apply the changes, select **Update**.
5. If you have used this entity in automations and scripts, you need to rename the entity ID there, too. 5. If you have used this entity in automations and scripts, you need to rename the entity ID there, too.
- Go to {% my automations title="**Settings** > **Automations & Scenes**" %} open the respective tab and find your automation or script. - Go to {% my automations title="**Settings** > **Automations & Scenes**" %} open the respective tab and find your automation or script.
![Edit entity ID in automation.](/images/docs/configuration/edit_entity-id_in_automation.png) ### Customizing an entity in YAML
If your entity is not supported, or you cannot customize what you need via this method, you need to edit the settings in your {% term "`configuration.yaml`" %} file. For a detailed description of the entity configuration variables and device class information, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/). If your entity is not supported, or you could not customize what you need via the user interface, you need to edit the settings in your {% term "`configuration.yaml`" %} file. For a detailed description of the entity configuration variables and [device class](/integrations/homeassistant/#device-class) information, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/).

View File

@ -4,8 +4,6 @@ description: "Splitting the configuration.yaml into several files."
related: related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: configuration.yaml file title: configuration.yaml file
- docs: /examples/#example-configurationyaml
title: Example configuration files by the community
- docs: /docs/configuration/packages - docs: /docs/configuration/packages
title: Using packages to organize configuration files title: Using packages to organize configuration files
--- ---
@ -14,7 +12,7 @@ So you've been using Home Assistant for a while now and your {% term "`configura
## Example configuration files for inspiration ## Example configuration files for inspiration
First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example files here](/examples/#example-configurationyaml). First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example configuration on GitHub](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories).
As commenting code doesn't always happen, please read on to learn in detail how configuration files can be structured. As commenting code doesn't always happen, please read on to learn in detail how configuration files can be structured.

View File

@ -19,7 +19,3 @@ The frontend is built with [Polymer](https://www.polymer-project.org/).
## Icons ## Icons
Home Assistant utilizes the community-driven [Material Design Icons](https://pictogrammers.com/library/mdi/) project for icons in the frontend. The [Icons section](/docs/frontend/icons/) has more information on how to use icons and suggest new ones. Home Assistant utilizes the community-driven [Material Design Icons](https://pictogrammers.com/library/mdi/) project for icons in the frontend. The [Icons section](/docs/frontend/icons/) has more information on how to use icons and suggest new ones.
## Examples
The [User Interface section](/examples/#user-interface) can give you some starting points to expand the frontend.

View File

@ -32,7 +32,7 @@ Recovery mode loads a minimum set of integrations to allow troubleshooting the c
You need to identify the issue in the configuration files and fix it there. The issue could be caused by something as simple as an invalid YAML file. You need to identify the issue in the configuration files and fix it there. The issue could be caused by something as simple as an invalid YAML file.
- If you are running {% term "Home Assistant Operating System" %}, you can install an add-on such as VS code to edit the configuration file if needed. - If you are running {% term "Home Assistant Operating System" %}, you can install an add-on such as Studio Code Server to edit the configuration file if needed.
- If you are still logged in, you can [edit your configuration](/docs/configuration/#editing-configurationyaml). - If you are still logged in, you can [edit your configuration](/docs/configuration/#editing-configurationyaml).
- In the Home Assistant user interface, open the add-on you usually use and edit the configuration file. - In the Home Assistant user interface, open the add-on you usually use and edit the configuration file.
- Restart Home Assistant. - Restart Home Assistant.

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by DrJohnT"
description: "Velux windows, Drayton Wiser heating, Audio / Visual, lighting and humidity controlled fans"
ha_category: Example configuration.yaml
ha_external_link: https://github.com/DrJohnT/HomeAssistantPublicConfig
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Alok Saboo"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/arsaboo/homeassistant-config
---

View File

@ -1,7 +0,0 @@
---
title: "Configuration.yaml by aneisch"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/aneisch/home-assistant-config/
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Apocrathia"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/Apocrathia/home-assistant-config/
---

View File

@ -1,7 +0,0 @@
---
title: "Configuration.yaml by Carlo Costanzo"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/CCOSTAN/Home-AssistantConfig
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by cy1701"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/cy1701/Home-Assistant-Configuration
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by dannytsang"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/dannytsang/homeassistant-config
---

View File

@ -1,7 +0,0 @@
---
title: "Configuration.yaml by geekofweek"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/geekofweek/homeassistant
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by jimpower"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/JamesMcCarthy79/Home-Assistant-Config
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Jonathan Adams"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/jonathanadams/Home-Assistant-Configuration
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by klaasnicolaas"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/klaasnicolaas/Student-homeassistant-config
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by mcaminiti"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/mcaminiti/homeassistant
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by ntalekt"
description: "Unifi, ZHA, Pentair, Tuya, Tasmota"
ha_category: Example configuration.yaml
ha_external_link: https://github.com/ntalekt/homeassistant
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by omerome83"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/omerome83/homeassistant
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Shortbloke"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/shortbloke/home_assistant_config
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Mahasri Kalavala (@skalavala)"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/skalavala/mysmarthome
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by Tinkerer"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/DubhAd/Home-AssistantConfig/
---

View File

@ -1,6 +0,0 @@
---
title: "Configuration.yaml by ubhits (HA 'Steroids' Config)"
description: ""
ha_category: Example configuration.yaml
ha_external_link: https://github.com/UbhiTS/ha-config-ataraxis
---

View File

@ -1,31 +0,0 @@
---
title: "Show Google Maps as a card"
description: "Example how to show a Google Map as a Google card."
ha_category: User Interface
---
Using the [generic camera platform] you can present any image on the internet as a camera. Starting release 0.27 these URLs can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device.
As of June 2018, Google has changed the API limits for static maps. You now need to have a Google Maps API key. Instructions for registering a key can be found [here](https://github.com/googlemaps/google-maps-services-python#api-keys). Replace `YOUR_API_KEY` with the key you registered.
It also leverages the `limit_refetch_to_url_change` option to ensure that we do not make a lot of requests to the Google Maps API.
{% raw %}
```yaml
# Example configuration.yaml entry.
# Shows device_tracker.demo_paulus on a map.
camera:
name: Paulus
platform: generic
still_image_url: https://maps.googleapis.com/maps/api/staticmap?center={{ state_attr('device_tracker.demo_paulus', 'latitude') }},{{ state_attr('device_tracker.demo_paulus', 'longitude') }}&zoom=13&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ state_attr('device_tracker.demo_paulus', 'latitude') }},{{ state_attr('device_tracker.demo_paulus', 'longitude') }}&key=YOUR_API_KEY
limit_refetch_to_url_change: true
```
{% endraw %}
<p class='img'>
<img src='/images/integrations/camera/generic-google-maps.png' alt='Screenshot showing Google Maps integration in Home Assistant front end.'>
</p>
[generic camera platform]: /integrations/generic_ip_camera

View File

@ -12,7 +12,6 @@
<ul> <ul>
<li>{% active_link /installation Installation %}</li> <li>{% active_link /installation Installation %}</li>
<li>{% active_link /getting-started Getting started & onboarding %}</li> <li>{% active_link /getting-started Getting started & onboarding %}</li>
<li>{% active_link /dashboards Dashboards & views %}</li>
<li>{% active_link /common-tasks/os/ Common tasks %}</li> <li>{% active_link /common-tasks/os/ Common tasks %}</li>
<li> <li>
{% active_link /docs/troubleshooting/ Troubleshooting installation {% active_link /docs/troubleshooting/ Troubleshooting installation
@ -26,7 +25,8 @@
<li> <li>
<b>{% active_link /docs/frontend/ Frontend %}</b> <b>{% active_link /docs/frontend/ Frontend %}</b>
<ul> <ul>
<li>{% active_link /docs/organizing/ Organizing %}</li> <li>{% active_link /dashboards Dashboards & views %}</li>
<li>{% active_link /docs/organizing/ Organizing: areas, floors, labels, categories, ... %}</li>
<li>{% active_link /docs/frontend/icons/ Icons%}</li> <li>{% active_link /docs/frontend/icons/ Icons%}</li>
</ul> </ul>
</li> </li>
@ -181,7 +181,7 @@
<a href="https://yellow.home-assistant.io/">Home Assistant Yellow</a> <a href="https://yellow.home-assistant.io/">Home Assistant Yellow</a>
</li> </li>
<li> <li>
<a href="https://skyconnect.home-assistant.io/">Home Assistant SkyConnect</a> <a href="https://connectzbt1.home-assistant.io/">Home Assistant Connect ZBT-1</a>
</li> </li>
</ul> </ul>
</li> </li>

View File

@ -22,7 +22,7 @@
<li>{% active_link /voice_control/custom_sentences/ Custom sentences %}</li> <li>{% active_link /voice_control/custom_sentences/ Custom sentences %}</li>
<li>{% active_link /voice_control/aliases/ Using aliases %}</li> <li>{% active_link /voice_control/aliases/ Using aliases %}</li>
<li>{% active_link /voice_control/using_tts_in_automation/ Using Piper TTS in automations %}</li> <li>{% active_link /voice_control/using_tts_in_automation/ Using Piper TTS in automations %}</li>
<li>{% active_link /voice_control/assist_create_open_ai_personality/ Creating a personality with OpenAI %}</li> <li>{% active_link /voice_control/assist_create_open_ai_personality/ Creating a personality with AI %}</li>
</ul> </ul>
</div> </div>

View File

@ -103,7 +103,7 @@ You can use a backup during the onboarding process to restore your configuration
##### To restore a backup during onboarding ##### To restore a backup during onboarding
1. If you are migrating to a new device and you had controllers or radios connected (such as a Z-Wave stick or SkyConnect): 1. If you are migrating to a new device and you had controllers or radios connected (such as a Z-Wave stick or Connect&nbsp;ZBT-1):
- make sure to plug them into the new device. - make sure to plug them into the new device.
2. After Home Assistant has been installed, on the welcome screen, select **Restore from backup**. 2. After Home Assistant has been installed, on the welcome screen, select **Restore from backup**.
- Then, select **Upload backup**. - Then, select **Upload backup**.

View File

@ -140,7 +140,9 @@ To write the HAOS image to the boot medium on your x86-64 hardware, there are 2
### Method 2: Installing HAOS directly from a boot medium ### Method 2: Installing HAOS directly from a boot medium
<div class='note warning'>
Use this method only if Method 1 does not work for you. Use this method only if Method 1 does not work for you.
</div>
#### Required material #### Required material
@ -205,15 +207,16 @@ Use this method only if Method 1 does not work for you.
*Select and copy the URL or use the "copy" button that appear when you hover it.* *Select and copy the URL or use the "copy" button that appear when you hover it.*
5. Paste the URL into your browser to start the download. 5. Paste the URL into your browser to start the download.
6. Select **Flash from file** and select the image you just downloaded. 6. Extract the file you just downloaded.
7. Select **Flash from file** and select the image you just extracted.
- Do not use **Flash from URL**. It does not work on some systems. - Do not use **Flash from URL**. It does not work on some systems.
![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1_file.png) ![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1_file.png)
7. **Select target**. 8. **Select target**.
![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png) ![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png)
8. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation. 9. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.
![Screenshot of the Etcher software showing the targets available.](/images/installation/etcher4.png) ![Screenshot of the Etcher software showing the targets available.](/images/installation/etcher4.png)
9. Select **Flash!** to start writing the image. 10. Select **Flash!** to start writing the image.
- If the operation fails, decompress the .xz file and try again. - If the operation fails, decompress the .xz file and try again.
![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png) ![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png)
- When Balena Etcher has finished writing the image, you will see a confirmation. - When Balena Etcher has finished writing the image, you will see a confirmation.
@ -370,7 +373,7 @@ Minimum recommended assignments:
content: | content: |
```bash ```bash
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --import --graphics none --boot uefi virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi
``` ```
<div class="note info"> <div class="note info">
@ -391,7 +394,7 @@ Minimum recommended assignments:
You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become: You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become:
```bash ```bash
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --import --graphics none --boot uefi --hostdev 003.003 virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi --hostdev 003.003
``` ```
Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID. Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID.

View File

@ -11,23 +11,19 @@
<div class="text related-topics"> <div class="text related-topics">
<h2><a class="title-link" href="#related-topics" name="related-topics"></a>Related topics</h2> <h2><a class="title-link" href="#related-topics" name="related-topics"></a>Related topics</h2>
<ul> <ul>
{% assign site_part = "pages,documents" | split: "," %}
{%- for related in related_topics -%} {%- for related in related_topics -%}
{%- for part in site_part -%}
{%- for entry in site[part] -%}
{% assign computed = related.docs | split: "#" %} {% assign computed = related.docs | split: "#" %}
{% assign target_url = computed[0] %}
{% assign target_page = site.data["site_pages"][target_url] %}
{% unless target_page == null %}
{% assign link_target = computed[1] %} {% assign link_target = computed[1] %}
{% assign suggested_title = related.title | default: link_target | split: "-" | join: " " | capitalize %} {% assign suggested_title = related.title | default: link_target | split: "-" | join: " " | capitalize %}
{%- if computed[0] == entry.url -%}
<li> <li>
<a href="{{ entry.url | relative_url }}{% if link_target %}#{{link_target}}{% endif %}" class="topic"> <a href="{{ target_page['url'] | relative_url }}{% if link_target %}#{{link_target}}{% endif %}" class="topic">
{{ suggested_title | default: entry.title}} {{ suggested_title | default: target_page["title"]}}
</a> </a>
</li> </li>
{% break %}{% break %} {% endunless %}
{%- endif -%}
{%- endfor -%}
{%- endfor -%}
{%- endfor -%} {%- endfor -%}
</ul> </ul>
</div> </div>

View File

@ -45,7 +45,6 @@
</ul> </ul>
</li> </li>
<li><a href="/integrations/">Integrations</a></li> <li><a href="/integrations/">Integrations</a></li>
<li><a href="/examples/">Examples</a></li>
<li><a href="/blog/">Blog</a></li> <li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li> <li><a href="/help/">Need help?</a></li>
<li> <li>

View File

@ -1,6 +1,6 @@
--- ---
title: Airgradient title: AirGradient
description: Instructions on how to setup Airgradient devices in Home Assistant. description: Instructions on how to setup AirGradient devices in Home Assistant.
ha_category: ha_category:
- Health - Health
- Sensor - Sensor
@ -13,12 +13,17 @@ ha_codeowners:
ha_domain: airgradient ha_domain: airgradient
ha_platforms: ha_platforms:
- sensor - sensor
- select ha_integration_type: device
ha_integration_type: integration
ha_zeroconf: true ha_zeroconf: true
--- ---
The Airgradient integration will fetch data from your [Airgradient devices](https://www.airgradient.com/). The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/).
<div class='note'>
In order for the device to be set up or discovered by Home Assistant, the firmware version should be at least 3.1.1.
</div>
<div class='note'> <div class='note'>
@ -35,7 +40,7 @@ The integration will fetch data from each device. The following sensors are supp
- Carbon dioxide - Carbon dioxide
- Humidity - Humidity
- Nitrogen index - Nitrogen index
- PM0.03 count - PM0.3 count
- PM1 density - PM1 density
- PM2.5 density - PM2.5 density
- PM10 density - PM10 density
@ -51,4 +56,4 @@ The integration provides a few configuration entities to customize the device ex
The settings are only applied to the device when the configuration source is set to local. The settings are only applied to the device when the configuration source is set to local.
The following entities are supported: The following entities are supported:
- Display temperature unit - Display temperature unit

View File

@ -13,7 +13,7 @@ ha_platforms:
- alarm_control_panel - alarm_control_panel
- binary_sensor - binary_sensor
- sensor - sensor
ha_integration_type: integration ha_integration_type: device
--- ---
The **AlarmDecoder** {% term integration %} will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad. The **AlarmDecoder** {% term integration %} will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad.

View File

@ -11,6 +11,9 @@ ha_platforms:
- sensor - sensor
- number - number
ha_integration_type: device ha_integration_type: device
ha_codeowners:
- '@mawoka-myblock'
- '@SonnenladenGmbH'
--- ---
The **APsystems** {% term integration %} allows you to read the data from your [APsystems EZ1](https://emea.apsystems.com/diy/ez1/) microinverter. It also allows you to set the output limit to any number between 30 and 800 watts. The **APsystems** {% term integration %} allows you to read the data from your [APsystems EZ1](https://emea.apsystems.com/diy/ez1/) microinverter. It also allows you to set the output limit to any number between 30 and 800 watts.

View File

@ -9,6 +9,7 @@ ha_iot_class: Local Push
ha_codeowners: ha_codeowners:
- '@aschmitz' - '@aschmitz'
- '@thecode' - '@thecode'
- '@anrijs'
ha_domain: aranet ha_domain: aranet
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:

View File

@ -5,14 +5,15 @@ ha_category:
- Environment - Environment
- Health - Health
- Sensor - Sensor
ha_release: "2024.5" ha_release: '2024.5'
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_codeowners: ha_codeowners:
- "@ikalnyi" - '@ikalnyi'
ha_domain: arve ha_domain: arve
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: hub ha_integration_type: integration
ha_config_flow: true
--- ---
The **Arve** {% term integration %} provides the ability to monitor real-life air quality data, as measured by your [Arve](https://www.arveair.com) device. The **Arve** {% term integration %} provides the ability to monitor real-life air quality data, as measured by your [Arve](https://www.arveair.com) device.

View File

@ -12,7 +12,7 @@ ha_domain: aurora_abb_powerone
ha_platforms: ha_platforms:
- sensor - sensor
ha_config_flow: true ha_config_flow: true
ha_integration_type: integration ha_integration_type: device
--- ---
This implements a direct RS485 connection to a solar inverter in the This implements a direct RS485 connection to a solar inverter in the

View File

@ -70,7 +70,7 @@ There are a few differences between the **PAYG** and **Free** versions:
.create table ['<name_to_be_replaced>'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic) .create table ['<name_to_be_replaced>'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
// Creat a mapping from the incoming JSON to the table and columns just created (replace the name with the table name from the previous step) // Creat a mapping from the incoming JSON to the table and columns just created (replace the name with the table name from the previous step)
.create table ['<name_to_be_replaced>'] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]' .create table ['<name_to_be_replaced>'] ingestion json mapping 'ha_json_mapping' '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
``` ```
This is an example with a free cluster for reference: This is an example with a free cluster for reference:
@ -82,7 +82,7 @@ This is an example with a free cluster for reference:
.create table ['raw'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic) .create table ['raw'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
.create table ['raw'] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]' .create table ['raw'] ingestion json mapping 'ha_json_mapping' '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
``` ```
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}

View File

@ -63,7 +63,29 @@ This channel or a user ID has to be used as the target when calling the notifica
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
When adding the Discord integration you will be asked for an API Key. Enter the hidden **Token** of your bot to link your Discord integration to the bot you created and allow Home Assistant to send messages as that bot. When adding the Discord integration, you will be asked for an API Key. Enter the hidden **Token** of your bot to link your Discord integration to the bot you created and allow Home Assistant to send messages as that bot.
## Set Message entry
The `message` field treats all input as literal text, including quotation marks.
For example: `message: Hello, world!` will appear exactly as is, while `message: "Hello, world!"` will include the quotation marks in the message.
## Set Channel IDs as necessary
The `target` field is for the channel IDs where the message should be sent. Accepted data type is `string` for a single channel or `string[]` for multiple channels.
For example: `"someChannelID"` or `["someChannelID", "anotherChannelID"]`
## Pinging users, roles, or linking to other channels in the same server
You can use standard Discord methods to ping users, roles, and channels within the server.
| Type | Format |
| --------- | -------------- |
| `User` | `<@userID>` |
| `Role` | `<@&roleID>` |
| `Channel` | `<#channelID>` |
## Discord service data ## Discord service data

View File

@ -11,6 +11,7 @@ ha_release: 0.103
ha_codeowners: ha_codeowners:
- '@sorted-bits' - '@sorted-bits'
- '@glodenox' - '@glodenox'
- '@erwindouna'
ha_domain: dsmr_reader ha_domain: dsmr_reader
ha_platforms: ha_platforms:
- diagnostics - diagnostics

View File

@ -36,7 +36,7 @@ The **ecobee** {% term integration %} lets you control and view sensor data from
You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this integration. To get the key, your thermostat must be registered on ecobee's website (which you likely would have already done while installing your thermostat). Once you have done that, perform the following steps. You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this integration. To get the key, your thermostat must be registered on ecobee's website (which you likely would have already done while installing your thermostat). Once you have done that, perform the following steps.
<div class='note warning'> <div class='note warning'>
As of March 28th, 2024, ecobee is no longer accepting new developer subscriptions, and there is no ETA for when they will be allowed again. Existing developers are not affected. As of March 28th, 2024, ecobee is no longer accepting new developer subscriptions, nor are existing developer accounts able to create new API keys. There is no ETA for when they will be allowed again. Existing API keys will continue to function.
</div> </div>
1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/home/developer/loginDeveloper.jsp). 1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/home/developer/loginDeveloper.jsp).

View File

@ -1,5 +1,5 @@
--- ---
title: Energenie Power-Sockets title: Energenie Power Sockets
description: Instructions on how to integrate Energenie Power-Strip switches into Home Assistant. description: Instructions on how to integrate Energenie Power-Strip switches into Home Assistant.
ha_category: ha_category:
- Switch - Switch
@ -10,7 +10,8 @@ ha_codeowners:
ha_domain: energenie_power_sockets ha_domain: energenie_power_sockets
ha_platforms: ha_platforms:
- switch - switch
ha_integration_type: integration ha_integration_type: device
ha_config_flow: true
--- ---
The **Energenie Power-Sockets** {% term integration %} allows you to include [Energenie USB Power-Sockets](https://energenie.com/item.aspx?id=7556&lang=de) into your Home Assistant setup. The **Energenie Power-Sockets** {% term integration %} allows you to include [Energenie USB Power-Sockets](https://energenie.com/item.aspx?id=7556&lang=de) into your Home Assistant setup.

View File

@ -17,17 +17,19 @@ ha_integration_type: integration
related: related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: Configuration file title: Configuration file
ha_config_flow: true
--- ---
The File integration allows to store notifications to a file or to set up a sensor based on a file's content. The File integration allows storing notifications in a file or setting up a sensor based on a file's content.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
## Notifications ## Notifications
Make sure that the file you want to use is added to the [allowlist_external_dirs](https://www.home-assistant.io/integrations/homeassistant/#allowlist_external_dirs). The file will be created if it doesn't exist. Add the path of your [configuration](/docs/configuration/) folder (e.g., `/config`) to save the file there. Setting the optional parameter `name` allows multiple notifiers to be created. Setting `timestamp` to `true` adds a timestamp to every entry. Make sure that the file you want to use is added to the [allowlist_external_dirs](https://www.home-assistant.io/integrations/homeassistant/#allowlist_external_dirs). The file will be created if it doesn't exist, but make sure the folder exists. Add the path of your [configuration](/docs/configuration/) folder (for example, `/config/file_notifications`) to save the file there. Setting `timestamp` to `true` adds a timestamp to every logged entry.
After creating a config entry, you can change the entry name, the name of the notify entity, or the entity ID, if you prefer.
To use notifications, please see the [getting started with automation page](/getting-started/automation/). To use notifications in automations or scripts, see the [getting started with automation page](/getting-started/automation/).
Use the `notify.send_message` entity service to store notification messages. Use the `notify.send_message` entity service to store notification messages.
@ -41,7 +43,7 @@ In this section you find some real-life examples of how to use this sensor.
#### Entries as JSON #### Entries as JSON
Assuming that the log file contains multiple values formatted as JSON like shown below: Assuming that the log file contains multiple values formatted as JSON as shown below:
```text ```text
[...] [...]
@ -49,7 +51,7 @@ Assuming that the log file contains multiple values formatted as JSON like shown
{"temperature": 22, "humidity": 36} {"temperature": 22, "humidity": 36}
``` ```
This would require the following settings extract the temperature: This would require the following settings to extract the temperature:
- Name: `Temperature` - Name: `Temperature`
- File path: `/home/user/.homeassistant/sensor.json` - File path: `/home/user/.homeassistant/sensor.json`
@ -58,7 +60,7 @@ This would require the following settings extract the temperature:
#### Entries as CSV #### Entries as CSV
Assuming the log file contains multiple values formatted as CSV like shown below: Assuming the log file contains multiple values formatted as CSV as shown below:
```text ```text
timestamp,temperature,humidity timestamp,temperature,humidity

View File

@ -11,6 +11,7 @@ ha_config_flow: true
ha_domain: fronius ha_domain: fronius
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_platforms: ha_platforms:
- diagnostics
- sensor - sensor
ha_quality_scale: platinum ha_quality_scale: platinum
ha_dhcp: true ha_dhcp: true

View File

@ -10,8 +10,10 @@ ha_codeowners:
- '@dontinelli' - '@dontinelli'
ha_domain: fyta ha_domain: fyta
ha_platforms: ha_platforms:
- diagnostics
- sensor - sensor
ha_integration_type: hub ha_integration_type: hub
ha_quality_scale: platinum
--- ---
The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant. The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant.

View File

@ -12,7 +12,7 @@ ha_platforms:
ha_codeowners: ha_codeowners:
- '@davet2001' - '@davet2001'
ha_config_flow: true ha_config_flow: true
ha_integration_type: integration ha_integration_type: device
--- ---
The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly.

View File

@ -1,5 +1,5 @@
--- ---
title: Google Generative AI Conversation title: Google Generative AI
description: Instructions on how to integrate Google Generative AI as a conversation agent description: Instructions on how to integrate Google Generative AI as a conversation agent
ha_category: ha_category:
- Voice - Voice
@ -10,6 +10,19 @@ ha_codeowners:
- '@tronikos' - '@tronikos'
ha_domain: google_generative_ai_conversation ha_domain: google_generative_ai_conversation
ha_integration_type: service ha_integration_type: service
ha_quality_scale: platinum
ha_platforms:
- conversation
- diagnostics
related:
- docs: /voice_control/voice_remote_expose_devices/
title: Exposing entities to Assist
- docs: /voice_control/assist_create_open_ai_personality/
title: Create an AI personality
- url: https://aistudio.google.com/app/apikey
title: Google Generative AI API key
- url: https://ai.google.dev/
title: Google Generative AI
--- ---
The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://ai.google.dev/) in Home Assistant. It can optionally be allowed to control Home Assistant. The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://ai.google.dev/) in Home Assistant. It can optionally be allowed to control Home Assistant.
@ -18,7 +31,7 @@ Controlling Home Assistant is done by providing the AI access to the Assist API
This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger). This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
This integration requires an API key to use, [which you can generate here](https://makersuite.google.com/app/apikey). This integration requires an API key to use, [which you can generate here](https://aistudio.google.com/app/apikey), and to be in one of the [available regions](https://ai.google.dev/gemini-api/docs/available-regions).
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
@ -26,10 +39,10 @@ This integration requires an API key to use, [which you can generate here](https
The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps: The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps:
- Visit the [API Keys page](https://makersuite.google.com/app/apikey) to retrieve the API key you'll use to configure the integration. - Visit the [API Keys page](https://aistudio.google.com/app/apikey) to retrieve the API key you'll use to configure the integration.
On the same page, you can see your plan: *free of charge* if the associated Google Cloud project doesn't have billing, or *pay-as-you-go* if the associated Google Cloud project has billing enabled. On the same page, you can see your plan: *free of charge* if the associated Google Cloud project doesn't have billing, or *pay-as-you-go* if the associated Google Cloud project has billing enabled.
Comparison of the plans is available [here](https://ai.google.dev/pricing). The big differences are: free of charge is rate limited and free prompts/responses are used for product improvement. Comparison of the plans is available [at this pricing page](https://ai.google.dev/pricing). The major differences include: the free of charge plan is rate limited, free prompts/responses are used for product improvement, and the free plan is not available in all [regions](https://ai.google.dev/gemini-api/docs/available-regions).
{% include integrations/option_flow.md %} {% include integrations/option_flow.md %}
{% configuration_basic %} {% configuration_basic %}
@ -38,7 +51,7 @@ Instructions:
description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
Control Home Assistant: Control Home Assistant:
description: If the model is allowed to interact with Home Assistant description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings: Recommended settings:
description: If enabled, the recommended model and settings are chosen. description: If enabled, the recommended model and settings are chosen.
@ -69,6 +82,12 @@ Safety settings:
{% endconfiguration_basic %} {% endconfiguration_basic %}
## Talking to Super Mario
You can use an OpenAI Conversation integration to [talk to Super Mario and, if you want, have him control devices in your home](/voice_control/assist_create_open_ai_personality/).
The tutorial is using OpenAI, but this could also be done with the Google Generative AI integration.
## Services ## Services
### Service `google_generative_ai_conversation.generate_content` ### Service `google_generative_ai_conversation.generate_content`
@ -82,9 +101,9 @@ Safety settings:
Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images. Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images.
This service populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with the generated content. This service populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with the generated content.
| Service data attribute | Optional | Description | Example | | Service data attribute | Optional | Description | Example |
| ---------------------- | -------- | ---------------------------------------------- | ------------------- | | ---------------------- | -------- | ----------------------------------------------- | ------------------- |
| `prompt` | no | The prompt for generating the content. | Describe this image | | `prompt` | no | The prompt for generating the content. | Describe this image |
| `image_filename` | yes | File names for images to include in the prompt. | /tmp/image.jpg | | `image_filename` | yes | File names for images to include in the prompt. | /tmp/image.jpg |
{% raw %} {% raw %}

View File

@ -8,7 +8,6 @@ ha_release: 0.34
ha_config_flow: true ha_config_flow: true
ha_codeowners: ha_codeowners:
- '@ehendrix23' - '@ehendrix23'
- '@bramkragten'
- '@bdraco' - '@bdraco'
- '@mkeesey' - '@mkeesey'
- '@Aohzan' - '@Aohzan'

View File

@ -104,15 +104,15 @@ internal_url:
required: false required: false
type: string type: string
customize: customize:
description: "[Customize](#editing-the-entity-settings-in-yaml) entities." description: "[Customize](#editing-entity-settings-in-yaml) entities."
required: false required: false
type: string type: string
customize_domain: customize_domain:
description: "[Customize](#editing-the-entity-settings-in-yaml) all entities in a domain." description: "[Customize](#editing-entity-settings-in-yaml) all entities in a domain."
required: false required: false
type: string type: string
customize_glob: customize_glob:
description: "[Customize](#editing-the-entity-settings-in-yaml) entities matching a pattern." description: "[Customize](#editing-entity-settings-in-yaml) entities matching a pattern."
required: false required: false
type: string type: string
allowlist_external_dirs: allowlist_external_dirs:
@ -191,7 +191,7 @@ initial_state:
### Device class ### Device class
A device class represents a group of device types. The way a specific device class is shown in the user interface depends on the platform that is using it. For example, binary sensor and cover both support the device class "window". While for the binary sensor the window can only be open or closed, for cover, a window can also be tilted. For a given platform, the device class controls how the device is shown in the user interface. For example: humidifier has two device classes, humidifier and dehumidifier. If the device class is set to `humidifier`, the UI shows **Humidifying**. If it is set to `dehumidifier`, it shows **Drying**. Devices classes categorize certain entities and influence how these are shown in the dashboard. Some device classes categorize by measurement type, such as sensors or binary sensors. Other device classes categorize into more specific types. For example, a cover can be a blind or a curtain. For a given platform, the device class influences what is shown in the user interface. For example: humidifier has two device classes, humidifier and dehumidifier. If the device class is set to `humidifier`, the UI shows **Humidifying**. If it is set to `dehumidifier`, it shows **Drying**.
Device class is currently supported by the following platforms: Device class is currently supported by the following platforms:

View File

@ -1,6 +1,6 @@
--- ---
title: Home Assistant Hardware title: Home Assistant Hardware
description: Home Assistant Hardware provides functionality shared between Home Assistant Yellow and Home Assistant SkyConnect. description: Home Assistant Hardware provides functionality shared between Home Assistant Yellow and Home Assistant Connect ZBT-1.
ha_release: 2022.12 ha_release: 2022.12
ha_category: ha_category:
- Other - Other
@ -11,7 +11,7 @@ ha_integration_type: system
--- ---
The Home Assistant Hardware integration provides functionality The Home Assistant Hardware integration provides functionality
shared between Home Assistant Yellow and Home Assistant SkyConnect. shared between Home Assistant Yellow and Home Assistant Connect ZBT-1.
## Configuration ## Configuration

View File

@ -1,20 +1,20 @@
--- ---
title: Home Assistant SkyConnect title: Home Assistant Connect ZBT-1
description: Home Assistant SkyConnect provides hardware information for the hardware configuration page. description: Home Assistant Connect ZBT-1 provides hardware information for the hardware configuration page.
ha_release: 2022.9 ha_release: 2022.9
ha_category: ha_category:
- Other - Other
ha_codeowners: ha_codeowners:
- '@home-assistant/core' - '@home-assistant/core'
ha_domain: homeassistant_sky_connect ha_domain: homeassistant_sky_connect
ha_integration_type: device ha_integration_type: hardware
ha_config_flow: true ha_config_flow: true
--- ---
The Home Assistant SkyConnect integration provides hardware information for the hardware configuration page. The Home Assistant Connect ZBT-1 integration provides hardware information for the hardware configuration page.
For documentation on the Home Assistant SkyConnect, please visit the [documentation page](https://skyconnect.home-assistant.io/documentation/). For documentation on the Home Assistant Connect ZBT-1, please visit the [documentation page](https://connectzbt1.home-assistant.io/documentation/).
If you are looking to buy one, please visit the [product page](https://home-assistant.io/skyconnect) If you are looking to buy one, please visit the [product page](https://home-assistant.io/connectzbt1)
## Configuration ## Configuration

View File

@ -137,9 +137,9 @@ This section describes how to add it via Home Assistant's preferred {% term Thre
- **Thread network**: In order to use HomeKit over Thread, you need a working border router. - **Thread network**: In order to use HomeKit over Thread, you need a working border router.
- Make sure your Home Assistant device is on the same network (LAN) as the border router. - Make sure your Home Assistant device is on the same network (LAN) as the border router.
- Make sure the {% term Thread %} network you'd like to use is known by Home Assistant and marked as **Preferred network** in the {% term Thread %} configuration. - Make sure the {% term Thread %} network you'd like to use is known by Home Assistant and marked as **Preferred network** in the {% term Thread %} configuration.
- If you have a Home Assistant Yellow or SkyConnect, you can enable multiprotocol to set up an Open Thread border router and with that a {% term Thread %} network. - If you have a Home Assistant Yellow or Connect ZBT-1, you can enable Thread to set up an Open Thread border router and with that a {% term Thread %} network.
- Documentation on [enabling multiprotocol on Yellow](https://yellow.home-assistant.io/guides/enable-multiprotocol/) - Documentation on [enabling Thread on Yellow](https://yellow.home-assistant.io/procedures/enable-thread/)
- Documentation on [enabling multiprotocol on SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-multiprotocol/) - Documentation on [enabling Thread on Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/)
#### To add a HomeKit device to a Thread network via Home Assistant #### To add a HomeKit device to a Thread network via Home Assistant

View File

@ -50,7 +50,33 @@ The climate platform integrates Honeywell US-based thermostats into Home Assista
All [climate services](/integrations/climate) are supported except set_swing_mode. All [climate services](/integrations/climate) are supported except set_swing_mode.
There is a "known" issue related to setting the temperature from Home Assistant with some thermostats. If your instance receives errors when setting the temperature above or below some value, go to the Honeywell web page and set the temperature to the max or min for the mode you are using, then adjust from Home Assistant. Due to the instability of the Honeywell total connect system, service calls within automations should repeat until success similar to the following example:
```yaml
alias: "No one home"
description: "Everyone has left home"
trigger:
- platform: numeric_state
entity_id: zone.home
for:
minutes: 10
below: 1
action:
- repeat:
sequence:
- service: climate.set_temperature
target:
entity_id: climate.stat
data:
temperature: 64
- delay:
minutes: 1
until:
- condition: state
entity_id: climate.stat
attribute: temperature
state: 64
```
## Sensor ## Sensor

View File

@ -215,6 +215,13 @@ $ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
} }
``` ```
To delete the sensor, send DELETE request with curl
```bash
$ curl -X DELETE -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
http://localhost:8123/api/states/binary_sensor.radio
```
### Examples ### Examples
In this section you'll find some real-life examples of how to use this sensor, besides `curl`, which was shown earlier. In this section you'll find some real-life examples of how to use this sensor, besides `curl`, which was shown earlier.

View File

@ -75,7 +75,6 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr
- [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/) - [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/)
- Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued) - Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued)
- Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued) - Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued)
- [Chipolo ONE Spot](https://chipolo.net/de/products/chipolo-one-spot)
- [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/) - [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/)
- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531) - [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531)
- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon) - [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon)

View File

@ -11,8 +11,10 @@ ha_codeowners:
ha_domain: imgw_pib ha_domain: imgw_pib
ha_platforms: ha_platforms:
- binary_sensor - binary_sensor
- diagnostics
- sensor - sensor
ha_integration_type: service ha_integration_type: integration
ha_quality_scale: platinum
--- ---
IMGW-PIB integration uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland. IMGW-PIB integration uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland.

View File

@ -11,6 +11,8 @@ ha_integration_type: integration
The `intent_script` integration allows users to configure actions and responses to intents. Intents can be fired by any integration that supports it. Examples are [Alexa](/integrations/alexa/) (Amazon Echo), [Dialogflow](/integrations/dialogflow/) (Google Assistant) and [Snips](/integrations/snips/). The `intent_script` integration allows users to configure actions and responses to intents. Intents can be fired by any integration that supports it. Examples are [Alexa](/integrations/alexa/) (Amazon Echo), [Dialogflow](/integrations/dialogflow/) (Google Assistant) and [Snips](/integrations/snips/).
If you are using intent script with LLMs and have parameters, make sure to mention the parameters and their types in the description.
{% raw %} {% raw %}
```yaml ```yaml
@ -101,6 +103,7 @@ available in the `action_response` variable.
```yaml ```yaml
conversation: conversation:
intents:
EventCountToday: EventCountToday:
- "How many meetings do I have today?" - "How many meetings do I have today?"

View File

@ -9,7 +9,7 @@ ha_codeowners:
ha_domain: isal ha_domain: isal
ha_integration_type: system ha_integration_type: system
ha_quality_scale: internal ha_quality_scale: internal
ha_iot_class: Local Push ha_iot_class: Local Polling
--- ---
[`zlib`](https://github.com/madler/zlib) is a bottleneck for [`aiohttp`](https://github.com/aio-libs/aiohttp), especially for WebSocket connections. [Intelligent Storage Acceleration](https://github.com/intel/isa-l), is used for accelerating [`aiohttp`](https://github.com/aio-libs/aiohttp) since it can [speed up](https://github.com/pycompression/python-isal/tree/develop/benchmark_scripts) compression as much as 5x. [`zlib`](https://github.com/madler/zlib) is a bottleneck for [`aiohttp`](https://github.com/aio-libs/aiohttp), especially for WebSocket connections. [Intelligent Storage Acceleration](https://github.com/intel/isa-l), is used for accelerating [`aiohttp`](https://github.com/aio-libs/aiohttp) since it can [speed up](https://github.com/pycompression/python-isal/tree/develop/benchmark_scripts) compression as much as 5x.
@ -23,4 +23,4 @@ If your system supports [`isal`](https://github.com/pycompression/python-isal),
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
isal: isal:
``` ```

View File

@ -12,6 +12,7 @@ ha_platforms:
- binary_sensor - binary_sensor
- sensor - sensor
ha_integration_type: integration ha_integration_type: integration
ha_config_flow: true
--- ---
The Jewish Calendar (`jewish_calendar`) {% term integration %} displays various information related to the Jewish Calendar as various sensors. The Jewish Calendar (`jewish_calendar`) {% term integration %} displays various information related to the Jewish Calendar as various sensors.

View File

@ -13,6 +13,7 @@ ha_codeowners:
related: related:
- docs: /docs/configuration/ - docs: /docs/configuration/
title: Configuration file title: Configuration file
ha_config_flow: true
--- ---
The Media extractor {% term integration %} gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly. The Media extractor {% term integration %} gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly.

View File

@ -2,14 +2,14 @@
title: microBees title: microBees
description: Instructions on how to integrate microBees devices into Home Assistant. description: Instructions on how to integrate microBees devices into Home Assistant.
ha_category: ha_category:
- Switch - Button
- Climate - Climate
- Cover - Cover
- Button
- Cover - Cover
- Light - Light
- Sensor - Sensor
- Switch - Switch
- Switch
ha_release: 2024.3 ha_release: 2024.3
ha_codeowners: ha_codeowners:
- '@microBeesTech' - '@microBeesTech'
@ -17,11 +17,9 @@ ha_config_flow: true
ha_domain: microbees ha_domain: microbees
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_platforms: ha_platforms:
- switch
- climate
- cover
- binary_sensor - binary_sensor
- button - button
- climate
- cover - cover
- light - light
- sensor - sensor

View File

@ -6,7 +6,7 @@ ha_category:
- Binary sensor - Binary sensor
- Sensor - Sensor
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_quality_scale: gold ha_quality_scale: platinum
ha_config_flow: true ha_config_flow: true
ha_codeowners: ha_codeowners:
- '@elmurato' - '@elmurato'

View File

@ -1489,9 +1489,9 @@ switches:
coils: coils:
description: "write_coils is called." description: "write_coils is called."
verify: verify:
description: "Read from Modbus device to verify fan. description: "Read from Modbus device to verify switch.
If used without attributes, it uses the toggle register configuration. If used without attributes, it uses the toggle register configuration.
If omitted, no verification is done, but the state of the fan is set with each toggle." If omitted, no verification is done, but the state of the switch is set with each toggle."
required: false required: false
type: map type: map
keys: keys:

View File

@ -6,12 +6,12 @@ ha_category:
ha_release: 2024.6 ha_release: 2024.6
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_codeowners: ha_codeowners:
- '@JakeMartin-ICL' - '@jakemartin-icl'
ha_config_flow: true ha_config_flow: true
ha_domain: monzo ha_domain: monzo
ha_homekit: true
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration
--- ---
The **Monzo** {% term integration %} allows you to connect your Monzo bank accounts to Home Assistant. The **Monzo** {% term integration %} allows you to connect your Monzo bank accounts to Home Assistant.

View File

@ -217,7 +217,7 @@ MQTT Birth and Last Will messages can be customized or disabled from the UI. To
## Testing your setup ## Testing your setup
The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below: The `mosquitto` broker package ships command line tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost`, to can use [`mosquitto_pub`](https://mosquitto.org/man/mosquitto_pub-1.html), check the example below:
```bash ```bash
mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON" mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON"

View File

@ -93,7 +93,7 @@ Home Assistant support connecting to Nibe heat pumps over Modbus over either TCP
#### TCP/IP #### TCP/IP
The newer S-series pump exposes a built-in TCP Modbus server that can be used to communicate with the pump. To enable support for this integration, the pump must be connected to your local network and network (5.2 - Network settings) and Modbus (7.5.9 - Modbus TCP/IP) must be enabled. More details on the Modbus support in the pump can be found in Nibe document [M12676EN](https://assetstore.nibe.se/hcms/v2.4/entity/document/34499/storage/MDM0NDk5LzAvbWFzdGVy). The newer S-series pump exposes a built-in TCP Modbus server that can be used to communicate with the pump. To enable support for this integration, the pump must be connected to your local network and network (5.2 - Network settings) and Modbus (7.5.9 - Modbus TCP/IP) must be enabled. More details on the Modbus support in the pump can be found in Nibe document [M12676EN](https://www.nibe.eu/download/18.3db69dc1795e0d992c5722/1622634529178/Modbus%20S-series%20EN%20M12676EN-1.pdf).
- `tcp://[IP OR HOSTNAME]` - `tcp://[IP OR HOSTNAME]`
- `tcp://[IP OR HOSTNAME]:502` - `tcp://[IP OR HOSTNAME]:502`

View File

@ -12,6 +12,7 @@ ha_domain: nws
ha_quality_scale: platinum ha_quality_scale: platinum
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- diagnostics
- sensor - sensor
- weather - weather
ha_integration_type: integration ha_integration_type: integration

View File

@ -15,6 +15,8 @@ related:
title: Home Assistant Templating title: Home Assistant Templating
- docs: /docs/automation/trigger/#sentence-trigger - docs: /docs/automation/trigger/#sentence-trigger
title: Sentence trigger title: Sentence trigger
ha_platforms:
- conversation
--- ---
The **Ollama** {% term integration %} adds a conversation agent in Home Assistant powered by a local [Ollama](https://ollama.com/) server. The **Ollama** {% term integration %} adds a conversation agent in Home Assistant powered by a local [Ollama](https://ollama.com/) server.

View File

@ -11,7 +11,7 @@ ha_codeowners:
ha_domain: ondilo_ico ha_domain: ondilo_ico
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration ha_integration_type: hub
--- ---
ICO by [Ondilo](https://ondilo.com/en/) is a small connected device that you simply drop into the pool or spa. ICO continuously analyzes the water quality of your pool/spa and notifies you via its application. ICO provides personalized recommendations so that you use the right products in the right proportions at the right time. ICO by [Ondilo](https://ondilo.com/en/) is a small connected device that you simply drop into the pool or spa. ICO continuously analyzes the water quality of your pool/spa and notifies you via its application. ICO provides personalized recommendations so that you use the right products in the right proportions at the right time.

View File

@ -12,6 +12,15 @@ ha_domain: openai_conversation
ha_integration_type: service ha_integration_type: service
ha_platforms: ha_platforms:
- conversation - conversation
related:
- docs: /voice_control/voice_remote_expose_devices/
title: Exposing entities to Assist
- docs: /voice_control/assist_create_open_ai_personality/
title: Create an AI personality
- url: https://platform.openai.com/account/api-keys
title: OpenAI API key
- url: https://www.openai.com
title: OpenAI
--- ---
The OpenAI integration adds a conversation agent powered by [OpenAI](https://www.openai.com) in Home Assistant. The OpenAI integration adds a conversation agent powered by [OpenAI](https://www.openai.com) in Home Assistant.
@ -39,7 +48,7 @@ Instructions:
description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
Control Home Assistant: Control Home Assistant:
description: If the model is allowed to interact with Home Assistant description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings: Recommended settings:
description: If enabled, the recommended model and settings are chosen. description: If enabled, the recommended model and settings are chosen.
@ -51,7 +60,7 @@ If you choose to not use the recommended settings, you can configure the followi
{% configuration_basic %} {% configuration_basic %}
Model: Model:
description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3 Documentation](https://platform.openai.com/docs/models/gpt-3), [OpenAI GPT-3.5 Documentation](https://platform.openai.com/docs/models/gpt-3-5), or [OpenAI GPT-4 and GPT-4 Turbo Documentation](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo). The default is "gpt-3.5-turbo". description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3.5 Turbo Documentation](https://platform.openai.com/docs/models/gpt-3-5-turbo), [OpenAI GPT-4 Turbo and GPT-4 Documentation](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4), or [GPT-4o Documentation](https://platform.openai.com/docs/models/gpt-4o). The default is "gpt-4o".
Maximum Tokens to Return in Response: Maximum Tokens to Return in Response:
description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction). description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction).
@ -66,7 +75,7 @@ Top P:
## Talking to Super Mario over the phone ## Talking to Super Mario over the phone
You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/voice_control/worlds-most-private-voice-assistant/). You can use an OpenAI Conversation integration to [talk to Super Mario and, if desired, have it control devices](/voice_control/assist_create_open_ai_personality/) in your home.
## Services ## Services

View File

@ -25,7 +25,7 @@ There is currently support for the following device types within Home Assistant:
- Sensor - Sensor
- Weather - Weather
You need an API key, it requires a [subscription](https://openweathermap.org/api/one-call-3). The subscription has a free tier with 1000 calls/day. Consider setting the limit on the OpenWeatherMap website to stay under the threshold where API usage incurs a cost. You need an API key, it requires a [subscription](https://openweathermap.org/api/one-call-3). The subscription has a free tier with 1000 calls/day. Consider setting the limit on the OpenWeatherMap website to stay under the threshold where API usage incurs a cost. This is done in the [Billing plans](https://home.openweathermap.org/subscriptions) page, under "Calls per day".
## ⚠️ Important Deprecation Notice ## ⚠️ Important Deprecation Notice

View File

@ -13,10 +13,10 @@ ha_config_flow: true
The Open Thread Border Router integration allows calling an Open Thread Border Router's REST API from Python and via WebSocket. The Open Thread Border Router integration allows calling an Open Thread Border Router's REST API from Python and via WebSocket.
This integration is installed automatically when the **Open Thread Border Router** add-on is installed. For Home Assistant Yellow or SkyConnect refer to the following procedures: This integration is installed automatically when the **Open Thread Border Router** add-on is installed. For Home Assistant Yellow or Connect&nbsp;ZBT-1 refer to the following procedures:
- [Enabling Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/) - [Enabling Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/)
- [Enabling Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/) - [Enabling Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/)
The integration is also installed automatically when enabling the experimental **Silicon Labs Multiprotocol** support. The integration is also installed automatically when enabling the experimental **Silicon Labs Multiprotocol** support.

View File

@ -166,5 +166,6 @@ The list with all known valid keys can be found [here](https://github.com/floria
- TX-P50GT30Y - TX-P50GT30Y
- TX-P50GT60E - TX-P50GT60E
- TX-65HZ1000W - TX-65HZ1000W
- TX-65HZ1500
If your model is not on the list, give it a test. If everything works correctly, then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown). If your model is not on the list, give it a test. If everything works correctly, then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown).

View File

@ -9,7 +9,7 @@ ha_category:
ha_release: 0.83 ha_release: 0.83
ha_config_flow: true ha_config_flow: true
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_quality_scale: gold ha_quality_scale: silver
ha_codeowners: ha_codeowners:
- '@fredrike' - '@fredrike'
ha_domain: point ha_domain: point

View File

@ -305,17 +305,16 @@ However, these cameras can work with this integration through an NVR in which th
## Initial setup ## Initial setup
### 1. Initializing and configuring camera credentials.
A brand new Reolink camera first needs to be connected to the network and initialized. During initialization, the credentials for the camera need to be set. A brand new Reolink camera first needs to be connected to the network and initialized. During initialization, the credentials for the camera need to be set.
There are several ways to achieve this. There are several ways to achieve this:
### Connecting Reolink via app/client #### Connecting Reolink via app/client
The recommended way is to use the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/). The recommended way is to use the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/), and follow the on-screen instructions.
1. Follow the on-screen instructions. #### Connecting Reolink via a web browser
2. In Home Assistant, use the credentials you just configured in the Reolink app/client.
### Connecting Reolink via a web browser
When your camera has a LAN port (most Wi-Fi cameras also have a LAN port): When your camera has a LAN port (most Wi-Fi cameras also have a LAN port):
@ -326,9 +325,8 @@ When your camera has a LAN port (most Wi-Fi cameras also have a LAN port):
- Go to **settings** (gear icon) > **Network** and fill in your Wi-Fi SSID and password. - Go to **settings** (gear icon) > **Network** and fill in your Wi-Fi SSID and password.
- If you have both a 2.4 GHz and 5 GHz network, check your camera's user guide to see which operating frequency is supported. - If you have both a 2.4 GHz and 5 GHz network, check your camera's user guide to see which operating frequency is supported.
- After that you can disconnect the LAN cable and the camera will automatically switch to the Wi-Fi connection. - After that you can disconnect the LAN cable and the camera will automatically switch to the Wi-Fi connection.
5. Now set up the Reolink Home Assistant integration using the credentials you just specified.
### QR code #### QR code
You can also connect a Wi-Fi camera using a self-made QR code. Once connected, follow the instructions under **Web browser**. You can also connect a Wi-Fi camera using a self-made QR code. Once connected, follow the instructions under **Web browser**.
Create a QR code using ISO-8859-1 character encoding (not UTF-8) with the following XML string: Create a QR code using ISO-8859-1 character encoding (not UTF-8) with the following XML string:
@ -341,6 +339,14 @@ Normally, the digits are printed directly under the QR code. Alternatively, you
Then power up the camera while pointing it at the QR code. It takes about a minute to initialize, read the QR code, and connect to your Wi-Fi. Then power up the camera while pointing it at the QR code. It takes about a minute to initialize, read the QR code, and connect to your Wi-Fi.
### 2. Enabling HTTP/HTTPS ports
Test if you can access the camera by its IP address in your browser `https://<your-camera-ip>`. If you cannot, in the [windows or Mac](https://reolink.com/software-and-manual/) client ensure at least one of the HTTP/HTTPS ports are enabled under **Settings** > **Network** > **Advanced** > **Port Settings**. See [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site.
### 3. Add integration in Home Assistant
Set up the Reolink integration in Home Assistant using the credentials you set in step 1.
## Showing the camera in the dashboard ## Showing the camera in the dashboard
1. One way to show the camera in the dashboard is by using the picture glance card. 1. One way to show the camera in the dashboard is by using the picture glance card.

View File

@ -156,7 +156,7 @@ We are working on adding a lot of features to the core integration. We have reve
### How can I clean a specific room? ### How can I clean a specific room?
We plan to make the process simpler in the future, but for now, it is a multi-step process. We plan to make the process simpler in the future, but for now, it is a multi-step process.
1. Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log. 1. Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log.
2. Go to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Roborock: Get maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map. If you don't see the rooms you expect, you should select the other map through your app or through the `load_multi_map` service. 2. Go to {% my developer_call_service service="roborock.get_maps" title="**Developer Tools** > **Services** > **Roborock: Get maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map. If you don't see the rooms you expect, you should select the other map through your app or through the `load_multi_map` service.
You will get a response like this: You will get a response like this:
```json ```json
vacuum.s7_roborock: vacuum.s7_roborock:

View File

@ -333,6 +333,7 @@ KEY_MIC|
KEY_NINE_SEPERATE| KEY_NINE_SEPERATE|
KEY_AUTO_FORMAT|AutoFormat KEY_AUTO_FORMAT|AutoFormat
KEY_DNET|DNET KEY_DNET|DNET
KEY_MINUS|Minus
_______________ _______________
**Auto Arc Keys** **Auto Arc Keys**

View File

@ -263,7 +263,7 @@ Payload: `1707294116`
To set the state of the sensor manually: To set the state of the sensor manually:
```bash ```bash
mosquitto_pub -h 127.0.0.1 -u username -p some_password -t pump/timestamp_on -m '1707294116' mosquitto_pub -h 127.0.0.1 -p 1883 -u username -P some_password -t pump/timestamp_on -m '1707294116'
``` ```
Make sure the IP address of your MQTT broker is used and that user credentials have been set up correctly. Make sure the IP address of your MQTT broker is used and that user credentials have been set up correctly.

View File

@ -88,7 +88,7 @@ The `seventeentrack.get_packages` service allows you to query the 17track API fo
| `package_state` | yes | A list of the package states. | | `package_state` | yes | A list of the package states. |
```yaml ```yaml
# Example automation action to add a product to the cart by name. # Example automation action to retrieve packages with specific states from 17Track
- service: seventeentrack.get_packages - service: seventeentrack.get_packages
data: data:
config_entry_id: 2b4be47a1fa7c3764f14cf756dc98991 config_entry_id: 2b4be47a1fa7c3764f14cf756dc98991

View File

@ -248,6 +248,30 @@ data:
enqueue: play enqueue: play
``` ```
Play all albums by a genre.
```yaml
service: media_player.play_media
target:
entity_id: media_player.porch
data:
media_content_type: genre
media_content_id: "A:GENRE/Classic%20Rock/"
enqueue: play
```
Play an imported playlist by using its title.
```yaml
service: media_player.play_media
target:
entity_id: media_player.porch
data:
media_content_type: playlist
media_content_id: S:/MyPlaylist
enqueue: play
```
## Services ## Services
The Sonos integration makes various custom services available in addition to the [standard media player services](/integrations/media_player/#services). The Sonos integration makes various custom services available in addition to the [standard media player services](/integrations/media_player/#services).

View File

@ -32,11 +32,13 @@ Once you have your own Starling bank account you will need to sign up for a Star
Once you've signed up: Once you've signed up:
1. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account. 1. Connect your personal Starling Bank account to your developer account. Head to [Personal Access Page](https://developer.starlingbank.com/personal) of your developer account.
2. Click "Create Token". 2. Follow the instructions to generate the QR code to scan within the Starling mobile app to authorize and link your bank account to the developer account.
3. Give your token a name e.g., "Home Assistant". 3. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account.
4. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked. 4. Click "Create Token".
5. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration. 5. Give your token a name, e.g., "Home Assistant".
6. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked.
7. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration.
## Configuration ## Configuration

View File

@ -56,9 +56,9 @@ Some SwitchBot devices need to be configured within the app before being control
- [Contact Sensor (WoContact)](https://switch-bot.com/pages/switchbot-contact-sensor) - [Contact Sensor (WoContact)](https://switch-bot.com/pages/switchbot-contact-sensor)
- [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain) (version 1 & 2) - [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain) (version 1 & 2)
- [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3) - [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3)
- [Humidifier (WoHumi)](https://eu.switch-bot.com/products/switchbot-smart-humidifier) - Humidifier (WoHumi)
- Light Strip (WoStrip) - Light Strip (WoStrip)
- [Meter](https://switch-bot.com/pages/switchbot-meter)/[Meter Plus 70BB](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH) - [Meter](https://switch-bot.com/pages/switchbot-meter) / [Meter Plus](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH)
- [Indoor/Outdoor Meter](https://switch-bot.com/pages/switchbot-indoor-outdoor-thermo-hygrometer) (WoIOSensorTH) - [Indoor/Outdoor Meter](https://switch-bot.com/pages/switchbot-indoor-outdoor-thermo-hygrometer) (WoIOSensorTH)
- [Motion Sensor (WoPresence)](https://switch-bot.com/pages/switchbot-motion-sensor) - [Motion Sensor (WoPresence)](https://switch-bot.com/pages/switchbot-motion-sensor)
- Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401) - Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401)

View File

@ -5,8 +5,8 @@ ha_category:
- Hub - Hub
- Plug - Plug
- Remote - Remote
- Switch
- Sensor - Sensor
- Switch
ha_release: '2023.10' ha_release: '2023.10'
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_codeowners: ha_codeowners:
@ -15,10 +15,10 @@ ha_codeowners:
ha_domain: switchbot_cloud ha_domain: switchbot_cloud
ha_platforms: ha_platforms:
- climate - climate
- switch
- sensor - sensor
- switch
ha_config_flow: true ha_config_flow: true
ha_integration_type: integration ha_integration_type: hub
--- ---
The SwitchBot Cloud integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) connected through the SwitchBot hub. The SwitchBot Cloud integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) connected through the SwitchBot hub.

View File

@ -18,6 +18,7 @@ ha_codeowners:
- '@patrickhilker' - '@patrickhilker'
- '@zweckj' - '@zweckj'
ha_integration_type: integration ha_integration_type: integration
ha_quality_scale: platinum
--- ---
This integration interacts with your [Tedee](https://tedee.com) locks by communicating with the Tedee bridge through HTTP. The integration will communicate with your lock locally. This integration interacts with your [Tedee](https://tedee.com) locks by communicating with the Tedee bridge through HTTP. The integration will communicate with your lock locally.

View File

@ -11,7 +11,7 @@ ha_category:
ha_release: 0.11 ha_release: 0.11
ha_config_flow: true ha_config_flow: true
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_quality_scale: gold ha_quality_scale: silver
ha_codeowners: ha_codeowners:
- '@fredrike' - '@fredrike'
ha_domain: tellduslive ha_domain: tellduslive

View File

@ -6,14 +6,14 @@ ha_category:
- Button - Button
- Car - Car
- Climate - Climate
- Device tracker
- Cover - Cover
- Device tracker
- Lock - Lock
- Media player - Media player
- Number - Number
- Select
- Sensor - Sensor
- Switch - Switch
- Select
- Update - Update
ha_release: 2024.2 ha_release: 2024.2
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
@ -26,8 +26,8 @@ ha_platforms:
- button - button
- climate - climate
- cover - cover
- diagnostics
- device_tracker - device_tracker
- diagnostics
- lock - lock
- media_player - media_player
- number - number

View File

@ -11,7 +11,8 @@ ha_codeowners:
ha_domain: thethingsnetwork ha_domain: thethingsnetwork
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration ha_integration_type: hub
ha_config_flow: true
--- ---
The `thethingsnetwork` {% term integration%} allows you to interact with the [The Things Network](https://www.thethingsnetwork.org) from within Home Assistant. This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long-range (~5 to 15 km) communication with low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfer the received data from the sensors to The Things Network. The `thethingsnetwork` {% term integration%} allows you to interact with the [The Things Network](https://www.thethingsnetwork.org) from within Home Assistant. This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long-range (~5 to 15 km) communication with low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfer the received data from the sensors to The Things Network.
@ -20,7 +21,7 @@ The Things Network supports various integrations to make the data available:
| The Things Network Integration | Home Assistant platform | | The Things Network Integration | Home Assistant platform |
|---|---| |---|---|
| [MQTT](https://www.thethingsindustries.com/docs/integrations/mqtt) | [`MQTT`](integrations/mqtt) | | [MQTT](https://www.thethingsindustries.com/docs/integrations/mqtt) | [`MQTT`](/integrations/mqtt) |
| [Storage](https://www.thethingsindustries.com/docs/integrations/storage) | [`thethingsnetwork`](#setup) | | [Storage](https://www.thethingsindustries.com/docs/integrations/storage) | [`thethingsnetwork`](#setup) |
| [HTTP](https://www.thethingsindustries.com/docs/integrations/webhooks) | | | [HTTP](https://www.thethingsindustries.com/docs/integrations/webhooks) | |
@ -58,4 +59,3 @@ There is currently support for the following device types within Home Assistant:
## Sensor ## Sensor
All uplink messages decoded by The Things Network (including a `decoded_payload` entry) will be processes by this integration. Each field in `decoded_payload` will be added as a Home Assistant sensor entity. All uplink messages decoded by The Things Network (including a `decoded_payload` entry) will be processes by this integration. Each field in `decoded_payload` will be added as a Home Assistant sensor entity.

View File

@ -16,7 +16,7 @@ related:
- docs: /yellow/ - docs: /yellow/
title: Home Assistant Yellow - hub title: Home Assistant Yellow - hub
- docs: /skyconnect/ - docs: /skyconnect/
title: Home Assistant SkyConnect - Zigbee/Thread USB stick title: Home Assistant Connect ZBT-1 - Zigbee/Thread USB stick
- docs: /integrations/matter/ - docs: /integrations/matter/
title: Matter title: Matter
- docs: /integrations/homekit_controller/ - docs: /integrations/homekit_controller/
@ -25,8 +25,8 @@ related:
title: Adding a Matter device to Home Assistant title: Adding a Matter device to Home Assistant
- docs: /integrations/homekit_controller/#adding-a-homekit-device-through-thread - docs: /integrations/homekit_controller/#adding-a-homekit-device-through-thread
title: Adding an Apple HomeKit device through Thread title: Adding an Apple HomeKit device through Thread
- url: https://skyconnect.home-assistant.io/procedures/enable-thread/ - url: https://connectzbt1.home-assistant.io/procedures/enable-thread/
title: Enabling Thread on SkyConnect title: Enabling Thread on Connect ZBT-1
- url: https://yellow.home-assistant.io/procedures/enable-thread/ - url: https://yellow.home-assistant.io/procedures/enable-thread/
title: Enabling Thread on Yellow title: Enabling Thread on Yellow
--- ---
@ -97,9 +97,9 @@ These border routers may require an iPhone or Android phone for onboarding. What
#### Home Assistant #### Home Assistant
Out of the box, Home Assistant SkyConnect and Yellow run Zigbee, not Thread. Currently, enabling Thread involves manual steps. The integration of the Home Assistant based Thread border router with Matter is work-in-progress. Out of the box, Home Assistant Connect&nbsp;ZBT-1 and Yellow run Zigbee, not Thread. Currently, enabling Thread involves manual steps. The integration of the Home Assistant based Thread border router with Matter is work-in-progress.
- If you have a Home Assistant Yellow or SkyConnect, you can use their Thread radio. Follow these steps to [turn Home Assistant into a Thread border router](#turning-home-assistant-into-a-thread-border-router). - If you have a Home Assistant Yellow or Connect&nbsp;ZBT-1, you can use their Thread radio. Follow these steps to [turn Home Assistant into a Thread border router](#turning-home-assistant-into-a-thread-border-router).
#### Google #### Google
@ -117,7 +117,7 @@ There are also other companies that provide devices with border router capabilit
## Turning Home Assistant into a Thread border router ## Turning Home Assistant into a Thread border router
Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio. Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect&nbsp;ZBT-1, or another compatible radio.
Find out if you already have Thread networks: Find out if you already have Thread networks:
@ -129,21 +129,21 @@ Find out if you already have Thread networks:
### Case 1: Making Home Assistant your first Thread network ### Case 1: Making Home Assistant your first Thread network
Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio and you do not have any third-party Thread networks present yet. This will automatically create a new Thread network with the name `ha-thread-xxxx`. The last for digits are a network-specific identifier (PAN ID). Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect&nbsp;ZBT-1, or another compatible radio and you do not have any third-party Thread networks present yet. This will automatically create a new Thread network with the name `ha-thread-xxxx`. The last for digits are a network-specific identifier (PAN ID).
Note: To add Matter devices to this Thread network, an Android phone is required. Adding Matter devices to this Thread network using an iOS phone is not yet supported. Note: To add Matter devices to this Thread network, an Android phone is required. Adding Matter devices to this Thread network using an iOS phone is not yet supported.
#### Prerequisites #### Prerequisites
- Device with a Thread-capable radio, such as Home Assistant Yellow, SkyConnect, or another compatible radio - Device with a Thread-capable radio, such as Home Assistant Yellow, Connect&nbsp;ZBT-1, or another compatible radio
- Android phone - Android phone
- No third-party Thread networks present - No third-party Thread networks present
#### To make Home Assistant your first Thread network #### To make Home Assistant your first Thread network
1. To enable Thread support on your Home Assistant Yellow or SkyConnect, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure: 1. To enable Thread support on your Home Assistant Yellow or Connect&nbsp;ZBT-1, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
- [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/). - [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/).
- [Enable Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/). - [Enable Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/).
2. Make sure the Home Assistant Thread network is defined as preferred network. 2. Make sure the Home Assistant Thread network is defined as preferred network.
- This should happen automatically, but check to be sure. - This should happen automatically, but check to be sure.
@ -162,7 +162,7 @@ Note: To add Matter devices to this Thread network, an Android phone is required
### Case 2: Creating a HA border router when there is an existing network ### Case 2: Creating a HA border router when there is an existing network
Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio but you already have third-party Thread networks present. These steps will join the Home Assistant Thread border router with the existing Thread network. Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect&nbsp;ZBT-1, or another compatible radio but you already have third-party Thread networks present. These steps will join the Home Assistant Thread border router with the existing Thread network.
![image](/images/integrations/thread/thread-no-preferred-network-but-third-party-present.png) ![image](/images/integrations/thread/thread-no-preferred-network-but-third-party-present.png)
@ -170,7 +170,7 @@ If you have both Google and Apple Thread networks present, decide which one you
#### Prerequisites #### Prerequisites
- Device with a Thread-capable radio, such as Home Assistant Yellow, SkyConnect, or another compatible radio - Device with a Thread-capable radio, such as Home Assistant Yellow, Connect&nbsp;ZBT-1, or another compatible radio
- Third-party Thread network listed - Third-party Thread network listed
- Android phone if you have a Google Thread network, iPhone if you have an Apple Thread network - Android phone if you have a Google Thread network, iPhone if you have an Apple Thread network
@ -190,9 +190,9 @@ Note: the steps and images here show the process with a Google Thread network. B
![image](/images/integrations/thread/thread-google-br.png) ![image](/images/integrations/thread/thread-google-br.png)
5. To enable Thread support on your Home Assistant Yellow or SkyConnect, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure: 5. To enable Thread support on your Home Assistant Yellow or Connect ZBT-1, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
- [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/). - [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/).
- [Enable Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/). - [Enable Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/).
- **Result**: The network now shows as the preferred network, joined with the third-party network. - **Result**: The network now shows as the preferred network, joined with the third-party network.
![image](/images/integrations/thread/thread-ha-preferred.png) ![image](/images/integrations/thread/thread-ha-preferred.png)

Some files were not shown because too many files have changed in this diff Show More