mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-22 16:56:50 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
94b781d575
16
CODEOWNERS
16
CODEOWNERS
@ -10,6 +10,7 @@
|
||||
# Pages
|
||||
source/_integrations/3_day_blinds.markdown @starkillerOG
|
||||
source/_integrations/abode.markdown @shred86
|
||||
source/_integrations/acaia.markdown @zweckj
|
||||
source/_integrations/accuweather.markdown @bieniu
|
||||
source/_integrations/acmeda.markdown @atmurray
|
||||
source/_integrations/acomax.markdown @starkillerOG
|
||||
@ -288,7 +289,7 @@ source/_integrations/fortios.markdown @kimfrellsen
|
||||
source/_integrations/foscam.markdown @krmarien
|
||||
source/_integrations/freebox.markdown @hacf-fr @Quentame
|
||||
source/_integrations/freedompro.markdown @stefano055415
|
||||
source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 @mib1185
|
||||
source/_integrations/fritz.markdown @AaronDavidSchneider @chemelli74 @mib1185
|
||||
source/_integrations/fritzbox.markdown @mib1185 @flabbamann
|
||||
source/_integrations/fritzbox_callmonitor.markdown @cdce8p
|
||||
source/_integrations/fronius.markdown @farmio
|
||||
@ -314,6 +315,7 @@ source/_integrations/geonetnz_volcano.markdown @exxamalte
|
||||
source/_integrations/gios.markdown @bieniu
|
||||
source/_integrations/github.markdown @timmo001 @ludeeus
|
||||
source/_integrations/glances.markdown @engrbm87
|
||||
source/_integrations/go2rtc.markdown @home-assistant/core
|
||||
source/_integrations/goalzero.markdown @tkdrob
|
||||
source/_integrations/gogogate2.markdown @vangorra
|
||||
source/_integrations/goodwe.markdown @mletenay @starkillerOG
|
||||
@ -334,7 +336,7 @@ source/_integrations/gree.markdown @cmroche
|
||||
source/_integrations/greeneye_monitor.markdown @jkeljo
|
||||
source/_integrations/group.markdown @home-assistant/core
|
||||
source/_integrations/guardian.markdown @bachya
|
||||
source/_integrations/habitica.markdown @ASMfreaK @leikoilja @tr4nt0r
|
||||
source/_integrations/habitica.markdown @tr4nt0r
|
||||
source/_integrations/hardware.markdown @home-assistant/core
|
||||
source/_integrations/harmony.markdown @ehendrix23 @bdraco @mkeesey @Aohzan
|
||||
source/_integrations/hassio.markdown @home-assistant/supervisor
|
||||
@ -377,6 +379,7 @@ source/_integrations/humidifier.markdown @home-assistant/core @Shulyaka
|
||||
source/_integrations/hunterdouglas_powerview.markdown @bdraco @kingy444 @trullock
|
||||
source/_integrations/hurrican_shutters_wholesale.markdown @starkillerOG
|
||||
source/_integrations/husqvarna_automower.markdown @Thomas55555
|
||||
source/_integrations/husqvarna_automower_ble.markdown @alistair23
|
||||
source/_integrations/huum.markdown @frwickst
|
||||
source/_integrations/hvv_departures.markdown @vigonotion
|
||||
source/_integrations/hydrawise.markdown @dknowles2 @thomaskistler @ptcryan
|
||||
@ -466,6 +469,7 @@ source/_integrations/legrand.markdown @cgtobi
|
||||
source/_integrations/lektrico.markdown @lektrico
|
||||
source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
|
||||
source/_integrations/lg_netcast.markdown @Drafteed @splinter98
|
||||
source/_integrations/lg_thinq.markdown @LG-ThinQ-Integration
|
||||
source/_integrations/lidarr.markdown @tkdrob
|
||||
source/_integrations/lifx.markdown @Djelibeybi
|
||||
source/_integrations/light.markdown @home-assistant/core
|
||||
@ -549,7 +553,7 @@ source/_integrations/mystrom.markdown @fabaff
|
||||
source/_integrations/myuplink.markdown @pajzo @astrandb
|
||||
source/_integrations/nam.markdown @bieniu
|
||||
source/_integrations/nanoleaf.markdown @milanmeu @joostlek
|
||||
source/_integrations/neato.markdown @Santobert
|
||||
source/_integrations/nasweb.markdown @nasWebio
|
||||
source/_integrations/nederlandse_spoorwegen.markdown @YarmoM
|
||||
source/_integrations/ness_alarm.markdown @nickw444
|
||||
source/_integrations/nest.markdown @allenporter
|
||||
@ -573,6 +577,7 @@ source/_integrations/nissan_leaf.markdown @filcole
|
||||
source/_integrations/nmbs.markdown @thibmaek
|
||||
source/_integrations/noaa_tides.markdown @jdelaney72
|
||||
source/_integrations/nobo_hub.markdown @echoromeo @oyvindwe
|
||||
source/_integrations/nordpool.markdown @gjohansson-ST
|
||||
source/_integrations/notify.markdown @home-assistant/core
|
||||
source/_integrations/notify_events.markdown @matrozov @papajojo
|
||||
source/_integrations/notion.markdown @bachya
|
||||
@ -712,7 +717,6 @@ source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Orhideous
|
||||
source/_integrations/roon.markdown @pavoni
|
||||
source/_integrations/rpi_power.markdown @shenxn @swetoast
|
||||
source/_integrations/rss_feed_template.markdown @home-assistant/core
|
||||
source/_integrations/rtsp_to_webrtc.markdown @allenporter
|
||||
source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565
|
||||
source/_integrations/russound_rio.markdown @noahhusby
|
||||
source/_integrations/ruuvi_gateway.markdown @akx
|
||||
@ -765,6 +769,7 @@ source/_integrations/sinch.markdown @bendikrb
|
||||
source/_integrations/siren.markdown @home-assistant/core @raman325
|
||||
source/_integrations/sisyphus.markdown @jkeljo
|
||||
source/_integrations/sky_hub.markdown @rogerselwyn
|
||||
source/_integrations/sky_remote.markdown @dunnmj @saty9
|
||||
source/_integrations/skybell.markdown @tkdrob
|
||||
source/_integrations/slack.markdown @tkdrob @fletcherau
|
||||
source/_integrations/sleepiq.markdown @mfugate1 @kbickar
|
||||
@ -848,7 +853,7 @@ source/_integrations/tautulli.markdown @ludeeus @tkdrob
|
||||
source/_integrations/technove.markdown @Moustachauve
|
||||
source/_integrations/tedee.markdown @patrickhilker @zweckj
|
||||
source/_integrations/tellduslive.markdown @fredrike
|
||||
source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core
|
||||
source/_integrations/template.markdown @PhracturedBlue @home-assistant/core
|
||||
source/_integrations/tesla_fleet.markdown @Bre77
|
||||
source/_integrations/tesla_wall_connector.markdown @einarhauks
|
||||
source/_integrations/teslemetry.markdown @Bre77
|
||||
@ -895,6 +900,7 @@ source/_integrations/ukraine_alarm.markdown @PaulAnnekov
|
||||
source/_integrations/unifi.markdown @Kane610
|
||||
source/_integrations/unifi_direct.markdown @tofuSCHNITZEL
|
||||
source/_integrations/unifiled.markdown @florisvdk
|
||||
source/_integrations/unifiprotect.markdown @RaHehl
|
||||
source/_integrations/upb.markdown @gwww
|
||||
source/_integrations/upc_connect.markdown @pvizeli @fabaff
|
||||
source/_integrations/upcloud.markdown @scop
|
||||
|
6
Gemfile
6
Gemfile
@ -10,8 +10,8 @@ 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.81.0'
|
||||
gem 'rubocop', '1.69.0'
|
||||
gem 'sass-embedded', '1.83.0'
|
||||
gem 'rubocop', '1.69.2'
|
||||
gem 'ruby-lsp', '0.22.1'
|
||||
gem 'rackup', '2.2.1'
|
||||
end
|
||||
@ -24,7 +24,7 @@ group :jekyll_plugins do
|
||||
end
|
||||
|
||||
gem 'sinatra', '4.1.1'
|
||||
gem 'nokogiri', '1.16.7'
|
||||
gem 'nokogiri', '1.17.2'
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library
|
||||
|
40
Gemfile.lock
40
Gemfile.lock
@ -29,10 +29,10 @@ GEM
|
||||
ffi (1.17.0-arm64-darwin)
|
||||
ffi (1.17.0-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.29.0-arm64-darwin)
|
||||
google-protobuf (4.29.1-arm64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.29.0-x86_64-linux)
|
||||
google-protobuf (4.29.1-x86_64-linux)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
@ -66,7 +66,7 @@ GEM
|
||||
nokogiri (~> 1.12)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
json (2.8.2)
|
||||
json (2.9.0)
|
||||
kramdown (2.5.1)
|
||||
rexml (>= 3.3.9)
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
@ -76,14 +76,14 @@ GEM
|
||||
listen (3.9.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
logger (1.6.1)
|
||||
logger (1.6.3)
|
||||
mercenary (0.4.0)
|
||||
multi_json (1.15.0)
|
||||
mustermann (3.0.3)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.16.7-arm64-darwin)
|
||||
nokogiri (1.17.2-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.16.7-x86_64-linux)
|
||||
nokogiri (1.17.2-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
parallel (1.26.3)
|
||||
parser (3.3.6.0)
|
||||
@ -108,22 +108,22 @@ GEM
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rbs (3.6.1)
|
||||
rbs (3.7.0)
|
||||
logger
|
||||
regexp_parser (2.9.2)
|
||||
rexml (3.3.9)
|
||||
regexp_parser (2.9.3)
|
||||
rexml (3.4.0)
|
||||
rouge (4.5.1)
|
||||
rubocop (1.69.0)
|
||||
rubocop (1.69.2)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (>= 3.17.0)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 2.4, < 3.0)
|
||||
rubocop-ast (>= 1.36.1, < 2.0)
|
||||
regexp_parser (>= 2.9.3, < 3.0)
|
||||
rubocop-ast (>= 1.36.2, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.36.2)
|
||||
rubocop-ast (1.37.0)
|
||||
parser (>= 3.3.1.0)
|
||||
ruby-lsp (0.22.1)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
@ -134,9 +134,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.81.0-arm64-darwin)
|
||||
sass-embedded (1.83.0-arm64-darwin)
|
||||
google-protobuf (~> 4.28)
|
||||
sass-embedded (1.81.0-x86_64-linux-gnu)
|
||||
sass-embedded (1.83.0-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.28)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
@ -151,7 +151,7 @@ GEM
|
||||
rack-protection (= 4.1.1)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11670)
|
||||
sorbet-runtime (0.5.11694)
|
||||
stringex (2.8.6)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -161,7 +161,7 @@ GEM
|
||||
tzinfo-data (1.2024.2)
|
||||
tzinfo (>= 1.0.0)
|
||||
unicode-display_width (2.6.0)
|
||||
webrick (1.9.0)
|
||||
webrick (1.9.1)
|
||||
|
||||
PLATFORMS
|
||||
arm64-darwin-23
|
||||
@ -174,12 +174,12 @@ DEPENDENCIES
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-toc (= 0.19.0)
|
||||
nokogiri (= 1.16.7)
|
||||
nokogiri (= 1.17.2)
|
||||
rackup (= 2.2.1)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.69.0)
|
||||
rubocop (= 1.69.2)
|
||||
ruby-lsp (= 0.22.1)
|
||||
sass-embedded (= 1.81.0)
|
||||
sass-embedded (= 1.83.0)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.1.1)
|
||||
|
@ -107,9 +107,9 @@ social:
|
||||
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 11
|
||||
current_minor_version: 12
|
||||
current_patch_version: 3
|
||||
date_released: 2024-11-22
|
||||
date_released: 2024-12-13
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
@ -221,7 +221,7 @@ toc:
|
||||
installation:
|
||||
container: "ghcr.io/home-assistant/home-assistant"
|
||||
versions:
|
||||
python: "3.12"
|
||||
python: "3.13"
|
||||
types:
|
||||
odroid:
|
||||
board: ODROID
|
||||
|
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.0",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.3.0",
|
||||
"textlint": "^14.4.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
@ -416,66 +416,66 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-tester": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.3.0.tgz",
|
||||
"integrity": "sha512-K1TbF1Kko1XAKCWuFY/TkZO521ZWv2DAHu4JYsqqY/PnqqySHZorjSG78EfYBhkVq1E3ktprlAJmp8GNmpoYWQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.4.0.tgz",
|
||||
"integrity": "sha512-pCKEUDaZVvvj/uZOTTUgU1tTkNsK+ufNs4Xx5BsBAqy+E0aAJJ47c8h2WIoL/MJniK6ZLctsDIwaZ4z9rUvrsQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0",
|
||||
"@textlint/ast-node-types": "^14.4.0",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.3.0.tgz",
|
||||
"integrity": "sha512-1YA5M2T+KeIHC0br5FwhkTwuLEUxkf5K5QtXJmXSF0Mf06ZlLfZ44RMlKYD3ElmzG+TmpmFdKIs4FzFSJRtslw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.4.0.tgz",
|
||||
"integrity": "sha512-P6UrqKlXd9Lm0kJ1O8vyQU0/btXULiUHhE5nLZMnTNfgZYG3VasQ9BUyDHJn19O4PhUrIzZJusMi1XFcb3Y46Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0"
|
||||
"@textlint/ast-node-types": "^14.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/config-loader": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.3.0.tgz",
|
||||
"integrity": "sha512-z7g3dArU7EhWHHy0lvMDQF+6TWDppvqkXh7J6YRTXnq00ftEC1MbHGfrsZNJF1av6rBJ8r8nquKyCoeYZBz7cw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.4.0.tgz",
|
||||
"integrity": "sha512-TCYVhQ+wP/Gs7P5BDAfyRpLJ5tohicTSwQapd/xPjByXFtGx8xlsbLQHTWcodFFpty1O57KRPRsRDhvuTAA2bQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/kernel": "^14.3.0",
|
||||
"@textlint/module-interop": "^14.3.0",
|
||||
"@textlint/resolver": "^14.3.0",
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/utils": "^14.3.0",
|
||||
"@textlint/kernel": "^14.4.0",
|
||||
"@textlint/module-interop": "^14.4.0",
|
||||
"@textlint/resolver": "^14.4.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"@textlint/utils": "^14.4.0",
|
||||
"debug": "^4.3.4",
|
||||
"rc-config-loader": "^4.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/feature-flag": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.3.0.tgz",
|
||||
"integrity": "sha512-wWKbyHpmwxEEcyoBMd2u6GB5bw7vJ2a68HmBRknUABFL7vvp8JAzf4D/I2cLXgV06OoMbWE+hnV2CInayJiCpA==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.4.0.tgz",
|
||||
"integrity": "sha512-aSphE9jw4QTjiCOe1tbtZ2NZpMRbYoUTi2E62KQ/mcVnwGC+Jk671wNSoUJzR/YNaLo63cQ7OKhHrBEb55t+Iw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/fixer-formatter": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.3.0.tgz",
|
||||
"integrity": "sha512-xbSH4vb1wdjJngHxpfBu65Y+uTZdU/w0b7Hd6TJ7Q5FaZD1pftyUHGisLMN+xX3V56t28e+qAkSBTQ4Mq4UdYQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.4.0.tgz",
|
||||
"integrity": "sha512-DijDPVZgHkHKAEsYVXFZaP0TJGLDtirok/hgi1N1N3MW5ZtQpIHOW8DgKaJcmDZvPQjkTxzBaUp8rzBxHG8MaQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/module-interop": "^14.3.0",
|
||||
"@textlint/resolver": "^14.3.0",
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/module-interop": "^14.4.0",
|
||||
"@textlint/resolver": "^14.4.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"diff": "^5.2.0",
|
||||
@ -485,40 +485,40 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.3.0.tgz",
|
||||
"integrity": "sha512-RLkIJjP+GtrLmjLtAYSCORKF55z5wtw2E9Vb4h3RSQLjzYopQ3s9N1LbUwLJDr8tz0AphtOb6t1efF3d+NIemw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.4.0.tgz",
|
||||
"integrity": "sha512-zH19vQ0ns4n8kPr+csjPnV5yPip6gKs08GvDJBQlX3AEbRQkaSw4H5kBCE+R0D9qDkuqt7xe8Z8Tdm7E7aUvGw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0",
|
||||
"@textlint/ast-tester": "^14.3.0",
|
||||
"@textlint/ast-traverse": "^14.3.0",
|
||||
"@textlint/feature-flag": "^14.3.0",
|
||||
"@textlint/source-code-fixer": "^14.3.0",
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/utils": "^14.3.0",
|
||||
"@textlint/ast-node-types": "^14.4.0",
|
||||
"@textlint/ast-tester": "^14.4.0",
|
||||
"@textlint/ast-traverse": "^14.4.0",
|
||||
"@textlint/feature-flag": "^14.4.0",
|
||||
"@textlint/source-code-fixer": "^14.4.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"@textlint/utils": "^14.4.0",
|
||||
"debug": "^4.3.4",
|
||||
"fast-equals": "^4.0.3",
|
||||
"structured-source": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/linter-formatter": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.3.0.tgz",
|
||||
"integrity": "sha512-9Rzq0y9Qi6L43To9GIUd1kh/7Pq202qU9nQ15atyK5BlvPFlzJnc98X/hCE1tN+uDriZnxu4v4Vs7+mHFT9VPw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.4.0.tgz",
|
||||
"integrity": "sha512-rnFwSSXDdsQHGVaRoJJYocVSYn4ZEPUFj78JYDZcR+TRYVDzRJEblFhwsiXl/gHD3L5g2RnBcLbxwZIW+xwtIA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@azu/format-text": "^1.0.2",
|
||||
"@azu/style-format": "^1.0.1",
|
||||
"@textlint/module-interop": "^14.3.0",
|
||||
"@textlint/resolver": "^14.3.0",
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/module-interop": "^14.4.0",
|
||||
"@textlint/resolver": "^14.4.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"js-yaml": "^3.14.1",
|
||||
@ -531,12 +531,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.3.0.tgz",
|
||||
"integrity": "sha512-z4UMKFh3r5KtylPt5OO6su7DScU+fMZ7Qv5LTrJNaOqcmOzFho64Y1I26BJv86f8BC+MUYP0kza5MZGaR2LYQA==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.4.0.tgz",
|
||||
"integrity": "sha512-y6UxfRZ00w8XQ1jfKhR0jcQd7qbYaQgo3aERWbJR0Gxxl0T+G+TKBS12pdnUFOTshgSTEgqlvrE+Zt3lTl0e1A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0",
|
||||
"@textlint/ast-node-types": "^14.4.0",
|
||||
"debug": "^4.3.4",
|
||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||
"neotraverse": "^0.6.15",
|
||||
@ -548,9 +548,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/bail": {
|
||||
@ -780,79 +780,79 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/module-interop": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.3.0.tgz",
|
||||
"integrity": "sha512-Adxkx8GSFVPhCZiveTD/u66f5T3W6yIlPUsKi7ZLar7ahYI/D4P/XfA0RNhgMF3xM4uw+vNrer2LcY4KY7cUfw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.4.0.tgz",
|
||||
"integrity": "sha512-QdtNDJc+XqDIbP9bwt7DryqE+vFbbIB28462VFWtXcHCJJoFTlmCJ1133SXLe14IOT9P04T9LMNhgv4d2v31gg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/resolver": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.3.0.tgz",
|
||||
"integrity": "sha512-v17n8eUJPNaE9SblemmEnAeIcGHBfn/hEMuZe0iSl3hLyJueDM7zP3GP54FoWyuTIMyQqPt21l6+48+BjJ9tfQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.4.0.tgz",
|
||||
"integrity": "sha512-4jNO6Lbyiqtf22205XPpSYG4BNCZrvpmLzO2JUpYMe5C5g0z4l06Yqei3gJWYjdBLlL+fIxDcdW0hyIvvSFpUg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/source-code-fixer": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.3.0.tgz",
|
||||
"integrity": "sha512-KJJoiN1Ha9R6tJrg3KHnYkq0s86D53PUjYxxCYJxo9Q8yTcXx+aXPspvgW+qGD+qcQxjarqbLl6m8uRlbyrg3Q==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.4.0.tgz",
|
||||
"integrity": "sha512-S2QBZ3pUQQeH01kgfKa1Tmusz0A2/sm3QkW1Uhag9x5v5OKYC4W3070eliY+p0I88nxmqy72M/j+78sDutUcuw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.3.0.tgz",
|
||||
"integrity": "sha512-wCjJmpwlff/wPsGaECBbNn0hPfiCnbr4mPJKFE59M3aeISoH3zqITCx9RCVPBYbYHzqTWmHPNLYI7egVIbZgrA==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.4.0.tgz",
|
||||
"integrity": "sha512-MA3z7cksYpjXRPIFFcbB6CM5UbNFD53GJ823qo74ImU2MRlIrs9dcR9yQ76YxbYZ9OazPzUNGg5AS9tbp3Exbg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0"
|
||||
"@textlint/ast-node-types": "^14.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.3.0.tgz",
|
||||
"integrity": "sha512-0lyYK/SUOgww+sxBtvjjsinHKMvFZUpLKvxCepymGlTyuOTYo7QmjmfhLc5G97PChOpUG41dpQoZt9miohQT1A==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.4.0.tgz",
|
||||
"integrity": "sha512-J6RoZSC7MOr9WYqyG4s1BZxExiHfS6fMmiQuWGJB133vDDrY+wmiaFm/C6Li59YPdPivddxSDo7v8z2zyayW1A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/markdown-to-ast": "^14.3.0"
|
||||
"@textlint/markdown-to-ast": "^14.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-text": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.3.0.tgz",
|
||||
"integrity": "sha512-XpgyWTy2CqoKGuBrEsBJOVJqoXREAB6RFjPaa5bHvdvjwzU+EFqCNR9RXXs3Iov1ip/AaXDz/JeB4IYk6zj8GQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.4.0.tgz",
|
||||
"integrity": "sha512-ut3+MhOh9taPUKLaTT4nyil3MLnAbo60BYGWIz6cPrv3YMyvN/eCw4jW4VscvV1WTik19lzmDCBfSpfnmz/PiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/text-to-ast": "^14.3.0"
|
||||
"@textlint/text-to-ast": "^14.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.3.0.tgz",
|
||||
"integrity": "sha512-zvPCQUpK1hOQA6Bg4XLYvKbOvFcQT65Nm25wsDdOGRgOvZbUzA+DJkiaH9Z8DAaJx83tTknIeLl4qwu97Hw1Ew==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.4.0.tgz",
|
||||
"integrity": "sha512-ZxZkiFxaXfjoaa/gzbGyUWR0mSMLChDaQrYJ0sPToCQ0QXUG3w5sIT2hCGZyBfNRc8/g0eH+KbDejD014oBPBQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0"
|
||||
"@textlint/ast-node-types": "^14.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/utils": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.3.0.tgz",
|
||||
"integrity": "sha512-Q7bKiPobKCDXM5z+xByLZzSjcOBhvlDufQGHNgHR8EFie2/AFc68cN8RYCY0MmwCMBMuHuYaOzfIOpQpK9oTcQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.4.0.tgz",
|
||||
"integrity": "sha512-/5QSdYa042z0SX+10+UPzHlMT2nWuRBkouf90/P60nycpFmWn0waIbVoARDlekzmaqB4BitbP7NGjjPmEju4bA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/concat-stream": {
|
||||
@ -6036,24 +6036,24 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.3.0.tgz",
|
||||
"integrity": "sha512-oarGVGz7KwRd08QOvNDSffzjEyfS5mnGp7ZAxr799QC0HDBp0VM358WGyxdaboDXav1RlkQ3TWkvOvHBBMXCXw==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.4.0.tgz",
|
||||
"integrity": "sha512-OutNGN573fI48bRdikgz+PAjCN/P4DRK9dLGxkNkqBlWmwbxLpvBxw1qspZEFVVLoNH94ra65NDfCwMvCosvdA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.3.0",
|
||||
"@textlint/ast-traverse": "^14.3.0",
|
||||
"@textlint/config-loader": "^14.3.0",
|
||||
"@textlint/feature-flag": "^14.3.0",
|
||||
"@textlint/fixer-formatter": "^14.3.0",
|
||||
"@textlint/kernel": "^14.3.0",
|
||||
"@textlint/linter-formatter": "^14.3.0",
|
||||
"@textlint/module-interop": "^14.3.0",
|
||||
"@textlint/resolver": "^14.3.0",
|
||||
"@textlint/textlint-plugin-markdown": "^14.3.0",
|
||||
"@textlint/textlint-plugin-text": "^14.3.0",
|
||||
"@textlint/types": "^14.3.0",
|
||||
"@textlint/utils": "^14.3.0",
|
||||
"@textlint/ast-node-types": "^14.4.0",
|
||||
"@textlint/ast-traverse": "^14.4.0",
|
||||
"@textlint/config-loader": "^14.4.0",
|
||||
"@textlint/feature-flag": "^14.4.0",
|
||||
"@textlint/fixer-formatter": "^14.4.0",
|
||||
"@textlint/kernel": "^14.4.0",
|
||||
"@textlint/linter-formatter": "^14.4.0",
|
||||
"@textlint/module-interop": "^14.4.0",
|
||||
"@textlint/resolver": "^14.4.0",
|
||||
"@textlint/textlint-plugin-markdown": "^14.4.0",
|
||||
"@textlint/textlint-plugin-text": "^14.4.0",
|
||||
"@textlint/types": "^14.4.0",
|
||||
"@textlint/utils": "^14.4.0",
|
||||
"debug": "^4.3.4",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
"get-stdin": "^5.0.1",
|
||||
@ -6178,9 +6178,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.3.0.tgz",
|
||||
"integrity": "sha512-baDgKcA8MeO55I2+LNc9FTAJ/aUKlxN6DgM5B511tT9kDwECXRk+iYi/H+oaP25z5Zq3FqrL6n7mmyfFWDUWkQ==",
|
||||
"version": "14.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.4.0.tgz",
|
||||
"integrity": "sha512-tEZbu6dMU8lysTpFrrW9WzN/hWnfGoanOX1WmdKZ7LgqUVDdsd9Q8RNLlQLOgl7ev1C7O3T4ruzl4rdYI5he1g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint/node_modules/brace-expansion": {
|
||||
|
@ -15,7 +15,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.0",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.3.0",
|
||||
"textlint": "^14.4.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
|
@ -444,16 +444,21 @@ header .breadcrumbs {
|
||||
h1 {
|
||||
font-family: $heading-font;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-size: 1.33rem;
|
||||
font-size: 1.3125rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: -0.012em;
|
||||
line-height: 40px;
|
||||
color: #212121;
|
||||
margin: -8px 0 0;
|
||||
|
||||
iconify-icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
&.text {
|
||||
padding: 24px;
|
||||
font-size: 1rem;
|
||||
|
||||
h1 {
|
||||
padding: 0px 0px 12px;
|
||||
@ -517,7 +522,7 @@ a.material-card:hover {
|
||||
.img {
|
||||
background-color: $grayLighter;
|
||||
width: calc(100%-8px);
|
||||
aspect-ratio: 120/63;
|
||||
// aspect-ratio: 120/63;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
border-radius: 8px;
|
||||
@ -656,21 +661,34 @@ a.material-card:hover {
|
||||
.blog-date {
|
||||
white-space: nowrap;
|
||||
}
|
||||
ol {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.highlight-blog-post {
|
||||
font-size: 2rem;
|
||||
line-height: 1.15;
|
||||
padding: 15px;
|
||||
display: block;
|
||||
padding: 24px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
transition: background-color 0.5s;
|
||||
background-color: #038fc7;
|
||||
transition: background-color 0.5s, box-shadow 0.5s;
|
||||
background-color: $primary-color;
|
||||
display: flex;
|
||||
padding: 20px 12px 20px 24px;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
align-self: stretch;
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
margin: 10px 0 0 0;
|
||||
|
||||
&.large {
|
||||
font-size: 2.25rem;
|
||||
line-height: 1.33333;
|
||||
&.lead {
|
||||
font-family: $heading-font;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.15;
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@ -682,6 +700,71 @@ a.material-card:hover {
|
||||
}
|
||||
}
|
||||
|
||||
.highlight-detail-post {
|
||||
padding: 24px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
transition: background-color 0.5s, box-shadow 0.5s;
|
||||
background-color: #006895;
|
||||
box-shadow: inset 0 0 64px #038fc7;
|
||||
font-size: 1.5rem;
|
||||
|
||||
.caption {
|
||||
padding-bottom: 24px;
|
||||
|
||||
p {
|
||||
font-family: $heading-font;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
line-height: 1.2;
|
||||
|
||||
strong {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.detail-feature {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 16px;
|
||||
align-self: stretch;
|
||||
|
||||
p {
|
||||
font-size: 0.875rem;
|
||||
|
||||
&.lead {
|
||||
font-size: 1rem;
|
||||
margin-bottom: 4px;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
iconify-icon {
|
||||
padding: 8px;
|
||||
border-radius: 50%;
|
||||
background: rgba(0, 0, 0, 0.15);
|
||||
color: white;
|
||||
}
|
||||
|
||||
}
|
||||
animation-name: box-shadow-color;
|
||||
animation-duration: 5s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
|
||||
@keyframes box-shadow-color {
|
||||
from {
|
||||
box-shadow: inset 0 0 64px hsl(197, 97%, 40%);
|
||||
}
|
||||
to {
|
||||
box-shadow: inset 0 0 64px hsl(159, 100%, 35%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.events {
|
||||
padding: 16px;
|
||||
|
||||
@ -726,15 +809,16 @@ a.material-card:hover {
|
||||
|
||||
.picture-promo {
|
||||
display: block;
|
||||
padding-top: 30%;
|
||||
padding-top: 33%;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
text-decoration: none;
|
||||
border: none;
|
||||
|
||||
.caption {
|
||||
padding: 8px 12px 12px;
|
||||
background-color: rgba(0, 0, 0, 0.54);
|
||||
padding: 48px 24px 24px 24px;
|
||||
background: rgb(0,0,0);
|
||||
background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%);
|
||||
color: white;
|
||||
border-bottom-left-radius: 16px;
|
||||
border-bottom-right-radius: 16px;
|
||||
@ -743,16 +827,19 @@ a.material-card:hover {
|
||||
align-items: center;
|
||||
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
line-height: 1.2em;
|
||||
font-family: $heading-font;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
margin-top: 4px;
|
||||
line-height: 1.4em;
|
||||
font-size: 12px;
|
||||
margin-top: 8px;
|
||||
line-height: 1.5rem;
|
||||
font-size: 1rem;
|
||||
font-weight: initial;
|
||||
text-shadow: 0px 4px 16px rgba(0, 0, 0, 0.33);
|
||||
opacity: .8;
|
||||
}
|
||||
|
||||
svg {
|
||||
@ -762,6 +849,21 @@ a.material-card:hover {
|
||||
min-width: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
&.picture-top {
|
||||
padding-top: 0;
|
||||
padding-bottom: 33%;
|
||||
|
||||
.caption {
|
||||
padding: 24px 24px 48px 24px;
|
||||
background: rgb(0,0,0);
|
||||
background: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%);
|
||||
border-top-left-radius: 16px;
|
||||
border-top-right-radius: 16px;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.supported-brands {
|
||||
@ -781,8 +883,101 @@ a.material-card:hover {
|
||||
}
|
||||
}
|
||||
|
||||
.getting-started {
|
||||
text-align: center;
|
||||
|
||||
.badge {
|
||||
display: flex;
|
||||
padding: 2px 8px 2px 8px;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
border-radius: 4px;
|
||||
background: #E8E6F0;
|
||||
font-family: $heading-font;
|
||||
font-size: 1rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.getting-started-grid {
|
||||
display: flex;
|
||||
padding: 48px 0 48px 24px;
|
||||
align-items: flex-start;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.getting-started-device {
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
|
||||
img {
|
||||
box-shadow: none;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2rem;
|
||||
font-weight: 700;
|
||||
line-height: 133%;
|
||||
text-transform: none;
|
||||
letter-spacing: -.75px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
opacity: .9;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 6px 20px;
|
||||
background: $primary-color;
|
||||
color: white;
|
||||
font-size: 1rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
#HA_Yellow, #Raspberry_Pi {
|
||||
padding-top: 96px;
|
||||
}
|
||||
|
||||
#HA_Yellow .badge {
|
||||
color: $orange;
|
||||
}
|
||||
#HA_Green .badge {
|
||||
color: $green;
|
||||
}
|
||||
#Raspberry_Pi .badge {
|
||||
color: $primary-color;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $palm-end) {
|
||||
.getting-started-grid {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.getting-started-device {
|
||||
padding-bottom: 64px;
|
||||
}
|
||||
|
||||
#HA_Yellow, #Raspberry_Pi {
|
||||
padding-top: 0;
|
||||
order: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.sponsors-and-press {
|
||||
margin-top: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.seen-press {
|
||||
@ -791,12 +986,6 @@ a.material-card:hover {
|
||||
gap: 24px;
|
||||
margin: 48px 0;
|
||||
|
||||
h2 {
|
||||
grid-column: 1/-1;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a {
|
||||
aspect-ratio: 1;
|
||||
}
|
||||
@ -913,17 +1102,6 @@ dt:hover a.title-link {
|
||||
}
|
||||
}
|
||||
|
||||
.hero-buttons {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.hero-buttons a {
|
||||
margin: 0 30px 10px 0;
|
||||
|
||||
&:last-child {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Article formatting
|
||||
|
||||
|
@ -1,50 +1,85 @@
|
||||
.feature-cards {
|
||||
display: grid;
|
||||
letter-spacing: normal;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 32px;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 24px;
|
||||
margin: auto;
|
||||
|
||||
.card {
|
||||
border-radius: 8px;
|
||||
border-radius: 24px;
|
||||
background: white;
|
||||
padding: 24px;
|
||||
display: inline-block;
|
||||
width: calc(100% - 16px);
|
||||
vertical-align: top;
|
||||
|
||||
.card-header {
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.6;
|
||||
font-family: $heading-font;
|
||||
font-size: 1.3125rem;
|
||||
line-height: 1.625rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-bottom: 8px;
|
||||
height: 62px;
|
||||
flex-direction: column;
|
||||
padding-bottom: 16px;
|
||||
color: $primary-color;
|
||||
font-weight: 600;
|
||||
|
||||
iconify-icon {
|
||||
font-size: 2.5rem;
|
||||
margin-right: 8px;
|
||||
border-radius: 64px;
|
||||
background: var(--Light-primary-container, #CCEFFE);
|
||||
align-self: flex-start;
|
||||
padding: 16px;
|
||||
margin-bottom: 12px;
|
||||
color: rgba(0, 127, 168, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.card-content {
|
||||
padding-bottom: 24px;
|
||||
font-size: 1rem;
|
||||
|
||||
p:last-of-type,
|
||||
ul {
|
||||
margin-bottom: 32px;
|
||||
p {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
p:last-of-type {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.button {
|
||||
float: right;
|
||||
font-size: 1rem;
|
||||
padding: 8px 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sub-title {
|
||||
letter-spacing: normal;
|
||||
font-weight: bold;
|
||||
font-size: 42px;
|
||||
line-height: 49px;
|
||||
margin: 32px;
|
||||
font-family: $heading-font;
|
||||
font-size: 6rem;
|
||||
font-weight: 800;
|
||||
line-height: normal;
|
||||
letter-spacing: -1.92px;
|
||||
margin: 96px 0 24px !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sub-title + p {
|
||||
margin: -24px 0 48px 0;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $lap-end) {
|
||||
.feature-cards {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.sub-title {
|
||||
font-size: 4rem;
|
||||
line-height: 1.1 !important;
|
||||
margin-bottom: 32px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $palm-end) {
|
||||
.feature-cards {
|
||||
width: 95%;
|
||||
|
@ -4,10 +4,10 @@
|
||||
.hero {
|
||||
position: relative;
|
||||
background: rgb(24,188,242);
|
||||
background: linear-gradient(0deg, hsl(195, 89%, 52%) 0%, hsla(195, 89%, 52%, 0.8) 100%);
|
||||
background: linear-gradient(340deg, hsl(200deg, 100%, 50%) 0%, hsl(195deg, 100%, 50%) 50%, hsl(185deg, 100%, 50%) 100%);
|
||||
padding-bottom: 0;
|
||||
margin-top: -88px;
|
||||
margin-bottom: 24px;
|
||||
margin-bottom: 48px;
|
||||
padding-top: 88px;
|
||||
overflow: hidden;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
||||
@ -24,14 +24,20 @@
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 6em;
|
||||
line-height: .8;
|
||||
background: linear-gradient(135deg, rgba(255, 255, 255, 1) 0%, hsl(174.86, 100%, 75%) 100%);
|
||||
font-size: 8rem;
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
line-height: 1;
|
||||
letter-spacing: -2.56px;
|
||||
background: linear-gradient(125deg, #FFF 29.3%, #80FFF4 89.99%);
|
||||
background-clip: text;
|
||||
color: transparent;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
|
||||
.line2 {
|
||||
line-height: 1.25;
|
||||
margin-top: -1.75rem;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,30 +46,103 @@
|
||||
color: $grayLighter;
|
||||
font-size: .65em;
|
||||
}
|
||||
.lead {
|
||||
font-size: 1.25rem;
|
||||
&.lead {
|
||||
font-size: 1.5rem !important;
|
||||
margin-bottom: 24px;
|
||||
line-height: 2.25rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-buttons a {
|
||||
font-family: $heading-font;
|
||||
font-size: 1.1rem;
|
||||
color: white;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
padding: 8px 24px 8px 0;
|
||||
margin: 0 4px 0 0;
|
||||
border-radius: 32px;
|
||||
.hero-buttons {
|
||||
display: flex;
|
||||
margin: 8px 0px 24px 0px;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
|
||||
&.primary {
|
||||
background-color: $link-color;
|
||||
font-size: 2rem;
|
||||
a {
|
||||
font-size: 1.1rem;
|
||||
color: white;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
padding: 8px 0 8px 0;
|
||||
margin: 0 12px 0 12px;
|
||||
border-radius: 32px;
|
||||
|
||||
&.primary {
|
||||
font-family: $heading-font;
|
||||
background-color: $link-color;
|
||||
text-transform: uppercase;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
padding: 8px 16px 8px 24px;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hero-welcome {
|
||||
padding-left: 64px;
|
||||
}
|
||||
|
||||
.hero-socialproof {
|
||||
display: flex;
|
||||
padding-top: 48px;
|
||||
align-items: center;
|
||||
gap: 32px;
|
||||
|
||||
a {
|
||||
opacity: 0.75;
|
||||
transition: .5s opacity;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.hero-github-top-project {
|
||||
display: flex;
|
||||
padding: 12px;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #F2F4F9;
|
||||
width: 330px;
|
||||
|
||||
p {
|
||||
color: #FFF;
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.25rem;
|
||||
margin: 0;
|
||||
|
||||
strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hero-socialproof-asseenon {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
|
||||
p {
|
||||
margin: 8px 0 0 0;
|
||||
align-self: stretch;
|
||||
font-size: .875rem;
|
||||
font-weight: 700;
|
||||
padding: 8px 20px 8px 28px;
|
||||
margin-bottom: 16px;
|
||||
opacity: .75;
|
||||
}
|
||||
|
||||
.logos {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,10 +160,12 @@
|
||||
border-radius: 48px;
|
||||
border: 12px double white;
|
||||
box-shadow: 24px 64px 64px hsla(220, 100%, 25%, .5);
|
||||
// animation-name: box-shadow-color;
|
||||
// animation-duration: 3s;
|
||||
// animation-name: floaty-demo;
|
||||
// animation-duration: 4s;
|
||||
// animation-iteration-count: infinite;
|
||||
// animation-direction: alternate;
|
||||
// animation-timing-function: linear;
|
||||
// transform: rotateY(346deg) skewY(3deg);
|
||||
|
||||
@media only screen and (max-height: 840px) {
|
||||
border-bottom: 0;
|
||||
@ -97,6 +178,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes floaty-demo {
|
||||
from {
|
||||
transform: translateY(-25px) rotateY(346deg) skewY(3deg);
|
||||
}
|
||||
to {
|
||||
transform: translateY(0) rotateY(346deg) skewY(3deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes box-shadow-color {
|
||||
from {
|
||||
box-shadow: 24px 64px 64px hsla(240, 100%, 25%, .5);
|
||||
@ -106,10 +196,85 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $lap-end) {
|
||||
|
||||
@media only screen and (max-width: 1280px) {
|
||||
.hero .hero-socialproof, .hero .hero-buttons {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1240px) {
|
||||
.hero {
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
font-size: 6rem;
|
||||
letter-spacing: -1.92px;
|
||||
|
||||
.line2 {
|
||||
margin-top: -1rem;
|
||||
}
|
||||
}
|
||||
|
||||
p.lead {
|
||||
font-size: 1.25rem !important;
|
||||
line-height: 1.75rem !important;
|
||||
}
|
||||
|
||||
.hero-buttons a {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
.hero .hero-welcome {
|
||||
padding-left: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.hero .hero-welcome {
|
||||
padding-left: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 760px) {
|
||||
.hero {
|
||||
text-align: center;
|
||||
|
||||
.hero-socialproof, .hero-buttons {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
min-height: 940px;
|
||||
.flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#HAdemo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#HAdemoScreenshot {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
padding-top: 48px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $lap-end) {
|
||||
.hero {
|
||||
img {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
h1 {
|
||||
font-size: 4.5rem;
|
||||
letter-spacing: -1.92px;
|
||||
|
||||
.line2 {
|
||||
margin-top: -1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.lead {
|
||||
@ -123,21 +288,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 760px) {
|
||||
.hero {
|
||||
min-height: 940px;
|
||||
.flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#HAdemo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#HAdemoScreenshot {
|
||||
display: block;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -241,6 +241,11 @@ automation:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% note %}
|
||||
Listing above and below together means the numeric_state has to be between the two values.
|
||||
In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again.
|
||||
{% endnote %}
|
||||
|
||||
When the `attribute` option is specified the trigger is compared to the given `attribute` instead of the state of the entity.
|
||||
|
||||
{% raw %}
|
||||
@ -288,11 +293,6 @@ automation:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% note %}
|
||||
Listing above and below together means the numeric_state has to be between the two values.
|
||||
In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again.
|
||||
{% endnote %}
|
||||
|
||||
Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities
|
||||
that contain a numeric value, can be used in the `above` and `below` thresholds.
|
||||
However, the comparison will only be made when the entity specified in the trigger is updated. This would look like:
|
||||
@ -1108,7 +1108,7 @@ blueprint:
|
||||
## Merging lists of triggers
|
||||
|
||||
{% caution %}
|
||||
This feature requires Home Assistant version 2024.10 or later. If using this in a blueprint, set the `min_version` for the blueprint to at least this version.
|
||||
This feature requires Home Assistant version 2024.10 or later. If using this in a blueprint, set the `min_version` for the blueprint to at least this version. See the [blueprint schema documentation](/docs/blueprint/schema/#min_version) for more details.
|
||||
{% endcaution %}
|
||||
|
||||
In some advanced cases (like for blueprints with trigger selectors), it may be necessary to insert a second list of triggers into the main trigger list. This can be done by adding a dictionary in the main trigger list with the sole key `triggers`, and the value for that key contains a second list of triggers. These will then be flattened into a single list of triggers. For example:
|
||||
|
@ -57,7 +57,7 @@ description:
|
||||
domain:
|
||||
description: >
|
||||
The domain in which this blueprint is used. Currently, only
|
||||
[`automation`](/docs/automation/yaml/), `script` and [`template`](/docs/integrations/template/#using-blueprints) are supported.
|
||||
[`automation`](/docs/automation/yaml/), `script` and [`template`](/integrations/template/#using-blueprints) are supported.
|
||||
type: string
|
||||
required: true
|
||||
author:
|
||||
@ -157,7 +157,7 @@ by their name; not by section and name.
|
||||
A section is differentiated from an input by the presence of an additional `input` key within that section.
|
||||
|
||||
{% caution %}
|
||||
Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions.
|
||||
Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions. See [this section](/docs/blueprint/schema/#min_version) for more details.
|
||||
{% endcaution %}
|
||||
|
||||
The full configuration for a section is below:
|
||||
|
@ -718,10 +718,10 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
|
||||
### Time
|
||||
|
||||
`now()`, `relative_time()`, `today_at()`, and `utcnow()` are not supported in [limited templates](#limited-templates).
|
||||
`now()`, `time_since()`, `time_until()`, `today_at()`, and `utcnow()` are not supported in [limited templates](#limited-templates).
|
||||
|
||||
- `now()` returns a datetime object that represents the current time in your time zone.
|
||||
- You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3.8/library/datetime.html#datetime.datetime) attributes and functions.
|
||||
- You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3/library/datetime.html#datetime.datetime) attributes and functions.
|
||||
- Using `now()` will cause templates to be refreshed at the start of every new minute.
|
||||
- `utcnow()` returns a datetime object of the current time in the UTC timezone.
|
||||
- For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`.
|
||||
@ -742,7 +742,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
- `as_datetime(value, default)` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. When the input is already a datetime object it will be returned as is. in case the input is a datetime.date object, midnight will be added as time. This function can also be used as a filter.
|
||||
- `as_timestamp(value, default)` converts a datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
|
||||
- `as_local()` converts a datetime object to local time. This function can also be used as a filter.
|
||||
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
|
||||
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
|
||||
- `time_since(datetime, precision)` converts a datetime object into its human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
|
||||
If the datetime is in the future, returns 0 seconds.
|
||||
A precision of 0 returns all available units, default is 1.
|
||||
@ -1180,7 +1180,7 @@ See: [Python regular expression operations](https://docs.python.org/3/library/re
|
||||
|
||||
- Test `string is match(find, ignorecase=False)` will match the find expression at the beginning of the string using regex.
|
||||
- Test `string is search(find, ignorecase=False)` will match the find expression anywhere in the string using regex.
|
||||
- Filter `string|regex_replace(find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex.
|
||||
- Filter `string|regex_replace(find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex. Access to the matched groups in `replace` is possible with `'\\1'`, `'\\2'`, etc.
|
||||
- Filter `value | regex_findall(find='', ignorecase=False)` will find all regex matches of the find expression in `value` and return the array of matches.
|
||||
- Filter `value | regex_findall_index(find='', index=0, ignorecase=False)` will do the same as `regex_findall` and return the match at index.
|
||||
|
||||
|
@ -576,9 +576,8 @@ It contains the following fields:
|
||||
|
||||
## If-then
|
||||
|
||||
This {% term action %} allow you to conditionally (`if`) run a sequence of actions (`then`)
|
||||
and optionally supports running other sequence when the condition didn't
|
||||
pass (`else`).
|
||||
This {% term action %} allows you to conditionally (`if`), based on or more [conditions](/docs/scripts/conditions/) (which are `and` combined),
|
||||
run a sequence of actions (`then`) and optionally supports running other sequence when the condition didn't pass (`else`).
|
||||
|
||||
```yaml
|
||||
script:
|
||||
|
@ -109,7 +109,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:microphone" %} Voice assistants
|
||||
{% icon "mdi:microphone" %} {% active_link /voice_control/ Voice assistants %}
|
||||
{% if root == 'voice_control' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% icon "mdi:comment-processing-outline" %} {% active_link /voice_control/ Assist up and running %}
|
||||
|
@ -11,7 +11,7 @@ All data on the target disk will be overwritten!
|
||||
{% endcaution %}
|
||||
|
||||
{% important %}
|
||||
The storage ca pacity of the external data disk must be larger than the storage capacity of the existing (boot) disk.
|
||||
The storage capacity of the external data disk must be larger than the storage capacity of the existing (boot) disk.
|
||||
{% endimportant %}
|
||||
|
||||
{% important %}
|
||||
|
@ -40,6 +40,43 @@
|
||||
<a class="button" href="/docs/automation">EXPLORE AUTOMATIONS</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:view-dashboard" %}
|
||||
Versatile dashboards
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
Home Assistant dashboards allow you to display information about your smart home. Dashboards are customizable and provide a powerful way to manage your home from your mobile or desktop.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Easily create and customize your dashboards with drag-and-drop.</li>
|
||||
<li>Different card types to visualize your data and control your smart home devices.</li>
|
||||
</ul>
|
||||
<a class="button" href="/dashboards">EXPLORE DASHBOARDS</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:microphone" %}
|
||||
Assist, our voice assistant
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
Assist allows you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Customize your voice assistant and experiment with AI conversations.</li>
|
||||
<li>Use Assist everywhere on your mobile phone, tablets, smartwatches, and even old-school telephones.</li>
|
||||
</ul>
|
||||
<a class="button" href="/voice_control/">EXPLORE ASSIST</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:puzzle" %}
|
||||
@ -59,6 +96,7 @@
|
||||
<a class="button" href="/addons">EXPLORE ADD-ONS</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:shield-home-outline" %}
|
||||
@ -74,6 +112,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:cellphone" %}
|
||||
@ -122,6 +161,46 @@
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:cast-connected" %}
|
||||
Home Assistant Cast
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
Take over all the screens. Home Assistant Cast makes every TV a display for dashboards.
|
||||
</p>
|
||||
|
||||
<a
|
||||
class="button"
|
||||
href="/blog/2019/08/06/home-assistant-cast/"
|
||||
aria-label="Learn more about Home Assistant Cast"
|
||||
>
|
||||
LEARN MORE
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% icon "mdi:nfc-variant" %}
|
||||
NFC Tags
|
||||
</div>
|
||||
<div class="card-content">
|
||||
<p>
|
||||
Use NFC to bring music to your life or automate the mundane.
|
||||
</p>
|
||||
|
||||
<a
|
||||
class="button"
|
||||
href="/blog/2020/09/15/home-assistant-tags/"
|
||||
aria-label="Learn more about Home Assistant Tags"
|
||||
>
|
||||
LEARN MORE
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
52
source/_includes/custom/getting-started.html
Normal file
52
source/_includes/custom/getting-started.html
Normal file
@ -0,0 +1,52 @@
|
||||
<section class="grid getting-started">
|
||||
<div class="grid__item one-whole">
|
||||
<h2 class="sub-title">Let's get started.</h2>
|
||||
<p class="lead">A variety of options for pragmatists and tinkerers alike.</p>
|
||||
</div>
|
||||
|
||||
<div class="getting-started-grid grid__item one-whole">
|
||||
|
||||
<div class="getting-started-device" id="Raspberry_Pi">
|
||||
<div class="content">
|
||||
<div class="badge">Easy</div>
|
||||
<img src="/images/frontpage/raspberry-pi.png" alt="Raspberry Pi"/>
|
||||
<div>
|
||||
<h3>Raspberry Pi</h3>
|
||||
<p>A low-cost DIY solution to get started with Home Assistant</p>
|
||||
</div>
|
||||
<a class="button" aria-label="Learn more about installing Home Assistant on Raspberry Pi" href="/installation/raspberrypi">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="getting-started-device" id="HA_Green">
|
||||
<div class="content">
|
||||
<div class="badge">Easiest</div>
|
||||
<img src="/images/frontpage/ha-green.png" alt="Home Assistant Green"/>
|
||||
<div>
|
||||
<h3>Home Assistant Green</h3>
|
||||
<p>The easiest way to get started with Home Assistant</p>
|
||||
</div>
|
||||
<a class="button" aria-label="Learn more about Home Assistant Green" href="/green">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="getting-started-device" id="HA_Yellow">
|
||||
<div class="content">
|
||||
<div class="badge">Intermediate</div>
|
||||
<img src="/images/frontpage/ha-yellow.png" alt="Home Assistant Yellow"/>
|
||||
<div>
|
||||
<h3>Home Assistant Yellow</h3>
|
||||
<p>The powerful way to run and customize Home Assistant to your needs</p>
|
||||
</div>
|
||||
<a class="button" aria-label="Learn more about Home Assistant Yellow" href="/yellow">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid__item one-half palm-one-whole">
|
||||
<h2>Need more options?</h2>
|
||||
<p>Home Assistant can repurpose and be installed on various hardware, such as an Odroid or a generic x86-64 machine.</p>
|
||||
<p>The Home Assistant Operating System allows you to install Home Assistant on these devices even if you have little to no Linux experience.</p>
|
||||
<a class="button" href="/installation#install-on-other-hardware">Get started</a>
|
||||
</div>
|
||||
</section>
|
193
source/_includes/custom/news.html
Normal file
193
source/_includes/custom/news.html
Normal file
@ -0,0 +1,193 @@
|
||||
|
||||
<!-- Left column begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- Recent blog posts -->
|
||||
<div class="recent-posts material-card text">
|
||||
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
|
||||
|
||||
<ol>
|
||||
{% for post in site.posts limit: 4 %}
|
||||
<li class="post" style="display: grid; font-size: 16px">
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
<small class="blog-date">{{ post.date_formatted }}</small>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<!-- OHF notice -->
|
||||
<a href="https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/" class="material-card highlight-blog-post">
|
||||
<div>
|
||||
<p class="lead">We are a non-profit and can't be sold or acquired.</p>
|
||||
<p>Home Assistant is a project by the Open Home Foundation.</p>
|
||||
</div>
|
||||
<iconify-icon icon="mdi:chevron-right"></iconify-icon>
|
||||
</a>
|
||||
|
||||
<a
|
||||
class="material-card highlight-blog-post"
|
||||
href="/blog/2016/01/19/perfect-home-automation/"
|
||||
>
|
||||
<p class="lead">Read our founder's vision for the perfect home automation</p>
|
||||
<iconify-icon icon="mdi:chevron-right"></iconify-icon>
|
||||
</a>
|
||||
|
||||
<div class="join-community material-card text">
|
||||
<h1>{% icon "simple-icons:amazonalexa" %} Alexa, turn on the lights</h1>
|
||||
|
||||
Use Alexa to control Home Assistant.
|
||||
|
||||
<div class="links">
|
||||
<a href="/cloud/">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="join-community material-card text">
|
||||
<h1>{% icon "simple-icons:googleassistant" %} Ok Google, turn off the AC</h1>
|
||||
|
||||
Use Google Assistant to control Home Assistant.
|
||||
|
||||
<div class="links">
|
||||
<a href="/cloud/">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="join-community material-card text">
|
||||
<h1>{% icon "mdi:people-group-outline" %} Join The Community</h1>
|
||||
|
||||
Our vibrant community is very active and super friendly. We love to talk and share our passion for home automation.
|
||||
|
||||
<div class="links">
|
||||
<a href="https://community.home-assistant.io">{% icon "simple-icons:discourse" %} Forums</a>
|
||||
<a href="/join-chat/">{% icon "simple-icons:discord" %} Chat</a>
|
||||
<a href="/newsletter/">{% icon "mdi:email-newsletter" %} Newsletter</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- Left column ends -->
|
||||
|
||||
|
||||
<!-- Center content begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- All landing pages have a block. -->
|
||||
<a
|
||||
href="https://www.youtube.com/watch?v=ZgoaoTpIhm8&ab_channel=HomeAssistant"
|
||||
class="material-card picture-promo"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
aria-label="Don't miss our Voice: Chapter 8 live stream on YouTube"
|
||||
style="
|
||||
background-image: url(/images/frontpage/feature-voice-c8.jpg);
|
||||
background-size: cover;
|
||||
padding-top: 55%;
|
||||
"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
Product launch incoming
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
Join our Voice Chapter 8 live stream and see our new hardware ushering in the era of open voice.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{% assign pages_by_date = site.pages | sort: "date" | reverse %} {% for
|
||||
page in pages_by_date %} {% if page.layout == "landingpage" and
|
||||
page.frontpage != false %}
|
||||
<a
|
||||
class="material-card picture-promo"
|
||||
href="{{page.url}}"
|
||||
style="
|
||||
background-image: url({{page.frontpage_image | default:page.og_image}});
|
||||
background-size: cover;
|
||||
background-color: #41bdf5;
|
||||
"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
{{page.title}}
|
||||
</div>
|
||||
<div class="subtitle">{{page.description}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{% endif %} {% endfor %}
|
||||
|
||||
</div>
|
||||
<!-- Center sidebar ends -->
|
||||
|
||||
|
||||
<!-- Right content begins -->
|
||||
<div class="grid__item one-third lap-one-half palm-one-whole">
|
||||
|
||||
<!-- State of the Open Home -->
|
||||
<a
|
||||
href="/blog/2024/04/24/state-of-the-open-home-2024/"
|
||||
class="material-card picture-promo"
|
||||
style="
|
||||
background-image: url(/images/frontpage/feature-sotoh2024.jpg);
|
||||
background-size: cover;
|
||||
padding-top: 55%;
|
||||
"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
State of the Open Home 2024
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
Learn about our progress so far and also the roadmap for this year.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<!-- Assist -->
|
||||
<a
|
||||
class="material-card picture-promo picture-top"
|
||||
href="/voice_control/"
|
||||
style="
|
||||
background-image: url(/images/frontpage/feature-voice.jpg);
|
||||
background-size: cover;
|
||||
padding-bottom: 35%;
|
||||
"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
Control your home with Assist
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
Our private, insanely fast, voice assistant running on affordable
|
||||
hardware. Now supporting wake words.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<!-- Merch store -->
|
||||
<a
|
||||
class="material-card picture-promo"
|
||||
href="https://home-assistant-store.creator-spring.com/"
|
||||
style="background-image: url(/images/merchandise/shirt-frontpage.jpg)"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
Join the Home Assistant t-shirt revolution!
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
Look sharp in blue, black or gray. Wearing a HA t-shirt is okay.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<!-- Right content ends -->
|
101
source/_includes/custom/press.html
Normal file
101
source/_includes/custom/press.html
Normal file
@ -0,0 +1,101 @@
|
||||
<section class="grid sponsors-and-press">
|
||||
<div class="grid__item one-whole">
|
||||
<h2 class="sub-title">In the press</h2>
|
||||
<p class="lead">Trusted by home automation experts and more than a million households.</p>
|
||||
</div>
|
||||
|
||||
<div class="seen-press grid__item one-whole">
|
||||
<a
|
||||
href="https://www.theverge.com/2021/9/16/22678088/home-assistant-amber-smart-home-hub-specs-release-date-price"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img alt="The Verge logo" src="/images/press/theverge.svg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://arstechnica.com/information-technology/2021/03/how-to-achieve-smart-home-nirvana-or-home-automation-without-subscription/"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="ArsTechnica.com logo"
|
||||
src="/images/press/arstechnica.svg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://tweakers.net/reviews/8704/paulus-schoutsen-home-assistant-concurreert-met-alles-wat-via-de-cloud-gaat.html"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img alt="Tweakers.net logo" src="/images/press/tweakers.png"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.youtube.com/watch?v=x7pSkVarixU"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="Linus Tech Tips logo"
|
||||
class="square"
|
||||
src="/images/press/ltt.svg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.troyhunt.com/iot-unravelled-part-1-its-a-mess-but-then-theres-home-assistant/"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
class="square round"
|
||||
alt="Troy Hunt logo"
|
||||
src="/images/press/troyhunt.jpg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.tomshardware.com/news/raspberry-pi-home-assistant-amber"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="Tom's Hardware logo"
|
||||
src="/images/press/tomshardware.svg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.producthunt.com/posts/home-assistant"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="ProductHunt.com logo"
|
||||
src="/images/press/producthunt.com.png"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.linux.com/news/home-assistant-python-approach-home-automation-video"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img alt="Linux.com logo" src="/images/press/linux.com.png"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://opensource.com/article/17/7/home-automation-primer"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="OpenSource.com logo"
|
||||
src="/images/press/opensource.com.svg"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="http://www.linux-magazine.com/Issues/2017/203/Home-Assistant"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img
|
||||
alt="Linux Magazine logo"
|
||||
src="/images/press/LinuxMagazine.png"
|
||||
/></div></a>
|
||||
|
||||
<a
|
||||
href="https://www.heise.de/select/ct/2017/26/1513910625909214"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
><div class="material-card"><img alt="Ct logo" src="/images/press/ct.png"
|
||||
/></div></a>
|
||||
</div>
|
||||
</section>
|
@ -1,6 +1,6 @@
|
||||
<h1>Awaken<br><span class="line2">your home</span></h1>
|
||||
<p class="lead">
|
||||
{{ site.description }}
|
||||
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.
|
||||
</p>
|
||||
|
||||
{%- assign tot = 0 -%}
|
||||
@ -14,20 +14,33 @@
|
||||
{%- endif %}
|
||||
{%- endfor -%}
|
||||
|
||||
<p class='hero-buttons'>
|
||||
<a href='/installation/' class="primary">Get started <iconify-icon inline icon='mdi:arrow-right'></iconify-icon></a><br/>
|
||||
<a href='https://demo.home-assistant.io' target='_blank'>View live demos</a>
|
||||
<a href='/integrations/'>Browse {{ tot | minus: 1 | divided_by: 100 | round | times: 100 }}+ integrations</a>
|
||||
</p>
|
||||
<a href="https://github.blog/news-insights/octoverse/octoverse-2024/#the-state-of-open-source" target="_blank" class="hero-github-badge">
|
||||
<img
|
||||
src="/images/github-top-project-2024-mobile.png"
|
||||
class="mobile"
|
||||
alt="GitHub's top open source project by contributors in 2024"
|
||||
>
|
||||
<img
|
||||
src="/images/github-top-project-2024-desktop.png"
|
||||
class="desktop"
|
||||
alt="GitHub's top open source project by contributors in 2024"
|
||||
>
|
||||
</a>
|
||||
<div class='hero-buttons'>
|
||||
<a href='/installation/' class="primary">Get started <iconify-icon inline icon='mdi:arrow-right'></iconify-icon></a>
|
||||
<div>
|
||||
<a href='https://demo.home-assistant.io' target='_blank'>View live demos</a>
|
||||
<a href='/integrations/'>Browse {{ tot | minus: 1 | divided_by: 100 | round | times: 100 }}+ integrations</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hero-socialproof">
|
||||
<a href="https://github.blog/news-insights/octoverse/octoverse-2024/#the-state-of-open-source" target="_blank" class="">
|
||||
<div class="hero-github-top-project">
|
||||
<img src="/images/frontpage/hero-github-logo.svg" alt="GitHub logo"/>
|
||||
<img src="/images/frontpage/hero-trophy.svg" alt="Top open source project trophy"/>
|
||||
<p><strong>Top open source project</strong> by contributors in 2024</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<!-- <div class="hero-socialproof-asseenon">
|
||||
<p>As seen on</p>
|
||||
<div class="logos">
|
||||
<a href="https://www.theverge.com/23744526/smart-home-assistant-how-to-automation" target="_blank">
|
||||
<img src="/images/frontpage/hero-socialproof-theverge.svg" alt="The Verge"/>
|
||||
</a>
|
||||
<a href="https://arstechnica.com/information-technology/2021/03/how-to-achieve-smart-home-nirvana-or-home-automation-without-subscription/" target="_blank">
|
||||
<img src="/images/frontpage/hero-socialproof-arstechnica.svg" alt="ArsTechnica" height="48"/>
|
||||
</a>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
|
@ -1,17 +1,32 @@
|
||||
<div class="hero">
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid flex">
|
||||
<div class="grid__item flex__item three-fifths lap-one-whole palm-one-whole">
|
||||
{% include custom/welcome.html %}
|
||||
<div class="hero-welcome grid__item flex__item three-fifths lap-one-whole palm-one-whole">
|
||||
{% include custom/welcome.html %}
|
||||
</div>
|
||||
<div class="grid__item flex__item two-fifths lap-one-whole palm-one-whole" style="text-align: center;">
|
||||
<div class="hero-demo grid__item flex__item two-fifths lap-one-whole palm-one-whole" style="text-align: center;">
|
||||
<iframe id="HAdemo" title="Home Assistant Demo"
|
||||
src="https://demo.home-assistant.io/?frontpage">
|
||||
</iframe>
|
||||
|
||||
<a id="HAdemoScreenshot" href='https://demo.home-assistant.io/' target='_blank'>
|
||||
<img src="/images/hero_screenshot.png" alt="Home Assistant screenshot">
|
||||
<img src="/images/frontpage/hero_screenshot.png" alt="Home Assistant screenshot">
|
||||
</a>
|
||||
|
||||
<!-- <script>
|
||||
document.addEventListener('mousemove', (event) => {
|
||||
const phone = document.querySelector('#HAdemo');
|
||||
const { innerWidth } = window;
|
||||
const mouseX = event.clientX;
|
||||
|
||||
// Calculate rotation angle (-30 to 30 degrees based on cursor position)
|
||||
const rotation = ((mouseX / innerWidth) - 0.8) * 30;
|
||||
const skew = -((mouseX / innerWidth) - 0.8) * 4;
|
||||
|
||||
// Apply rotation
|
||||
phone.style.transform = `rotateY(${rotation}deg) skewY(${skew}deg)`;
|
||||
});
|
||||
</script> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -12,6 +12,7 @@ ha_domain: acaia
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- button
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_bluetooth: true
|
||||
ha_codeowners:
|
||||
@ -23,7 +24,7 @@ The **Acaia** {% term integration %} allows you to control [Acaia](https://acaia
|
||||
|
||||
If your machine is within Bluetooth range to your Home Assistant host and the [Bluetooth](/integrations/bluetooth) integration is fully loaded, the scale should be discovered automatically. If you are configuring the device manually, your scale needs to be turned on during setup.
|
||||
|
||||
Once the integration is setup, Home Assistant will try to connect to your scale every 15 seconds. This means there is sometimes a small delay between you turning the scale on and Home Assistant connecting to it.
|
||||
Once the integration is set up, Home Assistant will try to connect to your scale every 15 seconds. This means there is sometimes a small delay between you turning the scale on and Home Assistant connecting to it.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
@ -54,8 +55,10 @@ Device:
|
||||
|
||||
The following devices have been tested successfully with this integration:
|
||||
|
||||
- Lunar (manufactured after 2021)
|
||||
- Lunar
|
||||
- Pyxis
|
||||
- Pearl
|
||||
- Pearl S
|
||||
|
||||
If you have successfully tested this integration with another Acaia model, please let us know by enhancing this documentation, or by opening an issue in GitHub.
|
||||
|
||||
|
@ -9,7 +9,6 @@ ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@bieniu'
|
||||
ha_domain: accuweather
|
||||
ha_quality_scale: platinum
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](https://www.acer.com/).
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The **Actiontec** {% term integration %} allows you to detect presence by looking at devices connected to an [Actiontec](https://www.actiontec.com/) device.
|
||||
|
@ -26,6 +26,7 @@ related:
|
||||
title: Configuration file
|
||||
ha_codeowners:
|
||||
- '@mrpasztoradam'
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.com/en-en/products/automation/twincat/) and other devices implementing this interface.
|
||||
|
@ -16,7 +16,6 @@ ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@Bre77'
|
||||
ha_domain: advantage_air
|
||||
ha_quality_scale: platinum
|
||||
ha_platforms:
|
||||
- binary_sensor
|
||||
- climate
|
||||
|
@ -27,7 +27,7 @@ ha_zeroconf: true
|
||||
The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/).
|
||||
|
||||
{% important %}
|
||||
In order for the device to be set up or discovered by Home Assistant, the firmware version should be at least 3.1.1.
|
||||
In order for the device to be set up or discovered by Home Assistant, the [firmware](https://www.airgradient.com/documentation/firmwares) version should be at least 3.1.1.
|
||||
{% endimportant %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -9,7 +9,6 @@ ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@bieniu'
|
||||
ha_domain: airly
|
||||
ha_quality_scale: platinum
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates.
|
||||
|
@ -14,6 +14,7 @@ ha_codeowners:
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output.
|
||||
|
@ -20,6 +20,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `amcrest` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) or Dahua IP camera or doorbell in Home Assistant.
|
||||
|
@ -13,6 +13,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `ampio` air quality platform will query the open data API of [ampio.pl](http://smog.ampio.pl/) to monitor air quality sensor station.
|
||||
|
@ -10,7 +10,6 @@ ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@tronikos'
|
||||
- '@Drafteed'
|
||||
ha_quality_scale: platinum
|
||||
ha_domain: androidtv_remote
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](https://en.anel.eu/index.htm?src=/produkte/produkte.htm) devices on firmware 6.x and older. [ANEL PwrCtrl](https://en.anel.eu/index.htm?src=/produkte/produkte.htm) devices on firmware 7.x are not supported.
|
||||
|
@ -29,7 +29,7 @@ The **Anthropic** {% term integrations %} adds a conversation agent powered by [
|
||||
|
||||
Controlling Home Assistant is done by providing the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI can provide you information about your devices and control them.
|
||||
|
||||
Legal note: Anthropic currently limits the API usage to organizations only, more info here: [Can I use the Claude API for individual use?](https://support.anthropic.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use)
|
||||
Legal note: Individuals and hobbyists are welcome to use the Anthropic API [for personal use](https://support.anthropic.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use), however, please note that the use of the API is subject to their [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms), regardless of whether you are an individual or representing a company.
|
||||
|
||||
This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
|
||||
|
||||
@ -49,29 +49,23 @@ The Anthropic API key is used to authenticate requests to the Anthropic API. To
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Instructions:
|
||||
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:
|
||||
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:
|
||||
description: If enabled, the recommended model and settings are chosen.
|
||||
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
If you choose not to use the recommended settings, you can configure the following options:
|
||||
|
||||
{% configuration_basic %}
|
||||
|
||||
Model:
|
||||
description: The model that will complete your prompt. See [models](https://docs.anthropic.com/en/docs/about-claude/models#model-names) for additional details and options.
|
||||
|
||||
Maximum Tokens to Return in Response:
|
||||
description: The maximum number of tokens to generate before stopping. Note that our models may stop _before_ reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate. Different models have different maximum values for this parameter. See [models](https://docs.anthropic.com/en/docs/models-overview) for details.
|
||||
|
||||
Temperature:
|
||||
description: Amount of randomness injected into the response. Use `temperature` closer to `0.0` for analytical / multiple choice, and closer to `1.0` for creative and generative tasks. Note that even with `temperature` of `0.0`, the results will not be fully deterministic.
|
||||
|
||||
{% endconfiguration_basic %}
|
||||
|
@ -9,6 +9,7 @@ ha_codeowners:
|
||||
ha_domain: apache_kafka
|
||||
ha_iot_class: Local Push
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The **Apache Kafka** {% term integration %} sends all state changes to a
|
||||
|
@ -16,7 +16,6 @@ ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
||||
[apcupsd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) on the APC device.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The [Apprise service](https://github.com/caronc/apprise/) is an all-in-one solution to open up Home Assistant to _just about_ every Notification platform (such as Amazon SNS, Discord, Telegram, Slack, MSTeams, Twilio, etc.)
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `aprs` [(Automatic Packet Reporting System)](https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System) device tracker integration connects to the [APRS-IS](http://aprs-is.net/) network for tracking amateur radio devices.
|
||||
|
@ -15,6 +15,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The AquaLogic integration provides connectivity to a Hayward/Goldline AquaLogic/ProLogic pool controller. Note that an RS-485 to Ethernet adapter connected to the pool controller is required.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `aquostv` platform allows you to control a [Sharp Aquos TV](https://global.sharp/aquos/index.html).
|
||||
|
@ -17,6 +17,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: hub
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This platform allows you to detect presence by looking at connected devices to an Arris TG2492LG router.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This platform allows you to detect presence by looking at connected devices to an [Aruba Instant](https://www.arubanetworks.com/products/networking/aruba-instant/) device.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `arwn` sensor platform is a client for the [Ambient Radio Weather Network](https://github.com/sdague/arwn) project. This collects weather station data and makes it available in an MQTT subtree.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `aten_pe` {% term integration %} lets you control [ATEN Rack PDUs](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/) from Home Assistant.
|
||||
|
@ -15,6 +15,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `atome` sensor platform is retrieving the consumption of your home from the [Direct Energy Atome electric meter](https://total.direct-energie.com/particuliers/electricite/compteur-linky/atome).
|
||||
|
@ -22,6 +22,8 @@ Autarco is a Dutch company that provides solar panels, inverters and batteries.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
### Configuration parameters
|
||||
|
||||
{% configuration_basic %}
|
||||
Email:
|
||||
description: The email address of your Autarco account.
|
||||
@ -31,9 +33,14 @@ Password:
|
||||
|
||||
## Data updates
|
||||
|
||||
The integration will poll the Autarco API every 5 minutes to update the data in Home Assistant.
|
||||
The integration will update its information by polling Autarco every
|
||||
5 minutes. This ensures the data in Home Assistant is up to date.
|
||||
|
||||
## Sensors
|
||||
## Actions
|
||||
|
||||
This integration does not provide additional actions.
|
||||
|
||||
## Supported functionality
|
||||
|
||||
The Autarco platform mainly provides sensors that you can use in your [energy dashboard](/energy).
|
||||
|
||||
@ -66,8 +73,16 @@ If you have a battery connected to your system, you can monitor the battery stat
|
||||
- Charged energy this month (kWh)
|
||||
- Charged energy total (kWh)
|
||||
|
||||
## Remove integration
|
||||
## Known limitations
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
The integration does not show data about your self-sufficiency or CO2 savings.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
There are no commonly known issues with this integration.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
[Elgato Avea](https://www.evehome.com/en/news/elgato-avea-transform-your-home) is a Bluetooth light bulb that is no longer supported by the manufacturer. The `avea` integration allows you to control all your Avea bulbs with Home Assistant.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: avion
|
||||
ha_platforms:
|
||||
- light
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
Support for the Avi-on Bluetooth dimmer switch [Avi-on](https://avi-on.com/).
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `aws` integration provides a single place to interact with [Amazon Web Services](https://aws.amazon.com/). Currently it provides a notification platform that can send a message to [AWS SQS](https://aws.amazon.com/sqs/), [AWS SNS](https://aws.amazon.com/sns/), or invoke [AWS Lambda](https://aws.amazon.com/lambda/) functions.
|
||||
|
@ -13,7 +13,6 @@ ha_codeowners:
|
||||
- '@Kane610'
|
||||
ha_domain: axis
|
||||
ha_qa_scale: platinum
|
||||
ha_quality_scale: platinum
|
||||
ha_zeroconf: true
|
||||
ha_ssdp: true
|
||||
ha_dhcp: true
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/products/service-bus/) from within Home Assistant.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices.
|
||||
|
@ -44,16 +44,13 @@ Balboa Spa Client integration is not compatible with ControlMySpa™ cloud API u
|
||||
{% configuration_basic %}
|
||||
host:
|
||||
description: "Hostname or IP address of your Balboa Spa Wifi Device, e.g., `192.168.1.58`."
|
||||
required: true
|
||||
type: string
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
sync_time:
|
||||
description: Sync the Spa's internal clock with Home Assistant daily
|
||||
type: boolean
|
||||
default: false
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Known limitations
|
||||
|
@ -8,10 +8,10 @@ ha_release: 2024.2
|
||||
ha_iot_class: Local Push
|
||||
ha_domain: bang_olufsen
|
||||
ha_platforms:
|
||||
- media_player
|
||||
- diagnostics
|
||||
- media_player
|
||||
ha_codeowners:
|
||||
- "@mj23000"
|
||||
- '@mj23000'
|
||||
ha_config_flow: true
|
||||
ha_zeroconf: true
|
||||
ha_integration_type: device
|
||||
@ -41,18 +41,52 @@ and any other [Mozart](https://support.bang-olufsen.com/hc/en-us/articles/247669
|
||||
{% configuration_basic %}
|
||||
IP Address:
|
||||
description: The IP address of your device. Can be found by navigating to the device on the [Bang & Olufsen app](https://www.bang-olufsen.com/en/dk/story/apps) and selecting `Settings` → `About` → `IP address`.
|
||||
required: true
|
||||
type: string
|
||||
Device model:
|
||||
description: The model name of your Bang & Olufsen device. This is used to determine some capabilities of the device. If the device is not in the list yet, choose a product similar to yours.
|
||||
required: true
|
||||
type: string
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Data updates
|
||||
|
||||
The **Bang & Olufsen** integration uses the [Mozart API](https://bang-olufsen.github.io/mozart-open-api), which is a local REST API with a WebSocket notification channel for immediate state information for media metadata, playback progress, volume etc. The only exception to this is the repeat and shuffle controls which are polled every 30 seconds.
|
||||
|
||||
## Supported features
|
||||
|
||||
Currently, a single device with a `media_player` entity is created for each added physical device. For advanced automations, [events](#automations) are fired in Home Assistant.
|
||||
|
||||
### Media player
|
||||
|
||||
A number of features are available through the media player entity:
|
||||
|
||||
- See current metadata, progress, volume, etc.
|
||||
- Control next/previous, play/pause, shuffle/repeat settings, volume, sound mode, audio and video sources, and more.
|
||||
- Play various media through [play_media actions](#play_media-actions).
|
||||
- Control multiroom audio through [Beolink](https://support.bang-olufsen.com/hc/en-us/articles/4411572883089-What-is-Beolink-Multiroom):
|
||||
- Control with Home Assistant media_player grouping.
|
||||
- Monitor current [Beolink state](#beolink) through media player properties.
|
||||
- For more advanced usage, [custom Beolink services](#custom-actions) have been defined:
|
||||
- Connect or expand to [ASE](https://support.bang-olufsen.com/hc/en-us/articles/24766979863441-Which-platform-is-my-Connected-Audio-product-based-on) products not available in Home Assistant.
|
||||
- Expand sessions to all discovered devices.
|
||||
- Connect to, expand to or unexpand devices.
|
||||
- Set all connected Beolink devices to standby.
|
||||
|
||||
## Limitations
|
||||
|
||||
Currently, some features of the Mozart platform such as:
|
||||
|
||||
- Creating timers and alarms
|
||||
- Retrieving detailed alarm and timer information
|
||||
|
||||
And more advanced app-centric features such as:
|
||||
|
||||
- Creating presets
|
||||
- Creating listening positions
|
||||
- Creating sound modes
|
||||
- Creating stereo pairs
|
||||
- Adjusting specific sound settings
|
||||
- Pairing remotes
|
||||
|
||||
These features are not available through the API. Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features.
|
||||
|
||||
## Actions
|
||||
|
||||
### play_media actions
|
||||
@ -344,8 +378,8 @@ beolink:
|
||||
The **Bang & Olufsen** integration supports [Home Assistant debug logs and diagnostics](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics).
|
||||
Where all received WebSocket events are provided through debug logs and the WebSocket connection state, config entry and media player state is provided through diagnostics.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
@ -15,6 +15,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `bbox` {% term integration %} uses the [Bbox Modem Router](https://www.bouyguestelecom.fr/offres-internet/bbox-fit) from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `beewi_smartclim` sensor platform allows one to monitor room or external temperature and humidity. The BeeWi SmartClim BLE is a Bluetooth Low Energy sensor device that monitors temperature from a room or a garden from your smartphone by using an APP. Use this integration to track these metrics from any location thanks to Home Assistant, as well as to create some automation scripts based on your room's temperature.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network.
|
||||
|
@ -15,6 +15,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `bizkaibus` sensor will give you the time until the next bus in the selected stop.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) (8x8) using a serial or IP connection, this integration does not support the 4x4 matrix switch.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.com](https://blockchain.com).
|
||||
|
@ -213,21 +213,24 @@ These adapters do not have a reset pin. If they stop responding, there is curren
|
||||
- Alfa AWUS036EACS (RTL8821CU) - Frequent connection failures and drop outs
|
||||
- BASEUS BR8651A01 BA04 - Advertisement drops out
|
||||
- Belkin F8T003 ver 2. - Fails to setup and add successfully
|
||||
- Bluegiga BLED112 - No driver available yet for USB id 2458:0001
|
||||
- Bluegiga BLED112 - No driver available yet for USB ID `2458:0001`
|
||||
- EDIMAX EW-7611ULB (RTL8723BU) - Frequent connection failures and drop outs
|
||||
- EDUP EP-AC1661 (RTL8821CU) - Frequent connection failures and drop outs
|
||||
- eppfun AK3040G (ATS2851) - No driver available yet for USB id 10d7:b012
|
||||
- eppfun AK3040A (ATS2851) - No driver available yet for USB id 10d7:b012
|
||||
- eppfun AK3040G (ATS2851) - No driver available yet for USB ID `10d7:b012`
|
||||
- eppfun AK3040A (ATS2851) - No driver available yet for USB ID `10d7:b012`
|
||||
- KOAMTAC KBD 401G (CSR8510A10) - Adapter is unstable and drops out
|
||||
- TRIPP-LITE CU885A/U261-001-BT4 (CSR8510A10) - Adapter is unstable and drops out
|
||||
- QUMOX Bluetooth 5.0 (Barrot 8041A02) - No working driver
|
||||
- UGREEEN CM591 (ATS2851) - No driver available yet for USB id 10d7:b012
|
||||
- UGREEEN CM591 (ATS2851) - No driver available yet for USB ID `10d7:b012`
|
||||
- UGREEEN CM749 (Barrot chipset) 📶 - No driver available yet for USB ID `33fa:0010`
|
||||
- tp-link UB400 (CSR4) - Frequent connection failures with active connections
|
||||
- tp-link UB500 (RTL8761BU) - Frequent connection failures with active connections
|
||||
- CSR 4.0 clones with USB id 0a12:0001 - Unrecoverable driver failure: These clones will usually show a message like `CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...` in the system log when they are plugged in.
|
||||
- CSR 4.0 clones with USB ID `0a12:0001` - Unrecoverable driver failure: These clones will usually show a message like `CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...` in the system log when they are plugged in.
|
||||
- Multiple unbranded adapters labeled with CSR 4.0
|
||||
- 5 CORE CSR 4.0
|
||||
|
||||
📶 Denotes external antenna
|
||||
|
||||
## Multiple adapters
|
||||
|
||||
The Bluetooth integration employs automatic failover and connection path logic to achieve high availability.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: bluetooth_tracker
|
||||
ha_platforms:
|
||||
- device_tracker
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`.
|
||||
|
@ -31,20 +31,79 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: platinum
|
||||
---
|
||||
|
||||
The **BMW Connected Drive** {% term integration %} lets you retrieve data of your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account and a Connected Drive enabled vehicle for this to work.
|
||||
|
||||
The **BMW Connected Drive** {% term integration %} also works with (recent) Mini vehicles. You need to have a working Mini Connected account, and a Mini Connected enabled vehicle for this to work.
|
||||
The **BMW Connected Drive** {% term integration %} lets you retrieve data of your BMW or MINI vehicle from the MyBMW portal (previously BMW Connected Drive).
|
||||
|
||||
{% note %}
|
||||
The {% term entities %} available in Home Assistant heavily depend on your vehicle's capabilities (model year, headunit, etc.). The integration will make sure all available car attributes are added as entities.
|
||||
{% endnote %}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You need to have an active MyBMW account with a connected car. For MINI vehicles, you register with MINI Connected.
|
||||
|
||||
For compatibility with your BMW vehicle check the [bimmer_connected page](https://github.com/bimmerconnected/bimmer_connected) on GitHub.
|
||||
|
||||
This integration provides the following platforms:
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Username:
|
||||
description: |
|
||||
Username of your MyBMW/MINI Connected account.
|
||||
|
||||
|
||||
|
||||
**China**: Your username/phone number must be prefixed with `86`, i.e. `8612345678`.
|
||||
Password:
|
||||
description: "Password of your MyBMW/MINI Connected account."
|
||||
Region:
|
||||
description: "Region of your MyBMW/MINI Connected account."
|
||||
options: china, north_america, rest_of_world
|
||||
Captcha token (second step, only for North America and Rest of World):
|
||||
description: |
|
||||
The **North America** and **Rest of World** regions require a captcha challenge to be solved, that means you need to verify that you are not a robot.
|
||||
|
||||
- After entering your login data, a second step will ask for a `Captcha token` and provide you with a **link** to a website.
|
||||
- Open this link, solve the **"Are you a human?"** challenge and press **Submit**.
|
||||
- Copy the resulting token into Home Assistant and continue.
|
||||
|
||||
No data of your Home Assistant instance is shared with any third party during this step.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Read-only:
|
||||
description: No execution of actions to the vehicle. You can only send POIs to the vehicle via `notify`.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Data updates
|
||||
|
||||
The integration will pull data from MyBMW/MINI servers at the following intervals:
|
||||
|
||||
| Region | Interval |
|
||||
|---------------|------------|
|
||||
| China | 5 minutes |
|
||||
| North America | 10 minutes |
|
||||
| Rest of world | 5 minutes |
|
||||
|
||||
{% note %}
|
||||
This will only refresh data from the BMW/MINI servers and **not** from your car. Updates from the car to the servers typically happen:
|
||||
|
||||
- for **combustion engine** vehicles when the car is parked and the engine is shut off.
|
||||
- for **electric** vehicles when the car is parked and turned off or while the car is charging.
|
||||
|
||||
While driving, the servers are not updated.
|
||||
{% endnote %}
|
||||
|
||||
### Defining a custom polling interval
|
||||
|
||||
{% include common-tasks/define_custom_polling.md %}
|
||||
|
||||
## Available platforms
|
||||
|
||||
This {% term integration %} provides the following {% term platforms %}:
|
||||
|
||||
- Binary sensors: Doors, windows, condition based services, check control messages, parking lights, door lock state, charging status (electric cars) and connections status (electric cars).
|
||||
- Device tracker: The location of your car.
|
||||
@ -56,9 +115,10 @@ This integration provides the following platforms:
|
||||
- [Switches](/integrations/bmw_connected_drive/#switches): Display and toggle settings on your car.
|
||||
- [Numbers](/integrations/bmw_connected_drive/#numbers): Display and control numeric charging related settings for (PH)EVs.
|
||||
|
||||
## Configuration
|
||||
{% warning %}
|
||||
Every platform except **binary sensors** and **sensors** can change the state of your vehicle. Once you change the state in Home Assistant, a command is sent to your car.
|
||||
|
||||
Enable the `BMW Connected Drive` integration via **Settings** -> **Devices & Services**.
|
||||
|
||||
|
||||
{% important %}
|
||||
The `North America` and `Rest of world` regions require a captcha challenge to be solved, i.e. you need to verify that you are a human.
|
||||
@ -73,15 +133,9 @@ No data of your Home Assistant instance is shared with any third party during th
|
||||
For `china`, it is mandatory to prefix your username/phone number with `86`, i.e. `8612345678`.
|
||||
{% endnote %}
|
||||
|
||||
After connecting to your account, you can set the following settings in the integration's options:
|
||||
### Notifications
|
||||
|
||||
| Setting | Description |
|
||||
|---------|-------------|
|
||||
| Read-only | No execution of actions to the vehicle. Still possible to send messages and POIs via `notify` and to request a status update via `bmw_connected_drive.update_state`.
|
||||
|
||||
## Notifications
|
||||
|
||||
The `bmw_connected_drive` integration offers a notification action. Using this action you can send Points of Interest (POI) to your vehicle. In your vehicle you can select this POI and the navigation will automatically start using the POI as a destination.
|
||||
The **BMW Connected Drive** integration offers a notification action. Using this action you can send Points of Interest (POI) to your vehicle. In your vehicle, you can select this POI, and the navigation will automatically start using the POI as a destination.
|
||||
The name of the action is `notify.bmw_connected_drive_<your_vehicle>`.
|
||||
|
||||
### Send a Point of Interest to your vehicle
|
||||
@ -101,31 +155,33 @@ actions:
|
||||
country: Country # Optional
|
||||
```
|
||||
|
||||
## Lock
|
||||
### Lock
|
||||
|
||||
The vehicle can be locked and unlocked via the lock integration that is created automatically for each vehicle. Before invoking, make sure it's safe to lock/unlock the vehicle in the current situation.
|
||||
The vehicle can be locked and unlocked via the lock integration that is created automatically for each vehicle.
|
||||
|
||||
## Buttons
|
||||
{% note %}
|
||||
If your vehicle does not provide its current state (no sensor entities are created), you will not see the current lock state either. You still can lock/unlock the car.
|
||||
{% endnote %}
|
||||
|
||||
The `bmw_connected_drive` integration offers several buttons to trigger actions in your car. The buttons are automatically created and can be pressed/executed from the UI or using the `button.press` action. Please see the [button documentation](/integrations/button/) for more information.
|
||||
### Buttons
|
||||
|
||||
Using these buttons will impact the state of your vehicle. So use these with care!
|
||||
Buttons are used to trigger actions in your car. The buttons are automatically created and can be pressed/executed from the UI or using the `button.press` action. Please see the [button documentation](/integrations/button/) for more information.
|
||||
|
||||
### Air conditioning
|
||||
#### Air conditioning
|
||||
|
||||
The air conditioning of the vehicle can be activated with the `button.<your_vehicle>_activate_air_conditioning` button.
|
||||
|
||||
What exactly is started here depends on the type of vehicle. It might range from just ventilation over auxiliary heating to real air conditioning. If your vehicle is equipped with auxiliary heating, only trigger this action if the vehicle is parked in a location where it is safe to use it (e.g., not in an underground parking or closed garage).
|
||||
|
||||
### Sound the horn
|
||||
#### Sound the horn
|
||||
|
||||
The `button.<your_vehicle>_sound_horn` button sounds the horn of the vehicle. This option is not available in some countries (among which the UK). Use this feature responsibly, as it might annoy your neighbors.
|
||||
The `button.<your_vehicle>_sound_horn` button sounds the horn of the vehicle. This option is not available in some countries (among which the UK). Use this feature responsibly, as it might annoy your neighbors.
|
||||
|
||||
### Flash the lights
|
||||
#### Flash the lights
|
||||
|
||||
The `button.<your_vehicle>_light_flash` button flashes the lights of the vehicle.
|
||||
|
||||
### Vehicle finder
|
||||
#### Vehicle finder
|
||||
|
||||
The `button.<your_vehicle>_find_vehicle` button requests the vehicle to update the GPS location. This can be used for older vehicles which don't automatically send the updated GPS location.
|
||||
|
||||
@ -138,32 +194,55 @@ If you do not want this, trigger the `vehicle_finder` action from your phone and
|
||||
On some older cars (non i3/i8 series produced before 7/2014) this action will fail in getting your vehicles position, if the vehicle is more than 1.5 km away from the location of your Home Assistant instance. This is a limitation of the BMW API.
|
||||
{% endnote %}
|
||||
|
||||
## Selects
|
||||
### Selects
|
||||
|
||||
If you have a (PH)EV, you can control the charging process through Home Assistant. The selects are created automatically depending on your vehicle's capabilities and can be pressed/executed from the UI or using the `select.select_option` action. For more information, please see the [select documentation](/integrations/select/).
|
||||
|
||||
Using these selects will impact the state of your vehicle. Use them with care!
|
||||
|
||||
- **Charging Mode**: Vehicle can be set to `IMMEDIATE_CHARGING` (charge as soon as plugged in) or `DELAYED_CHARGING` (charge only if within charging window). It can be used to start/stop charging if the charging window is set accordingly.
|
||||
- **AC Charging Limit**: The maximum current a vehicle will charge with. Not available on all EVs.
|
||||
|
||||
## Switches
|
||||
### Switches
|
||||
|
||||
If supported by your vehicle, you can display and toggle remote actions with start/stop functionality.
|
||||
|
||||
Using these selects will impact the state of your vehicle, use them with care!
|
||||
|
||||
- **Climate**: Toggle vehicle climatization. It is not possible to force it to heating/cooling, the vehicle will decide on its own. If turned on, it will run for 30 minutes (as if toggled via the MyBMW app).
|
||||
- **Climate**: Toggle vehicle climatization. It is not possible to force it to heat or cool; the vehicle will decide on its own. If turned on, it will run for 30 minutes (as if toggled via the MyBMW app).
|
||||
- **Charging**: Toggle vehicle charging if plugged in. Only available on some electric vehicles.
|
||||
|
||||
## Numbers
|
||||
### Numbers
|
||||
|
||||
If you have a (PH)EV, you can control the charging process through Home Assistant. The number entities are created automatically depending on your vehicle's capabilities and can be changed from the UI or using the `number.set_value` action. For more information, please see the [number documentation](/integrations/number/).
|
||||
|
||||
Using these selects will impact the state of your vehicle, use them with care!
|
||||
|
||||
- **Target SoC**: Vehicle will charge until this battery level is reached. Not available on all EVs.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
{% details "Problem: Invalid authentication" %}
|
||||
|
||||
This can happen during initial login or after some time. Please do the following steps:
|
||||
- Log in to your MyBMW **website** and verify your credentials (for example, ensure that username and password are correct).
|
||||
- If you cannot login on the website, please **deactivate** polling (see [Defining a custom polling interval](#defining-a-custom-polling-interval)) and wait for **at least 24 hours**.
|
||||
- Once you can login to the website, reconfigure/reauthenticate the integration via {% my integrations title="**Settings** > **Devices & services**" %}, click {% icon "mdi:dots-vertical" %} and select **Reconfigure**.
|
||||
- Activate polling again
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
{% details "Problem: Captcha validation missing" %}
|
||||
|
||||
Sometimes, your account can be force-logged-out. For **North America** and **Rest of World**, the recovery requires manual intervention.
|
||||
|
||||
Home Assistant will show a repair issue to **reconfigure** the integration. Follow the steps to log in again.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Known limitations
|
||||
|
||||
- The entities available to Home Assistant depend on your vehicle. Even inside the same model code (for example, U11 for BMW X1) you will see different entities, depending on your specific car's features.
|
||||
- Not all features, mostly related to charging control for (PH)EVs, are implemented. If you have a functionality in your MyBMW/MINI app that is not yet available, search for an existing feature request in the [`bimmer_connected` discussions](https://github.com/bimmerconnected/bimmer_connected/discussions) or create a new one.
|
||||
|
||||
## Removing the integration
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This software is not affiliated with or endorsed by BMW Group.
|
||||
|
@ -17,7 +17,6 @@ ha_codeowners:
|
||||
- '@joshs85'
|
||||
- '@marciogranzotto'
|
||||
ha_config_flow: true
|
||||
ha_quality_scale: platinum
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- button
|
||||
|
@ -9,7 +9,6 @@ ha_config_flow: true
|
||||
ha_codeowners:
|
||||
- '@bieniu'
|
||||
ha_domain: brother
|
||||
ha_quality_scale: platinum
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router.
|
||||
|
@ -46,18 +46,16 @@ use a different protocol and are not currently supported.
|
||||
|
||||
{% configuration_basic %}
|
||||
Host:
|
||||
description: The IP address of your device can be found by navigating to the device on the [StreamMagic app](https://www.cambridgeaudio.com/usa/en/products/streammagic) and selecting `Settings` → `IP address`.
|
||||
required: true
|
||||
type: string
|
||||
description: The IP address of your device can be found by navigating to the device on the [StreamMagic app](https://www.cambridgeaudio.com/usa/en/products/streammagic) and selecting `Settings` → `IP address`.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Data updates
|
||||
|
||||
Cambridge Audio devices push data directly to Home Assistant, enabling immediate updates for device state changes, media information, and playback status.
|
||||
|
||||
## Remove integration
|
||||
## Removing the integration
|
||||
|
||||
This integration follows standard integration removal, no extra steps are required.
|
||||
This integration follows standard integration removal. No extra steps are required.
|
||||
|
||||
{% include integrations/remove_device_service.md %}
|
||||
|
||||
|
@ -21,14 +21,14 @@ ha_integration_type: integration
|
||||
Support for mDNS discovery in your local network is mandatory for automatic discovery. Make sure that your router has this feature enabled. If mDNS does not work in your network, the IP addresses of the Cast devices can be manually entered in the configuration as mentioned below.
|
||||
|
||||
{% include integrations/option_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
Known hosts:
|
||||
description: "A comma-separated list of hostnames or IP-addresses of cast devices, use if mDNS discovery is not working"
|
||||
Allowed UUIDs:
|
||||
description: A comma-separated list of UUIDs of Cast devices to add to Home Assistant. **Use only if you don't want to add all available devices.** The device won't be added until discovered through either mDNS or if it's included in the list of known hosts. In order to find the UUID for your device use a mDNS browser or advanced users can use the following Python command (adjust friendly names as required) - `python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=['Living Room TV', 'Bedroom TV', 'Office Chromecast']))"`. This option is only visible if advanced mode is enabled in your user profile.
|
||||
Ignore CEC:
|
||||
description: A comma-separated list of Chromecasts that should ignore CEC data for determining the
|
||||
active input. [See the upstream documentation for more information](https://github.com/home-assistant-libs/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile.
|
||||
description: A comma-separated list of Chromecasts that should ignore CEC data for determining the active input. [See the upstream documentation for more information](https://github.com/home-assistant-libs/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Home Assistant Cast
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Midea CCM15 AC Controller
|
||||
title: Midea ccm15 AC Controller
|
||||
description: Instructions on how to integrate a Midea CCM15 module into Home Assistant.
|
||||
ha_category:
|
||||
- Climate
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Chacon Dio
|
||||
title: Chacon DiO
|
||||
description: Instructions on how to integrate your Chacon Dio devices within Home Assistant.
|
||||
ha_category:
|
||||
- Cover
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This is a presence detection scanner for [Cisco IOS](https://www.cisco.com/) devices.
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers.
|
||||
|
@ -14,18 +14,19 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark or Cisco Webex Teams).
|
||||
The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex](https://www.webex.com/suite/messaging.html) (formerly known as Cisco Spark or Cisco Webex Teams).
|
||||
|
||||
To use this notification platform you will need an app (bot) token. To obtain a token visit [Cisco Webex for Developers](https://developer.webex.com/).
|
||||
|
||||
- Detailed instructions can be found in the section titled **Creating a Webex Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots).
|
||||
|
||||
You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of two ways:
|
||||
You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of three ways:
|
||||
|
||||
1. Logging in at [Cisco Webex for Developers](https://developer.webex.com/) and navigate to `Documentation`>`API Reference`>`Messages` and select List Messages, or
|
||||
2. Log into the web client at [teams.webex.com](https://teams.webex.com/),
|
||||
2. Log into the web client at [web.webex.com](https://web.webex.com/),
|
||||
- select the room (or create a new room),
|
||||
- then copying the room ID from the URL.
|
||||
3. Within the Webex Client, press Control+Shift+K (Windows) or Command+Shift+K (macOS), which will automatically copy the space information to your clipboard, which you
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `citybikes` sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by [CityBikes](https://citybik.es/#about), which supports bike sharing systems all around the world.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org).
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `clickatell` platform uses [Clickatell](https://www.clickatell.com) to deliver SMS notifications from Home Assistant.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: clicksend_tts
|
||||
ha_platforms:
|
||||
- notify
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: cmus
|
||||
ha_platforms:
|
||||
- media_player
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `cmus` platform allows you to control a [cmus](https://cmus.github.io/) music player on a remote or local machine from Home Assistant.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: comed_hourly_pricing
|
||||
ha_platforms:
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant.
|
||||
|
@ -26,7 +26,6 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
ha_integration_type: hub
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
||||
The Comelit SimpleHome integration allows you to control your [Comelit home automation devices](https://comelitgroup.it/installatore/offerta/domotica-e-smart-home).
|
||||
|
@ -13,6 +13,7 @@ ha_platforms:
|
||||
- fan
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `comfoconnect` integration lets you control Zehnder ComfoAir [Q350](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q350-tr)/[Q450](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q450-tr)/[Q600](https://products.zehnder-systems.com/en/product/zehnder-comfoair-q600-st)
|
||||
|
@ -290,6 +290,26 @@ command_line:
|
||||
default: 30
|
||||
{% endconfiguration %}
|
||||
|
||||
{% note %}
|
||||
For sensors, while `value_template` is optional, if you set `json_attributes` because the output is a JSON, it is suggested to provide a template in the `value_template` field to provide a state to the sensor or the state will always be `unknown`. See [example](#usage-of-json-attributes-in-command-output) below.
|
||||
{% endnote %}
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
As **Command line** {% term integration %} is a yaml only integration, turning on extended logging needs to be done by setting the logging information in your {% term "`configuration.yaml`" %} file.
|
||||
|
||||
Entering this example in your configuration sets the default logging to info, and for `command_line` to debug. Once done, restart Home Assistant to enable.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
# Set logging
|
||||
logger:
|
||||
default: info
|
||||
logs:
|
||||
homeassistant.components.command_line: debug
|
||||
```
|
||||
{% endraw%}
|
||||
|
||||
{% note %}
|
||||
|
||||
While `command` is accepting a template for `sensor` and `binary_sensor`, it's only the arguments that can be a template. This means the command name itself cannot be generated by a template, but it must be literally provided.
|
||||
|
@ -12,6 +12,7 @@ ha_domain: compensation
|
||||
ha_platforms:
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The **Compensation** {% term integration %} consumes the {% term state %} from other {% term sensors %}. It exports the compensated value as state in a separate {% term entity %} and the following values as attributes: `entity_id` and `coefficients`. A single polynomial, linear by default, is fit to all data points provided.
|
||||
|
@ -11,6 +11,7 @@ ha_platforms:
|
||||
- alarm_control_panel
|
||||
- binary_sensor
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4.
|
||||
|
@ -9,6 +9,7 @@ ha_domain: cppm_tracker
|
||||
ha_platforms:
|
||||
- device_tracker
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
This platform allows you to detect presence by looking at connected devices to [Aruba Clearpass](https://www.arubanetworks.com/products/security/network-access-control/).
|
||||
|
@ -14,6 +14,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `cups` sensor platform uses the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the information using a CUPS server or by communicating directly with the printer with the Internet Printing Protocol.
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 250 requests per month and updates daily.
|
||||
|
@ -14,6 +14,7 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
ha_integration_type: integration
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The **Danfoss Air** {% term integration %} allows you to access information from your Danfoss Air HRV unit.
|
||||
|
@ -10,6 +10,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The **Datadog** {% term integration %} sends all state changes to [Datadog](https://www.datadoghq.com/) using a [Datadog Agent](https://docs.datadoghq.com/guides/basic_agent_usage/).
|
||||
|
@ -12,6 +12,7 @@ ha_integration_type: integration
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
ha_quality_scale: legacy
|
||||
---
|
||||
|
||||
The `ddwrt` {% term integration %} offers presence detection by looking at connected devices to a [DD-WRT](https://dd-wrt.com/) based router.
|
||||
|
@ -1,10 +1,10 @@
|
||||
---
|
||||
title: Deako Smart Lighting
|
||||
title: Deako
|
||||
description: Instructions on how to integrate Deako Smart Lighting into Home Assistant.
|
||||
ha_category:
|
||||
- Switch
|
||||
ha_iot_class: Local Polling
|
||||
ha_release: "2024.10"
|
||||
ha_release: '2024.10'
|
||||
ha_domain: deako
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
@ -33,4 +33,3 @@ Features not currently supported:
|
||||
|
||||
- Deako groups
|
||||
- Deako scenes
|
||||
|
||||
|
@ -16,7 +16,6 @@ ha_category:
|
||||
ha_release: 0.61
|
||||
ha_iot_class: Local Push
|
||||
ha_config_flow: true
|
||||
ha_quality_scale: platinum
|
||||
ha_codeowners:
|
||||
- '@Kane610'
|
||||
ha_domain: deconz
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user