mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-28 11:47:00 +00:00
Merge branch 'current' into rc
This commit is contained in:
commit
974b66e1a3
8
Gemfile
8
Gemfile
@ -10,9 +10,9 @@ group :development do
|
||||
gem 'stringex', '2.8.6'
|
||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||
gem 'sassc', '2.1.0'
|
||||
gem 'sass-embedded', '1.86.0'
|
||||
gem 'rubocop', '1.74.0'
|
||||
gem 'ruby-lsp', '0.23.12'
|
||||
gem 'sass-embedded', '1.86.1'
|
||||
gem 'rubocop', '1.75.1'
|
||||
gem 'ruby-lsp', '0.23.13'
|
||||
gem 'rackup', '2.2.1'
|
||||
end
|
||||
|
||||
@ -24,7 +24,7 @@ group :jekyll_plugins do
|
||||
end
|
||||
|
||||
gem 'sinatra', '4.1.1'
|
||||
gem 'nokogiri', '1.18.6'
|
||||
gem 'nokogiri', '1.18.7'
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library
|
||||
|
35
Gemfile.lock
35
Gemfile.lock
@ -30,10 +30,10 @@ GEM
|
||||
ffi (1.17.1-arm64-darwin)
|
||||
ffi (1.17.1-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.30.1-arm64-darwin)
|
||||
google-protobuf (4.30.2-arm64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.30.1-x86_64-linux)
|
||||
google-protobuf (4.30.2-x86_64-linux)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
@ -81,17 +81,17 @@ GEM
|
||||
listen (3.9.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
logger (1.6.6)
|
||||
logger (1.7.0)
|
||||
mercenary (0.4.0)
|
||||
multi_json (1.15.0)
|
||||
mustermann (3.0.3)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.18.6-arm64-darwin)
|
||||
nokogiri (1.18.7-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.18.6-x86_64-linux-gnu)
|
||||
nokogiri (1.18.7-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
parallel (1.26.3)
|
||||
parser (3.3.7.2)
|
||||
parser (3.3.7.4)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
pathutil (0.16.2)
|
||||
@ -114,12 +114,12 @@ GEM
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rbs (3.9.1)
|
||||
rbs (3.9.2)
|
||||
logger
|
||||
regexp_parser (2.10.0)
|
||||
rexml (3.4.1)
|
||||
rouge (4.5.1)
|
||||
rubocop (1.74.0)
|
||||
rubocop (1.75.1)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (~> 3.17.0.2)
|
||||
lint_roller (~> 1.1.0)
|
||||
@ -127,13 +127,13 @@ GEM
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 2.9.3, < 3.0)
|
||||
rubocop-ast (>= 1.38.0, < 2.0)
|
||||
rubocop-ast (>= 1.43.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.43.0)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.4)
|
||||
ruby-lsp (0.23.12)
|
||||
ruby-lsp (0.23.13)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 1.2, < 2.0)
|
||||
rbs (>= 3, < 4)
|
||||
@ -142,9 +142,10 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.86.0)
|
||||
sass-embedded (1.86.1-arm64-darwin)
|
||||
google-protobuf (~> 4.30)
|
||||
sass-embedded (1.86.1-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.30)
|
||||
rake (>= 13)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sassc (2.1.0)
|
||||
@ -158,7 +159,7 @@ GEM
|
||||
rack-protection (= 4.1.1)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11956)
|
||||
sorbet-runtime (0.5.11980)
|
||||
stringex (2.8.6)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -181,12 +182,12 @@ DEPENDENCIES
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-toc (= 0.19.0)
|
||||
nokogiri (= 1.18.6)
|
||||
nokogiri (= 1.18.7)
|
||||
rackup (= 2.2.1)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.74.0)
|
||||
ruby-lsp (= 0.23.12)
|
||||
sass-embedded (= 1.86.0)
|
||||
rubocop (= 1.75.1)
|
||||
ruby-lsp (= 0.23.13)
|
||||
sass-embedded (= 1.86.1)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.1.1)
|
||||
|
224
package-lock.json
generated
224
package-lock.json
generated
@ -20,7 +20,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.5.0",
|
||||
"textlint": "^14.6.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
@ -427,73 +427,73 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-tester": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.5.0.tgz",
|
||||
"integrity": "sha512-biwtMuv+B1A5tqDLYSwMSjEr24l4zji69Ttg9ZxAEkr5sGre2W5ojEZRA79edDxcAASDF35XgHkWR+tvMsVAdg==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.6.0.tgz",
|
||||
"integrity": "sha512-wGoNB35KA/LEWaGp5ccsUqQwNjygCDnkGxe8A8kCMURgM2KYTuCCItGMLrajm0T9BhNdQtK/ST6+EljTFERasA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0",
|
||||
"@textlint/ast-node-types": "^14.6.0",
|
||||
"debug": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.5.0.tgz",
|
||||
"integrity": "sha512-K83si1a2s1LdIVPmzrtuI+SdKjNp2A5jmOcoyXAVNLv3qlJc4DTCyKO7Qn/xTq00zQrhLrZXJSaooBSXi4HXvQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.6.0.tgz",
|
||||
"integrity": "sha512-BkfQ/bWfpO6FErrpYoUF+SzlPqJklxD+o6rs2TwSoqO2EMP5vAgIVdGJiTBjV4kxghTzq0w5UkMi9xtNZw1sUg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0"
|
||||
"@textlint/ast-node-types": "^14.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/config-loader": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.5.0.tgz",
|
||||
"integrity": "sha512-kTFF+Sx3lxH1GSBbk2mEslu0VzyHj9DNy1wiwnPuHrQRVv6fsFZXr35mfLWnfBT40s6aEOrtPh1323jfLduHBg==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.6.0.tgz",
|
||||
"integrity": "sha512-OzcHVwKlyQOm7bVPee9z0AciYUN9L8543JIkHxtj81h8Qc7aGBOo0nqIZSL2GC+G0pnab6Rkt0drOAlpkKKrrA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/kernel": "^14.5.0",
|
||||
"@textlint/module-interop": "^14.5.0",
|
||||
"@textlint/resolver": "^14.5.0",
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/utils": "^14.5.0",
|
||||
"@textlint/kernel": "^14.6.0",
|
||||
"@textlint/module-interop": "^14.6.0",
|
||||
"@textlint/resolver": "^14.6.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"@textlint/utils": "^14.6.0",
|
||||
"debug": "^4.4.0",
|
||||
"rc-config-loader": "^4.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/feature-flag": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.5.0.tgz",
|
||||
"integrity": "sha512-fM0W1JRbEkO4IuJhDLDAam50usW+z7B1wA8Y6PciJeojzpTXUiV29MtUISTCfSVkjrDo54aIRgTPn8HogkUGPQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.6.0.tgz",
|
||||
"integrity": "sha512-WmmFHEt71rtSk2ZjcvrLJPN6dKYtYwC8fAFZcnjw15h80Di7wuw7vrpW85udloq+XYDlJ5GnhumDX5yZ4mt4Ug==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/fixer-formatter": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.5.0.tgz",
|
||||
"integrity": "sha512-vdnrm4tAcJ/KtSiN6szt0MZSWFW8/WKl8kr1owgpQ0NKuxbP1b9dFc+k/V/mq+RnFcuwnbb/r2+7z8oH7HYHEQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.6.0.tgz",
|
||||
"integrity": "sha512-CSbjhBFfvVFqbEKmmm0xJxxzpYGHO4Y/dguBI9g2aaCBy52EVwBa55rbhkpBV+b9X3OJhnypJEo5IbC+F52CqA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/module-interop": "^14.5.0",
|
||||
"@textlint/resolver": "^14.5.0",
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/module-interop": "^14.6.0",
|
||||
"@textlint/resolver": "^14.6.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.4.0",
|
||||
"diff": "^5.2.0",
|
||||
@ -503,43 +503,43 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.5.0.tgz",
|
||||
"integrity": "sha512-hgq0b7eUJxEwCf1jNx/DCZeU2SJXXRH+qycvyrGVEOWgLYmtizlCm6GQ+ejDgUdcoNpQhzCkiwV2HF0z9UbmMw==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.6.0.tgz",
|
||||
"integrity": "sha512-Mf8cikqVDHdf0RgjSYxs/G1a+I5UK5GjM+ehc67zSF/vtFUaLRn5bkWcEKrWQ67mjrM24tqH46oqVM9RL+utMQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0",
|
||||
"@textlint/ast-tester": "^14.5.0",
|
||||
"@textlint/ast-traverse": "^14.5.0",
|
||||
"@textlint/feature-flag": "^14.5.0",
|
||||
"@textlint/source-code-fixer": "^14.5.0",
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/utils": "^14.5.0",
|
||||
"@textlint/ast-node-types": "^14.6.0",
|
||||
"@textlint/ast-tester": "^14.6.0",
|
||||
"@textlint/ast-traverse": "^14.6.0",
|
||||
"@textlint/feature-flag": "^14.6.0",
|
||||
"@textlint/source-code-fixer": "^14.6.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"@textlint/utils": "^14.6.0",
|
||||
"debug": "^4.4.0",
|
||||
"fast-equals": "^4.0.3",
|
||||
"structured-source": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/linter-formatter": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.5.0.tgz",
|
||||
"integrity": "sha512-5QQsdnsuUBscCq1IX10ynYtsfLmctdoc4GZtJA7L//QFYAAgTrBzpXjfhyWZs7C5VJho9FzfljyuuA7jbhRrFw==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.6.0.tgz",
|
||||
"integrity": "sha512-52P8jXnxqafbmV1Dg05u8EHitvdCA6nnIGwIWjLCydL1jfM5js6KvA47qRugb6EWWbYxWKCGkbmaIFhKGwFTaA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@azu/format-text": "^1.0.2",
|
||||
"@azu/style-format": "^1.0.1",
|
||||
"@textlint/module-interop": "^14.5.0",
|
||||
"@textlint/resolver": "^14.5.0",
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/module-interop": "^14.6.0",
|
||||
"@textlint/resolver": "^14.6.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.4.0",
|
||||
"js-yaml": "^3.14.1",
|
||||
@ -552,13 +552,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.5.0.tgz",
|
||||
"integrity": "sha512-qftHkBnyWEy2PmAhmhrmTemCKMJCpPKtFZt0woaa0yZkMwXo/RN66elnjAEJZenkRntQgphlKJJZ0I/NA2hH4g==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.6.0.tgz",
|
||||
"integrity": "sha512-T29IbY9cAupWBuds1DPl9TzS4oI2c0wVd0+0E43j5XezJKR3oE4e5/g9v4U2oo/LIbxDLlI22o3IGSyfUv3fFw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0",
|
||||
"@textlint/ast-node-types": "^14.6.0",
|
||||
"debug": "^4.4.0",
|
||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||
"neotraverse": "^0.6.15",
|
||||
@ -570,9 +570,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -819,88 +819,88 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/module-interop": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.5.0.tgz",
|
||||
"integrity": "sha512-nlFwHSYZJgSwXyF9PuHV3DcvRnObf64Mm4QWt9LaTr5zQB2MwEluaL8ROYL+sLJ4JhqNKpuqBT1EkTixPsN3cQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.6.0.tgz",
|
||||
"integrity": "sha512-eQFprk37rU6Sl250h52OaoHA4Dal4jSjWYWRdKfjvrdDcNWxPAOenAAGBf66lS7E34No9E9G51jsSc43N0CzJg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/resolver": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.5.0.tgz",
|
||||
"integrity": "sha512-yvC8gQHKsl/rR3x+884tA9BzVn6naILmHRmOP3FEQogr+ixOW4rL9OgdS6IoMjG8cVh8o4kI40xJfh1l6oX6vQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.6.0.tgz",
|
||||
"integrity": "sha512-pFB6bRKAQf+6N6JppAnxRNbExDathq325l8MpYGQY1j2bUzaDx0j90pf2EHfTM0mHr3v/6z37GNUk5ZUZkH3Ew==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/source-code-fixer": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.5.0.tgz",
|
||||
"integrity": "sha512-zcokW+MBTppOzGumeB1SZvjDitCnO2sAZrWpmw849L6P11RdxS/iQXakg4jkRTTlWYR1AtzyAa9j0lLCdxsfuQ==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.6.0.tgz",
|
||||
"integrity": "sha512-GbnKYQ91KHhg3XfiYAIe++E9UI0wsUZVGq3lzVUO9+nzJ4MUtUk1QpTmwP9+DYxnzi7w5jTcXHN6kh/zmHK4AA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"debug": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.5.0.tgz",
|
||||
"integrity": "sha512-e6SrPeCScmxxfTDpXo+nBh4tt6sbqySX/fE65sYVYupLwpJsCtxTEnYft2jEqifvgaM4JjgzETSQMG799HBTPw==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.6.0.tgz",
|
||||
"integrity": "sha512-1rNBbC8EfxxAk76jHCMrNduUd2CuaaXyAZvuSWzRM+Fx+YyTOelKEv9sppCWnThcD2A34KKlghHg40YH3CjriQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0"
|
||||
"@textlint/ast-node-types": "^14.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.5.0.tgz",
|
||||
"integrity": "sha512-riMcW6Sj/IvTnIAA4W0O5pxJxdqth+MUe2li7wg8yCq3jilS0EYIlolNXvX414v/9swsLu8Tztwugrh0E6HJDw==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.6.0.tgz",
|
||||
"integrity": "sha512-0W5wxWbDxAJoMe6ju2oq0IZ2ZX91JoWLHti+4LrPc9uiMx6CaTS/ZLYlu0hoYSk5DNQ75/bDD9wm78APM07zGA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/markdown-to-ast": "^14.5.0"
|
||||
"@textlint/markdown-to-ast": "^14.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-text": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.5.0.tgz",
|
||||
"integrity": "sha512-aASQwkRnupRlY9w168SBjrsDbO1wtg2EYx8JSnt/YboUnhszQD8Zys178Zu/00ECtpxwpjQYowoYNq0BoP9aig==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.6.0.tgz",
|
||||
"integrity": "sha512-QglDssLXVBdjk4cVUI5nK9DJtJ6XjtdKGV7Ehgv202MEMvTktGa5mJlIv5tQK0O+zVpLWqVl4q9P76MASk/qOg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/text-to-ast": "^14.5.0"
|
||||
"@textlint/text-to-ast": "^14.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.5.0.tgz",
|
||||
"integrity": "sha512-z+oJS5GHK5KiV87ZNCYAQnZTgq1MRGl9g301GOV6Zq4RjH75JVQPNa4hUlwzG2sF6jks+wLhMjxwaQaG6cKCpA==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.6.0.tgz",
|
||||
"integrity": "sha512-XsK3FUdCtVNCe/aUz0TivpCzQchupcyOgNlRKt36AjDCEtqyPCOjpJxj1fmvYnTODG0M/4XKrlufn8onw+qWew==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0"
|
||||
"@textlint/ast-node-types": "^14.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@textlint/utils": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.5.0.tgz",
|
||||
"integrity": "sha512-gAKZh1woc0IZGoVjQ8G8Og10dsBJ6UxaCFXofeHveWsZhJAdVzjw49/tJLVu/39t8GTdZQ4BAHuNxHNFgLN57w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.6.0.tgz",
|
||||
"integrity": "sha512-kQQg38c2wyWtbBnQ4zIGp4KrUmMmcZJKz2hrCn0z2kCMbDFpasTaG2EuteY1Szupl186fuMePGAGB6p7xeVsiQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@ -6107,25 +6107,25 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.5.0.tgz",
|
||||
"integrity": "sha512-+C5zYpEv0HsQAuz6crm4BjuMXaHi6gKTSwqZZttHI2Jm/WGtpza2SbZxct+STdMgN1XbINcsP58gZ4juQwokcw==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.6.0.tgz",
|
||||
"integrity": "sha512-C1Wbh5VDvKHmNyyj0q94AWdmI/RBKfweQwja6hno9iWoh8IprWye/Z8WSZd4PsCly/i2e6MNuXKrjU+gE4ku6w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.5.0",
|
||||
"@textlint/ast-traverse": "^14.5.0",
|
||||
"@textlint/config-loader": "^14.5.0",
|
||||
"@textlint/feature-flag": "^14.5.0",
|
||||
"@textlint/fixer-formatter": "^14.5.0",
|
||||
"@textlint/kernel": "^14.5.0",
|
||||
"@textlint/linter-formatter": "^14.5.0",
|
||||
"@textlint/module-interop": "^14.5.0",
|
||||
"@textlint/resolver": "^14.5.0",
|
||||
"@textlint/textlint-plugin-markdown": "^14.5.0",
|
||||
"@textlint/textlint-plugin-text": "^14.5.0",
|
||||
"@textlint/types": "^14.5.0",
|
||||
"@textlint/utils": "^14.5.0",
|
||||
"@textlint/ast-node-types": "^14.6.0",
|
||||
"@textlint/ast-traverse": "^14.6.0",
|
||||
"@textlint/config-loader": "^14.6.0",
|
||||
"@textlint/feature-flag": "^14.6.0",
|
||||
"@textlint/fixer-formatter": "^14.6.0",
|
||||
"@textlint/kernel": "^14.6.0",
|
||||
"@textlint/linter-formatter": "^14.6.0",
|
||||
"@textlint/module-interop": "^14.6.0",
|
||||
"@textlint/resolver": "^14.6.0",
|
||||
"@textlint/textlint-plugin-markdown": "^14.6.0",
|
||||
"@textlint/textlint-plugin-text": "^14.6.0",
|
||||
"@textlint/types": "^14.6.0",
|
||||
"@textlint/utils": "^14.6.0",
|
||||
"debug": "^4.4.0",
|
||||
"file-entry-cache": "^10.0.5",
|
||||
"get-stdin": "^5.0.1",
|
||||
@ -6250,9 +6250,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.5.0.tgz",
|
||||
"integrity": "sha512-T7NQ2DUnx1zOrnBqcFpJGFgHder5/M7TV596LZTJS/sc1anT7WVrsoGCMmu3oJh2ALg9oJN+PgSmZQ8Mm0Mg+w==",
|
||||
"version": "14.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.6.0.tgz",
|
||||
"integrity": "sha512-PqWpzFa64M5uKqBSQPV8wPqo14zvmz5JXWIIUkVCMQ/gN8/8IrXjpsp0O+/To8u5D5woVpxihBi/3nJdR8E37g==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
|
@ -15,7 +15,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.1",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.5.0",
|
||||
"textlint": "^14.6.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
|
@ -48,7 +48,7 @@ These are the properties available for a [Calendar trigger](/docs/automation/tri
|
||||
|
||||
### Device
|
||||
|
||||
These are the properties available for a [Device trigger](/docs/automation/trigger/#device-trigger).
|
||||
These are the properties available for a [Device trigger](/docs/automation/trigger/#device-triggers).
|
||||
|
||||
Inherites template variables from [event](#event) or [state](#state) template based on the type of trigger selected for the device.
|
||||
|
||||
|
@ -134,6 +134,7 @@ The following example shows a minimal blueprint with a single input:
|
||||
blueprint:
|
||||
name: Example blueprint
|
||||
description: Example showing an input
|
||||
domain: automation
|
||||
input:
|
||||
my_input:
|
||||
name: Example input
|
||||
|
@ -32,7 +32,7 @@ The `state` prefix indicates that this information is part of the state object (
|
||||
|
||||
### About the state
|
||||
|
||||
The screenshot shows three lights in different states (the `state.state`): `on`, `off`, and `unavailable`. Each light comes with its own entity state attributes such as `supported_color_modes`, `supported_features`. These attributes have their own state: the state of the `supported_color_modes` attribute is `color_temp` and `hs`, the state of the `supported_features` attribute is `4`.
|
||||
The screenshot of the Developer Tools States page shows three lights in different states (the `state.state`): `on`, `off`, and `unavailable`. Each light comes with its own entity state attributes such as `supported_color_modes`, `supported_features`. These attributes have their own state: the state of the `supported_color_modes` attribute is `color_temp` and `hs`, the state of the `supported_features` attribute is `4`.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/light/state_light.png' alt='Screenshot showing three lights with different states: `on`, `off`, or `unavailable`'>
|
||||
|
@ -5,7 +5,7 @@ description: "Instructions on how to perform actions in Home Assistant."
|
||||
|
||||
Various integrations allow performing {% term actions %} when a certain event occurs. The most common one is performing an action when an automation {% term trigger %} happens. But an action can also be called from a {% term script %}, a dashboard, or via voice command devices such as Amazon Echo.
|
||||
|
||||
The configuration options to call a configuration are the same between all integrations and are described on this page.
|
||||
The configuration options to perform action are the same between all integrations and are described on this page.
|
||||
|
||||
Examples on this page will be given as part of an automation integration configuration but different approaches can be used for other integrations too.
|
||||
|
||||
|
@ -59,7 +59,7 @@ Firmware can be upgraded using the below directions:
|
||||
- GoControl HUSBZB-1 stick
|
||||
- Sigma Designs UZB stick
|
||||
- Vision USB stick - Gen5
|
||||
- Z-Wave.Me UZB1 stick
|
||||
- Z-Wave.Me UZB1 stick (see Aeotec Z-Stick note below)
|
||||
- HomeSeer SmartStick+ G2
|
||||
- HomeSeer Z-NET G2
|
||||
|
||||
@ -94,7 +94,9 @@ Z-Wave JS does not support Z-Wave Long Range yet.
|
||||
### Aeotec Z-Stick
|
||||
|
||||
{% note %}
|
||||
There are [known compatibility issues](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245031#p1502030) with older hardware versions of the Aeotec stick not connecting when plugged directly on the Raspberry Pi 4, and requiring a USB Hub to work. Aeotec has released a 2020 hardware revision ZW090-A/B/C Gen5+ with Pi 4 compatibility. Both hardware revisions are still being sold, make informed purchasing decisions if using one paired with a Pi 4.
|
||||
|
||||
The Aeotec Z-Stick and some of its variants (e.g. Z-Wave.Me UZB1) are known to have compatibility issues with the Linux kernel because of their [non-compliant behavior](https://forums.raspberrypi.com/viewtopic.php?f=28&t=245031#p1502030). Plugging these controllers through a USB hub can serve as a workaround that sometimes mitigates the issue.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system.
|
||||
|
@ -2,6 +2,13 @@
|
||||
<!-- Left column begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- SOTOH 2025 - To move on/after event -->
|
||||
<a href="/blog/2025/03/26/state-of-the-open-home-2025-announcement/" class="material-card picture-promo" style="
|
||||
background-image: url(/images/frontpage/sotoh-2025.webp);
|
||||
background-size: cover;
|
||||
padding-top: 55%;
|
||||
" aria-label="State of the Open Home - Saturday April 12th 2025">
|
||||
</a>
|
||||
<!-- Recent blog posts -->
|
||||
<div class="recent-posts material-card text">
|
||||
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
|
||||
|
@ -73,3 +73,9 @@ For each condition, the following sensors are created:
|
||||
The integration creates an image entity for the weather radar if the radar option is enabled.
|
||||
|
||||
Details about the API are available in the [AEMET OpenData documentation](https://opendata.aemet.es/dist).
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -21,6 +21,8 @@ Integrates Airthings sensors into Home Assistant.
|
||||
|
||||
[Airthings](https://www.airthings.com/) provide different sensors for measuring the air quality. The focus specially on Radon sensors.
|
||||
|
||||
While this integration works without an Airthings SmartLink hub, using one will provide live updates to your sensor data. Without a hub, you'll need to rely on the Airthings mobile app to sync data over Bluetooth and upload it to the cloud.
|
||||
|
||||
Requires Airthings hardware and a valid Airthings Dashboard login.
|
||||
|
||||
## Prerequisites
|
||||
|
@ -106,3 +106,9 @@ For each Airzone zone (thermostat), a *switch entity* is created.
|
||||
## Water heater
|
||||
|
||||
For each Airzone device a *water heater entity* is created if supported.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -117,3 +117,9 @@ For each Airzone zone (thermostat), a switch entity is created to turn the therm
|
||||
## Water heater
|
||||
|
||||
For each Airzone device, a *water heater entity* is created if supported.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -54,8 +54,8 @@ Assuming that the log file contains multiple values formatted as JSON as shown b
|
||||
This would require the following settings to extract the temperature:
|
||||
|
||||
- Name: `Temperature`
|
||||
- File path: `/home/user/.homeassistant/sensor.json`
|
||||
- Value template: {% raw %}`'{{ value_json.temperature }}'`{% endraw %}
|
||||
- File path: `/config/sensor.json`
|
||||
- Value template: {% raw %}`{{ value_json.temperature }}`{% endraw %}
|
||||
- Unit of measurement: `"°C"`
|
||||
|
||||
#### Entries as CSV
|
||||
@ -71,6 +71,6 @@ timestamp,temperature,humidity
|
||||
This would require the following settings to extract the temperature:
|
||||
|
||||
- Name: `Temperature`
|
||||
- File path: `/home/user/.homeassistant/sensor.csv`
|
||||
- Value template: {% raw %}`'{{ value.split(",")[1] }}'`{% endraw %}
|
||||
- File path: `/config/sensor.csv`
|
||||
- Value template: {% raw %}`{{ value.split(",")[1] }}`{% endraw %}
|
||||
- Unit of measurement: `"°C"`
|
||||
|
@ -60,6 +60,6 @@ Preset mode **Away** represents Gree's "8°C heating mode."
|
||||
|
||||
Gree devices expose multiple switches to control various features:
|
||||
|
||||
- Light Panel, turns the front panel light on/off.
|
||||
- Quiet Mode, enables/disables the quiet mode feature.
|
||||
- Xtra Fan, enables/disables extra fan mode to help remove moisture from coils.
|
||||
- **Panel light**: turns the front panel light on/off.
|
||||
- **Quiet mode**: enables/disables the quiet mode feature.
|
||||
- **Xtra fan**: enables/disables extra fan mode to help remove moisture from coils.
|
||||
|
@ -487,7 +487,7 @@ These are the attributes available for an old-style group.
|
||||
|
||||
### Actions
|
||||
|
||||
This integration provides the following actions to modify groups and a action to reload the configuration without restarting Home Assistant itself.
|
||||
The following actions to modify groups and a action to reload the configuration without restarting Home Assistant itself. These actions are only available for old-style groups. They cannot be used with the new-style groups described above.
|
||||
|
||||
| Action | Data | Description |
|
||||
| -------- | ----------------- | ----------------------------------------------------------------------------- |
|
||||
|
@ -63,6 +63,7 @@ and has been confirmed to work with the following models:
|
||||
- DS-2CD2232-I5
|
||||
- DS-2CD2385G1
|
||||
- DS-2CD2387G2-LU
|
||||
- DS-2CD2686G2
|
||||
- DS-2CD3132-I
|
||||
- DS-7616NI-K2 (NVR)
|
||||
- ERI-K104-PR (NVR)
|
||||
|
@ -33,6 +33,14 @@ To set up these models:
|
||||
1. Set a password on the projector's network setup page.
|
||||
2. Use this password when adding the JVC Projector integration in Home Assistant.
|
||||
|
||||
### Password hashing for newer models (NZ800 and NZ900)
|
||||
|
||||
For newer projector models (NZ800 and NZ900), the password needs to be hashed before being used in Home Assistant. Here's how to generate the correct hash:
|
||||
|
||||
1. Set a password in the projector (for example, "1234567890").
|
||||
2. Append the string "JVCKWPJ" to your password (for example, "1234567890JVCKWPJ").
|
||||
3. Generate a SHA256 hash of the resulting string using an online tool like [SHA256 Hash Generator](https://emn178.github.io/online-tools/sha256.html).
|
||||
4. Use the generated hash as the password when adding the JVC Projector integration in Home Assistant.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -104,9 +104,9 @@ Once all zones are configured you'll be presented with the configuration for add
|
||||
|
||||
**Blink panel LED on when sending state change:** The desired LED behavior for the panel.
|
||||
|
||||
**Override default Home Assistant API host panel URL:** The Konnected Alarm Panel post sensor states back to the Home Assistant API. If this value is unchecked the panel will default postbacks using the URL [configured](/integrations/homeassistant/#allowlist_external_urls) in Home Assistant. By default, the integration will use the internal URL. However, if you check this field and set the **Override API host URL** to your _local_ IP address and port (e.g., `http://192.168.1.101:8123`), it will be used instead of the internal URL.
|
||||
**Override default Home Assistant API host URL:** The Konnected Alarm Panel posts sensor states back to the Home Assistant API. If this value is unchecked, the panel will default postbacks using the URL [configured](/integrations/homeassistant/#allowlist_external_urls) in Home Assistant. By default, the integration will use the internal URL. However, if you check this field and set the **Custom API host URL** to your _local_ IP address and port (e.g., `http://192.168.1.101:8123`), it will be used instead of the internal URL.
|
||||
|
||||
**Override API host URL (optional):** The host info to use if you checked **Override default Home Assistant API host panel URL** in the step above. This is ignored if **Override default Home Assistant API host panel URL** is unchecked.
|
||||
**Custom API host URL (optional):** The host info to use if you checked **Override default Home Assistant API host URL** in the step above. This is ignored if **Override default Home Assistant API host URL** is unchecked.
|
||||
|
||||
### YAML configuration
|
||||
|
||||
|
@ -21,8 +21,6 @@ ha_platforms:
|
||||
- vacuum
|
||||
- water_heater
|
||||
ha_integration_type: integration
|
||||
ha_codeowners:
|
||||
- '@LG-ThinQ-Integration'
|
||||
---
|
||||
|
||||
The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assistant. The features of this integration include:
|
||||
@ -252,135 +250,9 @@ A read-only property which has states is represented as a sensor platform.
|
||||
| Water Purifier | High-temp sterilization<br>Type<br>UVnano|
|
||||
| Dryer<br>Styler<br>Washer<br>Washcombo Main<br>Washcombo Mini<br>Washtower<br>Washtower Dryer<br>Washtower Washer | Current status<br>Delayed start/end<br>Remaining time<br>Total time<br>Cycles |
|
||||
|
||||
## User guide
|
||||
### 1. Custom card configuration (HACS)
|
||||
## Automation example
|
||||
|
||||
**- Timer Bar Card**
|
||||
> - Supported devices: Washer, Dryer, Styler, Dish washer
|
||||
> - Used entities: sensor.washer_**current_status**, sensor.washer_**remaining_time**, sensor.washer_**total_time**
|
||||
|
||||
```yaml
|
||||
type: custom:timer-bar-card
|
||||
entities:
|
||||
- entity: sensor.washer_current_status
|
||||
name: Washer
|
||||
active_state:
|
||||
- running
|
||||
- rinsing
|
||||
- spinning
|
||||
- drying
|
||||
- cooling
|
||||
- reserved
|
||||
- presteam
|
||||
- steam
|
||||
pause_state: pause
|
||||
icon: mdi:tumble-dryer-off
|
||||
active_icon: mdi:tumble-dryer
|
||||
end_time:
|
||||
entity: sensor.washer_remaining_time
|
||||
duration:
|
||||
entity: sensor.washer_total_time
|
||||
units: minutes
|
||||
invert: true
|
||||
```
|
||||
|
||||
### 2. Automation
|
||||
|
||||
#### 1) Air conditioner, climate
|
||||
|
||||
> - Currently the Climate's set_hvac_mode, set_temperature service is not working properly. Each control must operate sequentially, but conditional wait for this has not yet been implemented in ThinQ integration.
|
||||
> - We provide a script that can do turn_on, set_hvac_mode, and set_temperature at once, so please use it for automation.
|
||||
> - Create a new script in 'CREATE SCRIPT' using the code below, then select the script in the 'Action' field.
|
||||
> - This conditional wait is scheduled to be implemented in core 2025.4.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
alias: LG ThinQ climate
|
||||
description: "Action turn_on, set_hvac_mode, set_temperature"
|
||||
fields:
|
||||
input_device:
|
||||
selector:
|
||||
device:
|
||||
filter:
|
||||
- integration: lg_thinq
|
||||
name: Device
|
||||
required: true
|
||||
input_entity:
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
- integration: lg_thinq
|
||||
domain: climate
|
||||
name: Entity
|
||||
required: true
|
||||
input_hvac:
|
||||
selector:
|
||||
select:
|
||||
options:
|
||||
- label: Off
|
||||
value: off
|
||||
- label: Auto
|
||||
value: auto
|
||||
- label: Cool
|
||||
value: cool
|
||||
- label: Dry
|
||||
value: dry
|
||||
- label: Fan only
|
||||
value: fan_only
|
||||
- label: Heat/cool
|
||||
value: heat_cool
|
||||
- label: Heat
|
||||
value: heat
|
||||
name: HVAC mode
|
||||
required: true
|
||||
default: cool
|
||||
input_temperature:
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 100
|
||||
name: Target temperature
|
||||
required: true
|
||||
default: 18
|
||||
sequence:
|
||||
- sequence:
|
||||
- variables:
|
||||
entity_name: "{{ input_entity.split('.')[1] }}"
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ input_hvac != 'off' and states('climate.'+ entity_name) == 'off' }}
|
||||
then:
|
||||
- action: climate.turn_on
|
||||
target:
|
||||
device_id: "{{ input_device }}"
|
||||
data: {}
|
||||
- wait_template: "{{ states('climate.'+ entity_name) != 'off' }}"
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ states('climate.'+ entity_name) != input_hvac }}"
|
||||
then:
|
||||
- action: climate.set_hvac_mode
|
||||
data:
|
||||
hvac_mode: "{{ input_hvac }}"
|
||||
target:
|
||||
device_id: "{{ input_device }}"
|
||||
- wait_template: "{{ states('climate.'+ entity_name) == input_hvac }}"
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ input_hvac != 'off' }}"
|
||||
then:
|
||||
- action: climate.set_temperature
|
||||
data:
|
||||
temperature: "{{ input_temperature }}"
|
||||
target:
|
||||
device_id: "{{ input_device }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
#### 2) Notification, error event
|
||||
### Notification, error event
|
||||
|
||||
> - Guide: [Automating on event](https://www.home-assistant.io/integrations/event/#automating-on-a-button-press)
|
||||
> - Important: guide's step 3, 4
|
||||
|
@ -59,14 +59,30 @@ to act as a gateway to the Home Assistant MCP SSE server.
|
||||
|
||||
## Client configuration
|
||||
|
||||
The Model Context Protocol specification does not yet define standards
|
||||
for authentication and connecting to remote servers. These are a *work in progress*
|
||||
and this configuration will likely change in the near future.
|
||||
The Model Context Protocol specification has recently defined standards for
|
||||
authorization and connecting to remote servers. The standards are a *work in progress*
|
||||
and so some clients may not support the latest functionality, and the specification
|
||||
will likely continue to evolve.
|
||||
|
||||
### Access control
|
||||
|
||||
For now, we can use
|
||||
[Long-lived access token](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) to control access to the API.
|
||||
#### OAuth
|
||||
|
||||
The Model Context Protocol supports OAuth for [Authorization](https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/authorization/) and is fully supported by Home Assistant's
|
||||
[Authentication API](https://developers.home-assistant.io/docs/auth_api/). MCP
|
||||
Clients that support OAuth can use this to allow you to give the client access
|
||||
to your Home Assistant MCP server.
|
||||
|
||||
Home Assistant has adopted [IndieAuth](https://indieauth.spec.indieweb.org/) and does not require you to pre-define
|
||||
an OAuth Client ID. Instead, the Client ID is the base of the redirect URL.
|
||||
|
||||
- *Client ID*: If your redirect-uri is `https://www.example.com/mcp/redirect`, your client ID should be `https://www.example.com`.
|
||||
- *Client Secret*: This is not used by Home Assistant and can be ignored or set to any value.
|
||||
|
||||
#### Long-Lived Access Tokens
|
||||
|
||||
Some MCP clients may not support OAuth, but may support access tokens. You may create a
|
||||
[Long-lived access token](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) to allow the client to access the API.
|
||||
|
||||
1. Visit your account profile settings, under the **Security** tab. {% my profile badge %}.
|
||||
|
||||
@ -115,6 +131,33 @@ to allow Claude for Desktop to access Home Assistant using the SSE transport.
|
||||
|
||||

|
||||
|
||||
### Example: Cursor
|
||||
|
||||
1. Download and install [Cursor](https://www.cursor.com).
|
||||
2. Install `mcp-proxy` following the instructions in the [README](https://github.com/sparfenyuk/mcp-proxy).
|
||||
For example, `uv tool install git+https://github.com/sparfenyuk/mcp-proxy`.
|
||||
3. Open the main Cursor Settings and select **MCP**.
|
||||
4. Click **Add new global MCP server** and add the Home Assistant server configuration:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"Home Assistant": {
|
||||
"command": "mcp-proxy",
|
||||
"args": [
|
||||
"http://localhost:8123/mcp_server/sse"
|
||||
],
|
||||
"env": {
|
||||
"API_ACCESS_TOKEN": "<your_access_token_here>"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
5. Save your `mcp.json` file. You can also find this file in the `$HOME/.cursor/mcp.json` directory.
|
||||
6. Restart Cursor and return to the MCP settings. You should see the Home Assistant server in the list. The indicator should be green.
|
||||
7. In chat agent mode (Ctrl+I), ask it to control your home and the tool should be used.
|
||||
|
||||

|
||||
|
||||
## Supported functionality
|
||||
|
||||
|
@ -23,53 +23,27 @@ There is currently support for the following Home Assistant Platforms:
|
||||
|
||||
All of the Home Assistant [Media Player Control Actions](https://www.home-assistant.io/integrations/media_player/#media-control-actions) are supported.
|
||||
|
||||
The `media_content_id` payload for `media_player.play_media` can be any of the following:
|
||||
|
||||
- The name of a track, artist, or album. For example, `Queen`.
|
||||
- A track or album combined with the artist's name. For example, `Queen - Innuendo`.
|
||||
- A streaming provider URI. For example, `spotify://artist/12345`.
|
||||
|
||||
The `media_content_id` payload for `media_player.browse_media` must be a URI of the form `library://artist/1`, `library://album/20`, or `spotify://album/5zj4Ej0FrlJQaSo0d6cttH`. The type of item that the URI refers to must be an album or artist.
|
||||
|
||||
These URIs can be obtained from, for example, the output of the `get_library` or `search` actions described below or the `media_player.browse_media` action from Home Assistant.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
### Manual configuration
|
||||
|
||||
Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If there is something special about the HA or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. If the Music Assistant Server is not installed then follow these [installation instructions](https://music-assistant.io/installation/).
|
||||
Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If there is something special about the Home Assistant or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. If the Music Assistant Server is not installed, then follow these [installation instructions](https://music-assistant.io/installation/).
|
||||
|
||||
## Media player
|
||||
## Media player entities
|
||||
|
||||
The Music Assistant integration creates media player entities for all players available in MA including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls.
|
||||
The Music Assistant integration creates media player entities for all players available in MA, including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls.
|
||||
|
||||
### Action `media_player.play_media`
|
||||
|
||||
Play media hosted on a Music Assistant server on a Music Assistant player. The action configuration is as described in the [media player documentation](https://www.home-assistant.io/integrations/media_player/#action-media_playerplay_media)
|
||||
|
||||
The `media_content_id` payload can be any of the following:
|
||||
|
||||
- The name of a track, artist or album. (for example, "Queen")
|
||||
- A track or album combined with the artist name (for example, "Queen - Innuendo")
|
||||
- A streaming provider URI (for example, `spotify://artist/12345`)
|
||||
|
||||
#### Examples
|
||||
|
||||
Play Adele's album 25
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.music_assistant_player
|
||||
media_content_type: album
|
||||
media_content_id: 'Adele - 25'
|
||||
```
|
||||
|
||||
Play all tracks from Stevie Wonder in random order
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.music_assistant_player
|
||||
media_content_type: artist
|
||||
media_content_id: 'Stevie Wonder'
|
||||
```
|
||||
|
||||
Play the playlist The Best of Disco
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.music_assistant_player
|
||||
media_content_type: playlist
|
||||
media_content_id: 'The Best of Disco'
|
||||
```
|
||||
|
||||
## Additional actions
|
||||
## Actions
|
||||
|
||||
### Action `music_assistant.play_media`
|
||||
|
||||
@ -221,3 +195,11 @@ Get the queue details of a Music Assistant player queue.
|
||||
## Notes
|
||||
|
||||
- Any Home Assistant players added to Music Assistant will appear duplicated as the MA version of the player is created. The original HA player can be hidden if desired.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
After deleting the integration, go to the {% my supervisor_addon title="**Settings** > **Add-ons**" addon="music_assistant" %} and remove the **Music Assistant** add-on from there as well (if installed).
|
||||
|
@ -19,8 +19,3 @@ ha_quality_scale: legacy
|
||||
The `nmbs` {% term integration %} will create sensors for monitoring travel time and information between 2 stations.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/screenshots/nmbs-card-example.png' />
|
||||
<p>Example using the <a href="https://github.com/custom-cards/entity-attributes-card">Entity Attributes custom card</a> </p>
|
||||
</p>
|
||||
|
@ -19,11 +19,12 @@ ha_dhcp: true
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The Nuki integration allows you to control [Nuki Smart Locks](https://nuki.io/en/smart-lock/) via a [Nuki Bridge](https://nuki.io/en/bridge/).
|
||||
The Nuki integration allows you to control [Nuki Smart Locks](https://nuki.io/en/smart-lock/) via a [Nuki Bridge](https://help.nuki.io/hc/en-001/sections/360004474718-Bridge) or Nuki Smart Lock with [Build-in WiFi](https://help.nuki.io/hc/en-001/sections/4402761196817-Built-in-Wi-Fi) using the cloud.
|
||||
Many Nuki Smart Locks also support [local integrations](#local-integration-alternatives) using a different integration.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Go to manage my devices, and select the bridge. Within the bridge configuration turn on the HTTP API and check the details in the screen. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one.
|
||||
To add a Nuki bridge to your installation, you need to connect the device to wifi, enable developer mode and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Go to manage my devices, and select the bridge or wifi enabled smart lock and connect to the device. Turn on the HTTP API and check the details in the screen. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one.
|
||||
For faster updates, the callback function of the Nuki bridge can be used. This requires your Home Assistant to be reachable via HTTP by the Nuki bridge, as HTTPS is not supported by the Nuki bridge.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
@ -71,7 +72,19 @@ Events generated by Nuki are sent as events of type `nuki_event` with the follow
|
||||
| `type` | The type of the event. Values: `ring`
|
||||
| `entity_id` | The ID of the entity generating the event.
|
||||
|
||||
## MQTT support
|
||||
## Local integration alternatives
|
||||
|
||||
The Nuki Smart Lock 3.0 Pro also [supports MQTT](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support) and can directly integrate with Home Assistant through [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
|
||||
Specific information can be found [here](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626).
|
||||
Many Nuki Smart Locks support local alternatives. Consult the [Nuki website](https://help.nuki.io/hc/en-001/categories/360003042457-Integrations-Services) for an up-to-date list of integration options and supported devices.
|
||||
|
||||
### HomeKit support
|
||||
|
||||
The 2nd and 3rd Generation Smart Locks support [HomeKit via Bluetooth](https://help.nuki.io/hc/en-001/articles/19948907390737-Apple-HomeKit-via-Bluetooth) and can directly integrate with Home Assistant through the (HomeKit integration)(/integrations/homekit_controller/#adding-a-homekit-device-through-bluetooth).
|
||||
|
||||
### MQTT support
|
||||
|
||||
The Nuki Smart Lock 3.0 Pro and 4th generation devices support [MQTT]([https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support]) and can directly integrate with Home Assistant through [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
|
||||
Details can be found [here](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626).
|
||||
|
||||
### Matter Support
|
||||
|
||||
Smart Lock Ultra, Smart Lock Pro, Smart Lock Go, Smart Locks of 4th Generation support [Matter](https://help.nuki.io/hc/en-001/sections/14596766576401-Matter) over Thread and can directly integrate with Home Assistant through the [Matter integration](/integrations/matter/#adding-a-matter-device-to-home-assistant).
|
||||
|
@ -22,7 +22,7 @@ related:
|
||||
- url: https://help.prusa3d.com/guide/prusalink-and-prusa-connect-setup-mk3-s-_221744
|
||||
title: PrusaLink installation guide for Prusa MK3 with Raspberry Pi Zero W
|
||||
- url: https://help.prusa3d.com/guide/prusalink-prusa-connect-with-rpi-3-4-usb-mk2-5-s-mk3-s-_469341
|
||||
title: Sentence trigger
|
||||
title: PrusaLink installation guide for Prusa MK2.5/MK3 with Raspberry Pi 3/4
|
||||
---
|
||||
|
||||
The **PrusaLink** {% term integration %} allows you to monitor your [Prusa 3D printer](https://www.prusa3d.com) and its progress with your Home Assistant installation. This integration works with Prusa MINI/MINI+, Prusa MK3.9/MK4, Prusa XL, and with the older Raspberry Pi-based Prusa MK2.5/MK3.
|
||||
|
@ -90,3 +90,9 @@ The following *sensors* are created for each port (or LACP):
|
||||
| Update | Description |
|
||||
| :------------------ | :--------------------------------- |
|
||||
| firmware_update | Firmware update status. |
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -768,6 +768,16 @@ Prerequisites:
|
||||
- Reolink cameras can support a limited amount of simultaneous connections. Therefore using third-party software like Frigate, Blue Iris, or Scrypted, or using the ONVIF integration at the same time can cause the camera to drop connections. This results in short unavailabilities of the Reolink entities in Home Assistant. Especially when the connections are coming from the same device (IP) where Home Assistant is running, the Reolink cameras can get confused, dropping one connection in favor of the other originating from the same host IP. If you experience disconnections/unavailabilities of the entities, please first temporarily shut down the other connections (like Frigate) to diagnose if that is the problem. If that is indeed the problem, you could try moving the third-party software to a different host (IP address) since that is known to solve the problem most of the time. You could also try switching the protocol to FLV on Home Assistant and/or the third-party software, as that is known to be less resource-intensive on the camera.
|
||||
- If the Reolink entities go to unavailable for short periods, the camera may be overloaded with requests resulting in short connection drops. To resolve this, first, check if the integration is using `ONVIF push` instead of `ONVIF long polling` (resource intensive) or `Fast polling` (very resource intensive), see the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. Moreover, try switching to the <abbr title="flash video">FLV</abbr> streaming protocol which is the least resource-intensive for the camera, see the [options](#options) section.
|
||||
|
||||
### Battery drains fast
|
||||
|
||||
The Reolink Home Assistant integration is supposed to only wake battery cameras once per hour for about 10 seconds, which should not have a big impact on battery life. You can check this using the **Sleep status** entity. However, there are several factors that can have significant impact on battery life:
|
||||
|
||||
- Make sure the **Preload camera stream** option is turned off for all battery camera entities under {% my integrations title="**Settings** > **Devices & services**" %} > Reolink integration card > **x devices** > select the battery camera > select the camera stream (do this for all enabled streams) > Gear icon {% icon "mdi:cog-outline" %}. The Preload camera stream will keep a active stream open, keeping the camera awake. This will drain the battery.
|
||||
- Make sure the **Manual Record** switch is turned off. While this switch is on, the camera will be awake and recording. Excessive use of this entity will drain the battery.
|
||||
- **Automations** which use entities from a Reolink battery camera can wake up the camera. Changing settings or requesting a snapshot will wake the battery camera for 10-30 seconds. When automations trigger very often, this can cause excessive battery use.
|
||||
- Some **Custom cards** that can be used to view the camera in a dashboard are known to keep a battery camera constantly awake, draining its battery.
|
||||
- Viewing a **dashboard** with a picture-entity card of a Reolink battery camera, will wake that camera to show the latest snapshot and/or stream. Therefore, it is recommended to place the picture-entity cards in a separate dashboard/tab, which is only accessed when actually wanting to view the battery camera streams.
|
||||
|
||||
### Streams or recordings not playing
|
||||
|
||||
- Most Reolink cameras use h265 encoding for the high resolution recording and clear stream to save storage space and bandwidth. Playback of this h265 encoding is not supported by all browsers or apps. Therefore, the high-resolution recording and/or clear stream may not function on all your devices from which you acces Home Assistant. To see if a Reolink camera is using h264 or h265 encoding, [download the diagnostics text file](/docs/configuration/troubleshooting/#download-diagnostics) and find the `"encoding main": "h265"\"h264"` in the txt file. The low-resolution recording and fluent stream always use h264 encoding and, therefore, do not suffer from this issue.
|
||||
|
@ -15,6 +15,19 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The `rpi_power` integration allows you to detect [bad power supply](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply-warnings) on Raspberry Pi.
|
||||
The **Raspberry Pi Power Supply Checker** {% term integration %} allows you to detect [bad power supply](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply-warnings) on the Raspberry Pi that is running Home Assistant.
|
||||
|
||||
{% note %}
|
||||
This integration can only monitor the Raspberry Pi that Home Assistant is running on. It cannot monitor remote Raspberry Pis over the network.
|
||||
|
||||
If you have multiple Raspberry Pis and are running Home Assistant on one of them, this integration will only check the power supply status of the Pi where Home Assistant is installed.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Supported functionality
|
||||
|
||||
This integration interfaces with the kernel's power management system to detect whether the Raspberry Pi is receiving sufficient power. It creates a binary sensor that indicates whether your power supply is adequate (normal state) or if there are voltage issues (problem state).
|
||||
|
||||
If issues are detected, consider upgrading to a higher quality power supply that can deliver stable 5V power with sufficient current for your Raspberry Pi model.
|
||||
|
@ -18,6 +18,8 @@ related:
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The sun {% term integration %} calculates all sun-related times (sunrise, sunset, dawn, dusk, etc.) based on your configured home location. This means that all time-based calculations and triggers will be accurate for your specific location, as defined in your [basic configuration](/docs/configuration/basic/).
|
||||
|
||||
The sun {% term integration %} will use the location as
|
||||
{% my general title="configured in your Home Assistant configuration" %} to
|
||||
track if the sun is above or below the horizon. The sun can be used within
|
||||
|
@ -187,7 +187,7 @@ binary_sensor:
|
||||
type: list
|
||||
keys:
|
||||
state:
|
||||
description: The sensor is `on` if the template evaluates as `True`, `yes`, `on`, `enable` or a positive number. Any other value will render it as `off`. The actual appearance in the frontend (`Open`/`Closed`, `Detected`/`Clear` etc) depends on the sensor’s device_class value
|
||||
description: The sensor is `on` if the template evaluates as `True`, `yes`, `on`, `enable` or a positive number. Any other value will render it as `off`. The actual appearance in the frontend (`Open`/`Closed`, `Detected`/`Clear` etc) depends on the sensor's device_class value
|
||||
required: true
|
||||
type: template
|
||||
delay_on:
|
||||
@ -258,7 +258,7 @@ number:
|
||||
type: template
|
||||
default: 100.0
|
||||
optimistic:
|
||||
description: Flag that defines if number works in optimistic mode.
|
||||
description: Flag that defines if number works in optimistic mode. When enabled, the number's state will update immediately when changed through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the number will only update when the `state` template returns a new value.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -280,7 +280,7 @@ select:
|
||||
required: true
|
||||
type: template
|
||||
optimistic:
|
||||
description: Flag that defines if select works in optimistic mode.
|
||||
description: Flag that defines if select works in optimistic mode. When enabled, the select's state will update immediately when a new option is chosen through the UI or service calls, without waiting for the template defined in `state` to update. When disabled (default), the select will only update when the `state` template returns a new value.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
@ -303,7 +303,7 @@ image:
|
||||
required: true
|
||||
type: template
|
||||
verify_ssl:
|
||||
description: Enable or disable SSL certificate verification. Set to false to use an http-only URL, or you have a self-signed SSL certificate and haven’t installed the CA certificate to enable verification.
|
||||
description: Enable or disable SSL certificate verification. Set to false to use an http-only URL, or you have a self-signed SSL certificate and haven't installed the CA certificate to enable verification.
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
@ -453,6 +453,22 @@ State-based and trigger-based template entities have the special template variab
|
||||
Self-referencing using `this` provides the state and attributes for the entity before rendering the templates to calculate a new state. To access the new state, use the `value` or `value_json` variable.
|
||||
{% endnote %}
|
||||
|
||||
### Optimistic mode
|
||||
|
||||
For template entities that support interactivity (like `number` and `select`), you can enable optimistic mode by setting the `optimistic` parameter to `true`. This affects how the entity's state updates when you interact with it:
|
||||
|
||||
- **With optimistic mode disabled (default)**: When you interact with the entity (for example, selecting a new option in a dropdown or setting a new number value), the entity's state in Home Assistant will only update after the underlying template defined in the `state` parameter returns the new value.
|
||||
|
||||
- **With optimistic mode enabled**: When you interact with the entity, the entity's state in Home Assistant immediately updates to reflect your change, without waiting for the `state` template to update. This provides a more responsive UI experience but may not reflect the actual state if the underlying action fails or takes time to complete.
|
||||
|
||||
Optimistic mode is particularly useful when:
|
||||
|
||||
- The underlying system doesn't provide immediate feedback
|
||||
- You want a more responsive UI experience
|
||||
- You're confident the action will succeed
|
||||
|
||||
When optimistic mode is disabled (default), you get more accuracy but potentially a less responsive UI, as the entity only updates after confirmation from the underlying system.
|
||||
|
||||
### Rate limiting updates
|
||||
|
||||
When there are entities present in the template and no triggers are defined, the template will be re-rendered when one of the entities changes states. To avoid this taking up too many resources in Home Assistant, rate limiting will be automatically applied if too many states are observed.
|
||||
@ -973,7 +989,7 @@ sensors:
|
||||
type: device_class
|
||||
default: None
|
||||
value_template:
|
||||
description: The sensor is `on` if the template evaluates as `True` and `off` otherwise. The actual appearance in the frontend (`Open`/`Closed`, `Detected`/`Clear` etc) depends on the sensor’s device_class value
|
||||
description: The sensor is `on` if the template evaluates as `True` and `off` otherwise. The actual appearance in the frontend (`Open`/`Closed`, `Detected`/`Clear` etc) depends on the sensor's device_class value
|
||||
required: true
|
||||
type: template
|
||||
availability_template:
|
||||
|
@ -18,7 +18,7 @@ ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: hub
|
||||
ha_quality_scale: silver
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
The **Vodafone Station** {% term integration %} allows you to control your [Vodafone Station](https://www.vodafone.it/privati/area-supporto/assistenza-dispositivi/vodafone-station.html) based router.
|
||||
|
@ -23,9 +23,9 @@ To use your Worx Landroid mower in your installation, add the following to your
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
platform: worxlandroid
|
||||
host: 192.168.0.10
|
||||
pin: 1234
|
||||
- platform: worxlandroid
|
||||
host: 192.168.0.10
|
||||
pin: 1234
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
51
source/_posts/2025-03-27-motionblinds-joins-wwha.markdown
Normal file
51
source/_posts/2025-03-27-motionblinds-joins-wwha.markdown
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Motionblinds joins Works with Home Assistant"
|
||||
description: "We’re plugging a blind spot in our Works with program and opening up some exciting options for our community."
|
||||
date: 2025-03-27 00:00:01
|
||||
date_formatted: "March 27, 2025"
|
||||
author: Miranda Bishop
|
||||
comments: true
|
||||
categories: Announcements
|
||||
og_image: /images/blog/2025-03-motionblinds/art.jpg
|
||||
---
|
||||
|
||||
<img src='/images/blog/2025-03-motionblinds/art.jpg' style='border: 0;box-shadow: none;' alt="Motionblinds wwha logo">
|
||||
|
||||
We're excited to announce the latest partner to join the [Works with Home Assistant](https://partner.home-assistant.io/) program is [Motionblinds](https://motionblinds.com/)! And if you're wondering what type of products they provide, the clue really is in the name!
|
||||
|
||||
Motionblinds is the first Works with Home Assistant partner to certify smart window blinds. This brings us closer to a future where you can build a smart home exclusively with certified devices that give the best possible experience with Home Assistant. Smart blinds integrated with Home Assistant unlock powerful automations, such as blinds opening when you get home, or closing sun-facing blinds on warmer days to keep your home cool. <!--more-->
|
||||
|
||||
## Shades of innovation
|
||||
|
||||
Motionblinds is a brand from Coulisse, a company from the Netherlands, that has been making window coverings for the past 30 years. Motionblinds are available worldwide and are known for their beautiful, customizable designs, coupled with smart technology. They not only provide all-in-one smart blinds, but also upgrade kits for your existing roller blinds, which is great for cutting down on waste.
|
||||
|
||||
## A window to the future
|
||||
|
||||
<img src='/images/blog/2025-03-motionblinds/powered-by-eve.png' style='border: 0;box-shadow: none;' alt="Motionblinds powered by Eve">
|
||||
|
||||
Motionblinds are definitely a leader in the smart blinds space and have partnered with [Eve](https://www.evehome.com/en) Systems, a leading provider of smart home devices, headquartered in Germany and part of ABB. This partnership brings Matter-over-Thread to their motors. Together, we have tested and certified these Matter-certified Eve Motionblinds. It's easy to tell which are part of Works with Home Assistant, as they'll include the "powered by Eve" badge.
|
||||
|
||||
Motionblinds that use Bluetooth and 433MHz technology will also be getting the 'Works With Home Assistant' treatment, as we're certifying motors that connect via the Motionblinds Matter Bridge (CM-55). This provides an excellent local way to connect this additional range of products to Home Assistant, allowing many more Motionblinds motors to give the best experience with Home Assistant. Check out our [Motionblinds integrations page](https://next.home-assistant.io/integrations/motionblinds_matter/) for a full list of the different motors that are certified. Be aware that standalone, Bluetooth-integrated blinds are not currently certified under the 'Works With' program.
|
||||
|
||||
<p class='img'><img src='/images/blog/2025-03-motionblinds/matter-hub.jpg' style='border: 0;box-shadow: none;' alt="Motionblinds Matter Bridge">Motionblinds Matter Bridge (CM-55)</p>
|
||||
|
||||
Home Assistant was recently [Matter certified](/blog/2025/03/10/matter-certification/), and with these blinds certified to work with Home Assistant, end-to-end these devices are going to give a seamless experience. Every Works with Home Assistant product is tested by our team, works locally, and the brand promises to provide great long-term support.
|
||||
|
||||
### Which devices have been certified?
|
||||
|
||||
- [Roller Shades](https://motionblinds.com/products/roller)
|
||||
- [Double Roller Shades](https://motionblinds.com/products/double-roller)
|
||||
- [Venetian Blinds](https://motionblinds.com/products/venetian)
|
||||
- [Honeycomb Shades](https://motionblinds.com/products/honeycomb)
|
||||
- [Curtains](https://motionblinds.com/products/curtains)
|
||||
- [Pleated Shades](https://motionblinds.com/products/pleated)
|
||||
- [Vertical Blinds](https://motionblinds.com/products/vertical)
|
||||
- [Roman Shades](https://motionblinds.com/products/roman)
|
||||
- [Upgrade Kit for Roller Blinds](https://motionblinds.com/products/upgrade-kit)
|
||||
|
||||
All these devices connect directly to Home Assistant via Matter, provided you pick the "powered by Eve" option, or combine with the Matter bridge. We're big fans of open standards like Matter, because they bring great benefits when it comes to local control, privacy, and long-term support.
|
||||
|
||||
## Closing thoughts 🪟
|
||||
|
||||
A big thanks to both Coulisse and Eve for putting their time and effort into bringing Motionblinds to the Works with Home Assistant program. This is really plugging a blind spot in our Works with program by covering new ground and opening up some exciting options for our community 😃.
|
BIN
source/images/blog/2025-03-motionblinds/art.jpg
Normal file
BIN
source/images/blog/2025-03-motionblinds/art.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 282 KiB |
BIN
source/images/blog/2025-03-motionblinds/matter-hub.jpg
Normal file
BIN
source/images/blog/2025-03-motionblinds/matter-hub.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
BIN
source/images/blog/2025-03-motionblinds/powered-by-eve.png
Normal file
BIN
source/images/blog/2025-03-motionblinds/powered-by-eve.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
BIN
source/images/frontpage/sotoh-2025.webp
Normal file
BIN
source/images/frontpage/sotoh-2025.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
BIN
source/images/integrations/mcp_server/cursor-lights-control.png
Normal file
BIN
source/images/integrations/mcp_server/cursor-lights-control.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
@ -728,6 +728,10 @@ join: ',' | split: ',' -%}
|
||||
let value = select.value;
|
||||
|
||||
if (value !== '#') {
|
||||
// Clear any existing brand filter when selecting a category
|
||||
if (id === 'cat') {
|
||||
removeQueryFromURL('brands');
|
||||
}
|
||||
setQueryURL(id, value);
|
||||
} else {
|
||||
// clear current filter
|
||||
|
@ -8,7 +8,7 @@ related:
|
||||
title: Restoring a backup
|
||||
---
|
||||
|
||||
[Backups](/common-tasks/general/#backups) stored on Home Assistant Cloud are always encrypted using [AES-128](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard). For backups stored on other [backup locations](/common-tasks/general/#defining-backup-locations), you can choose whether or not to encrypt the backup. The backup emergency kit contains information needed to [restore the backup](/common-tasks/general/#restoring-a-backup), such as the encryption key and metadata about the related backup.
|
||||
[Backups](/common-tasks/general/#backups) stored on Home Assistant Cloud are always encrypted using [AES-128](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard). For backups stored on [other backup locations](/common-tasks/general/#defining-backup-locations), you can choose whether to encrypt the backup. The backup emergency kit contains information needed to [restore the backup](/common-tasks/general/#restoring-a-backup), such as the encryption key and metadata about the related backup.
|
||||
|
||||
## What is encryption, and why are backups encrypted?
|
||||
|
||||
|
@ -31,7 +31,7 @@ To have the fastest processing voice assistant experience, follow these steps:
|
||||
3. To view the settings, go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and under **Assist**, select **Home Assistant Cloud**.
|
||||

|
||||
|
||||
- **Troubleshooting**: If you do not see any assistants here, you are not using the default configuration. In this case, you need to add the following to your `configuration.yaml` file:
|
||||
- **Troubleshooting**: If you do not see any assistants here, you are not using the [default configuration](/integrations/default_config). In this case, you need to add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
Loading…
x
Reference in New Issue
Block a user