diff --git a/CODEOWNERS b/CODEOWNERS index 24be48bd8d4..0d807754ce7 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -27,6 +27,7 @@ source/_integrations/airtouch4.markdown @LonePurpleWolf source/_integrations/airvisual.markdown @bachya source/_integrations/airvisual_pro.markdown @bachya source/_integrations/airzone.markdown @Noltari +source/_integrations/airzone_cloud.markdown @Noltari source/_integrations/aladdin_connect.markdown @mkmer source/_integrations/alarm_control_panel.markdown @home-assistant/core source/_integrations/alert.markdown @home-assistant/core @frenck @@ -40,7 +41,7 @@ source/_integrations/amp_motorization.markdown @starkillerOG source/_integrations/analytics.markdown @home-assistant/core @ludeeus source/_integrations/android_ip_webcam.markdown @engrbm87 source/_integrations/androidtv.markdown @JeffLIrion @ollo69 -source/_integrations/androidtv_remote.markdown @tronikos +source/_integrations/androidtv_remote.markdown @tronikos @Drafteed source/_integrations/anova.markdown @Lash-L source/_integrations/anthemav.markdown @hyralex source/_integrations/anwb_energie.markdown @klaasnicolaas @@ -121,6 +122,7 @@ source/_integrations/cloudflare.markdown @ludeeus @ctalkington source/_integrations/coinbase.markdown @tombrien source/_integrations/color_extractor.markdown @GenericStudent source/_integrations/comfoconnect.markdown @michaelarnauts +source/_integrations/command_line.markdown @gjohansson-ST source/_integrations/compensation.markdown @Petro31 source/_integrations/config.markdown @home-assistant/core source/_integrations/configurator.markdown @home-assistant/core @@ -135,6 +137,8 @@ source/_integrations/crownstone.markdown @Crownstone @RicArch97 source/_integrations/cups.markdown @fabaff source/_integrations/dacia.markdown @epenet source/_integrations/daikin.markdown @fredrike +source/_integrations/date.markdown @home-assistant/core +source/_integrations/datetime.markdown @home-assistant/core source/_integrations/debugpy.markdown @frenck source/_integrations/deconz.markdown @Kane610 source/_integrations/default_config.markdown @home-assistant/core @@ -176,6 +180,7 @@ source/_integrations/ecowitt.markdown @pvizeli source/_integrations/efergy.markdown @tkdrob source/_integrations/egardia.markdown @jeroenterheerdt source/_integrations/eight_sleep.markdown @mezz64 @raman325 +source/_integrations/electrasmart.markdown @jafar-atili source/_integrations/elgato.markdown @frenck source/_integrations/elkm1.markdown @gwww @bdraco source/_integrations/elmax.markdown @albertogeniola @@ -259,6 +264,7 @@ source/_integrations/google.markdown @allenporter source/_integrations/google_assistant.markdown @home-assistant/cloud source/_integrations/google_assistant_sdk.markdown @tronikos source/_integrations/google_cloud.markdown @lufton +source/_integrations/google_generative_ai_conversation.markdown @tronikos source/_integrations/google_mail.markdown @tkdrob source/_integrations/google_sheets.markdown @tkdrob source/_integrations/google_travel_time.markdown @eifinger @@ -305,7 +311,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/hvv_departures.markdown @vigonotion -source/_integrations/hydrawise.markdown @ptcryan +source/_integrations/hydrawise.markdown @dknowles2 @ptcryan source/_integrations/hyperion.markdown @dermotduffy source/_integrations/ialarm.markdown @RyuzakiKK source/_integrations/iammeter.markdown @lewei50 @@ -345,6 +351,7 @@ source/_integrations/jellyfin.markdown @j-stienstra @ctalkington source/_integrations/jewish_calendar.markdown @tsvi source/_integrations/juicenet.markdown @jesserockz source/_integrations/justnimbus.markdown @kvanzuijlen +source/_integrations/jvc_projector.markdown @SteveEasley source/_integrations/kaiterra.markdown @Michsior14 source/_integrations/kaleidescape.markdown @SteveEasley source/_integrations/keba.markdown @dannerph @@ -364,6 +371,7 @@ source/_integrations/kulersky.markdown @emlove source/_integrations/lacrosse_view.markdown @IceBotYT source/_integrations/lametric.markdown @robbiet480 @frenck @bachya source/_integrations/landisgyr_heat_meter.markdown @vpathuis +source/_integrations/lastfm.markdown @joostlek source/_integrations/launch_library.markdown @ludeeus @DurgNomis-drol source/_integrations/laundrify.markdown @xLarry source/_integrations/lcn.markdown @alengwenus @@ -447,6 +455,7 @@ source/_integrations/nest.markdown @allenporter source/_integrations/netatmo.markdown @cgtobi source/_integrations/netdata.markdown @fabaff source/_integrations/netgear.markdown @hacf-fr @Quentame @starkillerOG +source/_integrations/netgear_lte.markdown @tkdrob source/_integrations/network.markdown @home-assistant/core source/_integrations/nexia.markdown @bdraco source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev @@ -491,6 +500,7 @@ source/_integrations/openerz.markdown @misialq source/_integrations/openexchangerates.markdown @MartinHjelmare source/_integrations/opengarage.markdown @danielhiversen source/_integrations/openhome.markdown @bazwilliams +source/_integrations/opensky.markdown @joostlek source/_integrations/opentherm_gw.markdown @mvn23 source/_integrations/openuv.markdown @bachya source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi @@ -510,6 +520,7 @@ source/_integrations/philips_js.markdown @elupus source/_integrations/pi_hole.markdown @johnluetke @shenxn source/_integrations/picnic.markdown @corneyl source/_integrations/pilight.markdown @trekky12 +source/_integrations/piper.markdown @balloob @synesthesiam source/_integrations/plaato.markdown @JohNan source/_integrations/plex.markdown @jjlawren source/_integrations/plugwise.markdown @CoMPaTech @bouwew @frenck @@ -542,7 +553,7 @@ source/_integrations/qwikswitch.markdown @kellerza source/_integrations/rachio.markdown @bdraco source/_integrations/radarr.markdown @tkdrob source/_integrations/radio_browser.markdown @frenck -source/_integrations/radiotherm.markdown @bdraco @vinnyfuria +source/_integrations/radiotherm.markdown @vinnyfuria source/_integrations/rainbird.markdown @konikvranik @allenporter source/_integrations/raincloud.markdown @vanstinator source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin @@ -566,7 +577,7 @@ source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221 source/_integrations/rhasspy.markdown @balloob @synesthesiam source/_integrations/ridwell.markdown @bachya source/_integrations/risco.markdown @OnFreund -source/_integrations/rituals_perfume_genie.markdown @milanmeu +source/_integrations/rituals_perfume_genie.markdown @milanmeu @frenck source/_integrations/rmvtransport.markdown @cgtobi source/_integrations/roborock.markdown @humbertogontijo @Lash-L source/_integrations/roku.markdown @ctalkington @@ -622,7 +633,7 @@ source/_integrations/siren.markdown @home-assistant/core @raman325 source/_integrations/sisyphus.markdown @jkeljo source/_integrations/sky_hub.markdown @rogerselwyn source/_integrations/skybell.markdown @tkdrob -source/_integrations/slack.markdown @bachya @tkdrob +source/_integrations/slack.markdown @tkdrob source/_integrations/sleepiq.markdown @mfugate1 @kbickar source/_integrations/slide.markdown @ualex73 source/_integrations/slimproto.markdown @marcelveldt @@ -654,7 +665,7 @@ source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 source/_integrations/spider.markdown @peternijssen source/_integrations/splunk.markdown @Bre77 source/_integrations/spotify.markdown @frenck -source/_integrations/sql.markdown @dgomes @gjohansson-ST @dougiteixeira +source/_integrations/sql.markdown @gjohansson-ST @dougiteixeira source/_integrations/squeezebox.markdown @rajlaud source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk @@ -678,7 +689,7 @@ source/_integrations/switch.markdown @home-assistant/core source/_integrations/switch_as_x.markdown @home-assistant/core source/_integrations/switchbee.markdown @jafar-atili source/_integrations/switchbot.markdown @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski -source/_integrations/switcher_kis.markdown @tomerfi @thecode +source/_integrations/switcher_kis.markdown @thecode source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/symfonisk.markdown @cgtobi @jjlawren source/_integrations/syncthing.markdown @zhulik @@ -686,7 +697,7 @@ source/_integrations/syncthru.markdown @nielstron source/_integrations/synology_dsm.markdown @hacf-fr @Quentame @mib1185 source/_integrations/synology_srm.markdown @aerialls source/_integrations/system_bridge.markdown @timmo001 -source/_integrations/tado.markdown @michaelarnauts +source/_integrations/tado.markdown @michaelarnauts @chiefdragon source/_integrations/tag.markdown @balloob @dmulcahey source/_integrations/tailscale.markdown @frenck source/_integrations/tankerkoenig.markdown @guillempages @mib1185 @@ -706,6 +717,7 @@ source/_integrations/thread.markdown @home-assistant/core source/_integrations/tibber.markdown @danielhiversen source/_integrations/tile.markdown @bachya source/_integrations/tilt_ble.markdown @apt-itude +source/_integrations/time.markdown @home-assistant/core source/_integrations/time_date.markdown @fabaff source/_integrations/tmb.markdown @alemuro source/_integrations/todoist.markdown @boralyl @@ -772,6 +784,7 @@ source/_integrations/webostv.markdown @thecode source/_integrations/websocket_api.markdown @home-assistant/core source/_integrations/wemo.markdown @esev source/_integrations/whirlpool.markdown @abmantis @mkmer +source/_integrations/whisper.markdown @balloob @synesthesiam source/_integrations/whois.markdown @frenck source/_integrations/wiffi.markdown @mampfes source/_integrations/wilight.markdown @leofig-rj @@ -790,6 +803,7 @@ source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79 source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG source/_integrations/xiaomi_tv.markdown @simse source/_integrations/xmpp.markdown @fabaff @flowolf +source/_integrations/yale_home.markdown @bdraco source/_integrations/yale_smart_alarm.markdown @gjohansson-ST source/_integrations/yalexs_ble.markdown @bdraco source/_integrations/yamaha_musiccast.markdown @vigonotion @micha91 @@ -799,6 +813,7 @@ source/_integrations/yeelightsunflower.markdown @lindsaymarkward source/_integrations/yi.markdown @bachya source/_integrations/yolink.markdown @matrixd2 source/_integrations/youless.markdown @gjong +source/_integrations/youtube.markdown @joostlek source/_integrations/zamg.markdown @killer0071234 source/_integrations/zengge.markdown @emontnemery source/_integrations/zeroconf.markdown @bdraco diff --git a/Gemfile b/Gemfile index 236f73beade..9b04cf31796 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ group :jekyll_plugins do end gem 'sinatra', '3.0.6' -gem 'nokogiri', '1.14.3' +gem 'nokogiri', '1.15.2' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/_config.yml b/_config.yml index 4d32a563fff..aef356b8575 100644 --- a/_config.yml +++ b/_config.yml @@ -121,9 +121,9 @@ social: # Home Assistant release details current_major_version: 2023 -current_minor_version: 5 -current_patch_version: 2 -date_released: 2023-05-05 +current_minor_version: 6 +current_patch_version: 0 +date_released: 2023-06-07 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/package-lock.json b/package-lock.json index 38321c6cdc6..3b0ac346df4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,10 @@ "postcss-import": "^15.1.0", "remark-cli": "^11.0.0", "remark-frontmatter": "^4.0.1", - "remark-lint": "^9.1.1", - "remark-lint-fenced-code-flag": "^3.1.1", - "remark-lint-no-shell-dollars": "^3.1.1", - "remark-stringify": "^10.0.2", + "remark-lint": "^9.1.2", + "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-no-shell-dollars": "^3.1.2", + "remark-stringify": "^10.0.3", "tailwindcss": "^3.2.7", "textlint": "^13.3.2", "textlint-filter-rule-comments": "^1.2.2", @@ -27,6 +27,18 @@ "textlint-rule-terminology": "^3.0.4" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@azu/format-text": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", @@ -43,9 +55,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" @@ -148,6 +160,168 @@ "node": ">=4" } }, + "node_modules/@babel/runtime": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -184,27 +358,27 @@ } }, "node_modules/@npmcli/config": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.1.4.tgz", - "integrity": "sha512-3bIf/86iQ9ac86hy5uzE1kQnwgd9W/kmZ+K/OmYWuBMX97PQi4yLZHqn2xtfukwF/3/6NjUPxYC1H/aP3nImCA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.2.0.tgz", + "integrity": "sha512-lPAPNVUvlv6x0uwGiKzuWVUy1WSBaK5P0t9PoQQVIAbc1RaJLkaNxyUQZOrFJ7Y/ShzLw5skzruThhD9Qcju/A==", "dev": true, "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ini": "^3.0.0", + "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", - "walk-up-path": "^1.0.0" + "walk-up-path": "^3.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/config/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -217,14 +391,14 @@ } }, "node_modules/@npmcli/map-workspaces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.3.tgz", - "integrity": "sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", "dev": true, "dependencies": { "@npmcli/name-from-folder": "^2.0.0", - "glob": "^9.3.1", - "minimatch": "^7.4.2", + "glob": "^10.2.2", + "minimatch": "^9.0.0", "read-package-json-fast": "^3.0.0" }, "engines": { @@ -241,15 +415,19 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz", - "integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", + "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -259,15 +437,15 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz", - "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -282,6 +460,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@textlint/ast-node-types": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.2.tgz", @@ -708,18 +896,18 @@ } }, "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", "dev": true, "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, "node_modules/@types/estree-jsx": { @@ -762,9 +950,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.15.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.10.tgz", - "integrity": "sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==", + "version": "18.16.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz", + "integrity": "sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==", "dev": true }, "node_modules/@types/supports-color": { @@ -794,38 +982,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -866,6 +1022,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -996,9 +1158,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "dev": true, "funding": [ { @@ -1008,13 +1170,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" @@ -1063,9 +1229,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001470", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001470.tgz", - "integrity": "sha512-065uNwY6QtHCBOExzbV6m236DDhYCCtPmQUCoQtwkVqzud8v5QPidoMr6CoMkC2nfp6nksjttqWQRRh75LqUmA==", + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", "dev": true, "funding": [ { @@ -1075,6 +1241,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -1277,6 +1447,20 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", @@ -1440,10 +1624,13 @@ } }, "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, "engines": { "node": ">=0.11" }, @@ -1488,15 +1675,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", @@ -1515,23 +1693,6 @@ "node": ">=6" } }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1627,9 +1788,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.341", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz", - "integrity": "sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ==", + "version": "1.4.425", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.425.tgz", + "integrity": "sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==", "dev": true }, "node_modules/emoji-regex": { @@ -1808,6 +1969,22 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", @@ -1850,6 +2027,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1878,15 +2069,15 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -1910,9 +2101,9 @@ } }, "node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", @@ -2009,12 +2200,12 @@ "dev": true }, "node_modules/ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/is-alphabetical": { @@ -2066,9 +2257,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2166,6 +2357,39 @@ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", "dev": true }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", + "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2262,13 +2486,10 @@ } }, "node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/load-json-file": { "version": "1.1.0", @@ -2505,9 +2726,9 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz", - "integrity": "sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -2879,9 +3100,9 @@ } }, "node_modules/mdast-util-to-string": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz", - "integrity": "sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0" @@ -2907,9 +3128,9 @@ } }, "node_modules/micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", "dev": true, "funding": [ { @@ -2942,9 +3163,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", "dev": true, "funding": [ { @@ -3009,9 +3230,9 @@ } }, "node_modules/micromark-extension-frontmatter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.1.tgz", - "integrity": "sha512-9OJhCXkrpj8qIXW5AAgRZGvS8Q4GTMdH5+Ljt98kV4XQVflRGeEhNRYp6O/zCvf8c8lZ+wc4uwmbly27pS/s4Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.1.1.tgz", + "integrity": "sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==", "dev": true, "dependencies": { "fault": "^2.0.0", @@ -3205,9 +3426,9 @@ } }, "node_modules/micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", "dev": true, "funding": [ { @@ -3226,9 +3447,9 @@ } }, "node_modules/micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", "dev": true, "funding": [ { @@ -3248,9 +3469,9 @@ } }, "node_modules/micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", "dev": true, "funding": [ { @@ -3268,9 +3489,9 @@ } }, "node_modules/micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", "dev": true, "funding": [ { @@ -3286,14 +3507,13 @@ "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "micromark-util-types": "^1.0.0" } }, "node_modules/micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", "dev": true, "funding": [ { @@ -3313,9 +3533,9 @@ } }, "node_modules/micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", "dev": true, "funding": [ { @@ -3333,9 +3553,9 @@ } }, "node_modules/micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", "dev": true, "funding": [ { @@ -3352,9 +3572,9 @@ } }, "node_modules/micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", "dev": true, "funding": [ { @@ -3373,9 +3593,9 @@ } }, "node_modules/micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", "dev": true, "funding": [ { @@ -3393,9 +3613,9 @@ } }, "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", "dev": true, "funding": [ { @@ -3412,9 +3632,9 @@ } }, "node_modules/micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", "dev": true, "funding": [ { @@ -3434,9 +3654,9 @@ } }, "node_modules/micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", "dev": true, "funding": [ { @@ -3450,9 +3670,9 @@ ] }, "node_modules/micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", "dev": true, "funding": [ { @@ -3466,9 +3686,9 @@ ] }, "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", "dev": true, "funding": [ { @@ -3485,9 +3705,9 @@ } }, "node_modules/micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", "dev": true, "funding": [ { @@ -3504,9 +3724,9 @@ } }, "node_modules/micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", "dev": true, "funding": [ { @@ -3525,9 +3745,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", "dev": true, "funding": [ { @@ -3547,9 +3767,9 @@ } }, "node_modules/micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", "dev": true, "funding": [ { @@ -3563,9 +3783,9 @@ ] }, "node_modules/micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", "dev": true, "funding": [ { @@ -3613,12 +3833,12 @@ } }, "node_modules/minipass": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", - "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/misspellings": { @@ -3654,6 +3874,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", @@ -3673,9 +3904,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/nopt": { @@ -3736,9 +3967,9 @@ } }, "node_modules/npm-normalize-package-bin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz", - "integrity": "sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -3756,6 +3987,15 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -3882,6 +4122,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3889,13 +4138,13 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz", - "integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", "dev": true, "dependencies": { - "lru-cache": "^7.14.1", - "minipass": "^4.0.2" + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3905,12 +4154,12 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", "dev": true, "engines": { - "node": ">=12" + "node": "14 || >=16.14" } }, "node_modules/path-to-glob-pattern": { @@ -3976,6 +4225,15 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/pluralize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", @@ -3983,9 +4241,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", "dev": true, "funding": [ { @@ -3995,10 +4253,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -4196,9 +4458,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, "engines": { "node": ">= 14" @@ -4303,12 +4565,12 @@ } }, "node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^6.0.11" }, "engines": { "node": ">=12.0" @@ -4523,9 +4785,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4628,18 +4890,6 @@ } ] }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rc-config-loader": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", @@ -4831,10 +5081,16 @@ "node": ">=8.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, "node_modules/remark": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", - "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.3.tgz", + "integrity": "sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -4909,9 +5165,9 @@ } }, "node_modules/remark-lint": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.1.tgz", - "integrity": "sha512-zhe6twuqgkx/9KgZyNyaO0cceA4jQuJcyzMOBC+JZiAzMN6mFUmcssWZyY30ko8ut9vQDMX/pyQnolGn+Fg/Tw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.2.tgz", + "integrity": "sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -4924,9 +5180,9 @@ } }, "node_modules/remark-lint-fenced-code-flag": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.1.tgz", - "integrity": "sha512-FFVZmYsBccKIIEgOtgdZEpQdARtAat1LTLBydnIpyNIvcntzWwtrtlj9mtjL8ZoSRre8HtwmEnBFyOfmM/NWaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.2.tgz", + "integrity": "sha512-yh4m3dlPmRsqM/BFhpqHYfrmBvFQ+D5dZZKDDYP2rf3YEoXlEVt8T8lWQueTTSxcq6yXAqL/XQL/iqqUHlLcHw==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -4942,9 +5198,9 @@ } }, "node_modules/remark-lint-no-shell-dollars": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.1.tgz", - "integrity": "sha512-Q3Ad1TaOPxbYog5+Of/quPG3Fy+dMKiHjT8KsU7NDiHG6YJOnAJ3f3w+y13CIlNIaKc/MrisgcthhrZ7NsgXfA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz", + "integrity": "sha512-np2MDEhXHviXhbQFjnC1QYv5/fxCV1cIHfGMoJpqiW7Zcu/UGCOo5TE3XswZH4ukHZJ65c3X2A6qfLDW+ur3CQ==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -4976,9 +5232,9 @@ } }, "node_modules/remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -4991,9 +5247,9 @@ } }, "node_modules/remark-stringify": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", - "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.3.tgz", + "integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -5033,12 +5289,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5095,9 +5351,9 @@ } }, "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -5144,19 +5400,52 @@ "semver": "bin/semver" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/slash": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.0.tgz", - "integrity": "sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "engines": { "node": ">=14.16" @@ -5274,6 +5563,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5286,6 +5590,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -5335,6 +5652,37 @@ "postcss": "^8.2.15" } }, + "node_modules/sucrase": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", + "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -5400,44 +5748,41 @@ } }, "node_modules/tailwindcss": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", - "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", + "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", "dev": true, "dependencies": { + "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.0.9", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" + "resolve": "^1.22.2", + "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" }, "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" + "node": ">=14.0.0" } }, "node_modules/tailwindcss/node_modules/glob-parent": { @@ -5452,52 +5797,6 @@ "node": ">=10.13.0" } }, - "node_modules/tailwindcss/node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/tailwindcss/node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5656,12 +5955,53 @@ "node": ">=0.12.0" } }, + "node_modules/textlint/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", "dev": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5745,10 +6085,16 @@ "integrity": "sha512-yHeaPjCBzVaXwWl5IMUapTaTC2rn/eBYg2fsG2L+CvJd+ttFbk0ylDnpTO3wVhosmE1tQEvcebbBeKLCwScQSQ==", "dev": true }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", "dev": true }, "node_modules/type-check": { @@ -5912,6 +6258,15 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/unified-engine/node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/unified-engine/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -5943,18 +6298,18 @@ } }, "node_modules/unified-engine/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, "engines": { "node": ">= 14" } }, "node_modules/unified-lint-rule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", - "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.2.tgz", + "integrity": "sha512-JWudPtRN7TLFHVLEVZ+Rm8FUb6kCAtHxEXFgBGDxRSdNMnGyTU5zyYvduHSF/liExlFB3vdFvsAHnNVE/UjAwA==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", @@ -6168,9 +6523,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -6180,6 +6535,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -6187,7 +6546,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -6345,9 +6704,9 @@ } }, "node_modules/vfile-reporter/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { "ansi-regex": "^6.0.1" @@ -6423,11 +6782,26 @@ } }, "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", "dev": true }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -6454,6 +6828,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6472,15 +6864,6 @@ "node": ">=4" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -6506,9 +6889,9 @@ } }, "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { "cliui": "^8.0.1", diff --git a/package.json b/package.json index 6fff457d4d3..e8e6fd80c20 100644 --- a/package.json +++ b/package.json @@ -12,10 +12,10 @@ "tailwindcss": "^3.2.7", "remark-cli": "^11.0.0", "remark-frontmatter": "^4.0.1", - "remark-lint": "^9.1.1", - "remark-lint-fenced-code-flag": "^3.1.1", - "remark-lint-no-shell-dollars": "^3.1.1", - "remark-stringify": "^10.0.2", + "remark-lint": "^9.1.2", + "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-no-shell-dollars": "^3.1.2", + "remark-stringify": "^10.0.3", "textlint": "^13.3.2", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", diff --git a/source/_dashboards/entities.markdown b/source/_dashboards/entities.markdown index cf7fb6ef867..7973839a311 100644 --- a/source/_dashboards/entities.markdown +++ b/source/_dashboards/entities.markdown @@ -65,7 +65,7 @@ entity: type: string type: required: false - description: "Sets a custom card type: `custom:my-custom-card`" + description: "Sets a custom card type: `custom:my-custom-card`. It also can be used to force entities with a default special row format to render as a simple state. You can do this by setting the type: `simple-entity`. This can be used, for example, to replace a helper with an editable control with a read-only value." type: string name: required: false diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index bef18fe2b88..48f800c5dd8 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -57,6 +57,19 @@ aliases: - automations +- term: Backup + definition: >- + Home Assistant has built-in functionality to create files containing a copy of + your configuration. This can be used to restore your Home Assistant as well + as migrate to a new system. The backup feature is available on some installation + types. + link: /integrations/backup/ + excerpt: >- + Home Assistant has built-in functionality to create files containing a copy of + your configurations. This is available on certain installation types. + aliases: + - backups + - term: Binary sensor definition: >- A binary sensor returns information about things that only have two states - @@ -284,6 +297,20 @@ other integrations. link: /docs/configuration/platform_options/ +- term: Reload + definition: >- + Applies the changes made to the Home Assistant configuration files. Changes + are normally automatically updated. However, changes made outside of the front + end will not be reflected in Home Assistant and require a reload. + To perform a manual reload, go to **Settings** > **System** > + **Restart Home Assistant** (top right) > **Quick reload**. More granular + reload options are available in *YAML configuration reloading* section + in **Developer tools** > **YAML**. + excerpt: > + Applies the changes made to Home Assistant configuration files. Changes are normally + automatically updated. However, changes made outside of the front + end will not be reflected in Home Assistant and require a reload. + - term: Scene definition: >- Scenes capture the states you want certain entities to be. For example, @@ -380,7 +407,7 @@ - term: TTS definition: >- - TTS (text to speech) allows Home Assistant to talk to you. + TTS (text-to-speech) allows Home Assistant to talk to you. link: /integrations/tts/ - term: Variables diff --git a/source/_docs/automation/modes.markdown b/source/_docs/automation/modes.markdown index 81f6321a5e9..7ae86536bc7 100644 --- a/source/_docs/automation/modes.markdown +++ b/source/_docs/automation/modes.markdown @@ -10,7 +10,7 @@ The automation's `mode` configuration option controls what happens when the auto Mode | Description -|- `single` | (Default) Do not start a new run. Issue a warning. -`restart` | Start a new run after first stopping previous run. +`restart` | Start a new run after first stopping the previous run. The automation only restarts if the conditions are met. `queued` | Start a new run after all previous runs complete. Runs are guaranteed to execute in the order they were queued. Note that subsequent queued automations will only join the queue if any conditions it may have are met at the time it is triggered. `parallel` | Start a new, independent run in parallel with previous runs. diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown index 7bb8172c77c..1d9c86b97c2 100644 --- a/source/_docs/automation/using_blueprints.markdown +++ b/source/_docs/automation/using_blueprints.markdown @@ -13,11 +13,11 @@ Quick links: Automations based on a blueprint only need to be configured to be used. What needs to be configured differs on each blueprint. -To create your first automation based on a blueprint, go to **{% my config %}** -> **Automations & Scenes** -> **{% my blueprints %}**. Find the blueprint that you want to use and click on "Create Automation". +To create your first automation based on a blueprint, go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. Find the blueprint that you want to use and select **Create Automation**. This will open the automation editor with the blueprint selected. Give it a name and configure the blueprint and click on the blue button "Save Automation" in the bottom right. -Done! If you want to revisit the configuration values, you can find it by going to **{% my config %}** and then **{% my automations %}**. +Done! If you want to revisit the configuration values, you can find it by going to **Settings** and then **{% my blueprints %}**. ## Importing blueprints diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index a47a614d0d7..7698fb824a7 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -561,8 +561,7 @@ include_entities: filter: description: > When filter options are provided, the entities are limited by entities - that at least match the given conditions. Can be either a object or a list of object. - Can be either a object or a list of object. + that at least match the given conditions. Can be either an object or a list of objects. type: list required: false keys: diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 4966d8d25a1..b02e1a6e379 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -3,17 +3,17 @@ title: "Configuration.yaml" description: "Configuring Home Assistant via text files." --- -While you can configure most of Home Assistant directly from the user interface under {% my config %}, some parts need you to edit `configuration.yaml`. This file contains integrations to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality. +While you can configure most of Home Assistant directly from the user interface under {% my config %}, some parts need you to edit `configuration.yaml`. This file contains {% term integrations %} to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality. If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml). ## Editing `configuration.yaml` -The easiest option to edit `configuration.yaml` is to use the {% my supervisor_addon title="Studio Code Server add-on" addon="a0d7b954_vscode" %}. This add-on runs VS Code, which offers live syntax checking and auto-fill of various Home Assistant entities (if unavailable on your system, use {% my supervisor_addon title="File Editor add-on" addon="core_configurator" %} instead). +The easiest option to edit `configuration.yaml` is to use the {% my supervisor_addon title="Studio Code Server add-on" addon="a0d7b954_vscode" %}. This add-on runs VS Code, which offers live syntax checking and auto-fill of various Home Assistant entities. See [here](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on) for details. If unavailable on your system, use {% my supervisor_addon title="File Editor add-on" addon="core_configurator" %} instead. Again, details can be found [here](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on). -If you prefer to use a file editor on your computer, use the {% my supervisor_addon title="Samba add-on" addon="core_samba" %} to access the files as a network share. +If you prefer to use a file editor on your computer, use the {% my supervisor_addon title="Samba add-on" addon="core_samba" %} to access the files as a network share. More details can be found [here](/common-tasks/supervised/#installing-and-using-the-samba-add-on). -The path to your configuration directory can be found in the Home Assistant frontend by going to {% my system_health title="Settings > System > Repairs > System information from the top right menu" %} +The path to your configuration directory can be found in the Home Assistant {% term frontend %} by going to {% my system_health title="Settings > System > Repairs > System information from the top right menu" %} ![Show system menu option](/images/screenshots/System_information_menu.png) @@ -28,7 +28,7 @@ _If you use Home Assistant Core, you can find `configuration.yaml` in the config ## Reloading changes -Most integrations in Home Assistant that do not interact with devices or services can reload changes made to their configuration in `configuration.yaml`. To do this, go to {% my server_controls title="Developer Tools > YAML" %} and scroll down to the YAML configuration reloading section (alternatively, hit "c" anywhere in the UI and search for it). +Most integrations in Home Assistant that do not interact with {% term devices %} or {% term services %} can reload changes made to their configuration in `configuration.yaml`. To do this, go to {% my server_controls title="Developer Tools > YAML" %} and scroll down to the YAML configuration reloading section (alternatively, hit "c" anywhere in the UI and search for it). If you can't see your integration listed there, you will need to restart Home Assistant for changes to take effect. @@ -40,6 +40,6 @@ If you can't see your integration listed there, you will need to restart Home As ## Migrating to a new system -The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the *Upload backup* menu option of the *Backups* menu. Then, a restore of the uploaded backup on the new system concludes the migration. +The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the _Upload backup_ menu option of the _Backups_ menu. Then, a restore of the uploaded backup on the new system concludes the migration. If you run the container or core installation methods, you will need to manually make a backup of your configuration folder. Be aware that some of the files you need start with `.`, which is hidden by default from both `ls` (in SSH), in Windows Explorer, and macOS Finder. You'll need to ensure that you're viewing all files before you copy them. diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 9f3f0793a65..2b10523b240 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -20,6 +20,9 @@ Users should upgrade the firmware on all 700 series controllers to version 7.17. +- 800 series controllers + - Zooz 800 Series Z-Wave Long Range S2 Stick (ZST39 LR) + - 700 series controllers - Aeotec Z-Stick 7 USB stick (ZWA010) (the EU version is not recommended due to RF performance issues) - Silicon Labs UZB-7 USB Stick (Silabs SLUSB7000A / SLUSB001A) @@ -39,7 +42,7 @@ Users should upgrade the firmware on all 700 series controllers to version 7.17. - Z-Wave.Me RaZberry 7 Pro (ZMEERAZBERRY7_PRO or ZMEURAZBERRY7_PRO, 700 series) - Z-Wave.Me Razberry 2 (500 series) -If you are just starting out, we recommend that you purchase a 700 series controller or a Raspberry Pi module. +If you are just starting out, we recommend that you purchase a 700 series controller or a Raspberry Pi module. The 700 series controllers are the more recent version (when compared to the 500 series). The 700 series controllers support SmartStart, which allows you to add a device by scanning a QR code.
If you're using Home Assistant OS, Supervised, or Container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. @@ -134,4 +137,4 @@ This procedure has been tested with the following modules: 1. Carefully [close the case](https://yellow.home-assistant.io/guides/add-ssd-existing-installation/#reassembling-top-part) and power up Home Assistant Yellow. 1. Follow the procedure on [setting up a Z-Wave JS server](/integrations/zwave_js/#setting-up-a-z-wave-js-server). 1. In step 2, follow the manual setup steps to install the Z-Wave integration. - 1. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**. \ No newline at end of file + 1. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**. diff --git a/source/_examples/configuration_yaml_by_dannytsang.markdown b/source/_examples/configuration_yaml_by_dannytsang.markdown new file mode 100644 index 00000000000..84a3dcc7a4b --- /dev/null +++ b/source/_examples/configuration_yaml_by_dannytsang.markdown @@ -0,0 +1,6 @@ +--- +title: "Configuration.yaml by dannytsang" +description: "" +ha_category: Example configuration.yaml +ha_external_link: https://github.com/dannytsang/homeassistant-config +--- diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 487acf02ad5..78e94865803 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -39,22 +39,6 @@ -
  • - {% active_link /docs/assist/ Assist %} - -
  • {% active_link /docs/energy/ Home Energy Management %}
  • Integrations
  • diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html index 4919d7a7bde..3a9f2302e35 100644 --- a/source/_includes/site/sidebar.html +++ b/source/_includes/site/sidebar.html @@ -19,6 +19,8 @@ {% include asides/docs_navigation.html %} {% elsif root == 'faq' %} {% include asides/faq_navigation.html %} + {% elsif root == 'voice_control' %} + {% include asides/voice_navigation.html %} {% elsif root == 'hassio' or root == 'addons' %} {% include asides/hassio_navigation.html %} {% elsif root == 'cloud' %} diff --git a/source/_integrations/airzone_cloud.markdown b/source/_integrations/airzone_cloud.markdown new file mode 100644 index 00000000000..36ceab4c020 --- /dev/null +++ b/source/_integrations/airzone_cloud.markdown @@ -0,0 +1,64 @@ +--- +title: Airzone Cloud +description: Instructions on how to integrate Airzone Cloud within Home Assistant. +ha_release: 2023.6 +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_domain: airzone_cloud +ha_platforms: + - diagnostics + - sensor +ha_codeowners: + - '@Noltari' +ha_integration_type: integration +--- + +This integration interacts with the Cloud API of [Airzone devices](https://www.airzone.es/en/). + +There are two main types of Airzone devices: +- [Aidoo](https://www.airzonecontrol.com/aa/en/control-solutions/aidoo/wi-fi/) / [Aidoo Pro](https://www.airzonecontrol.com/aa/en/control-solutions/aidoo/pro/) +- [Easyzone (US)](https://www.airzonecontrol.com/aa/en/control-solutions/easyzone/) / [Flexa (EU)](https://www.airzonecontrol.com/ib/es/soluciones-de-control/flexa/) + +## Aidoo / Aidoo Pro + +These devices are Wi-Fi controllers that are normally connected to a single air conditioner split system. + +## Easyzone (US) / Flexa (EU) + +These devices are connected to ducted air conditioners, motorized grilles, and individual thermostats for every room (zone). Therefore, with a single ducted air conditioning system, the user can turn on and off the air conditioner and set different desired temperatures in each room. + +A typical Airzone HVAC system consists of a parent device (called *master zone* in Airzone terminology) and child devices (called *slave zones* in Airzone terminology). The [HVAC mode](https://www.home-assistant.io/integrations/climate/#service-climateset_hvac_mode) can only be changed on the parent device. On child devices, you can only enable or disable the HVAC and adjust the desired temperature for that specific device. + +Note that multiple HVAC systems can be connected to the same Airzone web server. In this case, there will be one *parent zone* per HVAC system and there may also be *child zones* for each HVAC system. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +Username: + description: "Cloud API username" +Password: + description: "Cloud API password" +{% endconfiguration_basic %} + +## Sensors + +For each Airzone Aidoo (HVAC Wi-Fi controller), the following *sensors* are created: + +| Condition | Description | +| :------------------ | :------------------------------------------------- | +| temperature | Measures the temperature from the HVAC thermostat. | + +For each Airzone zone (thermostat), the following *sensors* are created: + +| Condition | Description | +| :------------------ | :-------------------------------------------------- | +| humidity | Measures the relative humidity in the current zone. | +| temperature | Measures the temperature in the current zone. | + +For each Airzone WebServer (HVAC Wi-Fi controller), the following *sensors* are created: + +| Condition | Description | +| :------------------ | :------------------------------------------------- | +| rssi | Wi-Fi RSSI. | diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown index 3fa8b049d11..06a160ff05f 100644 --- a/source/_integrations/alexa.intent.markdown +++ b/source/_integrations/alexa.intent.markdown @@ -195,6 +195,8 @@ The names must exactly match the scene names (minus underscores - Amazon discard In the new Alexa Skills Kit, you can also create synonyms for slot type values, which can be used in place of the base value in utterances. Synonyms will be replaced with their associated slot value in the intent request sent to the Alexa API endpoint, but only if there are not multiple synonym matches. Otherwise, the value of the synonym that was spoken will be used. +If you want to use the `Optional ID` field next to or instead of the Synonym value, you can simply append "_Id" at the end of the template variable e.g. `Scene_Id`. +

    Custom slot values with synonyms. @@ -217,6 +219,8 @@ intent_script: service: scene.turn_on target: entity_id: scene.{{ Scene | replace(" ", "_") }} + data: + id: {{ Scene_Id }} speech: type: plain text: OK diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index ba7f4004f82..204df6c3bf0 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -16,7 +16,7 @@ Polly is a paid service via Amazon Web Services. There is a [free tier](https:/ ## Setup -For more information, please read the [AWS General Reference regarding Security Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html) to get the needed details. Also, check the [boto3 Documentation](https://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file) about the profiles and the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region) for available regions. +For more information, please read the [AWS General Reference regarding Security Credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) to get the needed details. Also, check the [boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#shared-credentials-file) about the profiles and the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) for available regions. Available voices are listed in the [Amazon Documentation](https://docs.aws.amazon.com/polly/latest/dg/voicelist.html). diff --git a/source/_integrations/androidtv_remote.markdown b/source/_integrations/androidtv_remote.markdown index 259b6c5b35b..6b233ddcbf2 100644 --- a/source/_integrations/androidtv_remote.markdown +++ b/source/_integrations/androidtv_remote.markdown @@ -1,23 +1,26 @@ --- title: Android TV Remote -description: Instructions on how to integrate Android TV remotes into Home Assistant. +description: Instructions on how to integrate Android TV Remote into Home Assistant. ha_category: + - Media Player - Remote ha_release: 2023.5 ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - '@tronikos' + - '@Drafteed' ha_quality_scale: platinum ha_domain: androidtv_remote ha_zeroconf: true ha_platforms: - diagnostics + - media_player - remote ha_integration_type: device --- -The Android TV Remote integration allows you to control an Android TV device by sending [commands](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt) and launching apps. For this to work, the Android TV device needs to have [Android TV Remote Service](https://play.google.com/store/apps/details?id=com.google.android.tv.remote.service) which is pre-installed on most devices. +The Android TV Remote integration allows you to control an Android TV and launching apps. For this to work the Android TV device needs to have [Android TV Remote Service](https://play.google.com/store/apps/details?id=com.google.android.tv.remote.service) which is pre-installed on most devices. For a quick introduction on how to get started with Android TV Remote, check out this video: @@ -25,21 +28,17 @@ For a quick introduction on how to get started with Android TV Remote, check out {% include integrations/config_flow.md %} -## Entity +## Media player -This integration adds a `remote` entity which turns on/off the Android TV device. -The entity has the `current_activity` attribute that shows the current foreground app on the Android TV. +This integration adds a `media_player` with basic playback and volume controls. The media player provides volume information and display name of current active app on the Android TV. Due to API limitations, the integration will not display the playback status. It is recommended to use this integration together with [Google Cast integration](https://www.home-assistant.io/integrations/cast/). Two media players can be combined into one using the [Universal Media Player](https://www.home-assistant.io/integrations/universal/) integration. -## Services +Using the `media_player.play_media` service, you can launch applications via `Deep Links` and switch channels. -You can use the `remote.turn_off`, `remote.turn_on`, `remote.toggle`, and `remote.send_command` services from the [remote](/integrations/remote/) platform. +### Launching apps -For a list of the most common commands that you can send to the Android TV via `remote.send_command`, see: [TvKeys](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt). -For a full list, see [here](https://github.com/tronikos/androidtvremote2/blob/main/src/androidtvremote2/remotemessage.proto#L90). +You can pass any URL to the device to open it in the built-in browser. Using `Deep Links` you can launch some applications. -If `activity` is specified in `remote.turn_on`, it will open the specified URL in the associated app. - -Examples of URLs to pass as activity for some popular apps: +Examples of some `Deep Links` for popular applications: | App | URL | | --- | --- | @@ -48,6 +47,132 @@ Examples of URLs to pass as activity for some popular apps: | Prime Video | https://app.primevideo.com | Disney+ | https://www.disneyplus.com +Examples: + +```yaml +# Launch the Netflix app +service: media_player.play_media +data: + media_content_type: url + media_content_id: https://www.netflix.com/title +target: + entity_id: media_player.living_room_tv +``` + +```yaml +# Open a specific YouTube video: +service: media_player.play_media +data: + media_content_type: url + media_content_id: https://www.youtube.com/watch?v=dQw4w9WgXcQ +target: + entity_id: media_player.living_room_tv +``` + +### Switch channels + +You can pass the channel number to switch the channel. The channel number must be an integer. + +Example: + +```yaml +# Change channel to number 15: +service: media_player.play_media +data: + media_content_type: channel + media_content_id: 15 +target: + entity_id: media_player.living_room_tv +``` + +## Remote + +The remote allows you to send key commands to your Android TV device with the `remote.send_command` service. +The entity has the `current_activity` attribute that shows the current foreground app on the Android TV. + +{% details "List of the most common commands" %} + +Navigation: +- DPAD_UP +- DPAD_DOWN +- DPAD_LEFT +- DPAD_RIGHT +- DPAD_CENTER +- BUTTON_A +- BUTTON_B +- BUTTON_X +- BUTTON_Y + +Volume Control: +- VOLUME_DOWN +- VOLUME_UP +- VOLUME_MUTE +- MUTE + +Media Control: +- MEDIA_PLAY_PAUSE +- MEDIA_PLAY +- MEDIA_PAUSE +- MEDIA_NEXT +- MEDIA_PREVIOUS +- MEDIA_STOP +- MEDIA_RECORD +- MEDIA_REWIND +- MEDIA_FAST_FORWARD + +TV Control: +- 0 +- 1 +- 2 +- 3 +- 4 +- 5 +- 6 +- 7 +- 8 +- 9 +- DEL +- ENTER +- CHANNEL_UP +- CHANNEL_DOWN +- F1 +- F2 +- F3 +- F4 +- F5 +- F6 +- F7 +- F8 +- F9 +- F10 +- F11 +- F12 +- TV +- PROG_RED +- PROG_GREEN +- PROG_YELLOW +- PROG_BLUE + +Other: +- BUTTON_MODE +- EXPLORER +- MENU +- INFO +- GUIDE +- TV_TELETEXT +- CAPTIONS +- DVR +- MEDIA_AUDIO_TRACK +- SETTINGS +- SEARCH +- ASSIST + +{% enddetails %} + +For a full list see [here](https://github.com/tronikos/androidtvremote2/blob/main/src/androidtvremote2/remotemessage.proto#L90). + +If `activity` is specified in `remote.turn_on` it will open the specified URL in the associated app. See [Launching apps section](#launching-apps). + Examples of service calls: ```yaml @@ -87,7 +212,7 @@ target: entity_id: remote.living_room_tv ``` -## Dashboard example +### Dashboard example You have to manually create buttons in Lovelace to send commands to the Android TV device or launch apps on it. diff --git a/source/_integrations/assist_pipeline.markdown b/source/_integrations/assist_pipeline.markdown index 080fda04907..edff2cd5347 100644 --- a/source/_integrations/assist_pipeline.markdown +++ b/source/_integrations/assist_pipeline.markdown @@ -15,7 +15,7 @@ ha_platforms: - select --- -The Assist pipeline integration provides the foundation for the [Assist](/docs/assist/) voice assistant in Home Assistant. +The Assist pipeline integration provides the foundation for the [Assist](/voice_control/) voice assistant in Home Assistant. For most users, there is no need to install this integration manually. The Assist pipeline integration is part of the default configuration and is set up automatically if needed by other integrations. If you are not using the default integration, you need to add the following to your `configuration.yaml` file: @@ -25,4 +25,4 @@ If you are not using the default integration, you need to add the following to y assist_pipeline: ``` -For more information, refer to the procedure on [configuring a pipeline](/docs/assist/voice_remote_local_assistant/). +For more information, refer to the procedure on [configuring a pipeline](/voice_control/voice_remote_local_assistant/). diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 55975493d39..2d2f7254208 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -15,7 +15,7 @@ The `aws` integration provides a single place to interact with [Amazon Web Servi ## Setup -You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/tutorials/control-your-costs-free-tier-budgets/) guide for more information. +You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/hands-on/control-your-costs-free-tier-budgets/) guide for more information. The `lambda`, `sns`, `sqs`, and `events` services, used in the `aws` component, all provide an **Always Free** tier for all users even after the 12-month period. The general usage in Home Automation will most likely not reach the free tier limit. Please read [Lambda Pricing](https://aws.amazon.com/lambda/pricing/), [SNS Pricing](https://aws.amazon.com/sns/pricing/), [SQS Pricing](https://aws.amazon.com/sqs/pricing/), and [EventBridge Pricing](https://aws.amazon.com/eventbridge/pricing/) for more details. @@ -104,7 +104,7 @@ context: ## Lambda Notify Usage -AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke). +AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)) or a partial ARN. For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/invoke.html). The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: @@ -132,7 +132,7 @@ The context will look like this: ## SNS Notify Usage -AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish). +AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)). For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns/client/publish.html). If one exists, the SNS Subject will be set to the title. All attributes from the payload, except the message, will be sent as stringified message attributes. @@ -158,7 +158,7 @@ If you do not download them, you will lose them and will have to recreate a new ## SQS Notify Usage -AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html) and [bototcore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.send_message) +AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-message-identifiers.html) and [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/send_message.html) The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload, except message, will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: @@ -174,7 +174,7 @@ The SQS event payload will contain everything passed in the service call payload ``` ## EventBridge Notify Usage -AWS EventBridge is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the event bus for all targets given in the notification payload. A target must be a name of an event bus accessible by the given credentials. A target is not required, and the default event bus will be used if none are specified. For more information, please see the [EventBridge documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html) and [bototcore documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events.html#EventBridge.Client.put_events) +AWS EventBridge is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the event bus for all targets given in the notification payload. A target must be a name of an event bus accessible by the given credentials. A target is not required, and the default event bus will be used if none are specified. For more information, please see the [EventBridge documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html) and [botocore documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events/client/put_events.html) There are two options for generating the event detail based on the service call payload. If the `detail` attribute is specified, then its value will be serialized as a JSON object and used for the event detail. If the attribute is not specified, then the value of the `message` attribute is serialized as a simple JSON object with a single key named `message` and the value of the message supplied to the service call. diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index f2355779316..2d253115cdb 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -12,15 +12,15 @@ ha_config_flow: true ha_integration_type: integration --- -The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to an [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). +The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/products/event-hubs/) or to an [Azure IoT Hub](https://learn.microsoft.com/azure/iot-hub/iot-hub-devguide-messages-read-builtin). ## First time setup -This assumes you already have an Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/en-us/free/). +This assumes you already have an Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/free/). -You need to create an Event Hub namespace and an Event Hub in that namespace, you can follow [this guide](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group). +You need to create an Event Hub namespace and an Event Hub in that namespace, you can follow [this guide](https://learn.microsoft.com/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group). -You must then create a Shared Access Policy for the Event Hub with 'Send' claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Event Hubs [go here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-authentication-and-security-model-overview). +You must then create a Shared Access Policy for the Event Hub with 'Send' claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Event Hubs [go here](https://learn.microsoft.com/azure/event-hubs/authenticate-shared-access-signature). Once you have the name of your namespace, instance, Shared Access Policy and the key for that policy, you can setup the integration itself. @@ -94,10 +94,10 @@ filter: ## Using the data in Azure -There are a number of ways to stream the data that comes into the Event Hub into storages in Azure, the easiest way is to use the built-in Capture function and this allows you to capture the data in Azure Blob Storage or Azure Data Lake store, [details here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview). +There are a number of ways to stream the data that comes into the Event Hub into storages in Azure, the easiest way is to use the built-in Capture function and this allows you to capture the data in Azure Blob Storage or Azure Data Lake store, [details here](https://learn.microsoft.com/azure/event-hubs/event-hubs-capture-overview). -Other storages in Azure (and outside) are possible with an [Azure Stream Analytics job](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-outputs#table-storage), custom writing to [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). +Other storages in Azure (and outside) are possible with an [Azure Stream Analytics job](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-define-outputs), custom writing to [Azure Blob Storage](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). -On the analytical side, Event Hub can be directly fed into [Azure Databricks Spark](https://docs.microsoft.com/en-us/azure/azure-databricks/databricks-stream-from-eventhubs?toc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fevent-hubs%2FTOC.json&bc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json), [Azure Time Series Insights](https://docs.microsoft.com/en-us/azure/time-series-insights/time-series-insights-how-to-add-an-event-source-eventhub) and [Microsoft Power BI](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-tutorial-visualize-anomalies). +On the analytical side, Event Hub can be directly fed into [Azure Databricks Spark](https://learn.microsoft.com/azure/databricks/structured-streaming/streaming-event-hubs), [Azure Time Series Insights](https://learn.microsoft.com/azure/time-series-insights/how-to-ingest-data-event-hub) and [Microsoft Power BI](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-real-time-fraud-detection). -The final way to use the data in Azure is to connect an Azure Function to the Event Hub using the [Event Hub trigger binding](https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs). +The final way to use the data in Azure is to connect an Azure Function to the Event Hub using the [Event Hub trigger binding](https://learn.microsoft.com/azure/azure-functions/functions-bindings-event-hubs). diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index c2c7aeccc9b..25ae9f72c34 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -13,15 +13,15 @@ ha_platforms: ha_integration_type: integration --- -The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/en-us/services/service-bus/) from within Home Assistant. +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. ## First-time setup -This assumes you already have an Azure account. Otherwise, create a free account [here](https://azure.microsoft.com/en-us/free/). +This assumes you already have an Azure account. Otherwise, create a free account [here](https://azure.microsoft.com/free/). -You need to create a Service Bus namespace; you can follow [this guide](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-create-namespace-portal). +You need to create a Service Bus namespace; you can follow [this guide](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-quickstart-portal#create-a-namespace-in-the-azure-portal). -You must then create a Shared Access Policy for the Service Bus with `Send` claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Service Bus [go here](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-authentication-and-authorization#shared-access-signature). Alternatively you can create a dedicated key for only one queue or topic, to restrict access to only that queue or topic. +You must then create a Shared Access Policy for the Service Bus with `Send` claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Service Bus [go here](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-authentication-and-authorization#shared-access-signature). Alternatively you can create a dedicated key for only one queue or topic, to restrict access to only that queue or topic. Once you have the connection string with `Send` policy, you can set up the integration itself. diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index e7a4757ea19..347cb372845 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -69,7 +69,7 @@ availability_topic: required: false type: string device: - description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." + description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/device_registry_index/). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." required: false type: map keys: @@ -129,7 +129,7 @@ encoding: type: string default: "utf-8" entity_category: - description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + description: The [category](https://developers.home-assistant.io/docs/core/entity/#generic-properties) of the entity. required: false type: string default: None diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index a79cf8cf53e..b14b7d35b54 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -11,6 +11,7 @@ ha_category: - Presence Detection - Select - Sensor + - Switch ha_release: 0.64 ha_iot_class: Cloud Polling ha_config_flow: true @@ -28,6 +29,7 @@ ha_platforms: - number - select - sensor + - switch ha_integration_type: integration --- @@ -50,6 +52,7 @@ This integration provides the following platforms: - [Notifications](/integrations/bmw_connected_drive/#notifications): Send Points of Interest (POI) to your car. - [Buttons](/integrations/bmw_connected_drive/#buttons): Turn on air condition, sound the horn, flash the lights, update the vehicle location and update the state. - [Selects](/integrations/bmw_connected_drive/#selects): Display and control charging related settings for (PH)EVs. +- [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 @@ -107,10 +110,6 @@ The air conditioning of the vehicle can be activated with the `button._deactivate_air_conditioning` button. - -This will only work if you have the option to stop the AC in the *MyBMW* app. If your car doesn't support this service, nothing will happen. - ### Sound the horn The `button._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. @@ -149,6 +148,15 @@ 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 + +If supported by your vehicle, you can display and toggle remote services 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). +- **Charging**: Toggle vehicle charging if plugged in. Only available on some electric vehicles. + ## 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` service. For more information, please see the [number documentation](/integrations/number/). diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 22575a0b266..7c5a57867ce 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -629,25 +629,36 @@ Learning RF Frequency, press and hold the button to learn... Press and hold a button on the remote. +You will know it succeeded when you see the following text: ```txt Found RF Frequency - 1 of 2! You can now let go of the button Press enter to continue... ``` -Press enter. - +If the attempt fails, you will see the error: ```txt -To complete learning, single press the button you want to learn +RF Frequency not found ``` +If a failure occurs, you may need to simply keep pressing the button during the `Learning RF Frequency` step, as some remotes appear to not continuously transmit when buttons are held. -Short press the button and you get the code: +After a success, do one of the following two options: -```txt -Found RF Frequency - 2 of 2! -b2002c0111211011211121112111212110112122101121112111202210211121112110221011211121112121102210112121111021112221101121211100017b10211111211121102111212210112121111121102111212210211121102210211111211121102122102111112121101121112122101121211000017c10211111211022102111212210112121111022102112202210211121102210221011211022102122102210112121101122102122101121211100017b10211111211121102210212210112122101121102210212210221021112110221011211121112121102210112121111121102122101121221000017b1121101121112111211121211110212210112111211121211121102210211121101121112111212111211011222110112111212111112121100005dc000000000000000000000000 -Base64: b'sgAsAREhEBEhESERIREhIRARISIQESERIREgIhAhESERIRAiEBEhESERISEQIhARISERECERIiEQESEhEQABexAhEREhESEQIREhIhARISERESEQIREhIhAhESEQIhAhEREhESEQISIQIRERISEQESERISIQESEhEAABfBAhEREhECIQIREhIhARISERECIQIRIgIhAhESEQIhAiEBEhECIQISIQIhARISEQESIQISIQESEhEQABexAhEREhESEQIhAhIhARISIQESEQIhAhIhAiECERIRAiEBEhESERISEQIhARISERESEQISIQESEiEAABexEhEBEhESERIREhIREQISIQESERIREhIREhECIQIREhEBEhESERISERIRARIiEQESERISERESEhEAAF3AAAAAAAAAAAAAAAAA==' -``` +1. To learn a single button press RF code, press enter and follow the prompt: + ```txt + To complete learning, single press the button you want to learn + ``` + Short press the button and you get the code: + ```txt + Found RF Frequency - 2 of 2! + b2002c0111211011211121112111212110112122101121112111202210211121112110221011211121112121102210112121111021112221101121211100017b10211111211121102111212210112121111121102111212210211121102210211111211121102122102111112121101121112122101121211000017c10211111211022102111212210112121111022102112202210211121102210221011211022102122102210112121101122102122101121211100017b10211111211121102210212210112122101121102210212210221021112110221011211121112121102210112121111121102122101121221000017b1121101121112111211121211110212210112111211121211121102210211121101121112111212111211011222110112111212111112121100005dc000000000000000000000000 + Base64: b'sgAsAREhEBEhESERIREhIRARISIQESERIREgIhAhESERIRAiEBEhESERISEQIhARISERECERIiEQESEhEQABexAhEREhESEQIREhIhARISERESEQIREhIhAhESEQIhAhEREhESEQISIQIRERISEQESERISIQESEhEAABfBAhEREhECIQIREhIhARISERECIQIRIgIhAhESEQIhAiEBEhECIQISIQIhARISEQESIQISIQESEhEQABexAhEREhESEQIhAhIhARISIQESEQIhAhIhAiECERIRAiEBEhESERISEQIhARISERESEQISIQESEiEAABexEhEBEhESERIREhIREQISIQESERIREhIREhECIQIREhEBEhESERISERIRARIiEQESERISERESEhEAAF3AAAAAAAAAAAAAAAAA==' + ``` + +2. To learn a button hold RF code, hold the button you wish to learn for 1-2 seconds then immediately press enter. + * You will see the same prompts for a short press as shown above. You should see it return a different base64 code. + * Test the base64 code to ensure it performs the button 'hold' command as expected, rather than the button 'press' command. + * This might take some trial and error to get the hold timing right before hitting enter to scan for the code. ### Conversion of codes from other projects diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 4039b5e0688..463a56d898a 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -88,7 +88,7 @@ current_humidity_template: required: false type: template current_humidity_topic: - description: The MQTT topic on which to listen for the current humidity. A `"None"` value received will reset the current temperature. Empty values (`'''`) will be ignored. + description: The MQTT topic on which to listen for the current humidity. A `"None"` value received will reset the current humidity. Empty values (`'''`) will be ignored. required: false type: string current_temperature_template: @@ -96,7 +96,7 @@ current_temperature_template: required: false type: template current_temperature_topic: - description: The MQTT topic on which to listen for the current temperature. A `"None"` value received will reset the current humidity. Empty values (`'''`) will be ignored. + description: The MQTT topic on which to listen for the current temperature. A `"None"` value received will reset the current temperature. Empty values (`'''`) will be ignored. required: false type: string device: diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index 39c228b59ab..3a15802a7bd 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -23,7 +23,7 @@ The setup requires an API Token created with `Zone:Zone:Read` and `Zone:DNS:Edit An easy way to create this is to start with the "Edit zone DNS" template then add `Zone:Zone:Read` to the permissions. -[Cloudflare API Tokens Guide](https://developers.cloudflare.com/api/tokens/create) +[Cloudflare API Tokens Guide](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) {% include integrations/config_flow.md %} diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index b740e2e1160..49498e6806b 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -17,21 +17,12 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_codeowners: + - '@gjohansson-ST' --- The `command_line` offers functionality that issues specific commands to get data or to control a device. -## Binary sensor - -To use your Command binary sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: command_line - command: "cat /proc/sys/net/ipv4/ip_forward" -``` -

    It's highly recommended to enclose the command in single quotes `'` as it ensures all characters can be used in the command and reduces the risk of unintentional escaping. To include a single quote in a command enclosed in single quotes, double it: `''`. @@ -39,76 +30,61 @@ It's highly recommended to enclose the command in single quotes `'` as it ensure
    {% configuration %} -command: - description: The action to take to get the value. - required: true - type: string -command_timeout: - description: Defines number of seconds for command timeout. - required: false - type: integer - default: 15 -device_class: - description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend. - required: false - type: string -name: - description: Let you overwrite the name of the device. - required: false - type: string - default: "*name* from the device" -payload_on: - description: The payload that represents enabled state. - required: false - type: string - default: 'ON' -unique_id: - description: An ID that uniquely identifies this binary sensor. Set this to a unique value to allow customization through the UI. - required: false - type: string -payload_off: - description: The payload that represents disabled state. - required: false - type: string - default: 'OFF' -scan_interval: - description: Defines number of seconds for polling interval. - required: false - type: integer - default: 60 -value_template: - description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - required: false - type: string -{% endconfiguration %} - -## Cover - -A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line. - -To enable a command line cover in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: command_line - covers: - garage_door: - command_open: move_command up garage - command_close: move_command down garage - command_stop: move_command stop garage -``` - -{% configuration %} -covers: - description: The array that contains all command line covers. +command_line: + description: The platforms to use for you command_line integration. required: true type: list keys: - identifier: - description: Name of the command line cover as slug. Multiple entries are possible. - required: true - type: list + binary_sensor: + description: Binary sensor platform. + required: false + type: map + keys: + command: + description: The action to take to get the value. + required: true + type: string + command_timeout: + description: Defines number of seconds for command timeout. + required: false + type: integer + default: 15 + device_class: + description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend. + required: false + type: string + name: + description: Let you overwrite the name of the device. + required: false + type: string + default: "*name* from the device" + payload_on: + description: The payload that represents enabled state. + required: false + type: string + default: 'ON' + unique_id: + description: An ID that uniquely identifies this binary sensor. Set this to a unique value to allow customization through the UI. + required: false + type: string + payload_off: + description: The payload that represents disabled state. + required: false + type: string + default: 'OFF' + value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. + required: false + type: string + scan_interval: + description: Define time in seconds between each update. + required: false + type: integer + default: 60 + cover: + description: Cover platform. + required: false + type: map keys: command_close: description: The action to close the cover. @@ -134,15 +110,10 @@ covers: required: false type: integer default: 15 - friendly_name: + name: description: The name used to display the cover in the frontend. - required: false + required: true type: string - scan_interval: - description: Defines number of seconds for polling interval. - required: false - type: integer - default: 60 unique_id: description: An ID that uniquely identifies this cover. Set this to a unique value to allow customization through the UI. required: false @@ -150,119 +121,73 @@ covers: value_template: description: if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example configuration above will allow you to translate that into the valid state `100`. required: false - default: "'{% raw %}{{ value }}{% endraw%}'" type: template -{% endconfiguration %} - -## Notify - -The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN. - -To enable those notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: command_line - command: "espeak -vmb/mb-us1" -``` - -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: notify - type: string -command: - description: The action to take. - required: true - type: string -command_timeout: - description: Defines number of seconds for command timeout. - required: false - type: integer - default: 15 -{% endconfiguration %} - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -## Sensor - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: command_line - command: SENSOR_COMMAND -``` - -{% configuration %} -command: - description: The action to take to get the value. - required: true - type: string -command_timeout: - description: Defines number of seconds for command timeout - required: false - type: integer - default: 15 -json_attributes: - description: Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes. - required: false - type: [string, list] -name: - description: Name of the command sensor. - required: false - type: string -unique_id: - description: An ID that uniquely identifies this sensor. Set this to a unique value to allow customization through the UI. - required: false - type: string -scan_interval: - description: Defines number of seconds for polling interval. - required: false - type: integer - default: 60 -unit_of_measurement: - description: Defines the unit of measurement of the sensor, if any. - required: false - type: string -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." - required: false - type: string -{% endconfiguration %} - -## Switch - -The `command_line` switch platform issues specific commands when it is turned on -and off. This might very well become our most powerful platform as it allows -anyone to integrate any type of switch into Home Assistant that can be -controlled from the command line, including calling other scripts! - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - - platform: command_line - switches: - kitchen_light: - command_on: switch_command on kitchen - command_off: switch_command off kitchen -``` - -{% configuration %} -switches: - description: The array that contains all command switches. - required: true - type: map - keys: - identifier: - description: Name of the command switch as slug. Multiple entries are possible. - required: true + scan_interval: + description: Define time in seconds between each update. + required: false + type: integer + default: 15 + notify: + description: Notify platform. + required: false + type: map + keys: + name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string + command: + description: The action to take. + required: true + type: string + command_timeout: + description: Defines number of seconds for command timeout. + required: false + type: integer + default: 15 + sensor: + description: Sensor platform. + required: false + type: map + keys: + command: + description: The action to take to get the value. + required: true + type: string + command_timeout: + description: Defines number of seconds for command timeout + required: false + type: integer + default: 15 + json_attributes: + description: Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes. + required: false + type: [string, list] + name: + description: Name of the command sensor. + required: false + type: string + unique_id: + description: An ID that uniquely identifies this sensor. Set this to a unique value to allow customization through the UI. + required: false + type: string + unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string + value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." + required: false + type: string + scan_interval: + description: Define time in seconds between each update. + required: false + type: integer + default: 60 + switch: + description: Switch platform. + required: false type: map keys: command_on: @@ -282,19 +207,14 @@ switches: required: false type: integer default: 15 - friendly_name: + name: description: The name used to display the switch in the frontend. - required: false + required: true type: string - icon_template: + icon: description: Defines a template for the icon of the entity. required: false type: template - scan_interval: - description: Defines number of seconds for polling interval. - required: false - type: integer - default: 60 unique_id: description: An ID that uniquely identifies this switch. Set this to a unique value to allow customization through the UI. required: false @@ -303,21 +223,103 @@ switches: description: "If specified, `command_state` will ignore the result code of the command but the template evaluating to `true` will indicate the switch is on." required: false type: string + scan_interval: + description: Define time in seconds between each update. + required: false + type: integer + default: 30 {% endconfiguration %} -A note on `friendly_name`: +## Binary sensor -When set, the `friendly_name` had been previously used for API calls and backend -configuration instead of the `object_id` ("identifier"), but -[this behavior is changing](https://github.com/home-assistant/home-assistant/pull/4343) -to make the `friendly_name` for display purposes only. This allows users to set -an `identifier` that emphasizes uniqueness and predictability for API and configuration -purposes but have a prettier `friendly_name` still show up in the UI. As an -additional benefit, if a user wanted to change the `friendly_name` / display -name (e.g., from "Kitchen Lightswitch" to "Kitchen Switch" or -"Living Room Light", or remove the `friendly_name` altogether), they could -do so without needing to change existing automations or API calls. -See aREST device below for an example. +To use your Command binary sensor in your installation, add the following to your `configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +command_line: + - binary_sensor: + command: "cat /proc/sys/net/ipv4/ip_forward" +``` +{% endraw%} + +## Cover + +A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line. + +To enable a command line cover in your installation, add the following to your `configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +command_line: + - cover: + command_open: move_command up garage + command_close: move_command down garage + command_stop: move_command stop garage + name: Garage +``` +{% endraw%} + +## Notify + +The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN. + +To enable those notifications in your installation, add the following to your `configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +command_line: + - notify: + command: "espeak -vmb/mb-us1" +``` +{% endraw%} + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +## Sensor + +To enable it, add the following lines to your `configuration.yaml`: + +{% raw %} +```yaml +# Example configuration.yaml entry +command_line: + - sensor: + command: SENSOR_COMMAND +``` +{% endraw%} + +## Switch + +The `command_line` switch platform issues specific commands when it is turned on +and off. This might very well become our most powerful platform as it allows +anyone to integrate any type of switch into Home Assistant that can be +controlled from the command line, including calling other scripts! + +To enable it, add the following lines to your `configuration.yaml`: + +{% raw %} +```yaml +# Example configuration.yaml entry +command_line: + - switch: + name: Kitchen Light + command_on: switch_command on kitchen + command_off: switch_command off kitchen +``` +{% endraw%} + +
    + +A note on `name` for `cover` and `switch`: + +The use of `friendly_name` and `object_id` has been deprecated and the slugified `name` will also be used as identifier. + +Use `unique_id` to enable changing the name from the UI if required to use `name` as identifier object as required. + +
    ## Execution @@ -339,42 +341,48 @@ In this section you find some real-life examples of how to use the command_line Check the state of an [SickRage](https://github.com/sickragetv/sickrage) instance. +{% raw %} ```yaml # Example configuration.yaml entry -binary_sensor: - - platform: command_line - command: 'netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running")' - name: "sickragerunning" - device_class: moving - payload_on: "Running" - payload_off: "Not running" +command_line: + - binary_sensor: + command: 'netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running")' + name: "sickragerunning" + device_class: moving + payload_on: "Running" + payload_off: "Not running" ``` +{% endraw%} ### Check RasPlex Check if [RasPlex](https://github.com/RasPlex/RasPlex) is `online`. +{% raw %} ```yaml -binary_sensor: - - platform: command_line - command: 'ping -c 1 rasplex.local | grep "1 received" | wc -l' - name: "is_rasplex_online" - device_class: connectivity - payload_on: 1 - payload_off: 0 +command_line: + - binary_sensor: + command: 'ping -c 1 rasplex.local | grep "1 received" | wc -l' + name: "is_rasplex_online" + device_class: connectivity + payload_on: 1 + payload_off: 0 ``` +{% endraw%} An alternative solution could look like this: +{% raw %} ```yaml -binary_sensor: - - platform: command_line - name: Printer - command: 'ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail' - device_class: connectivity - payload_on: "success" - payload_off: "fail" +command_line: + - binary_sensor: + name: Printer + command: 'ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail' + device_class: connectivity + payload_on: "success" + payload_off: "fail" ``` +{% endraw%} Consider to use the [ping sensor](/integrations/ping#binary-sensor) as an alternative to the samples above. @@ -382,6 +390,7 @@ Consider to use the [ping sensor](/integrations/ping#binary-sensor) as an altern The services running is listed in `/etc/systemd/system` and can be checked with the `systemctl` command: +{% raw %} ```bash $ systemctl is-active home-assistant@rock64.service active @@ -389,38 +398,40 @@ $ sudo service home-assistant@rock64.service stop $ systemctl is-active home-assistant@rock64.service inactive ``` +{% endraw%} A binary command line sensor can check this: +{% raw %} ```yaml -binary_sensor: - - platform: command_line - command: '/bin/systemctl is-active home-assistant@rock64.service' - payload_on: "active" - payload_off: "inactive" +command_line: + - binary_sensor: + command: '/bin/systemctl is-active home-assistant@rock64.service' + payload_on: "active" + payload_off: "inactive" ``` +{% endraw%} ## Example cover platform {% raw %} - ```yaml # Example configuration.yaml entry -cover: - - platform: command_line - covers: - garage_door: - command_open: move_command up garage - command_close: move_command down garage - command_stop: move_command stop garage - command_state: state_command garage - value_template: > - {% if value == 'open' %} - 100 - {% elif value == 'closed' %} - 0 - {% endif %} +command_line: + - cover: + name: Garage door + command_open: move_command up garage + command_close: move_command down garage + command_stop: move_command stop garage + command_state: state_command garage + value_template: > + {% if value == 'open' %} + 100 + {% elif value == 'closed' %} + 0 + {% endif %} ``` +{% endraw%} ## Examples sensor platform @@ -431,34 +442,35 @@ In this section you find some real-life examples of how to use this sensor. Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your `configuration.yaml` file: {% raw %} - ```yaml # Example configuration.yaml entry -sensor: - - platform: command_line - name: CPU Temperature - command: "cat /sys/class/thermal/thermal_zone0/temp" - # If errors occur, make sure configuration file is encoded as UTF-8 - unit_of_measurement: "°C" - value_template: "{{ value | multiply(0.001) | round(1) }}" +command_line: + - sensor: + name: CPU Temperature + command: "cat /sys/class/thermal/thermal_zone0/temp" + # If errors occur, make sure configuration file is encoded as UTF-8 + unit_of_measurement: "°C" + value_template: "{{ value | multiply(0.001) | round(1) }}" ``` - -{% endraw %} +{% endraw%} ### Monitoring failed login attempts on Home Assistant If you'd like to know how many failed login attempts are made to Home Assistant, add the following to your `configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry -sensor: - - platform: command_line - name: badlogin - command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log" +command_line: + - sensor: + name: Badlogin + command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log" ``` +{% endraw%} Make sure to configure the [Logger integration](/integrations/logger) to monitor the [HTTP integration](/integrations/http/) at least the `warning` level. +{% raw %} ```yaml # Example working logger settings that works logger: @@ -466,28 +478,33 @@ logger: logs: homeassistant.components.http: warning ``` +{% endraw%} ### Details about the upstream Home Assistant release You can see directly in the frontend (**Developer tools** -> **About**) what release of Home Assistant you are running. The Home Assistant releases are available on the [Python Package Index](https://pypi.python.org/pypi). This makes it possible to get the current release. +{% raw %} ```yaml -sensor: - - platform: command_line - command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])" - name: HA release +command_line: + - sensor: + command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])" + name: HA release ``` +{% endraw%} ### Read value out of a remote text file If you own devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value. +{% raw %} ```yaml -sensor: - - platform: command_line - command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)" - name: File value +command_line: + - sensor: + command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)" + name: File value ``` +{% endraw%} ### Use an external script @@ -495,12 +512,15 @@ The example is doing the same as the [aREST sensor](/integrations/arest#sensor) The one-line script to retrieve a value is shown below. Of course it would be possible to use this directly in the `configuration.yaml` file but need extra care about the quotation marks. +{% raw %} ```bash python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])" ``` +{% endraw%} The script (saved as `arest-value.py`) that is used looks like the example below. +{% raw %} ```python #!/usr/bin/python3 from requests import get @@ -508,53 +528,52 @@ from requests import get response = get("http://10.0.0.48/analog/2") print(response.json()["return_value"]) ``` +{% endraw%} To use the script you need to add something like the following to your `configuration.yaml` file. +{% raw %} ```yaml # Example configuration.yaml entry -sensor: - - platform: command_line - name: Brightness - command: "python3 /path/to/script/arest-value.py" +command_line: + - sensor: + name: Brightness + command: "python3 /path/to/script/arest-value.py" ``` +{% endraw%} ### Usage of templating in `command:` [Templates](/docs/configuration/templating/) are supported in the `command` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script. {% raw %} - ```yaml # Example configuration.yaml entry -sensor: - - platform: command_line - name: wind direction - command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}" - unit_of_measurement: "Direction" +command_line: + - sensor: + name: Wind direction + command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}" + unit_of_measurement: "Direction" ``` - -{% endraw %} +{% endraw%} ### Usage of JSON attributes in command output The example shows how you can retrieve multiple values with one sensor (where the additional values are attributes) by using `value_json` and `json_attributes`. {% raw %} - ```yaml # Example configuration.yaml entry -sensor: - - platform: command_line - name: JSON time - json_attributes: - - date - - milliseconds_since_epoch - command: "python3 /home/pi/.homeassistant/scripts/datetime.py" - value_template: "{{ value_json.time }}" +command_line: + - sensor: + name: JSON time + json_attributes: + - date + - milliseconds_since_epoch + command: "python3 /home/pi/.homeassistant/scripts/datetime.py" + value_template: "{{ value_json.time }}" ``` - -{% endraw %} +{% endraw%} ## Example switch platform @@ -563,28 +582,23 @@ sensor: This example demonstrates how to use template to change the icon as its state changes. This icon is referencing its own state. {% raw %} - ```yaml -switch: - - platform: command_line - switches: - - driveway_sensor_motion: - friendly_name: Driveway outside sensor - command_on: > - curl -X PUT -d '{"on":true}' "http://ip_address/api/sensors/27/config/" - command_off: > - curl -X PUT -d '{"on":false}' "http://ip_address/api/sensors/27/config/" - command_state: curl http://ip_address/api/sensors/27/ - value_template: > - {{value_json.config.on}} - icon_template: > - {% if value_json.config.on == true %} mdi:toggle-switch - {% else %} mdi:toggle-switch-off - {% endif %} +command_line: + - switch: + name: Driveway outside sensor + command_on: > + curl -X PUT -d '{"on":true}' "http://ip_address/api/sensors/27/config/" + command_off: > + curl -X PUT -d '{"on":false}' "http://ip_address/api/sensors/27/config/" + command_state: curl http://ip_address/api/sensors/27/ + value_template: > + {{value_json.config.on}} + icon_template: > + {% if value_json.config.on == true %} mdi:toggle-switch + {% else %} mdi:toggle-switch-off + {% endif %} ``` - -{% endraw %} +{% endraw%} ### aREST device @@ -594,21 +608,17 @@ The command line tool [`curl`](https://curl.haxx.se/) is used to toggle a pin which is controllable through REST. {% raw %} - ```yaml # Example configuration.yaml entry -switch: - - platform: command_line - switches: - arest_pin_four: - command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1" - command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0" - command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4" - value_template: '{{ value == "1" }}' - friendly_name: Kitchen Lightswitch +command_line: + - switch: + command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1" + command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0" + command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4" + value_template: '{{ value == "1" }}' + name: Kitchen Lightswitch ``` - -{% endraw %} +{% endraw%} Given this example, in the UI one would see the `friendly_name` of "Kitchen Light". However, the `identifier` is `arest_pin_four`, making the @@ -623,29 +633,31 @@ This switch will shutdown your system that is hosting Home Assistant. This switch will shutdown your host immediately, there will be no confirmation.
    +{% raw %} ```yaml # Example configuration.yaml entry -switch: - - platform: command_line - switches: - home_assistant_system_shutdown: - command_off: "/usr/sbin/poweroff" +command_line: + - switch: + name: Home Assistant System Shutdown + command_off: "/usr/sbin/poweroff" ``` +{% endraw%} ### Control your VLC player This switch will control a local VLC media player ([Source](https://community.home-assistant.io/t/vlc-player/106)). +{% raw %} ```yaml # Example configuration.yaml entry -switch: - - platform: command_line - switches: - vlc: - command_on: "cvlc 1.mp3 vlc://quit &" - command_off: "pkill vlc" +command_line: + - switch: + name: VLC + command_on: "cvlc 1.mp3 vlc://quit &" + command_off: "pkill vlc" ``` +{% endraw%} ### Control Foscam Motion Sensor @@ -655,20 +667,17 @@ This switch supports statecmd, which checks the current state of motion detection. {% raw %} - ```yaml # Example configuration.yaml entry -switch: - - platform: command_line - switches: - foscam_motion: - command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"' - command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"' - command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"' - value_template: '{{ value == "1" }}' +command_line: + - switch: + name: Foscam Motion + command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"' + command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"' + command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"' + value_template: '{{ value == "1" }}' ``` - -{% endraw %} +{% endraw%} - Replace admin and password with an "Admin" privileged Foscam user - Replace ipaddress with the local IP address of your Foscam diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index 76921188162..4d9490eb930 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -12,7 +12,7 @@ ha_domain: counter ha_integration_type: helper --- -The `counter` integration allows one to count occurrences fired by automations. +The Counter integration allows one to count occurrences fired by automations. ## Configuration @@ -85,7 +85,7 @@ If `restore` is set to `true`, the `initial` value will only be used when no pre ## Services -Available services: `increment`, `decrement`, `reset` and `configure`. +Available services: `increment`, `decrement`, `reset`, and `set_value`. ### Service `counter.increment` @@ -111,18 +111,14 @@ With this service the counter is reset to its initial value. | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. | -### Service `counter.configure` +### Service `counter.set_value` -With this service the properties of the counter can be changed while running. +This service allows setting the counter to a specific value. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. | -| `minimum` | yes | Set new value for minimum. None disables minimum. | -| `maximum` | yes | Set new value for maximum. None disables maximum. | -| `step` | yes | Set new value for step. | -| `initial` | yes | Set new value for initial. | -| `value` | yes | Set the counters state to the given value. | +| `value` | yes | Set the counter to the given value. | ### Use the service diff --git a/source/_integrations/date.markdown b/source/_integrations/date.markdown new file mode 100644 index 00000000000..fc8426fa593 --- /dev/null +++ b/source/_integrations/date.markdown @@ -0,0 +1,31 @@ +--- +title: Date +description: Instructions on how to set up date entities within Home Assistant. +ha_category: + - Date +ha_release: '2023.6' +ha_domain: date +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_integration_type: entity +--- + +The Date integration is built for the controlling and monitoring of dates on devices. + +Date entities cannot be created manually, but can be provided by other integrations. If you are looking for a way to create a similar entity, please take a look at the [Date/Time helper](/integrations/input_datetime). + +## Services + +### date services + +Available services: `date.set_value` + +### Service `date.set_value` + +Set a new value for the date entity. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`'s of dates to control. +| `date` | no | New date value to set. diff --git a/source/_integrations/datetime.markdown b/source/_integrations/datetime.markdown new file mode 100644 index 00000000000..7f5688725df --- /dev/null +++ b/source/_integrations/datetime.markdown @@ -0,0 +1,31 @@ +--- +title: Date/Time +description: Instructions on how to set up date/time entities within Home Assistant. +ha_category: + - Date/Time +ha_release: "2023.6" +ha_domain: datetime +ha_quality_scale: internal +ha_codeowners: + - "@home-assistant/core" +ha_integration_type: entity +--- + +The Date/Time integration is built for the controlling and monitoring of timestamps on devices. + +Date/Time entities cannot be implemented manually, but can be provided by other integrations. If you are looking for a way to create a Date/Time entity, please take a look at the [Date/Time helper](/integrations/input_datetime). + +## Services + +### datetime services + +Available services: `datetime.set_value` + +### Service `datetime.set_value` + +Set a new value for the datetime entity. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | +| `entity_id` | no | String or list of strings that point at `entity_id`'s of datetimes to control. | +| `datetime` | no | New datetime value to set. If timezone is not included, the Home Assistant instance's timezone will be used. | diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index d67aa39388b..54354a081c0 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -40,6 +40,8 @@ ha_platforms: - vacuum - water_heater - weather + - date + - time ha_integration_type: integration --- diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index e4de2edc032..24e0a145026 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -118,7 +118,14 @@ json_attributes_template: required: false type: template json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as device_tracker attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. + description: "The MQTT topic subscribed to receive a JSON dictionary message containing device tracker attributes. + This topic can be used to set the location of the device tracker under the following conditions: + +* If the attributes in the JSON message include `longitude`, `latitude`, and `gps_accuracy` (optional).\n +* If the device tracker is within a configured [zone](/integrations/zone/).\n + + If these conditions are met, it is not required to configure `state_topic`.\n\n + Be aware that any location message received at `state_topic` overrides the location received via `json_attributes_topic` until a message configured with `payload_reset` is received at `state_topic`. For a more generic usage example of the `json_attributes_topic`, refer to the [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation." required: false type: string name: @@ -164,8 +171,8 @@ source_type: required: false type: string state_topic: - description: The MQTT topic subscribed to receive device tracker state changes. - required: true + description: The MQTT topic subscribed to receive device tracker state changes. The states defined in `state_topic` override the location states defined by the `json_attributes_topic`. This state override is turned inactive if the `state_topic` receives a message containing `payload_reset`. The `state_topic` can only be omitted if `json_attributes_topic` is used. + required: false type: string unique_id: description: "An ID that uniquely identifies this device_tracker. If two device_trackers have the same unique ID, Home Assistant will raise an exception." @@ -208,6 +215,8 @@ If the device supports GPS coordinates then they can be sent to Home Assistant b - Attributes topic: `a4567d663eaf/attributes` - Example attributes payload: +Example message to be received at topic `a4567d663eaf/attributes`: + ```json { "latitude": 32.87336, @@ -219,9 +228,15 @@ If the device supports GPS coordinates then they can be sent to Home Assistant b To create the device_tracker with GPS coordinates support: ```bash -mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"state_topic": "a4567d663eaf/state", "name": "My Tracker", "payload_home": "home", "payload_not_home": "not_home", "json_attributes_topic": "a4567d663eaf/attributes"}' +mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/config -m '{"json_attributes_topic": "a4567d663eaf/attributes", "name": "My Tracker"}' ``` +
    + +Using `state_topic` is optional when using `json_attributes_topic` to determine the state of the device tracker. + +
    + To set the state of the device tracker to specific coordinates: ```bash diff --git a/source/_integrations/devolo_home_control.markdown b/source/_integrations/devolo_home_control.markdown index 3875e5bc697..b6b238b114d 100755 --- a/source/_integrations/devolo_home_control.markdown +++ b/source/_integrations/devolo_home_control.markdown @@ -16,11 +16,12 @@ ha_codeowners: - '@2Fake' - '@Shutgun' ha_domain: devolo_home_control -ha_quality_scale: silver +ha_quality_scale: gold ha_platforms: - binary_sensor - climate - cover + - diagnostics - light - sensor - siren diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index eec59bdbd29..9d978adb1d3 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -3,6 +3,7 @@ title: devolo Home Network description: Instructions on how to integrate devolo Home Network devices with Home Assistant. ha_category: - Binary Sensor + - Button - Presence Detection - Sensor - Switch @@ -16,6 +17,7 @@ ha_domain: devolo_home_network ha_quality_scale: platinum ha_platforms: - binary_sensor + - button - device_tracker - diagnostics - sensor @@ -38,6 +40,13 @@ Currently the following device types within Home Assistant are supported. * Updates every 5 minutes * Is disabled by default because it typically rarely changes +### Buttons + +* Identify a PLC device by making its LED blink for 2 minutes +* Start pairing on a PLC device +* Restart the device +* Start WPS + ### Presence Detection * Detect presence of devices connected to the main or the guest wifi diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 03138b4a6d5..73f8e27c307 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -10,11 +10,11 @@ ha_domain: dialogflow ha_integration_type: integration --- -The `dialogflow` integration is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. +The `dialogflow` integration is designed to be used with the [webhook](https://cloud.google.com/dialogflow/es/docs/fulfillment-webhook) integration of [Dialogflow](https://cloud.google.com/dialogflow/docs/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. To be able to receive messages from Dialogflow, your Home Assistant instance needs to be accessible from the web and you need to have the external URL [configured](/docs/configuration/basic). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). -Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. +Dialogflow could be [integrated](https://cloud.google.com/dialogflow/es/docs/integrations) with many popular messaging, virtual assistant and IoT platforms. Using Dialogflow will be easy to create conversations like: @@ -38,7 +38,7 @@ To get the webhook URL, go to the integrations page in the configuration screen - [Login](https://console.dialogflow.com/) with your Google account. - Click on "Create Agent". -- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone. +- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196)) and time zone. - Click "Save". - Now go to "Fulfillment" (in the left menu). - Enable Webhook and set your Dialogflow webhook URL as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` @@ -66,7 +66,7 @@ When activated, the [`alexa` integration](/integrations/alexa/) will have Home A ## Examples -Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: +Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/current/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: {% raw %} diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index 686559e32ce..4454636ac4d 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -1,8 +1,9 @@ --- title: Deutscher Wetterdienst (DWD) Weather Warnings -description: Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant. +description: Instructions on how to integrate Deutscher Wetterdienst weather warnings into Home Assistant. ha_category: - Weather +ha_config_flow: true ha_release: 0.51 ha_iot_class: Cloud Polling ha_domain: dwd_weather_warnings @@ -16,71 +17,33 @@ ha_platforms: ha_integration_type: integration --- -The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD)](https://www.dwd.de) as a source for current and advance warnings. +The Deutscher Wetterdienst Weather Warnings integration uses the [Deutscher Wetterdienst (DWD)](https://www.dwd.de) as a source for current and advance weather warnings. The configured sensor checks for data every 15 minutes. -- A name is optional but if multiple regions are used a name will be required. -- The sensor checks for new data every 15 minutes. +{% include integrations/config_flow.md %} -## Configuration - -To add the DWD WarnApp sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dwd_weather_warnings - region_name: Hansestadt Hamburg -``` - -
    - -- The `region_name` can either be a so called `warncell id` (integer) or a `warncell name` (string). It is heavily advised to use `warncell id` because `warncell name` is not unique in some cases. -A list of valid warncell ids and names can be found at [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.html). -- Some of the warncells are outdated but still listed. If setup fails search the list for a similar sounding warncell. -- If you selected a `warncell name` and the name is not unique `" (not unique used ID)!"` will be added to the reported `region_name`. - -
    - -{% configuration %} -region_name: - required: true - description: The region name = warncell name (string) or region id = warncell id (integer) taken from DWD homepage. - type: [string, integer] -name: - required: false - description: The name you would like to give to the warnapp sensor. - type: string - default: DWD-Weather-Warnings -monitored_conditions: - description: List of warnings you want to be informed about. - required: false - default: all - type: list - keys: - current_warning_level: - description: The current warning level. - advance_warning_level: - description: The expected warning level. -{% endconfiguration %} +{% configuration_basic %} +Warncell ID or name: + description: Identifier of the region. It can be a warncell ID (integer) or a warncell name. It is heavily advised to use warncell ID because a warncell name is sometimes not unique. A list of valid warncell IDs and names can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.html). Some of the warncells are outdated but still listed. If the setup fails, search the list for a similar sounding warncell. If the warncell name is not unique, `" (not unique used ID)!"` will be added to the reported `region_name`. Setting this field is required. +{% endconfiguration_basic %} ### Attributes | Attribute | Description | | ------------ | -------------------------------------- | | `last_update` | *(time)* Time and date (UTC) of last update from DWD. | -| `region_name` | *(str)* Requested region name. This should be the same as the region name in the configuration if a name was given. | -| `region_id` | *(int)* Region ID assigned by DWD. This should be the same as the region id in the configuration if an id was given. | +| `region_name` | *(str)* Requested region name. This should be the same as the region name in the configuration, if a name was given. | +| `region_id` | *(int)* Region ID assigned by DWD. This should be the same as the region id in the configuration, if an id was given. | | `warning_count` | *(int)* Number of issued warnings. There can be more than one warning issued at once. | | `warning_` | *(list)* The warning as a whole object containing the following attributes as nested attributes. | | `warning__level` | *(int)* Issued warning level (0 - 4).
    0: Keine Warnungen
    1: Wetterwarnungen
    2: Warnungen vor markantem Wetter
    3: Unwetterwarnungen
    4: Warnungen vor extremem Unwetter | -| `warning__type` | *(int)* Issued warning type.
    More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | -| `warning__name` | *(str)* Warning name correlates with the warning type and represents it as a short string. | +| `warning__type` | *(int)* Issued warning type. More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | +| `warning__name` | *(str)* Warning name correlated with the warning type and represented as a short string. | | `warning__headline` | *(str)* Official headline of the weather warning. | | `warning__start` | *(time)* Starting time and date (UTC) of the issued warning. | | `warning__end` | *(time)* Ending time and date (UTC) of the issued warning. | | `warning__description` | *(str)* Details for the issued warning. | | `warning__instruction` | *(str)* The DWD sometimes provides helpful information about precautions to take for the issued warning. | -| `warning__parameters` | *(list)* A list of additional warning parameters.
    More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | +| `warning__parameters` | *(list)* A list of additional warning parameters. More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | | `warning__color` | *(str)* The DWD color of the warning encoded as `#rrggbb`. |
    diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index fd3f4ac4180..4fb7011be81 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -83,7 +83,7 @@ api_key:

    -You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, navigate to the **Settings** -> **Devices & Services** menu, hit **Configure** next to the discovered `ecobee` entry, and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. +You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the cogwheel. Then, select **Configure** and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. ## Notifications diff --git a/source/_integrations/electrasmart.markdown b/source/_integrations/electrasmart.markdown new file mode 100644 index 00000000000..d64e97c0ace --- /dev/null +++ b/source/_integrations/electrasmart.markdown @@ -0,0 +1,23 @@ +--- +title: Electra Smart +description: Instructions for how to integrate Electra Air Conditioners within Home Assistant. +ha_category: + - Climate +ha_release: 2023.6 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@jafar-atili' +ha_domain: electrasmart +ha_platforms: + - climate +ha_integration_type: integration +--- + +[Electra Air](https://www.electra-air.co.il), is a company which manufactures and sells Air Conditioners. + +To set up this integration, you must have access to the phone number used to register in the Electra Smart mobile app. + +Air Conditioners configured in your Electra Smart mobile app will be discovered by Home Assistant after the Electra Smart integration is configured. + +{% include integrations/config_flow.md %} diff --git a/source/_integrations/ezviz.markdown b/source/_integrations/ezviz.markdown index 77ec77c44bf..94a93153fc2 100644 --- a/source/_integrations/ezviz.markdown +++ b/source/_integrations/ezviz.markdown @@ -4,6 +4,7 @@ description: Integrate EZVIZ camera within Home Assistant. ha_release: 0.107 ha_category: - Camera + - Update ha_iot_class: Cloud Polling ha_domain: ezviz ha_codeowners: @@ -13,8 +14,10 @@ ha_config_flow: true ha_platforms: - binary_sensor - camera + - number - sensor - switch + - update ha_integration_type: integration --- @@ -91,6 +94,14 @@ To enable/disable motion detection, use the Home Assistant built in services. | -----------------------| ----------- | | `entity_id` | String or list of strings that point at `entity_id`s of cameras. Use `entity_id: all` to target all. | +### OTA update + +Trigger device OTA firmware update process for latest stable version. + +### Motion Detection Sensitivity + +The motion detection sensitivity can be adjusted using the "Detection sensitivity" Number entity. It's important to note that this entity fetches information from the device and will not update if your battery-powered camera is in sleep mode, as this measure is implemented to preserve battery life and prevent excessive drainage. + ## Troubleshooting - `authentication failed`: The authentication requires an EZVIZ account with two-step verification disabled. Google, Facebook, TikTok, or other Oauth-based accounts will not work. diff --git a/source/_integrations/faa_delays.markdown b/source/_integrations/faa_delays.markdown index a89ce7d1cf4..25e9e16250e 100644 --- a/source/_integrations/faa_delays.markdown +++ b/source/_integrations/faa_delays.markdown @@ -15,7 +15,7 @@ ha_integration_type: integration --- The FAA Delays integration collects and displays information about delays at US Airports based on the -[FAA's National Airspace System Status](https://www.fly.faa.gov/ois/). +[FAA's National Airspace System Status](https://nasstatus.faa.gov/). Data measured includes: diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index defe59dd9c4..0cd1eb90557 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -25,7 +25,7 @@ notify: {% configuration %} page_access_token: - description: "Access token for your Facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/guides/setup) for more information." + description: "Access token for your Facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/webhooks) for more information." required: true type: string name: @@ -37,8 +37,8 @@ name: ### Usage -With Facebook notify service, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) for this service. You can control it by calling the notify service [as described here](/integrations/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) guide for more information. -The phone number used in **target** should be registered with Facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by Facebook then the recipient should by either admin, developer or tester for your Facebook app. [More information](https://developers.facebook.com/docs/messenger-platform/send-api-reference#phone_number) about the phone number. +With Facebook notify service, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/getting-started/quick-start) for this service. You can control it by calling the notify service [as described here](/integrations/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/getting-started/quick-start) guide for more information. +The phone number used in **target** should be registered with Facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by Facebook then the recipient should by either admin, developer or tester for your Facebook app. [More information](https://developers.facebook.com/docs/messenger-platform/reference/send-api#phone_number) about the phone number. ```yaml # Example automation notification entry @@ -102,7 +102,7 @@ if (preg_match('/get my id/', strtolower($message))) { ``` ### Rich messages -You could also send rich messing (cards, buttons, images, videos, etc). [Info](https://developers.facebook.com/docs/messenger-platform/send-api-reference) to which types of messages and how to build them. +You could also send rich messing (cards, buttons, images, videos, etc). [Info](https://developers.facebook.com/docs/messenger-platform/reference/send-api) to which types of messages and how to build them. ```yaml # Example script with a notification entry with a rich message diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index dcc44b604d0..9052eaa6c05 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -89,6 +89,11 @@ automation: Any field under the `` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry. +### Video Tutorial +This video tutorial explains how to set up the feedreader and show the latest news feed item on your dashboard in Home Assistant. + + + For more advanced use cases, a custom integration registering to the `feedreader` event type could be used instead: ```python diff --git a/source/_integrations/fireservicerota.markdown b/source/_integrations/fireservicerota.markdown index 151c28c5866..0b98c4fe523 100644 --- a/source/_integrations/fireservicerota.markdown +++ b/source/_integrations/fireservicerota.markdown @@ -104,7 +104,7 @@ The following attributes are available: With Automation you can configure one or more of the following useful actions: 1. Sound an alarm and/or switch on lights when an emergency incident is received. -1. Use text to speech to play incident details via a media player while getting dressed. +1. Use text-to-speech to play incident details via a media player while getting dressed. 1. Respond with a response acknowledgment using a door-sensor when leaving the house or by pressing a button to let your teammates know you are underway. 1. Cast a FireServiceRota dashboard to a Chromecast device. (this requires a Nabu Casa subscription) diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index b94fce5346d..ecb80e0eb1a 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -100,8 +100,8 @@ If you like the Forecast.Solar service, or are interested in more frequent data updates (based on a higher data resolution), you could [sign up for one of their plans](https://doc.forecast.solar/doku.php?id=account_models#compare_plans). -To enable the use of the API key with this integration, go to {% my integrations %}, -click "Configure" on the Forecast.Solar integration instance and enter the +To enable the use of the API key with this integration, go to {% my integrations %}. +On the Forecast.Solar integration, select the cogwheel, then select **Configure**. Enter the API key for your account. ## Tweaking the estimations @@ -131,8 +131,8 @@ a more realistic forecast graph. To adjust the configuration settings for your Forecast.Solar integration instance: -- Browse to your Home Assistant instance. -- In the sidebar click on _**{% my config icon %}**_. -- From the configuration menu select: _**{% my integrations %}**_. -- If multiple instances of {{ name }} are configured, choose the instance you want to configure. -- Click on _**"Configure"**_. +1. Browse to your Home Assistant instance. +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. If multiple instances of {{ name }} are configured, choose the instance you want to configure. +1. Select the cogwheel. +1. Select **Configure**. diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index 0862b51b4ad..82f13845feb 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -76,10 +76,10 @@ If no password is given, it will be auto-generated. | `password` | yes | New password for the guest wifi | | `length` | yes | Length of the auto-generated password. (_default 12_) | -## Integration Options +## Integration options It is possible to change some behaviors through the integration options. -These can be changed at **AVM FRITZ!Box Tools** -> **Configure** on the Integrations page. +To change the settings, go to {% my integrations title="**Settings** > **Devices & Services**" %}. On the **AVM FRITZ!Box Tools** integration, select the cogwheel. Then select **Configure**. - **Consider home**: Number of seconds that must elapse before considering a disconnected device "not at home". - **Enable old discovery method**: Needed on some scenarios like no mesh support (fw <= 6.x), mixed brands network devices or LAN switches. diff --git a/source/_integrations/geo_json_events.markdown b/source/_integrations/geo_json_events.markdown index 5632cfefd0a..a3fdbcc4314 100644 --- a/source/_integrations/geo_json_events.markdown +++ b/source/_integrations/geo_json_events.markdown @@ -5,74 +5,31 @@ ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.79 -ha_domain: geo_json_events +ha_config_flow: true ha_codeowners: - '@exxamalte' +ha_domain: geo_json_events ha_platforms: - geo_location ha_integration_type: service --- -The `geo_json_events` platform lets you integrate GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. +The GeoJSON integration lets you ingest events from GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. All entries in the GeoJSON feed must define a `geometry` which typically is a point or polygon with geo coordinates. In addition, this platform will look for a `title` key in the entry's `properties` and use that as the entity's name. Entities are generated, updated and removed automatically with each update from the GeoJSON feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity. The data is updated every 5 minutes. -## Configuration - -To integrate a GeoJSON feed, add the following lines to your `configuration.yaml`. This is an example configuration showing [earthquake data provided by the U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). - -```yaml -# Example configuration.yaml entry -geo_location: - - platform: geo_json_events - url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson -``` - -{% configuration %} -url: - description: Full URL of the GeoJSON feed. - required: true - type: string -radius: - description: The distance in kilometers around the Home Assistant's coordinates in which events are considered. - required: false - type: float - default: 20.0 -latitude: - description: Latitude of the coordinates around which events are considered. - required: false - type: string - default: Latitude defined in your `configuration.yaml` -longitude: - description: Longitude of the coordinates around which events are considered. - required: false - type: string - default: Longitude defined in your `configuration.yaml` -{% endconfiguration %} +{% include integrations/config_flow.md %} ## State Attributes The following state attributes are available for each entity in addition to the standard ones: -| Attribute | Description | -|-------------|-------------| -| latitude | Latitude of the event. | -| longitude | Longitude of the event. | +| Attribute | Description | +|-------------|-------------------------------------------------------------------------------------| +| latitude | Latitude of the event. | +| longitude | Longitude of the event. | | source | `geo_json_events` to be used in conjunction with `geo_location` automation trigger. | -| external_id | The external ID used in the feed to identify the event in the feed. | - -## Advanced Configuration Example - -When integrating several GeoJSON feeds, it may be useful to distinguish the entities of different feeds. The easiest way to do that is by defining an [`entity_namespace`](/docs/configuration/platform_options/#entity-namespace/) for each platform which will prefix each entity ID with the defined value. - -```yaml -# Example configuration.yaml entry -geo_location: - - platform: geo_json_events - url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson - radius: 250 - entity_namespace: "usgs_earthquakes" -``` +| external_id | The external ID used in the feed to identify the event in the feed. | diff --git a/source/_integrations/goalfeed.markdown b/source/_integrations/goalfeed.markdown deleted file mode 100644 index 956d3e985ec..00000000000 --- a/source/_integrations/goalfeed.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Goalfeed -description: Instructions on how to setup Goalfeed events within Home Assistant. -logo: goalfeed.png -ha_category: - - Other -ha_iot_class: Cloud Push -ha_release: 0.63 -ha_domain: goalfeed -ha_integration_type: integration ---- - -The `goalfeed` integration lets you use your Goalfeed account to trigger events in Home Assistant whenever a NHL or MLB team scores. - -To use this component, enter your email address and password from your goalfeed.ca account in your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -goalfeed: - username: YOUR_E_MAIL_ADDRESS - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - required: true - description: The email address on your goalfeed.ca account. - type: string -password: - required: true - description: The password on your goalfeed.ca account. - type: string -{% endconfiguration %} - -Now you can use the goal event type in your automations: - -```yaml -- alias: 'Jets Goal' - trigger: - platform: event - event_type: goal - event_data: - team_name: "Winnipeg Jets" -``` - -Goal events have the following event data: - -- **team**: Three letter code representing the team. This is unique within the leagues, but not unique across the leagues (i.e., 'WPG' or 'TOR'). -- **team_name**: The team that scored (i.e., 'Winnipeg Jets' or 'Toronto Blue Jays'). -- **team_hash**: A unique hash for the team (you can find these values on https://goalfeed.ca/get-teams). -- **league_id**: A unique number for the league. -- **league_name**: A the short name of the league (i.e., 'NHL' or 'MLB'). diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index be5adcf12d4..524bd77e605 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -269,22 +269,25 @@ entity_config: Currently, the following domains are available to be used with Google Assistant, listed with their default types: - alarm_control_panel (arm/disarm) +- button (scene) - camera (streaming, requires compatible camera) -- group (on/off) -- input_boolean (on/off) -- input_select (option/setting/mode/value) -- scene (on) -- script (on) -- switch (on/off) +- climate (temperature setting, hvac_mode) +- cover (on/off/set position) - fan (on/off/speed percentage/preset mode) +- group (on/off) +- humidifier (humidity setting/on/off/mode) +- input_boolean (on/off) +- input_button +- input_select (option/setting/mode/value) - light (on/off/brightness/rgb color/color temp) - lock -- cover (on/off/set position) - media_player (on/off/set volume (via set volume)/source (via set input source)/control playback) -- climate (temperature setting, hvac_mode) -- vacuum (dock/start/stop/pause) +- scene (on) +- script (on) +- select - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) -- humidifier (humidity setting/on/off/mode) +- switch (on/off) +- vacuum (dock/start/stop/pause)
    diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown index ae9018f73ea..e9069deeafb 100644 --- a/source/_integrations/google_assistant_sdk.markdown +++ b/source/_integrations/google_assistant_sdk.markdown @@ -98,15 +98,19 @@ If commands don't work try removing superfluous words such as "the". E.g. "play If broadcasting doesn't work, make sure: the speakers aren't in do not disturb mode, the Home Assistant server is in the same network as the speakers, and IPv6 is disabled in the router. +The easiest way to check if the integration is working is to check [My Google Activity](https://myactivity.google.com/myactivity) for the issued commands and their responses. + ## Limitations/known issues -Multiple Google accounts are not supported. - -Limitations of the underlying library are listed [here](https://github.com/tronikos/gassist_text#limitationsknown-issues) (media playback, routines, and personal results are not working). +- Multiple Google accounts are not supported. +- Personal results are not supported yet since that requires creating an OAuth client ID of the Desktop app. +- If you see the issued commands in [My Google Activity](https://myactivity.google.com/myactivity), the integration is working fine. If the commands don't have the expected outcome, don't open an issue in the Home Assistant Core project or the [underlying library](https://github.com/tronikos/gassist_text). You should instead report the issue directly to Google [here](https://github.com/googlesamples/assistant-sdk-python/issues). Examples of known Google Assistant API issues: + - Media playback commands (other than play news, play podcast, play white noise, or play rain sounds) don't work. + - Routines don't work. ## Configuration -On the configure page, you can set the language code of the interactions with Google Assistant. If not configured, the integration picks one based on Home Assistant's configured language and country. Supported languages are listed [here](https://developers.google.com/assistant/sdk/reference/rpc/languages) +On the configure page, you can set the language code of the interactions with Google Assistant. If not configured, the integration picks one based on Home Assistant's configured language and country. Supported languages are listed [here](https://developers.google.com/assistant/sdk/reference/rpc/languages). ## Services diff --git a/source/_integrations/google_cloud.markdown b/source/_integrations/google_cloud.markdown index 475af8340dc..c424d867dbd 100644 --- a/source/_integrations/google_cloud.markdown +++ b/source/_integrations/google_cloud.markdown @@ -30,8 +30,8 @@ tts: API key obtaining process described in corresponding documentation: -* [Text-to-Speech](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) -* [Speech-to-Text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) +* [Text-to-speech](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) +* [Speech-to-text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) * [Geocoding](https://developers.google.com/maps/documentation/geocoding/start) Basic instruction for all APIs: @@ -42,36 +42,36 @@ Basic instruction for all APIs: 4. [Make sure that billing is enabled for your Google Cloud Platform project](https://cloud.google.com/billing/docs/how-to/modify-project). 5. Enable needed Cloud API visiting one of the links below or [APIs library](https://console.cloud.google.com/apis/library), selecting your `Project` from the dropdown list and clicking the `Continue` button: - * [Text-to-Speech](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com) - * [Speech-to-Text](https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com) - * [Geocoding](https://console.cloud.google.com/flows/enableapi?apiid=geocoding-backend.googleapis.com) + * [Text-to-speech](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com) + * [Speech-to-text](https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com) + * [Geocoding](https://console.cloud.google.com/flows/enableapi?apiid=geocoding-backend.googleapis.com) 6. Set up authentication: 1. Visit [this link](https://console.cloud.google.com/apis/credentials/serviceaccountkey) 2. From the `Service account` list, select `New service account`. 3. In the `Service account name` field, enter any name. - If you are requesting Text-to-Speech API key: + If you are requesting a text-to-speech API key: 4. Don't select a value from the Role list. **No role is required to access this service**. 5. Click `Create`. A note appears, warning that this service account has no role. 6. Click `Create without role`. A JSON file that contains your `API key` downloads to your computer. -## Google Cloud Text-to-Speech +## Google Cloud text-to-speech -[Google Cloud Text-to-Speech](https://cloud.google.com/text-to-speech/) converts text into human-like speech in more than 100 voices across 20+ languages and variants. It applies groundbreaking research in speech synthesis (WaveNet) and Google's powerful neural networks to deliver high-fidelity audio. With this easy-to-use API, you can create lifelike interactions with your users that transform customer service, device interaction, and other applications. +[Google Cloud text-to-speech](https://cloud.google.com/text-to-speech/) converts text into human-like speech in more than 100 voices across 20+ languages and variants. It applies groundbreaking research in speech synthesis (WaveNet) and Google's powerful neural networks to deliver high-fidelity audio. With this easy-to-use API, you can create lifelike interactions with your users that transform customer service, device interaction, and other applications. ### Pricing -The Cloud Text-to-Speech API is priced monthly based on the amount of characters to synthesize into audio sent to the service. +The Cloud text-to-speech API is priced monthly based on the amount of characters to synthesize into audio sent to the service. | Feature | Monthly free tier | Paid usage | |-------------------------------|---------------------------|-----------------------------------| | Standard (non-WaveNet) voices | 0 to 4 million characters | $4.00 USD / 1 million characters | | WaveNet voices | 0 to 1 million characters | $16.00 USD / 1 million characters | -### Text-to-Speech configuration +### Text-to-speech configuration {% configuration %} key_file: @@ -113,7 +113,7 @@ gain: type: float default: 0.0 profiles: - description: "An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given. Supported profile ids listed [here](https://cloud.google.com/text-to-speech/docs/audio-profiles)." + description: "An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text-to-speech. Effects are applied on top of each other in the order they are given. Supported profile ids listed [here](https://cloud.google.com/text-to-speech/docs/audio-profiles)." required: false type: list default: "[]" @@ -126,7 +126,7 @@ text_type: ### Full configuration example -The Google Cloud Text-to-Speech configuration can look like: +The Google Cloud text-to-speech configuration can look like: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown new file mode 100644 index 00000000000..1785e109317 --- /dev/null +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -0,0 +1,48 @@ +--- +title: Google Generative AI Conversation +description: Instructions on how to integrate Google Generative AI as a conversation agent +ha_category: + - Voice +ha_release: 2023.6 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@tronikos' +ha_domain: google_generative_ai_conversation +ha_integration_type: service +--- + +The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://developers.generativeai.google/) in Home Assistant. + +This conversation agent is unable to control your house. It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide Google Generative AI with the details of your house, which include areas, devices and their states. + +This integration requires an API key to use, [which you can generate here](https://makersuite.google.com/app/apikey). + +{% include integrations/config_flow.md %} + +### Generate an API Key + +The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps: + +- Join the PaLM API and MakerSuite [waitlist](https://makersuite.google.com/waitlist). +- Wait several days for an email with subject "It’s your turn to use the PaLM API and MakerSuite". +- Visit the [API Keys page](https://makersuite.google.com/app/apikey) to retrieve the API key you'll use to configure the integration. + +{% include integrations/option_flow.md %} +{% configuration_basic %} +Prompt Template: + description: The starting text for the AI language model to generate new text from. This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](/docs/configuration/templating/). + +Model: + description: Model used to generate response. + +Temperature: + description: Creativity allowed in the responses. Higher values produce a more random and varied response. A temperature of zero will be deterministic. + +Top P: + description: Probability threshold for top-p sampling. + +Top K: + description: Number of top-scored tokens to consider during generation. + +{% endconfiguration_basic %} diff --git a/source/_integrations/google_mail.markdown b/source/_integrations/google_mail.markdown index ab133c30a09..54bfa9b7ac0 100644 --- a/source/_integrations/google_mail.markdown +++ b/source/_integrations/google_mail.markdown @@ -27,26 +27,26 @@ If you have already set up the correct credentials, you can do step 1 and then s {% details "Generate Client ID and Client Secret" %} This section explains how to generate a Client ID and Client Secret on -[Google Developers Console](https://console.cloud.google.com/apis/library/gmail.googleapis.com?project=home-assistant-17698). +[Google Developers Console](https://console.cloud.google.com/apis/library/gmail.googleapis.com). -1. First, go to the Google Developers Console to enable [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com?project=home-assistant-17698) -2. The wizard will ask you to choose a project to manage your application. Select a project and click continue. -3. Verify that your Gmail API was enabled and click 'Go to credentials' -4. Navigate to APIs & Services (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials) +1. First, go to the Google Developers Console to enable [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com) +2. The wizard will ask you to choose a project to manage your application. Select a project and select **Continue**. +3. Verify that your Gmail API was enabled and select **Go to credentials**. +4. Navigate to **APIs & Services** (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials) 5. Click on the field on the left of the screen, **OAuth Consent Screen**. 6. Select **External** and **Create**. -7. Set the *App Name* (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*. -8. You then need to select a *Support email*. To do this, click the drop-down box and select your email address. -9. You finally need to complete the section: *Developer contact information*. To do this, enter your email address (the same as above is fine). -10. Scroll to the bottom and click **Save and Continue**. You don't have to fill out anything else, or it may enable additional review. -11. You will then be automatically taken to the Scopes page. You do not need to add any scopes here, so click Save and Continue to move to the Optional info page. You do not need to add anything to the Optional info page, so click Save and Continue, which will take you to the Summary page. Click Back to Dashboard. -12. Click **OAuth consent screen** again and set *Publish Status* to **Production** otherwise your credentials will expire every 7 days. +7. Set the **App Name** (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*. +8. You then need to select a **Support email**. To do this, from the dropdown menu, select your email address. +9. You finally need to complete the section: **Developer contact information**. To do this, enter your email address (the same as above is fine). +10. Scroll to the bottom and select **Save and Continue**. You don't have to fill out anything else, or it may enable additional review. +11. You will then be automatically taken to the **Scopes** page. You do not need to add any scopes here, so select **Save and Continue** to move to the **Optional info** page. You do not need to add anything to the **Optional info** page, so select **Save and Continue**, which will take you to the **Summary** page. Select **Back to Dashboard**. +12. Select **OAuth consent screen** again and set *Publish Status* to **Production**. Otherwise your credentials will expire every 7 days. 13. Make sure **Publishing status** is set to production. -14. Click **Credentials** in the menu on the left-hand side of the screen, then click **Create credentials** (at the top of the screen), then select *OAuth client ID*. +14. Select **Credentials** in the menu on the left-hand side of the screen, then select **Create credentials** (at the top of the screen), then select **OAuth client ID**. 15. Set the Application type to *Web application* and give this credential set a name (like "Home Assistant Credentials"). -16. Add https://my.home-assistant.io/redirect/oauth to *Authorized redirect URIs* then click **Create**. This is not a placeholder and is the URI that must be used. -17. You will then be presented with a pop-up saying *OAuth client created* showing *Your Client ID* and *Your Client Secret*. Make a note of these (for example, copy and paste them into a text editor), as you will need these shortly. Once you have noted these strings, click **OK**. If you need to find these credentials again at any point, then navigate to *APIs & Services > Credentials*, and you will see *Home Assistant Credentials* (or whatever you named them in the previous step) under *OAuth 2.0 Client IDs*. To view both the *Client ID* and *Client secret*, click on the pencil icon; this will take you to the settings page for these credentials, and the information will be on the right-hand side of the page. -18. Double-check that the *Gmail API* has been automatically enabled. To do this, select **Library** from the menu, then search for *Gmail API*. If it is enabled you will see *API Enabled* with a green tick next to it. If it is not enabled, then enable it. +16. Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**. This is not a placeholder and is the URI that must be used. +17. You will then be presented with a pop-up saying **OAuth client created** showing **Your Client ID** and **Your Client Secret**. Make a note of these (for example, copy and paste them into a text editor), as you will need them shortly. Once you have noted these strings, select **OK**. If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**. To view both the **Client ID** and **Client secret**, select the pencil icon. This will take you to the settings page for these credentials, and the information will be on the right-hand side of the page. +18. Double-check that the **Gmail API** has been automatically enabled. To do this, select **Library** from the menu, then search for **Gmail API**. If it is enabled, you will see **API Enabled** with a green tick next to it. If it is not enabled, then enable it. {% enddetails %} @@ -60,11 +60,11 @@ The integration setup will next give you instructions to enter the [Application 2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed. -3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**. +3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Select **Continue**. -4. The page will now display *Link account to Home Assistant?*, note *Your instance URL*. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**. +4. The page will now display **Link account to Home Assistant?**, note **Your instance URL**. If this is not correct, refer to [My Home Assistant](/integrations/my). If everything looks good, select **Link Account**. -5. You may close the window, and return back to Home Assistant where you should see a *Success!* message from Home Assistant. +5. You may close the window, and return back to Home Assistant where you should see a **Success!** message from Home Assistant. {% enddetails %} diff --git a/source/_integrations/google_sheets.markdown b/source/_integrations/google_sheets.markdown index 29380f28e80..074a7480d86 100644 --- a/source/_integrations/google_sheets.markdown +++ b/source/_integrations/google_sheets.markdown @@ -20,7 +20,7 @@ The integration currently only has access to that one document that is created d ## Prerequisites You need to configure developer credentials to allow Home Assistant to access your Google Account. -These credentials are the same as the ones for [Nest](/integrations/nest) and [Google Mail](/integrations/google_mail). +These credentials are the same as the ones for [Nest](/integrations/nest), [YouTube](/integrations/youtube) and [Google Mail](/integrations/google_mail). These are not the same as the one for [Google Calendar](/integrations/google). If you have already set up the correct credentials, you can do step 1 and then skip to step 13 on the below instructions. @@ -72,6 +72,11 @@ The integration setup will next give you instructions to enter the [Application If you have an error with your credentials you can delete them in the [Application Credentials](/integrations/application_credentials/) user interface. +### Video Tutorial +This video tutorial explains how to set up the Google Sheets integration and how you can add data from Home Assistant to a Google Sheet. + + + ### Service `google_sheets.append_sheet` You can use the service `google_sheets.append_sheet` to add a row of data to the Sheets document created at setup. diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown index 2e5b95604d1..9f1c5f26f2b 100644 --- a/source/_integrations/google_translate.markdown +++ b/source/_integrations/google_translate.markdown @@ -1,6 +1,6 @@ --- -title: Google Translate Text-to-Speech -description: Instructions on how to setup Google Translate Text-to-Speech with Home Assistant. +title: Google Translate text-to-speech +description: Instructions on how to setup Google Translate text-to-speech with Home Assistant. ha_category: - Text-to-speech ha_release: 0.35 @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `google_translate` text-to-speech platform uses the unofficial [Google Translate Text-to-Speech engine](https://translate.google.com/) to read a text with natural sounding voices. Contrary to what the name suggests, the integration only does text-to-speech and does not translate messages sent to it. +The `google_translate` text-to-speech platform uses the unofficial [Google Translate text-to-speech engine](https://translate.google.com/) to read a text with natural sounding voices. Contrary to what the name suggests, the integration only does text-to-speech and does not translate messages sent to it. ## Configuration diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 51de46fc1e9..82d1d249d73 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -48,6 +48,10 @@ entity_id: description: The entity you want to track. required: true type: string +unique_id: + description: An ID that uniquely identifies this entity. Set this to a unique value to allow customization through the UI. + required: false + type: string state: description: The states you want to track. required: true diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index e210a13274b..1d39e96b1a0 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -318,7 +318,7 @@ The HomeKit Accessory Protocol Specification only allows a maximum of 150 unique ### Multiple HomeKit instances -If you create a HomeKit integration via the UI (i.e., **Settings** -> **Devices & Services**), it must be configured via the UI **only**. While the UI only offers limited configuration options at the moment, any attempt to configure a HomeKit instance created in the UI via the `configuration.yaml` file will result in another instance of HomeKit running on a different port. +If you create a HomeKit integration via the UI (i.e., **Settings** > **Devices & Services**), it must be configured via the UI **only**. While the UI only offers limited configuration options at the moment, any attempt to configure a HomeKit instance created in the UI via the `configuration.yaml` file will result in another instance of HomeKit running on a different port. It is recommended to only edit a HomeKit instance in the UI that was created in the UI, and likewise, only edit a HomeKit instance in YAML that was created in YAML. @@ -328,7 +328,7 @@ When exposing a Camera, Activity based remote (a `remote` that supports activiti To quickly add all accessory mode entities in the UI: -1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings >> Devices & Services" domain=page.ha_domain %}**). +1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings > Devices & Services" domain=page.ha_domain %}**). 2. Select `media_player`, `remote`, `lock`, and `camera` domains. 3. Complete the flow as normal. 4. Additional HomeKit entries for each entity that must operate in accessory mode will be created for each entity that does not already have one. @@ -337,7 +337,7 @@ To quickly add all accessory mode entities in the UI: To add a single entity in accessory mode: -1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings >> Devices & Services" domain=page.ha_domain %}**) +1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings > Devices & Services" domain=page.ha_domain %}**) 2. Before pairing the bridge, access the options for the bridge. 3. Change the mode to `accessory` 4. Select the entity. @@ -424,7 +424,7 @@ The following integrations are currently supported: # Device Triggers -Devices that support triggers can be added to the bridge by accessing options for the bridge in **{% my integrations title="Settings >> Devices & Services" %}**. To use this feature, Advanced Mode must be enabled in your user profile. +Devices that support triggers can be added to the bridge by accessing options for the bridge in **{% my integrations title="Settings > Devices & Services" %}**. To use this feature, Advanced Mode must be enabled in your user profile. Bridged device triggers are represented as a single press button on stateless programmable switches. This allows a HomeKit automation to run when a device trigger fires. Because the Apple Home app currently only shows the number of the button and not the name, users may find it easier to identify the name of the button in the `Eve for HomeKit` app. @@ -549,7 +549,7 @@ Remember that the iOS device needs to be in the same local network as the Home A #### `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - Docker -Set `network_mode: host` in your `docker-compose.yaml`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help. +Set `network_mode: host` in your `docker-compose.yaml`. If you have further problems this [issue](https://github.com/home-assistant/core/issues/15692) might help. You can also try to use `avahi-daemon` in reflector mode together with the option `advertise_ip`, see above. @@ -592,7 +592,7 @@ To use the HomeKit integration with multiple different Home Assistant instances #### Specific entity doesn't work -Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works, unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component:%20homekit) +Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works, unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [core/issues/new](https://github.com/home-assistant/core/issues/new) If you have any iOS 12.x devices signed into your iCloud account, media player entities with `device_class: tv` may trigger this condition. Filtering the entity or signing the iOS 12.x device out of iCloud should resolve the issue after restarting other devices. @@ -626,7 +626,7 @@ Ensure that the [`ffmpeg`](/integrations/ffmpeg) integration is configured corre #### Camera streaming is unstable or slow -If your camera supports native H.264 streams, Home Assistant can avoid converting the video stream, which is an expensive operation. To enable native H.264 streaming when configured via YAML, change the `video_codec` to `copy`. To allow native H.264 streaming when setting up HomeKit via the UI, go to **Settings** -> **Devices & Services** in the UI, click **Options** for your HomeKit Bridge, and check the box for your camera on the `Cameras that support native H.264 streams` screen. +If your camera supports native H.264 streams, Home Assistant can avoid converting the video stream, which is an expensive operation. To enable native H.264 streaming when configured via YAML, change the `video_codec` to `copy`. To allow native H.264 streaming when setting up HomeKit via the UI, go to **Settings** > **Devices & Services** in the UI, click **Options** for your HomeKit Bridge, and check the box for your camera on the `Cameras that support native H.264 streams` screen. #### Multiple camera streams diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 8dffa6a9af4..fc4668590ad 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -43,7 +43,7 @@ ha_platforms: ha_integration_type: integration --- -The [HomeKit](https://developer.apple.com/homekit/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. +The [HomeKit](https://developer.apple.com/apple-home/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. The integration will automatically detect HomeKit compatible devices that are ready to pair if the [`zeroconf`](/integrations/zeroconf/) integration is enabled. This is enabled by default on new installations via the [`default_config`](/integrations/default_config/) component. @@ -165,7 +165,7 @@ homekit: `netdisco` is not used by Home Assistant to discover HomeKit devices, so if it can't see your device the problem is more likely to be environmental than with Home Assistant itself. -Alternatively if you are less comfortable with the command line you could use Discovery for [Mac](https://apps.apple.com/us/app/discovery-dns-sd-browser/id1381004916?mt=12) or [iOS](https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017), Android [Service Browser](https://play.google.com/store/apps/details?id=com.druk.servicebrowser) or [All My Lan](https://www.microsoft.com/en-us/p/all-my-lan/9wzdncrdn19v). These are a less useful diagnostic as they aren't running from the same point on your network as Home Assistant. Even if it is visible in this tool it might still be a networking issue. They can give sometimes give clues. +Alternatively if you are less comfortable with the command line you could use Discovery for [Mac](https://apps.apple.com/app/discovery-dns-sd-browser/id1381004916) or [iOS](https://apps.apple.com/app/discovery-dns-sd-browser/id305441017), Android [Service Browser](https://play.google.com/store/apps/details?id=com.druk.servicebrowser) or [All My Lan](https://apps.microsoft.com/store/detail/all-my-lan/9WZDNCRDN19V). These are a less useful diagnostic as they aren't running from the same point on your network as Home Assistant. Even if it is visible in this tool it might still be a networking issue. They can give sometimes give clues. Where a discovery tool does give an IP, check it is what you expect (compare to DHCP leases in your router for example). Can you ping it? If not, you have a network problem. diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 8219b670e15..8af8f80817a 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -175,7 +175,7 @@ target: #### Overrides -You can pass any of the parameters listed [here](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#Parameters) in the `data` dictionary. Please note, Chrome specifies that the maximum size for an icon is 320px by 320px, the maximum `badge` size is 96px by 96px and the maximum icon size for an action button is 128px by 128px. +You can pass any of the parameters listed [here](https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/showNotification#Parameters) in the `data` dictionary. Please note, Chrome specifies that the maximum size for an icon is 320px by 320px, the maximum `badge` size is 96px by 96px and the maximum icon size for an action button is 128px by 128px. #### URL diff --git a/source/_integrations/hydrawise.markdown b/source/_integrations/hydrawise.markdown index 571c2351199..0a50068d60f 100644 --- a/source/_integrations/hydrawise.markdown +++ b/source/_integrations/hydrawise.markdown @@ -10,6 +10,7 @@ ha_release: 0.71 ha_iot_class: Cloud Polling ha_domain: hydrawise ha_codeowners: + - '@dknowles2' - '@ptcryan' ha_platforms: - binary_sensor diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index 46a19d6ab7c..14cab37919e 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -74,10 +74,12 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr - [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531) - [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon) - [Feasycom FSC-BP108](https://www.feasycom.com/bluetooth-5-1-waterproof-bluetooth-beacon) +- [MikroTik TG-BT5-IN](https://mikrotik.com/product/tg_bt5_in) (Additional sensors such as angle or impact are not compatible) - [NRF51822 iBeacon](https://www.aliexpress.com/item/32826502025.html) - [NRF52810 iBeacon](https://www.aliexpress.com/item/1005003211033416.html) - [Pawscout Tag](https://pawscout.com/shop/pawscout-tag/) - [SwiftFinder](https://www.amazon.com/dp/B089MD5NP7) (Requires being paired to a phone first before it starts transmitting once a minute, otherwise it stays asleep) +- [Teltonika EYE Teltonika EYE Sensor](https://teltonika-gps.com/products/accessories/sensors-beacons/eye) (Additional sensors such as accelerometer, temperature, and humidity are not compatible) ## Example automation diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index dd75a3c182b..389a8360733 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -50,14 +50,16 @@ Below is an example for setting up the integration to connect to your Microsoft - Password: Your password - Charset: `US-ASCII` -### Selecting an alternate SSL cipher list (advanced mode) +### Selecting an alternate SSL cipher list or disable SSL verification (advanced mode) If the default IMAP server settings do not work, you might try to set an alternate SLL cipher list. The SSL cipher list option allows to select the list of SSL ciphers to be accepted from this endpoint. `default` (_system default_), `modern` or `intermediate` (_inspired by [Mozilla Security/Server Side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)_) +If you are using self signed certificates can can turn of SSL verification. +
    -The SSL cipher list is an advanced setting. The option is available only when advanced mode is enabled (see user settings). +The SSL cipher list and verify SSL are advanced settings. The options are available only when advanced mode is enabled (see user settings).
    @@ -70,7 +72,15 @@ Email providers may limit the number of reported emails. The number may be less When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation. It is also possible to use to create a template [`binary_sensor` or `sensor`](/integrations/template/#trigger-based-template-binary-sensors-buttons-numbers-selects-and-sensors) based the [event data](/docs/automation/templating/#event). -The table below shows what attributes come with `trigger.event.data`. The data is a dictionary that has the keys that are shown below: +The table below shows what attributes come with `trigger.event.data`. The data is a dictionary that has the keys that are shown below. + +The attributes shown in the table are also available as variables for the custom event data template. The [example](/integrations/imap/#example---custom-event-data-template) shows how to use this as an event filter. + +
    + +The custom event data template is an advanced feature. The option is available only when advanced mode is enabled (see user settings). The `text` attribute is not size limited when used as a variable in the template. + +
    {% configuration_basic %} server: @@ -82,7 +92,7 @@ search: folder: description: The IMAP folder configuration text: - description: The email body `text` of the the message (only the first 2048 bytes will be available) + description: The email body `text` of the message (by default, only the first 2048 bytes will be available.) sender: description: The `sender` of the message subject: @@ -91,11 +101,21 @@ date: description: A `datetime` object of the `date` sent headers: description: The `headers` of the message in the for of a dictionary. The values are iterable as headers can occur more than once. +custom: + description: Holds the result of the custom event data [template](/docs/configuration/templating). All attributes are available as a variable in the template. {% endconfiguration_basic %} The `event_type` for the custom event should be set to `imap_content`. The configuration below shows how you can use the event data in a template `sensor`. +If the default maximum message size (2048 bytes) to be used in events is too small for your needs, then this maximum size setting can be increased. You need to have your profile set to _advanced_ mode to do this. + +
    + +Increasing the default maximum message size (2048 bytes) could have a negative impact on performance as event data is also logged by the `recorder`. If the total event data size exceeds the maximum event size (32168 bytes), the event will be skipped. + +
    + {% raw %} ```yaml @@ -116,11 +136,10 @@ template: Sender: "{{ trigger.event.data['sender'] }}" Date: "{{ trigger.event.data['date'] }}" Subject: "{{ trigger.event.data['subject'] }}" - To: "{{ trigger.event.data['headers']['Delivered-To'][0] }}" - Subject: "{{ trigger.event.data['headers']['Subject'][0] }}" - Return_Path: "{{ trigger.event.data['headers']['Return-Path'][0] }}" - Received-first: "{{ trigger.event.data['headers']['Received'][0] }}" - Received-last: "{{ trigger.event.data['headers']['Received'][-1] }}" + To: "{{ trigger.event.data['headers'].get('Delivered-To', ['n/a'])[0] }}" + Return-Path: "{{ trigger.event.data['headers'].get('Return-Path',['n/a'])[0] }}" + Received-first: "{{ trigger.event.data['headers'].get('Received',['n/a'])[0] }}" + Received-last: "{{ trigger.event.data['headers'].get('Received',['n/a'])[-1] }}" ``` {% endraw %} @@ -197,3 +216,37 @@ template: {% endraw %} By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails. + +## Example - custom event data template + +We can define a custom event data template to help filter events. This can be handy if, for example, we have multiple senders we want to allow. +We define the following template to return true if part of the `sender` is `@example.com`: + +{% raw %} + +```jinja2 +{{ "@example.com" in sender }} +``` + +{% endraw %} + +This will render to `True` if the sender is allowed. The result is added to the event data as `trigger.event.data["custom"]`. + +The example below will only set the state to the subject of the email of template sensor, but only if the sender address matches. + +{% raw %} + +```yaml +template: + - trigger: + - platform: event + event_type: "imap_content" + id: "custom_event" + event_data: + custom: True + sensor: + - name: event filtered by template + state: '{{ trigger.event.data["subject"] }}' +``` + +{% endraw %} diff --git a/source/_integrations/jvc_projector.markdown b/source/_integrations/jvc_projector.markdown new file mode 100644 index 00000000000..c905e68fb8a --- /dev/null +++ b/source/_integrations/jvc_projector.markdown @@ -0,0 +1,46 @@ +--- +title: JVC Projector +description: Instructions on how to integrate JVC Projector into Home Assistant. +ha_category: + - Remote +ha_release: '2023.6' +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@SteveEasley' +ha_domain: jvc_projector +ha_platforms: + - remote +ha_integration_type: device +--- + +The JVC Projector integration allows for the automation of [JVC Projectors](https://www.jvc.com/usa/projectors/). + +## Supported Models + +This integration is intended for the automation of any modern JVC Projector with a LAN network port. + +{% include integrations/config_flow.md %} + +## Remote + +The JVC Projector remote platform will create a [Remote](/integrations/remote/) entity for the device. This entity allows you to send the following commands via the [remote.send_command](/integrations/remote/) service. + +- `menu` +- `up` +- `down` +- `left` +- `right` +- `ok` +- `back` +- `info` +- `input` +- `hide` +- `mpc` +- `cmd` +- `advanced_menu` +- `picture_mode` +- `color_profile` +- `lens_control` +- `setting_memory` +- `gamma_settings` diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 8dfaabd23e7..06ed519e360 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -390,3 +390,74 @@ data: {% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +## Keypress events + +key presses of keyboards/remotes can be overwritten in Kodi and configured to send an event to Home Assistant, which can then be used in automations to, for instance, turn up/down the volume of a TV/receiver. + +A keypress can be overwritten in Kodi by using the [Kodi keymap XML](https://kodi.wiki/view/Keymap) or from within the Kodi GUI using the [Keymap Editor add-on](https://kodi.wiki/view/Add-on:Keymap_Editor). + +An example of the Kodi keymap configuration using XML, which will overwrite the volume_up/volume_down buttons and instead send an event to HomeAssistant: + +```xml + + + + NotifyAll("KodiLivingroom", "OnKeyPress", {"key":"volume_up"}) + NotifyAll("KodiLivingroom", "OnKeyPress", {"key":"volume_down"}) + + + +``` + +The `"KodiLivingroom"` can be set to any value and will be present in the event data as the `"sender"` +The `"OnKeyPress"` is needed to identify the event in Home Assistant, do not change this. +The `{"key":"volume_up"}` can contain any JSON which will be present in the event data under the `"data"` key, normally this is used to identify which key was pressed. + +For possible keyboard key names, see: https://kodi.wiki/view/List_of_keynames +For other actions, see: https://kodi.wiki/view/Keymap#Keynames + +For the example above, when the volume up key is pressed, an event in Home Assistant will be fired that looks like this: +```yaml +event_type: kodi_keypress +data: + type: keypress + device_id: 72e5g0ay5621f5d719qd8cydj943421a + entity_id: media_player.kodi_livingroom + sender: KodiLivingroom + data: + key: volume_up +``` + +A example of a automation to turn up/down the volume of a receiver using the event: + +{% raw %} + +```yaml +alias: Kodi keypress +mode: parallel +max: 10 +trigger: + - platform: event + event_type: kodi_keypress + event_data: + entity_id: media_player.kodi_livingroom +action: + - choose: + - conditions: + - condition: template + value_template: "{{trigger.event.data.data.key=='volume_up'}}" + sequence: + - service: media_player.volume_up + target: + entity_id: media_player.receiver + - conditions: + - condition: template + value_template: "{{trigger.event.data.data.key=='volume_down'}}" + sequence: + - service: media_player.volume_down + target: + entity_id: media_player.receiver +``` + +{% endraw %} diff --git a/source/_integrations/lacrosse_view.markdown b/source/_integrations/lacrosse_view.markdown index 87776173bb5..8b71a65d401 100644 --- a/source/_integrations/lacrosse_view.markdown +++ b/source/_integrations/lacrosse_view.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@IceBotYT' ha_domain: lacrosse_view ha_platforms: + - diagnostics - sensor ha_integration_type: integration --- diff --git a/source/_integrations/lastfm.markdown b/source/_integrations/lastfm.markdown index ac57d20771b..4418a235173 100644 --- a/source/_integrations/lastfm.markdown +++ b/source/_integrations/lastfm.markdown @@ -9,38 +9,15 @@ ha_domain: lastfm ha_platforms: - sensor ha_integration_type: integration +ha_config_flow: true +ha_codeowners: + - '@joostlek' --- The `lastfm` sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on [Last.fm](https://www.last.fm/). -## Setup +## Prerequisites To get an API key you need to create an [API account](https://www.last.fm/api/account/create). -## Configuration - -To use Last.fm sensor with your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lastfm - api_key: YOUR_API_KEY - users: - - user1 - - user2 -``` - -{% configuration %} -api_key: - description: Your Last.fm API key. - required: true - type: string -users: - description: List of users. - required: true - type: list - keys: - username: - description: Username of the user to monitor. -{% endconfiguration %} +{% include integrations/config_flow.md %} diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index ded61b41d64..51de2262b40 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -43,7 +43,7 @@ Most lights do not support all attributes. You can check the integration documen | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all lights, set `entity_id` to `all`. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color, brightness and a transition value (if no transition is desired, set to 0 or leave out the column entirely). If a profile is given, and a brightness is set, then the profile brightness will be overwritten. +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/core/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color, brightness and a transition value (if no transition is desired, set to 0 or leave out the column entirely). If a profile is given, and a brightness is set, then the profile brightness will be overwritten. | `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma-separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. @@ -116,6 +116,6 @@ Turns one or multiple lights off. ### Service `light.toggle` -Toggles the state of one or multiple lights. Takes the same arguments as [`turn_on`](#service-lightturn_on) service. +Toggles the state of one or multiple lights. Takes the same arguments as the [`light.turn_on`](#service-lightturn_on) service. -*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. If you want the lights to be treated as a single light, use [Light Groups](/integrations/light.group/) instead. +*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. If you want the lights to be treated as a single light, use [Light Groups](/integrations/group#binary-sensor-light-and-switch-groups) instead. diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown index 8e8d5c9d87a..0ad0cc1fd01 100644 --- a/source/_integrations/lightwave.markdown +++ b/source/_integrations/lightwave.markdown @@ -106,8 +106,10 @@ The first use of a light or switch will try to register with your Lightwave WiFi # TRVs -Lightwave Thermostatic Radiator Values (TRV) are supported but require an additional proxy to capture the current TRV temperature. -See [LWProxy](https://github.com/ColinRobbins/Homeassistant-Lightwave-TRV) +Lightwave Thermostatic Radiator Values (TRV) are supported. + +Earlier integrations required a proxy - See [LWProxy](https://github.com/ColinRobbins/Homeassistant-Lightwave-TRV). +This capabilty is still supported, but no longer required. ```yaml # Example TRV configuration.yaml for TRVs @@ -117,8 +119,6 @@ lightwave: R99D1: name: Bedroom Light trv: - proxy_ip: 127.0.0.1 # Proxy address, do not change unless running on a different server - proxy_port: 7878 # Do not change, unless a port clash trvs: R1Dh: # The ID of the TRV. name: Bedroom TRV diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown index fc07365ffb1..17375ad531a 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -60,6 +60,12 @@ It is recommended to assign a static IP address to your main repeater. This ensu
    +
    + +If you are using RadioRA2 software version 12 or later, the default `lutron` user with password `integration` is not configured by default. To configure a new telnet user, go to **Settings** > **Integration** in your project and add a new telnet login. Once configured, use the transfer tab to push your changes to the RadioRA2 main repeater(s). + +
    + ## Keypad buttons Individual buttons on keypads are not represented as entities. Instead, they fire events called `lutron_event` whose payloads include `id` and `action` attributes. diff --git a/source/_integrations/marytts.markdown b/source/_integrations/marytts.markdown index 662165134d5..920741c9571 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `marytts` text-to-speech platform uses [MaryTTS](http://mary.dfki.de/) Text-to-Speech engine to read a text with natural sounding voices. +The `marytts` text-to-speech platform uses [MaryTTS](http://mary.dfki.de/) text-to-speech engine to read a text with natural sounding voices. ## Configuration diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown index c3e66f29019..793c3230a99 100644 --- a/source/_integrations/matter.markdown +++ b/source/_integrations/matter.markdown @@ -223,6 +223,10 @@ The Philips Hue V2 bridge supports Matter since a recent update (the beta progra - Device events for example for dimmer remotes are not supported. - Only basic control of lights is supported, no scenes, events, effects etc. +### Tasmota + +Tasmota supports Matter over IP on all ESP32 based devices (in experimental phase). Follow the [instructions](https://tasmota.github.io/docs/Matter/). + ### TP-Link Tapo P125M (power plug) - Look for the M addition in the model name, a device without the M (regular P125) is not Matter compliant. diff --git a/source/_integrations/media_source.markdown b/source/_integrations/media_source.markdown index d4745da15a6..b12f6ef72b2 100644 --- a/source/_integrations/media_source.markdown +++ b/source/_integrations/media_source.markdown @@ -62,9 +62,13 @@ homeassistant: recording: /mnt/recordings ``` -Please note, that the folder must be accessible locally. Home Assistant -cannot connect to external or remote network shares using this configuration -option. +
    + + If you want to use media from a network storage, the network storage must first be connected first. Refer to [these instructions on how to connect network storage](/common-tasks/os/#network-storage). + + The media from the network storage is then automatically added to the local media browser. + +
    ## Playing media from a Media Source diff --git a/source/_integrations/melnor.markdown b/source/_integrations/melnor.markdown index f69941bf072..58503f1873a 100644 --- a/source/_integrations/melnor.markdown +++ b/source/_integrations/melnor.markdown @@ -15,6 +15,7 @@ ha_platforms: - number - sensor - switch + - time ha_integration_type: integration --- diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index cc18e01f1c2..0f175596ef3 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -16,7 +16,11 @@ ha_platforms: ha_integration_type: integration --- -The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. You can get an API key by registering for a Met Office [account](https://register.metoffice.gov.uk/WaveRegistrationClient/public/register.do?service=datapoint). As their website is not as straightforward, after registration and verifying your account you can login [here](https://register.metoffice.gov.uk/MyAccountClient/account/view) to retrieve your API key. +The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. +## Getting started +Their website is not as straightforward so check the [getting started](https://www.metoffice.gov.uk/services/data/datapoint/getting-started). +1. Register for a [Met Office account](https://register.metoffice.gov.uk/WaveRegistrationClient/public/register.do?service=datapoint). +2. After registration and verification of your account, [login](https://register.metoffice.gov.uk/MyAccountClient/account/view) to retrieve your API key. {% include integrations/config_flow.md %} diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index f5be4789b09..8c7e70d641e 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -1,6 +1,6 @@ --- -title: Microsoft Text-to-Speech (TTS) -description: Instructions on how to set up Microsoft Text-to-Speech with Home Assistant. +title: Microsoft text-to-speech (TTS) +description: Instructions on how to set up Microsoft text-to-speech with Home Assistant. ha_category: - Text-to-speech ha_iot_class: Cloud Push @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `microsoft` text-to-speech platform uses the [TTS engine of the Microsoft Speech Service](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/text-to-speech) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Microsoft Speech API. For this integration to work, you need a free API key. You can use your [Azure subscription](https://azure.microsoft.com) to create an [Azure Speech resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices). +The `microsoft` text-to-speech platform uses the [TTS engine of the Microsoft Speech Service](https://learn.microsoft.com/azure/cognitive-services/speech-service/text-to-speech) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Microsoft Speech API. For this integration to work, you need a free API key. You can use your [Azure subscription](https://azure.microsoft.com) to create an [Azure Speech resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices). ## Configuration @@ -30,7 +30,7 @@ api_key: required: true type: string language: - description: The language to use. Note that if you set the language to anything other than the default, you will need to specify a matching voice type as well. For the supported languages check the list of [available languages](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/microsoft/tts.py#L20). + description: The language to use. Note that if you set the language to anything other than the default, you will need to specify a matching voice type as well. For the supported languages check the list of [available languages](https://github.com/home-assistant/core/blob/dev/homeassistant/generated/microsoft_tts.py). required: false type: string default: "`en-us`" @@ -40,7 +40,7 @@ gender: type: string default: "`Female`" type: - description: "The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support#text-to-speech)." + description: "The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://learn.microsoft.com/azure/cognitive-services/speech-service/language-support?tabs=tts)." required: false type: string default: "`JennyNeural`" @@ -64,7 +64,7 @@ contour: required: false type: string region: - description: "The region of your API endpoint. See [documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions)." + description: "The region of your API endpoint. See [documentation](https://learn.microsoft.com/azure/cognitive-services/speech-service/regions)." required: false type: string default: "`eastus`" @@ -72,9 +72,9 @@ region:
    -Not all Azure regions support high-quality neural voices. Use [this overview](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions#neural-and-standard-voices) to determine the availability of standard and neural voices by region/endpoint. +Not all Azure regions support high-quality neural voices. Use [this overview](https://learn.microsoft.com/azure/cognitive-services/speech-service/regions) to determine the availability of standard and neural voices by region/endpoint. -New users ([any newly created Azure Speech resource after August 31st, 2021](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/text-to-speech#migrate-to-neural-voice)) can only use neural voices. Existing resources can continue using standard voices through August 31st, 2024. +New users ([any newly created Azure Speech resource after August 31st, 2021](https://learn.microsoft.com/azure/cognitive-services/speech-service/text-to-speech#more-about-neural-text-to-speech-features)) can only use neural voices. Existing resources can continue using standard voices through August 31st, 2024.
    diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown index 4ea089778cf..9a8ac714e33 100644 --- a/source/_integrations/microsoft_face.markdown +++ b/source/_integrations/microsoft_face.markdown @@ -11,17 +11,17 @@ ha_integration_type: integration The `microsoft_face` integration platform is the main integration for Microsoft Azure Cognitive service -[Face](https://azure.microsoft.com/en-us/services/cognitive-services/face/). +[Face](https://azure.microsoft.com/products/cognitive-services/vision-services). All data are stored in your own private instance in the Azure cloud. ## Setup You need an API key, which is free, but requires an -[Azure registration](https://azure.microsoft.com/en-us/free/) using your +[Azure registration](https://azure.microsoft.com/free/) using your Microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with -[cognitive-services](https://azure.microsoft.com/en-us/try/cognitive-services/). +[cognitive-services](https://azure.microsoft.com/try/cognitive-services/). Please note that all keys on cognitive services must be recreated every 90 days. ## Configuration diff --git a/source/_integrations/microsoft_face_detect.markdown b/source/_integrations/microsoft_face_detect.markdown index fcf5baef9b9..04fa1ef6675 100644 --- a/source/_integrations/microsoft_face_detect.markdown +++ b/source/_integrations/microsoft_face_detect.markdown @@ -10,19 +10,19 @@ ha_integration_type: integration --- The `microsoft_face_detect` image processing platform allows you to use the -[Microsoft Face Identify](https://www.microsoft.com/cognitive-services/en-us/) +[Microsoft Face Identify](https://azure.microsoft.com/products/cognitive-services/) API through Home Assistant. This platform enables you to detect face on camera and fire an event with attributes. -Please refer to the [Microsoft Face component](/integrations/microsoft_face/) configuration on +Please refer to the [Microsoft Face integration](/integrations/microsoft_face/) configuration on how to setup the API key. For using the result inside an automation rule, -take a look at the [Image Processing component](/integrations/image_processing/) page. +take a look at the [Image Processing integration](/integrations/image_processing/) page.
    -The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing component](/integrations/image_processing/) page. +The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing integration](/integrations/image_processing/) page.
    diff --git a/source/_integrations/microsoft_face_identify.markdown b/source/_integrations/microsoft_face_identify.markdown index 5a561eb1ce4..66646455ca3 100644 --- a/source/_integrations/microsoft_face_identify.markdown +++ b/source/_integrations/microsoft_face_identify.markdown @@ -10,19 +10,19 @@ ha_integration_type: integration --- The `microsoft_face_identify` image processing platform lets you use -[Microsoft Face identify](https://www.microsoft.com/cognitive-services/en-us/) +[Microsoft Face identify](https://azure.microsoft.com/products/cognitive-services/) API through Home Assistant. This platform allow you do identify persons on camera and fire an event with attributes. -Please refer to the [Microsoft Face component](/integrations/microsoft_face/) configuration on +Please refer to the [Microsoft Face integration](/integrations/microsoft_face/) configuration on how to setup the API key. For using the result inside an automation rule, -take a look at the [Image Processing component](/integrations/image_processing/) page. +take a look at the [Image Processing integration](/integrations/image_processing/) page.
    -The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing component](/integrations/image_processing/) page. +The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing integration](/integrations/image_processing/) page.
    diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 63b430d236f..9d35704c189 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -169,7 +169,7 @@ For Ubiquiti routers/access points the "Enable multicast enhancement (IGMPv3)" s ### Bypassing UDP multicast If UDP Multicast does not work in your setup (due to network limitations), this integration can be used in local polling mode. -Go to Settings -> Integrations -> on the already set up Motion Blinds integration click "configure" --> disable the "Wait for push" option (disabled by default). +Go to Settings -> Integrations -> on the already set up Motion Blinds integration click "configure" --> disable the "Wait for multicast push on update" option (disabled by default). The default update interval of the Motion Blinds integration is every 10 minutes. When UDP multicast pushes do not work, this polling interval can be a bit high. To increase the polling interval: diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index ab89f6c9866..fe5a5f16699 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -68,7 +68,11 @@ The Mosquitto project runs a [public broker](https://test.mosquitto.org). This i MQTT broker settings are configured when the MQTT integration is first set up and can be changed later if needed. -Add the MQTT integration, then provide your broker's hostname (or IP address) and port and (if required) the username and password that Home Assistant should use. To change the settings later, click on "Configure" on the integration page in the UI, then "Re-configure MQTT". +Add the MQTT integration, then provide your broker's hostname (or IP address) and port and (if required) the username and password that Home Assistant should use. To change the settings later, follow these steps: + +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. On the MQTT integration, select the cogwheel. +1. Select **Configure**, then **Re-configure MQTT**.
    @@ -109,7 +113,7 @@ With a secure broker connection it is possible to use a client certificate for a #### Using WebSockets as transport -You can select `websockets` as transport method if your MQTT broker supports it. When you select `websockets` and click `NEXT` you will be able to add a WebSockets path (default = `/` and WebSockets headers (optional). The target WebSockets URI: `ws://{broker}:{port}{WebSockets path}` is built with `broker`, `port` and `ws_path` (WebSocket path) settings. +You can select `websockets` as transport method if your MQTT broker supports it. When you select `websockets` and click `NEXT`, you will be able to add a WebSockets path (default = `/`) and WebSockets headers (optional). The target WebSockets URI: `ws://{broker}:{port}{WebSockets path}` is built with `broker`, `port` and `ws_path` (WebSocket path) settings. To configure the WebSocketS headers supply a valid JSON dictionary string. E.g. `{ "Authorization": "token" , "x-header": "some header"}`. The default transport method is `tcp`. The WebSockets transport can be secured using TLS and optionally using user credentials or a client certificate.
    @@ -120,7 +124,12 @@ A configured client certificate will only be active if broker certificate valida ## Configure MQTT options -To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT". Click `NEXT` to open the MQTT options page. +To change the settings, follow these steps: + +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. On the MQTT integration, select the cogwheel. +1. Select **Configure**, then **Re-configure MQTT**. +1. To open the MQTT options page, select **Next**. ### Discovery options @@ -140,13 +149,17 @@ MQTT Birth and Last Will messages can be customized or disabled from the UI. To The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below: ```bash -mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" +mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON" ``` -Another way to send MQTT messages manually is to use the "MQTT" integration in the frontend. Choose "Settings" on the left menu, click "Devices & Services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" . +Another way to send MQTT messages manually is to use the **MQTT** integration in the frontend. Choose "Settings" on the left menu, click "Devices & Services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" . + +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. On the Mosquitto broker integration, select the cogwheel, then select **Configure**. +1. Enter something similar to the example below into the **topic** field under **Publish a packet**. Select **Publish**. ```bash - home-assistant/switch/1/power + homeassistant/switch/1/power ``` and in the Payload field @@ -155,23 +168,23 @@ and in the Payload field ON ``` -In the "Listen to a topic" field, type `#` to see everything, or "home-assistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: +In the "Listen to a topic" field, type `#` to see everything, or "homeassistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: ```bash -Message 23 received on home-assistant/switch/1/power/stat/POWER at 12:16 PM: +Message 23 received on homeassistant/switch/1/power/stat/POWER at 12:16 PM: ON QoS: 0 - Retain: false -Message 22 received on home-assistant/switch/1/power/stat/RESULT at 12:16 PM: +Message 22 received on homeassistant/switch/1/power/stat/RESULT at 12:16 PM: { "POWER": "ON" } QoS: 0 - Retain: false ``` -For reading all messages sent on the topic `home-assistant` to a broker running on localhost: +For reading all messages sent on the topic `homeassistant` to a broker running on localhost: ```bash -mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" +mosquitto_sub -h 127.0.0.1 -v -t "homeassistant/#" ``` ## MQTT Discovery @@ -218,6 +231,7 @@ The discovery topic needs to follow a specific format: //[/]/config ``` +- ``: The Discovery Prefix defaults to `homeassistant`. This prefix can be [changed](#discovery-options). - ``: One of the supported MQTT components, eg. `binary_sensor`. - `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). - ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). @@ -316,10 +330,6 @@ Configuration variable names in the discovery payload may be abbreviated to cons 'fan_mode_stat_t': 'fan_mode_state_topic', 'frc_upd': 'force_update', 'g_tpl': 'green_template', - 'hold_cmd_tpl': 'hold_command_template', - 'hold_cmd_t': 'hold_command_topic', - 'hold_stat_tpl': 'hold_state_template', - 'hold_stat_t': 'hold_state_topic', 'hs_cmd_t': 'hs_command_topic', 'hs_cmd_tpl': 'hs_command_template', 'hs_stat_t': 'hs_state_topic', @@ -481,7 +491,6 @@ Configuration variable names in the discovery payload may be abbreviated to cons 'tilt_clsd_val': 'tilt_closed_value', 'tilt_cmd_t': 'tilt_command_topic', 'tilt_cmd_tpl': 'tilt_command_template', - 'tilt_inv_stat': 'tilt_invert_state', 'tilt_max': 'tilt_max', 'tilt_min': 'tilt_min', 'tilt_opnd_val': 'tilt_opened_value', @@ -495,10 +504,6 @@ Configuration variable names in the discovery payload may be abbreviated to cons 'val_tpl': 'value_template', 'whit_cmd_t': 'white_command_topic', 'whit_scl': 'white_scale', - 'whit_val_cmd_t': 'white_value_command_topic', - 'whit_val_scl': 'white_value_scale', - 'whit_val_stat_t': 'white_value_state_topic', - 'whit_val_tpl': 'white_value_template', 'xy_cmd_t': 'xy_command_topic', 'xy_cmd_tpl': 'xy_command_template', 'xy_stat_t': 'xy_state_topic', @@ -536,7 +541,7 @@ The following software has built-in support for MQTT discovery: - [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) - [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) - [Nuki Hub](https://github.com/technyon/nuki_hub) -- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support) +- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) - [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) - [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) - [SmartHome](https://github.com/roncoa/SmartHome) @@ -784,14 +789,14 @@ You must include either `topic` or `topic_template`, but not both. If providing

    ```yaml -topic: home-assistant/light/1/command +topic: homeassistant/light/1/command payload: on ``` {% raw %} ```yaml -topic: home-assistant/light/1/state +topic: homeassistant/light/1/state payload_template: "{{ states('device_tracker.paulus') }}" ``` @@ -800,7 +805,7 @@ payload_template: "{{ states('device_tracker.paulus') }}" {% raw %} ```yaml -topic_template: "home-assistant/light/{{ states('sensor.light_active') }}/state" +topic_template: "homeassistant/light/{{ states('sensor.light_active') }}/state" payload_template: "{{ states('device_tracker.paulus') }}" ``` @@ -811,7 +816,7 @@ If you want to send JSON using the YAML editor then you need to format/escape it properly. Like: ```yaml -topic: home-assistant/light/1/state +topic: homeassistant/light/1/state payload: "{\"Status\":\"off\", \"Data\":\"something\"}"` ``` @@ -844,7 +849,7 @@ data: Example of how to use `qos` and `retain`: ```yaml -topic: home-assistant/light/1/command +topic: homeassistant/light/1/command payload: on qos: 2 retain: true diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index e571f8376bb..83af0d261c5 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -13,7 +13,7 @@ ha_platforms: ha_integration_type: integration --- -The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://products.office.com/en-us/microsoft-teams/group-chat-software). +The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://www.microsoft.com/microsoft-teams/group-chat-software). ## Setup diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 9d30d4b2173..1ccf4147ffe 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -2,7 +2,6 @@ title: Google Nest description: Instructions on how to integrate Nest into Home Assistant. ha_category: - - Binary Sensor - Camera - Climate - Doorbell @@ -56,11 +55,10 @@ Adding Nest to your Home Assistant instance can be done via the user interface, {% details "Manual configuration steps" %} 1. Browse to your Home Assistant instance. -1. In the sidebar click on _**{% my config icon %}**_. -1. From the configuration menu select: _**{% my integrations %}**_. -1. In the bottom right, click on the - _**{% my config_flow_start icon domain=page.ha_domain %}**_ button. -1. From the list, search and select _**"Nest"**_ and follow the instructions. +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. In the bottom right corner, select the + **{% my config_flow_start icon domain=page.ha_domain %}** button. +1. From the list, select **Nest** and follow the instructions on screen. {% enddetails %} @@ -424,9 +422,8 @@ To improve security and reduce phishing risk Google has [deprecated](https://dev {% details "Reconfigure the integration %} 1. Make sure to upgrade to the latest version of Home Assistant. -1. In the sidebar click on _**{% my config icon %}**_. -1. From the configuration menu select: _**{% my integrations %}**_. -1. The *Nest* integration should appear with alert. +1. Go to **{% my integrations title="Settings > Devices & Services" %}**. +1. The **Nest** integration should appear with alert. ![Screenshot of success](/images/integrations/nest/attention.png) @@ -581,342 +578,6 @@ logger:
    -The Legacy [Works with Nest](https://developers.nest.com/) API is not accepting new signups. +The Legacy [Works with Nest](https://developers.nest.com/) API is deprecated, and will be shut down by Google in September 2023.
    - -{% details "Legacy Works with Nest Configuration Steps" %} - -The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. - - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](#binary-sensor) -- [Camera](#camera) -- [Climate](#climate) -- [Sensor](#sensor) - -**Setting up developer account** - - -1. Visit [Nest Developers](https://developers.nest.com/), and sign in. Create an account if you don't have one already. -2. Fill in account details: - * The "Company Information" can be anything. We recommend using your name. -3. Submit changes -4. Click "[Products](https://developers.nest.com/products)" at top of page. -5. Click "[Create New Product](https://developers.nest.com/products/new)" -6. Fill in details: - * Product name must be unique. We recommend [email] - Home Assistant. - * The description, users, URLs can all be anything you want. - * Leave the "Redirect URI" Field blank -7. For permissions check every box and if it's an option select the read/write option. Note: there are important permissions under the "Other Permissions" category. If you are only adding a thermostat, do not just select the permissions under "Thermostat". You still need to check the boxes under "Other Permissions" in order to give you access to features like away mode, ETA, structure read/write, and postal code. - * The description requires a specific format to be accepted. - * Use "[Home Assistant] [Edit] [For Home Automation]" as the description as it is not super important. -8. Click "Create Product" -9. Once the new product page opens the "Product ID" and "Product Secret" are located on the right side. These will be used as `client_id` and `client_secret` below. -10. Add the Nest integration to your `configuration.yaml` and restart Home Assistant. Then, go to `Settings > Devices & Services` and select `CONFIGURE` next to `Nest`. Click the link in the configurator pop up to log into your Nest account and complete the OAuth. Copy the resulting PIN code into the pop up. - -Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible. - -**Configuration** - -```yaml -# Example configuration.yaml entry -nest: - client_id: CLIENT_ID - client_secret: CLIENT_SECRET -``` - -```yaml -# Example configuration.yaml entry to show only devices at your vacation and primary homes -nest: - client_id: CLIENT_ID - client_secret: CLIENT_SECRET - structure: - - Vacation - - Primary -``` - -{% configuration %} -client_id: - description: Your Nest developer client ID. - required: true - type: string -client_secret: - description: Your Nest developer client secret. - required: true - type: string -structure: - description: The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. - required: false - type: list -{% endconfiguration %} - -**Service `set_away_mode`** - -You can use the service `nest/set_away_mode` to set the structure(s) to "Home" or "Away". - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `away_mode` | no | String, must be `away` or `home`. -| `structure` | yes | String, will default to all configured Nest structures if not specified. - -Examples: - -```yaml -# Example script to set away, no structure specified so will execute for all -script: - nest_set_away: - sequence: - - service: nest.set_away_mode - data: - away_mode: away -``` - -```yaml -# Example script to set home, structure specified -script: - nest_set_home: - sequence: - - service: nest.set_away_mode - data: - away_mode: home - structure: - - Apartment -``` - -**Service `set_eta`** - -You can use the service `nest/set_eta` to set or update the estimated time of arrival window. Calling this service will automatically set the structure(s) to "Away". Structures must have an associated Nest thermostat in order to use ETA function. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `eta` | no | Time period, estimated time of arrival from now. -| `eta_window` | yes | Time period, estimated time of arrival window. Default is 1 minute. -| `trip_id` | yes | String, unique ID for the trip. Default is auto-generated using a timestamp. Using an existing `trip_id` will update that trip's ETA. -| `structure` | yes | String, will default to all configured Nest structures if not specified. - -Examples: - -```yaml -# Example script to set ETA, no structure specified so will execute for all -script: - nest_set_eta: - sequence: - - service: nest.set_eta - data: - eta: 00:10:30 - trip_id: Leave Work -``` - -```yaml -# Example script to update ETA and specify window, structure specified -script: - nest_update_eta: - sequence: - - service: nest.set_eta - data: - eta: 00:11:00 - eta_window: 00:05 - trip_id: Leave Work - structure: - - Apartment -``` - -**Service `cancel_eta`** - -You can use the service `nest/cancel_eta` to cancel an existing estimated time of arrival window. Structures must have an associated Nest thermostat in order to use ETA function. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `trip_id` | no | String, unique ID for the trip. Using an existing `trip_id` will update that trip's ETA. -| `structure` | yes | String, will default to all configured Nest structures if not specified. - -Examples: - -```yaml -# Example script to cancel ETA, no structure specified so will execute for all -script: - nest_cancel_eta: - sequence: - - service: nest.cancel_eta - data: - trip_id: Leave Work -``` - -```yaml -# Example script to cancel ETA, structure specified -script: - nest_cancel_eta: - sequence: - - service: nest.cancel_eta - data: - trip_id: Leave Work - structure: - - Apartment -``` - -**Troubleshooting** - -- If you're getting [rickrolled](https://www.youtube.com/watch?v=dQw4w9WgXcQ) by the Legacy API instead of being able to see your Nest cameras, you may not have set up your developer account's permissions correctly. Go back through and make sure you've selected read/write under every category that it's an option. - -**Platforms** - -
    - -You must have the [Nest component](/integrations/nest/) configured to use the platforms below. - -
    - -**Binary Sensor** - -The `nest` binary sensor platform lets you monitor various states of your [Nest](https://nest.com) devices. - -
    - -You must have the [Nest component](/integrations/nest/) configured to use these sensors. The binary sensors will be setup if the `nest` integration is configured and the required configuration for the `nest binary sensor` is set. - -
    - -**Configuration** - -To enable binary sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings: - -```yaml -# Example configuration.yaml entry -nest: - binary_sensors: - monitored_conditions: - - 'fan' - - 'target' -``` - -By default all binary sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all binary sensors for the [Nest component](/integrations/nest/). - -{% configuration %} -monitored_conditions: - description: States to monitor. - required: false - type: list -{% endconfiguration %} - -The following conditions are available by device: - -- Nest Home: - - away -- Nest Thermostat: - - online - - fan - - is\_using\_emergency\_heat - - is\_locked - - has\_leaf -- Nest Protect: - - online -- Nest Camera: - - online - - motion\_detected - - person\_detected - - sound\_detected - -**Camera** - -The `nest` platform allows you to watch still frames from a video stream (not live stream) of your [Nest](https://nest.com/camera/meet-nest-cam/) camera in Home Assistant. - -
    - -The Legacy API integration allows you to watch still frames from a video stream (not live stream). The Legacy API also supports the `camera.turn_on` and `camera.turn_off` services. - -
    - -Nest Camera supports the `camera.turn_on` and `camera.turn_off` services since the 0.75 release. - -**Climate** - -The `nest` climate platform lets you control a thermostat from [Nest](https://nest.com). - -
    -Please note due to limitations with the European Nest Thermostat E, integration with Home Assistant for that thermostat is not possible. -
    - -

    - -

    - -**Sensor** - -The `nest` sensor platform lets you monitor sensors connected to your [Nest](https://nest.com) devices. - -
    - -The sensors will be setup if the `nest` integration is configured and the required configuration for the `nest sensor` is set. - -
    - -**Configuration** - -To enable sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings: - -```yaml -# Example configuration.yaml entry -nest: - sensors: - monitored_conditions: - - 'temperature' - - 'target' -``` - -By default all sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all sensors for the [Nest component](/integrations/nest/). - -{% configuration %} -monitored_conditions: - description: States to monitor. - required: false - type: list -{% endconfiguration %} - -The following conditions are available by device: - -- Nest Home: - - `eta`: Estimated time of arrival. - - `security_state`: `ok` or `deter`. [Security State](#security-state). Only available when Nest Camera exists. -- Nest Thermostat: - - `humidity` - - `preset_mode` - - `temperature` - - `target` - - `hvac_state`: The currently active state of the HVAC system, `heat`, `cool` or `off` (previously `heating`, `cooling` or `off`). -- Nest Protect: - - `co_status`: `Ok`, `Warning` or `Emergency` - - `smoke_status`: `Ok`, `Warning` or `Emergency` - - `battery_health`: `Ok` or `Replace` - - `color_status`: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. -- Nest Camera: none - -**Security State** - -
    - -This feature is not designed to transform your Home Assistant into a security system, neither Home Assistant nor Nest are liable for damages, -or consequential damages of any character arising as a result of use this feature. - -This feature does not depend on the [Nest Secure alarm system](https://nest.com/alarm-system/overview/) and is not a reflection of the status of that system, -nor does it react to state changes in that system. - -
    - -
    - -This feature uses a new [Nest Security API](https://developers.nest.com/documentation/cloud/security-guide). -You may need to change your ["Product"](https://developers.nest.com/products) permission setting to include `Security State Read`. -After this permission change, you may need to re-authorize your client. - -
    - -If a Nest Cam detects the presence of a person (see `person_detected` in [binary_sensor.nest](#binary-sensor) while the structure is in `away` mode (see `away` in [binary_sensor.nest](#binary-sensor), the structure enters `deter` mode. - -A `deter` state is re-evaluated after several minutes and relaxed to `ok` if no further `person_detected` events have occurred. - -The `security_state` automatically switches to `ok` when the structure state is `home`. - -{% enddetails %} diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index 8116a4a6530..57a8fb44675 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -109,3 +109,7 @@ Displays the current link rate of the device indicating the maximum possible dat ### Link type Displays the current link type: wired, 2.4GHz or 5GHz. + +## Troubleshooting + +- If you get a "Connection or login error" when trying to setup the NETGEAR integration, please try using the IP address of the router (often "192.168.1.1") as host instead of the default "routerlogin.net". diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown index 13d2e4bee8b..c09241104f0 100644 --- a/source/_integrations/netgear_lte.markdown +++ b/source/_integrations/netgear_lte.markdown @@ -14,6 +14,8 @@ ha_platforms: - notify - sensor ha_integration_type: integration +ha_codeowners: + - '@tkdrob' --- The NETGEAR LTE integration for Home Assistant allows you to observe and control [NETGEAR LTE modems](https://www.netgear.com/home/mobile-wifi/lte-modems/). diff --git a/source/_integrations/network.markdown b/source/_integrations/network.markdown index 2fd4134e2e1..5b072d06246 100644 --- a/source/_integrations/network.markdown +++ b/source/_integrations/network.markdown @@ -12,7 +12,7 @@ ha_codeowners: ha_integration_type: system --- -This integration provides network configuration for integrations such as [Zeroconf](/integrations/zeroconf/). It is managed by going to **{% my network title="Settings >> System >> Network" %}** and is only available to users that have "Advanced Mode" enabled on their {% my profile title="user profile" %}. +This integration provides network configuration for integrations such as [Zeroconf](/integrations/zeroconf/). It is managed by going to **{% my network title="Settings > System > Network" %}** and is only available to users that have "Advanced Mode" enabled on their {% my profile title="user profile" %}. **{% my general badge %}** diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 876397ce691..641bbd01467 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -4,7 +4,7 @@ description: Instructions on how to use public transit data from Nextbus in Home ha_category: - Sensor - Transport -ha_iot_class: Local Polling +ha_iot_class: Cloud Polling ha_release: 0.93 ha_codeowners: - '@vividboarder' diff --git a/source/_integrations/nibe_heatpump.markdown b/source/_integrations/nibe_heatpump.markdown index 7d71532c78f..3144a7b7ea9 100644 --- a/source/_integrations/nibe_heatpump.markdown +++ b/source/_integrations/nibe_heatpump.markdown @@ -17,6 +17,7 @@ ha_platforms: - select - sensor - switch + - water_heater ha_integration_type: integration --- @@ -28,9 +29,12 @@ Supported devices: - S1145/S1155 - F1245/F1255 - F1355/F1355 +- S2125 +- S320/S325 - F370 - F470 - F730 +- S735 - F750 - SMO40 - SMOS40 diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index e9accbf5268..a7a714e3e37 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -68,3 +68,8 @@ Events generated by Nuki are sent as events of type `nuki_event` with the follow | -------------------- | ------------------------------------------ | | `type` | The type of the event. Values: `ring` | `entity_id` | The ID of the entity generating the event. + +## MQTT support + +The Nuki Smart Lock 3.0 Pro also [supports MQTT](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support) and can directly integrate with Home Assistant through [MQTT discovery](/integrations/mqtt/#mqtt-discovery). +Specific information can be found [here](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626). diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index 794f01e3a98..a584fcd51ee 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -36,15 +36,23 @@ If running Home assistant Core in a venv, ensure that libxml2 and libxslt python Most of the ONVIF devices support more than one audio/video profile. Each profile provides different image quality, or in the case of an NVR, separate connected cameras. This integration will add entities for all compatible profiles with the video encoding set to H.264. Usually, the first profile has the highest quality and it is the profile used by default. However, you may want to use a lower quality image. You may disable unwanted entities through the Home Assistant UI. -### Extra configuration of the integration - -You can configure specific FFmpeg options through the integration options flow by clicking the gear icon on the top right of the integration details page. +{% include integrations/option_flow.md %} | Option | Description | | -------| ----------- | | RTSP transport mechanism | RTSP transport protocols. The possible options are: `tcp`, `udp`, `udp_multicast`, `http`. | | Extra FFmpeg arguments | Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [`ffmpeg` integration](/integrations/ffmpeg). | | Use wallclock as timestamps | ([Advanced Mode](/blog/2019/07/17/release-96/#advanced-mode) only) Rewrite the camera timestamps. This may help with playback or crashing issues from Wi-Fi cameras or cameras of certain brands (e.g., EZVIZ). | +| Enable Webhooks | If the device supports notifications via a Webhook, the integration will attempt to set up a Webhook. Disable this option to force falling back to trying PullPoint if the device supports it. | + +#### Snapshots + +Some cameras will not produce usable snapshots with larger stream sizes. + +By default, the integration will only enable the camera entity for the first H264 profile. If you are unable to get a working snapshot: + +- If additional camera entities are available for other profiles, try enabling those entities. +- Set the `Extra FFmpeg arguments` to `-pred 1 -ss 00:00:05 -frames:v 1` to cause the snapshot to be taken 5 seconds into the stream. ### Supported Sensors diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown index da7769e5508..20932e3f90e 100644 --- a/source/_integrations/openai_conversation.markdown +++ b/source/_integrations/openai_conversation.markdown @@ -50,4 +50,4 @@ Top P: ### Talking to Super Mario over the phone -You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/projects/worlds-most-private-voice-assistant/). +You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/voice_control/worlds-most-private-voice-assistant/). diff --git a/source/_integrations/opensky.markdown b/source/_integrations/opensky.markdown index e25afb948cc..b7dd5c594a3 100644 --- a/source/_integrations/opensky.markdown +++ b/source/_integrations/opensky.markdown @@ -9,6 +9,8 @@ ha_domain: opensky ha_platforms: - sensor ha_integration_type: integration +ha_codeowners: + - '@joostlek' --- The `opensky` sensor allows one to track overhead flights in a given region. It uses crowd-sourced data from the [OpenSky Network](https://opensky-network.org/) public API. It will also fire Home Assistant events when flights enter and exit the defined region. diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index 24837fc29f1..19c104b0b8f 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -28,8 +28,7 @@ trained medical professional. ## Generating an API Key -To generate an API key, -[simply log in to the OpenUV website](https://www.openuv.io/auth/google). +To generate an API key, simply log in at [the OpenUV website](https://www.openuv.io/). {% include integrations/config_flow.md %} diff --git a/source/_integrations/panasonic_bluray.markdown b/source/_integrations/panasonic_bluray.markdown index 49e2552f25c..45b1dccd1ce 100644 --- a/source/_integrations/panasonic_bluray.markdown +++ b/source/_integrations/panasonic_bluray.markdown @@ -22,10 +22,12 @@ Currently known supported models: - DMP-BDT500 - DMP-BBT01 -Models reported not working: +The following newer models currently support a limited set of status commands: - DP-UB420 - +- DP-UB820 +- DP-UB9000 + If your model is not on the list, then give it a try, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_bluray.markdown). Example configuration: diff --git a/source/_integrations/peco.markdown b/source/_integrations/peco.markdown index d27eb1f0274..d94fb3f2044 100644 --- a/source/_integrations/peco.markdown +++ b/source/_integrations/peco.markdown @@ -22,6 +22,10 @@ To learn more about PECO, visit [**their about page**](https://www.peco.com/Abou This integration is only for PECO customers. To see if your county is supported, take a look at [**their outage map**](https://www.peco.com/Outages/CheckOutageStatus/Pages/OutageMap.aspx). + + +PECO Is a registered trademark of Exelon Business Services Co., LLC +
    {% include integrations/config_flow.md %} diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index 610734a847f..ec0ce71eeee 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -78,7 +78,7 @@ The message attribute supports the [Markdown formatting syntax](https://daringfi | Headline 2 | `## Headline` | | Newline | `\n` | | Bold | `**My bold text**` | -| Cursive | `*My cursive text*` | +| Italic | `*My italic text*` | | Link | `[Link](https://home-assistant.io/)` | | Image | `![image](/local/my_image.jpg)` | diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index 7df7615470a..a57e17d2102 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -1,6 +1,6 @@ --- title: Pico TTS -description: Instructions on how to setup Pico Text-to-Speech with Home Assistant. +description: Instructions on how to setup Pico text-to-speech with Home Assistant. ha_category: - Text-to-speech ha_iot_class: Local Push diff --git a/source/_integrations/piper.markdown b/source/_integrations/piper.markdown new file mode 100644 index 00000000000..ff9ae6dcf0c --- /dev/null +++ b/source/_integrations/piper.markdown @@ -0,0 +1,21 @@ +--- +title: Piper +description: Connect and control your Piper devices using the Wyoming Protocol integration +ha_category: + - Voice +ha_domain: piper +ha_release: '2023.5' +ha_integration_type: virtual +ha_supporting_domain: wyoming +ha_supporting_integration: Wyoming Protocol +ha_codeowners: + - '@balloob' + - '@synesthesiam' +ha_config_flow: true +ha_platforms: + - stt + - tts +ha_iot_class: Local Push +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown index 350e72b3f3c..92825c70b9f 100644 --- a/source/_integrations/profiler.markdown +++ b/source/_integrations/profiler.markdown @@ -53,10 +53,6 @@ gprof2dot -f pstats profile.1234567890123456.cprof | dot -Tsvg -o profile.svg ### Service {% my developer_call_service service="profiler.memory" %} -
    -This service is unavailable when using Python 3.11 as the underlying guppy3 library does not yet support Python 3.11. -
    - Start the memory profiler for the specified number of seconds. | Service data attribute | Optional | Description | diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown index 6824c5d428a..37b9c0a87ab 100644 --- a/source/_integrations/proximity.markdown +++ b/source/_integrations/proximity.markdown @@ -52,6 +52,11 @@ proximity: unit_of_measurement: mi ``` +### Video Tutorial +This video tutorial explains how to set up geofencing in Home Assistant using the proximity integration. + + + {% configuration %} zone: description: The zone to which this integration is measuring the distance to. Default is the home zone. diff --git a/source/_integrations/radiotherm.markdown b/source/_integrations/radiotherm.markdown index 81fe7c6ace8..8667c5d7343 100644 --- a/source/_integrations/radiotherm.markdown +++ b/source/_integrations/radiotherm.markdown @@ -9,7 +9,6 @@ ha_release: 0.7.6 ha_domain: radiotherm ha_config_flow: true ha_codeowners: - - '@bdraco' - '@vinnyfuria' ha_platforms: - climate diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index c299fd4a560..fb6520ffcde 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -67,7 +67,7 @@ pull_mode: default: "`UP`" {% endconfiguration %} -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#J8_header_and_general_purpose_input-output_(GPIO)) about the Raspberry Pi. ## Switch @@ -106,7 +106,7 @@ invert_logic: type: boolean {% endconfiguration %} -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#J8_header_and_general_purpose_input-output_(GPIO)) about the Raspberry Pi.
    Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant. @@ -126,4 +126,4 @@ switch: ### Troubleshooting -If you receive an error such as `gpiozero.exc.BadPinFactory: Unable to load any default pin factory!` try changing the pinfactory from `pigpio` to `mock`, this addresses a [known issue](https://www.raspberrypi.org/forums/viewtopic.php?p=1417922). +If you receive an error such as `gpiozero.exc.BadPinFactory: Unable to load any default pin factory!` try changing the pinfactory from `pigpio` to `mock`, this addresses a [known issue](https://forums.raspberrypi.com/viewtopic.php?p=1417922). diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index d51271de3fa..27753bbb153 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -38,9 +38,10 @@ Protocol: ## Camera streams -This integration creates a few camera entities, one for each stream type with different resolutions: Main, Sub, Ext, and Snapshots. +This integration creates a few camera entities, one for each stream type with different resolutions: Main, Sub, Ext, Snapshots Main, and Snapshots Sub. The Sub stream camera entity is enabled by default; the other streams are disabled by default. The Images stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the RTMP/RTSP/FLV video stream has too much lag. +Dual lens cameras provide additional streams for the second lens. ## Binary sensors @@ -191,8 +192,9 @@ The following models have been tested and confirmed to work: - RLN8-410 NVR - RLN16-410 NVR - RLN36 NVR +- Reolink Duo 2 WiFi - Reolink Duo Floodlight PoE -- Reolink TrackMix PoE +- Reolink TrackMix (PoE and Wi-Fi) - Reolink Video Doorbell (PoE and Wi-Fi) Battery-powered cameras are not yet supported. @@ -203,6 +205,18 @@ However, these cameras can work with this integration through an NVR in which th - E1 Pro - E1 +## Initial Setup + +You'll need to configure your new camera/doorbell for your network. If you're using a wired LAN, this is simple enough. Simply plug it in and let it use DHCP to set itself up. Once it's recognized by your network, you can access its configuration with a web browser. + +If you prefer to use Wi-Fi, especially if you want to restrict it to a local IoT network, [here's a quick way to get it connected](https://www.reddit.com/r/reolink/comments/hjn5be/how_to_connect_wifi_without_an_app/). Simply create a QR code with the following XML string: + + ssid

    password

    last4
    + +Use the `ssid` and `password` of your IoT network. The `last4` is the last 4 digits of the QR code used for the Reolink setup. It's printed under the QR code. You can also scan the QR code and grab the last 4 digits. + +Then power up the camera while pointing it at the QR code. It takes about a minute to initialize, read the QR code, and attach. + ## Troubleshooting - Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online. diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown index ec24b81b2a7..bc45189bf82 100644 --- a/source/_integrations/rituals_perfume_genie.markdown +++ b/source/_integrations/rituals_perfume_genie.markdown @@ -12,6 +12,7 @@ ha_category: - Switch ha_codeowners: - '@milanmeu' + - '@frenck' ha_domain: rituals_perfume_genie ha_platforms: - binary_sensor diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index cd4be01b708..f20bcbd2693 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -3,6 +3,8 @@ title: Roborock description: Instructions on how to integrate Roborock vacuums into Home Assistant ha_category: - Select + - Sensor + - Switch - Vacuum ha_iot_class: Local Polling ha_release: 2023.5 @@ -13,6 +15,8 @@ ha_codeowners: ha_domain: roborock ha_platforms: - select + - sensor + - switch - vacuum ha_integration_type: integration --- @@ -44,3 +48,28 @@ We are working on adding a lot of features to the core integration. We have reve - Status information such as errors, clean time, consumables, etc. - Viewing the camera - Viewing the map + +### How can I clean a specific room? +We plan to make the process simpler in the future, but for now, it is a multi-step process. +1) Enable debug logging for this integration and reload it. +2) Search your logs for 'Got home data' and then find the attribute rooms. +3) Write the rooms down; they have a name and 6 digit ID. +4) Go to **Developer Tools** > **Services** > **Vacuum: Send Command**. Select your vacuum as the entity and 'get_room_mapping' as the command. +5) Go back to your logs and look at the response to `get_room_mapping`. This is a list of the 6-digit IDs you saw earlier to 2-digit IDs. In your original list of room names and 6-digit IDs, replace the 6-digit ID with its pairing 2-digit ID. +6) Now, you have the 2-digit ID that your vacuum uses to describe a room. +7) Go back to **Developer Tools** > **Services** > **Vacuum: Send Command** then type `app_segment_clean` as your command and 'segments' with a list of the 2-digit IDs you want to clean. Then, add `repeats` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas. + +Example: +```yaml +service: vacuum.send_command +data: + command: app_segment_clean + params: + - segments: + - 22 + - 23 + - repeats: 1 +target: + entity_id: vacuum.s7_roborock + +``` diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index 2ea89784ad9..e51f7881876 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -18,6 +18,7 @@ ha_platforms: - sensor - vacuum ha_integration_type: integration +ha_zeroconf: true --- The `roomba` integration allows you to control your [iRobot Roomba](https://www.irobot.com/roomba) vacuum or [iRobot Braava](https://www.irobot.com/braava) m-series mop. diff --git a/source/_integrations/roon.markdown b/source/_integrations/roon.markdown index 9538f330fe5..78a39506701 100644 --- a/source/_integrations/roon.markdown +++ b/source/_integrations/roon.markdown @@ -20,12 +20,12 @@ This integration uses Roon Core, a Roon application that runs on a machine on yo ## Configuration -1. From the Home Assistant front-end, navigate to **Settings** -> **Devices & Services**. Under **Set up a new integration** locate 'Roon' and click **Configure**. -2. Home Assistant will then try to find your Roon Core - if it is successful it will display `Authorize HomeAssistant in Roon`. Click **Submit** and skip to step 4 -3. If your Roon Core is not automatically found you can enter the `Hostname` or `IP address` for the Roon Core machine when requested and click **Submit**. -4. Home Assistant will then contact your Roon Core and ask to be authorized. You will need to enable this extension in the Room Application. Go to **Settings** and then **Extensions**, there you will see an entry for Home Assistant with a button next to it. Click **Enable**. -5. Roon core will then provide Home Assistant with the details of your media players. -6. In Home Assistant you can then pick an area for each of your music players, and add them to Home Assistant. +1. From the Home Assistant front-end, go to {% my integrations title="**Settings** > **Devices & Services**" %}. On the **Roon** integration, select the cogwheel. Then, select **Configure**. +1. Home Assistant will then try to find your Roon Core - if it is successful it will display `Authorize HomeAssistant in Roon`. Select **Submit** and skip to step 4. +1. If your Roon Core is not automatically found, enter the `Hostname` or `IP address` for the Roon Core machine when requested and select **Submit**. +1. Home Assistant will then contact your Roon Core and ask to be authorized. You will need to enable this extension in the Room Application. Go to **Settings** and then **Extensions**. There, you will see an entry for Home Assistant with a button next to it. Select **Enable**. +1. Roon core will then provide Home Assistant with the details of your media players. +1. In Home Assistant you can then pick an area for each of your music players, and add them to Home Assistant. ## Services diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index a942b524b0b..dd988d79a57 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -3,6 +3,7 @@ title: Samsung Smart TV description: Instructions on how to integrate a Samsung Smart TV into Home Assistant. ha_category: - Media Player + - Remote ha_release: 0.13 ha_iot_class: Local Push ha_config_flow: true @@ -14,6 +15,7 @@ ha_ssdp: true ha_platforms: - diagnostics - media_player + - remote ha_zeroconf: true ha_dhcp: true ha_integration_type: device @@ -94,6 +96,377 @@ media_content_type: channel It's possible to switch between the 2 sources `TV` and `HDMI`. Some older models also expose the installed applications through the WebSocket, in which case the source list is adjusted accordingly. +### Remote + +The integration supports the `remote` platform. The remote allows you to send key commands to your TV with the `remote.send_command` service. The supported keys vary between TV models. + +{% details "Full keycodes list" %} + +**Power Keys** +Key|Description +---|----------- +KEY_POWEROFF|PowerOFF +KEY_POWERON|PowerOn +KEY_POWER|PowerToggle +____________ + +**Input Keys** +Key|Description +---|----------- +KEY_SOURCE|Source +KEY_COMPONENT1|Component1 +KEY_COMPONENT2|Component2 +KEY_AV1|AV1 +KEY_AV2|AV2 +KEY_AV3|AV3 +KEY_SVIDEO1|SVideo1 +KEY_SVIDEO2|SVideo2 +KEY_SVIDEO3|SVideo3 +KEY_HDMI|HDMI +KEY_FM_RADIO|FMRadio +KEY_DVI|DVI +KEY_DVR|DVR +KEY_TV|TV +KEY_ANTENA|AnalogTV +KEY_DTV|DigitalTV +KEY_AMBIENT|AmbientMode +_____________ + +**Number Keys** +Key|Description +---|----------- +KEY_1|Key1 +KEY_2|Key2 +KEY_3|Key3 +KEY_4|Key4 +KEY_5|Key5 +KEY_6|Key6 +KEY_7|Key7 +KEY_8|Key8 +KEY_9|Key9 +KEY_0|Key0 +___________ + +**Misc Keys** +Key|Description +---|----------- +KEY_PANNEL_CHDOWN|3D +KEY_ANYNET|AnyNet+ +KEY_ESAVING|EnergySaving +KEY_SLEEP|SleepTimer +KEY_DTV_SIGNAL|DTVSignal +______________ + +**Channel Keys** +Key|Description +---|----------- +KEY_CHUP|ChannelUp +KEY_CHDOWN|ChannelDown +KEY_PRECH|PreviousChannel +KEY_FAVCH|FavoriteChannels +KEY_CH_LIST|ChannelList +KEY_AUTO_PROGRAM|AutoProgram +KEY_MAGIC_CHANNEL|MagicChannel +_____________ + +**Volume Keys** +Key|Description +---|----------- +KEY_VOLUP|VolumeUp +KEY_VOLDOWN|VolumeDown +KEY_MUTE|Mute +________________ + +**Direction Keys** +Key|Description +---|----------- +KEY_UP|NavigationUp +KEY_DOWN|NavigationDown +KEY_LEFT|NavigationLeft +KEY_RIGHT|NavigationRight +KEY_RETURN|NavigationReturn/Back +KEY_ENTER|NavigationEnter +____________ + +**Media Keys** +Key|Description +---|----------- +KEY_REWIND|Rewind +KEY_STOP|Stop +KEY_PLAY|Play +KEY_FF|FastForward +KEY_REC|Record +KEY_PAUSE|Pause +KEY_LIVE|Live +KEY_QUICK_REPLAY|fnKEY_QUICK_REPLAY +KEY_STILL_PICTURE|fnKEY_STILL_PICTURE +KEY_INSTANT_REPLAY|fnKEY_INSTANT_REPLAY +____________________ + +**Picture in Picture** +Key|Description +---|----------- +KEY_PIP_ONOFF|PIPOn/Off +KEY_PIP_SWAP|PIPSwap +KEY_PIP_SIZE|PIPSize +KEY_PIP_CHUP|PIPChannelUp +KEY_PIP_CHDOWN|PIPChannelDown +KEY_AUTO_ARC_PIP_SMALL|PIPSmall +KEY_AUTO_ARC_PIP_WIDE|PIPWide +KEY_AUTO_ARC_PIP_RIGHT_BOTTOM|PIPBottomRight +KEY_AUTO_ARC_PIP_SOURCE_CHANGE|PIPSourceChange +KEY_PIP_SCAN|PIPScan +_______ + +**Modes** +Key|Description +---|----------- +KEY_VCR_MODE|VCRMode +KEY_CATV_MODE|CATVMode +KEY_DSS_MODE|DSSMode +KEY_TV_MODE|TVMode +KEY_DVD_MODE|DVDMode +KEY_STB_MODE|STBMode +KEY_PCMODE|PCMode +____________ + +**Color Keys** +Key|Description +---|----------- +KEY_GREEN|Green +KEY_YELLOW|Yellow +KEY_CYAN|Cyan +KEY_RED|Red +__________ + +**Teletext** +Key|Description +---|----------- +KEY_TTX_MIX|TeletextMix +KEY_TTX_SUBFACE|TeletextSubface +______________ + +**AspectRatio** +Key|Description +---|----------- +KEY_ASPECT|AspectRatio +KEY_PICTURE_SIZE|PictureSize +KEY_4_3|AspectRatio4:3 +KEY_16_9|AspectRatio16:9 +KEY_EXT14|AspectRatio3:4(Alt) +KEY_EXT15|AspectRatio16:9(Alt) +______________ + +**Picture Mode** +Key|Description +---|----------- +KEY_PMODE|PictureMode +KEY_PANORAMA|PictureModePanorama +KEY_DYNAMIC|PictureModeDynamic +KEY_STANDARD|PictureModeStandard +KEY_MOVIE1|PictureModeMovie +KEY_GAME|PictureModeGame +KEY_CUSTOM|PictureModeCustom +KEY_EXT9|PictureModeMovie(Alt) +KEY_EXT10|PictureModeStandard(Alt) +_______ + +**Menus** +Key|Description +---|----------- +KEY_MENU|Menu +KEY_TOPMENU|TopMenu +KEY_TOOLS|Tools +KEY_HOME|Home +KEY_CONTENTS|Contents +KEY_GUIDE|Guide +KEY_DISC_MENU|DiscMenu +KEY_DVR_MENU|DVRMenu +KEY_HELP|Help +_____ + +**OSD** +Key|Description +---|----------- +KEY_INFO|Info +KEY_CAPTION|Caption +KEY_CLOCK_DISPLAY|ClockDisplay +KEY_SETUP_CLOCK_TIMER|SetupClock +KEY_SUB_TITLE|Subtitle +______ + +**Zoom** +Key|Description +---|----------- +KEY_ZOOM_MOVE|ZoomMove +KEY_ZOOM_IN|ZoomIn +KEY_ZOOM_OUT|ZoomOut +KEY_ZOOM1|Zoom1 +KEY_ZOOM2|Zoom2 +____________ + +**Other Keys** +Key|Description +---|----------- +KEY_WHEEL_LEFT|WheelLeft +KEY_WHEEL_RIGHT|WheelRight +KEY_ADDDEL|Add/Del +KEY_PLUS100|Plus100 +KEY_AD|AD +KEY_LINK|Link +KEY_TURBO|Turbo +KEY_CONVERGENCE|Convergence +KEY_DEVICE_CONNECT|DeviceConnect +KEY_11|Key11 +KEY_12|Key12 +KEY_FACTORY|KeyFactory +KEY_3SPEED|Key3SPEED +KEY_RSURF|KeyRSURF +KEY_FF_|FF_ +KEY_REWIND_|REWIND_ +KEY_ANGLE|Angle +KEY_RESERVED1|Reserved1 +KEY_PROGRAM|Program +KEY_BOOKMARK|Bookmark +KEY_PRINT|Print +KEY_CLEAR|Clear +KEY_VCHIP|VChip +KEY_REPEAT|Repeat +KEY_DOOR|Door +KEY_OPEN|Open +KEY_DMA|DMA +KEY_MTS|MTS +KEY_DNIe|DNIe +KEY_SRS|SRS +KEY_CONVERT_AUDIO_MAINSUB|ConvertAudioMain/Sub +KEY_MDC|MDC +KEY_SEFFECT|SoundEffect +KEY_PERPECT_FOCUS|PERPECTFocus +KEY_CALLER_ID|CallerID +KEY_SCALE|Scale +KEY_MAGIC_BRIGHT|MagicBright +KEY_W_LINK|WLink +KEY_DTV_LINK|DTVLink +KEY_APP_LIST|ApplicationList +KEY_BACK_MHP|BackMHP +KEY_ALT_MHP|AlternateMHP +KEY_DNSe|DNSe +KEY_RSS|RSS +KEY_ENTERTAINMENT|Entertainment +KEY_ID_INPUT|IDInput +KEY_ID_SETUP|IDSetup +KEY_ANYVIEW|AnyView +KEY_MS|MS +KEY_MORE| +KEY_MIC| +KEY_NINE_SEPERATE| +KEY_AUTO_FORMAT|AutoFormat +KEY_DNET|DNET +_______________ + +**Auto Arc Keys** +Key|Description +---|----------- +KEY_AUTO_ARC_C_FORCE_AGING| +KEY_AUTO_ARC_CAPTION_ENG| +KEY_AUTO_ARC_USBJACK_INSPECT| +KEY_AUTO_ARC_RESET| +KEY_AUTO_ARC_LNA_ON| +KEY_AUTO_ARC_LNA_OFF| +KEY_AUTO_ARC_ANYNET_MODE_OK| +KEY_AUTO_ARC_ANYNET_AUTO_START| +KEY_AUTO_ARC_CAPTION_ON| +KEY_AUTO_ARC_CAPTION_OFF| +KEY_AUTO_ARC_PIP_DOUBLE| +KEY_AUTO_ARC_PIP_LARGE| +KEY_AUTO_ARC_PIP_LEFT_TOP| +KEY_AUTO_ARC_PIP_RIGHT_TOP| +KEY_AUTO_ARC_PIP_LEFT_BOTTOM| +KEY_AUTO_ARC_PIP_CH_CHANGE| +KEY_AUTO_ARC_AUTOCOLOR_SUCCESS| +KEY_AUTO_ARC_AUTOCOLOR_FAIL| +KEY_AUTO_ARC_JACK_IDENT| +KEY_AUTO_ARC_CAPTION_KOR| +KEY_AUTO_ARC_ANTENNA_AIR| +KEY_AUTO_ARC_ANTENNA_CABLE| +KEY_AUTO_ARC_ANTENNA_SATELLITE| +____________ + +**Panel Keys** +Key|Description +---|----------- +KEY_PANNEL_POWER| +KEY_PANNEL_CHUP| +KEY_PANNEL_VOLUP| +KEY_PANNEL_VOLDOW| +KEY_PANNEL_ENTER| +KEY_PANNEL_MENU| +KEY_PANNEL_SOURCE| +KEY_PANNEL_ENTER| +_______________ + +**Extended Keys** +Key|Description +---|----------- +KEY_EXT1| +KEY_EXT2| +KEY_EXT3| +KEY_EXT4| +KEY_EXT5| +KEY_EXT6| +KEY_EXT7| +KEY_EXT8| +KEY_EXT11| +KEY_EXT12| +KEY_EXT13| +KEY_EXT16| +KEY_EXT17| +KEY_EXT18| +KEY_EXT19| +KEY_EXT20| +KEY_EXT21| +KEY_EXT22| +KEY_EXT23| +KEY_EXT24| +KEY_EXT25| +KEY_EXT26| +KEY_EXT27| +KEY_EXT28| +KEY_EXT29| +KEY_EXT30| +KEY_EXT31| +KEY_EXT32| +KEY_EXT33| +KEY_EXT34| +KEY_EXT35| +KEY_EXT36| +KEY_EXT37| +KEY_EXT38| +KEY_EXT39| +KEY_EXT40| +KEY_EXT41| + +Please note that some codes are different on the 2016+ TVs. For example, `KEY_POWEROFF` is `KEY_POWER` on the newer TVs. + +The code list has been extracted from: https://github.com/kdschlosser/samsungctl and https://github.com/jaruba/ha-samsungtv-tizen/blob/master/Key_codes.md +{% enddetails %} + +**Example to send sequence of commands:** + +```yaml +service: remote.send_command +target: + device_id: 72953f9b4c9863e28ddd52c87dcebe05 +data: + command: + - KEY_MENU + - KEY_RIGHT + - KEY_UP + - KEY_UP + - KEY_ENTER + +``` + ### Known issues and restrictions #### Subnet/VLAN diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 4104459e36e..529300d77c8 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -210,4 +210,3 @@ The following example turns off some entities as soon as a window opens. The sta target: entity_id: scene.before ``` - diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index f09e9e4c897..af4d721bd1f 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -62,6 +62,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T - **temperature**: Temperature in °C, °F or K - **timestamp**: Datetime object or timestamp string (ISO 8601) - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ +- **volatile_organic_compounds_parts**: Ratio of volatile organic compounds in ppm or ppb - **voltage**: Voltage in V, mV - **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF - **volume_storage**: Generic stored volume in L, mL, gal, fl. oz., m³, ft³, or CCF diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown index fb6f75bc0ae..1c68edcf1c2 100644 --- a/source/_integrations/sensor.rest.markdown +++ b/source/_integrations/sensor.rest.markdown @@ -290,22 +290,17 @@ sensor: {% raw %} ```yaml -sensor: - - platform: rest - name: JSON time - json_attributes: - - date - - milliseconds_since_epoch - resource: http://date.jsontest.com/ - value_template: "{{ value_json.time }}" - - platform: template - sensors: - date: - friendly_name: "Date" - value_template: "{{ state_attr('sensor.json_time', 'date') }}" - milliseconds: - friendly_name: "milliseconds" - value_template: "{{ state_attr('sensor.json_time', 'milliseconds_since_epoch') }}" +rest: + - resource: "http://date.jsontest.com/" + sensor: + - name: "Time" + value_template: "{{ value_json.time }}" + + - name: "Date" + value_template: "{{ value_json.date }}" + + - name: "Milliseconds" + value_template: "{{ value_json.milliseconds_since_epoch }}" ``` {% endraw %} @@ -335,40 +330,29 @@ This sample fetches a weather report from [OpenWeatherMap](https://openweatherma {% raw %} ```yaml -sensor: - - platform: rest - name: OWM_report - json_attributes: - - main - - weather - value_template: "{{ value_json['weather'][0]['description'].title() }}" - resource: https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY - - platform: template - sensors: - owm_weather: - value_template: "{{ state_attr('sensor.owm_report', 'weather')[0]['description'].title() }}" - entity_picture_template: "{{ 'https://openweathermap.org/img/w/' + state_attr('sensor.owm_report', 'weather')[0]['icon'].lower() + '.png' }}" - entity_id: sensor.owm_report - owm_temp: - friendly_name: "Outside temp" - value_template: "{{ state_attr('sensor.owm_report', 'main')['temp'] - 273.15 }}" +rest: + - resource: "https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY" + sensor: + - name: "Report" + value_template: "{{ value_json['weather'][0]['description'].title() }}" + picture: "{{ 'https://openweathermap.org/img/w/' + value_json['weather'][0]['icon'].lower() + '.png' }}" + + - name: "Outside temp" + value_template: "{{ value_json['main']['temp'] - 273.15 }}" unit_of_measurement: "°C" - entity_id: sensor.owm_report - owm_pressure: - friendly_name: "Outside pressure" - value_template: "{{ state_attr('sensor.owm_report', 'main')['pressure'] }}" + + - name: "Outside pressure" + value_template: "{{ value_json['main']['pressure'] }}" unit_of_measurement: "hP" - entity_id: sensor.owm_report - owm_humidity: - friendly_name: "Outside humidity" - value_template: "{{ state_attr('sensor.owm_report', 'main')['humidity'] }}" + + - name: "Outside humidity" + value_template: "{{ value_json['main']['humidity'] }}" unit_of_measurement: "%" - entity_id: sensor.owm_report ``` {% endraw %} -This configuration shows how to extract multiple values from a dictionary with `json_attributes` and `template`. This avoids flooding the REST service by only requesting the result once, then creating multiple attributes from that single result using templates. By default, the sensor state would be set to the full JSON — here, that would exceed the 255-character maximum allowed length for the state, so we override that default by using `value_template` to set a static value of `OK`. +This configuration shows how to extract multiple values from a dictionary. This method avoids flooding the REST service because the result is only requested once. From that single request, multiple sensors can be created by using template sensors. {% raw %} @@ -400,73 +384,52 @@ This configuration shows how to extract multiple values from a dictionary with ` {% raw %} ```yaml -sensor: - - platform: rest - name: room_sensors - resource: http:// - json_attributes: - - bedroom1 - - bedroom2 - - bedroom3 - value_template: "OK" - - platform: template - sensors: - bedroom1_temperature: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['temperature'] }}" +rest: + resource: "http://" + sensor: + - name: "Bedroom1 Temperature" + value_template: "{{ value_json['bedroom1']['temperature'] }}" device_class: temperature unit_of_measurement: "°C" - bedroom1_humidity: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['humidity'] }}" + - name: "Bedroom1 Humidity" + value_template: "{{ value_json['bedroom1']['humidity'] }}" device_class: humidity unit_of_measurement: "%" - bedroom1_battery: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['battery'] }}" + - name: "Bedroom1 Battery" + value_template: "{{ value_json['bedroom1']['battery'] }}" device_class: battery unit_of_measurement: "V" - bedroom2_temperature: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom2')['temperature'] }}" + - name: "Bedroom2 Temperature" + value_template: "{{ value_json['bedroom2']['temperature'] }}" device_class: temperature unit_of_measurement: "°C" ``` {% endraw %} -The below example allows shows how to extract multiple values from a dictionary with `json_attributes` and `json_attributes_path` from the XML of a Steamist Steambath Wi-Fi interface and use them to create a switch and multiple sensors without having to poll the endpoint numerous times. - -In the below example `json_attributes_path` is set to `$.response` which is the location of the `usr0`, `pot0`, ... attributes used for `json_attributes`. +The example below shows how to extract multiple values from a dictionary from the XML file of a Steamist Steambath Wi-Fi interface. The values are used to create a switch and multiple sensors without having to poll the endpoint numerous times. {% raw %} ```yaml -sensor: -# Steam Controller - - platform: rest - name: Steam System Data - resource: http://192.168.1.105/status.xml - json_attributes_path: "$.response" +rest: + # Steam Controller + - resource: "http://192.168.1.105/status.xml" scan_interval: 15 - value_template: "OK" - json_attributes: - - "usr0" - - "pot0" - - "temp0" - - "time0" - - platform: template - sensors: - steam_temp: - friendly_name: Steam Temp - value_template: "{{ state_attr('sensor.steam_system_data', 'temp0') | regex_findall_index('([0-9]+)XF') }}" + + sensor: + - name: "Steam Temp" + value_template: "{{ json_value['response']['temp0'] | regex_findall_index('([0-9]+)XF') }}" unit_of_measurement: "°F" + steam_time_remaining: - friendly_name: "Steam Time Remaining" - value_template: "{{ state_attr('sensor.steam_system_data', 'time0') }}" + - name: "Steam Time Remaining" + value_template: "{{ json_value['response']['time0'] }}" unit_of_measurement: "minutes" -switch: - - platform: template - switches: - steam: - value_template: "{{ state_attr('sensor.steam_system_data', 'usr0') | int >= 1 }}" + switch: + - name: "Steam" + value_template: "{{ json_value['response']['usr0'] | int >= 1 }}" turn_on: - service: rest_command.set_steam_led data: @@ -489,7 +452,6 @@ switch: - service: homeassistant.update_entity target: entity_id: sensor.steam_system_data - friendly_name: Steam rest_command: set_steam_led: diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 86690f09c02..f17f659bcb6 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -35,6 +35,7 @@ There is currently support for the following device types within Home Assistant: - **Motion Sensor**: reports on motion detected*. - **Siren**: reports on the siren status*. - **Smoke Detector**: reports on the smoke sensor status*. +- **Smoke+CO Detector**: reports on the smoke and carbon monoxide sensor status*. - **Water Sensor**: reports on water sensor status*. * Sensor status is only available for SimpliSafe V3 systems and is updated once every 30 seconds, so information displayed in Home Assistant may be delayed. diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index 899b32b4d1a..b3375534094 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -8,7 +8,6 @@ ha_config_flow: true ha_domain: slack ha_iot_class: Cloud Push ha_codeowners: - - '@bachya' - '@tkdrob' ha_platforms: - notify diff --git a/source/_integrations/sleepiq.markdown b/source/_integrations/sleepiq.markdown index 655b1de628e..0960d687605 100644 --- a/source/_integrations/sleepiq.markdown +++ b/source/_integrations/sleepiq.markdown @@ -29,7 +29,7 @@ ha_platforms: ha_integration_type: integration --- -The SleepIQ integration lets you integrate your SleepNumber Bed via [SleepIQ by SleepNumber](https://www.sleepnumber.com/sleepiq-sleep-tracker). +The SleepIQ integration lets you integrate your SleepNumber Bed via [SleepIQ by SleepNumber](https://www.sleepnumber.com/pages/sleepiq-sleep-tracker). There is currently support for the following platforms within Home Assistant: diff --git a/source/_integrations/sms.markdown b/source/_integrations/sms.markdown index 7b86e0daf53..918722c2301 100644 --- a/source/_integrations/sms.markdown +++ b/source/_integrations/sms.markdown @@ -122,6 +122,7 @@ Note: E3372h-153 and E3372h-510 need to be unlocked [this guide](http://blog.asi - [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1) (note: Devices with firmware versions 22.XX need to be unlocked using [this guide](https://community.home-assistant.io/t/trouble-setting-up-huawei-e3531s-2-with-sms-notifications-via-gsm-modem-integration/462737/9?u=alexschmitz222)) - [Huawei E3272](https://www.amazon.com/Huawei-E3272s-506-Unlocked-Americas-Europe/dp/B00HBL51OQ) - ZTE K3565-Z +- Lenovo F5521gw (mPCI-E) ### List of modems known to NOT work diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index 5fac754680c..05afca13697 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -4,7 +4,7 @@ description: Instructions on how to integrate Snapcast into Home Assistant. ha_category: - Media Player ha_release: 0.13 -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_domain: snapcast ha_config_flow: true ha_platforms: diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index a5c8ac13267..9238f2b63dc 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -117,7 +117,7 @@ Sonos accepts a variety of `media_content_id` formats in the `media_player.play_ Music services which require an account (e.g., Spotify) must first be configured using the Sonos app. -Playing TTS (text to speech) or audio files as alerts (e.g., a doorbell or alarm) is possible by setting the `announce` argument to `true`. Using `announce` will play the provided media URL as an overlay, gently lowering the current music volume and automatically restoring to the original level when finished. An optional `volume` argument can also be provided in the `extra` dictionary to play the alert at a specific volume level. Note that older Sonos hardware or legacy firmware versions ("S1") may not fully support these features. Additionally, see [Network Requirements](#network-requirements) for use in restricted networking environments. +Playing TTS (text-to-speech) or audio files as alerts (e.g., a doorbell or alarm) is possible by setting the `announce` argument to `true`. Using `announce` will play the provided media URL as an overlay, gently lowering the current music volume and automatically restoring to the original level when finished. An optional `volume` argument can also be provided in the `extra` dictionary to play the alert at a specific volume level. Note that older Sonos hardware or legacy firmware versions ("S1") may not fully support these features. Additionally, see [Network Requirements](#network-requirements) for use in restricted networking environments. An optional `enqueue` argument can be added to the service call. If `true`, the media will be appended to the end of the playback queue. If not provided or `false` then the queue will be replaced. diff --git a/source/_integrations/soundtouch.markdown b/source/_integrations/soundtouch.markdown index 3f9ba086f49..7b60eb7bed9 100644 --- a/source/_integrations/soundtouch.markdown +++ b/source/_integrations/soundtouch.markdown @@ -45,9 +45,9 @@ You can also play HTTP (not HTTPS) URLs: media_content_type: MUSIC ``` -### Text-to-Speech services +### Text-to-speech services -You can use TTS services like [Google Text-to-Speech](/integrations/google_translate) or [Amazon Polly](/integrations/amazon_polly) only if your Home Assistant is configured in HTTP and not HTTPS (current device limitation, a firmware upgrade is planned). +You can use TTS services like [Google text-to-speech](/integrations/google_translate) or [Amazon Polly](/integrations/amazon_polly) only if your Home Assistant is configured in HTTP and not HTTPS (current device limitation, a firmware upgrade is planned). A workaround if you want to publish your Home Assistant installation on Internet in SSL is to configure an HTTPS Web Server as a reverse proxy ([NGINX](/docs/ecosystem/nginx/) for example) and let your Home Assistant configuration in HTTP on your local network. The SoundTouch devices will be available to access the TTS files in HTTP in local and your configuration will be in HTTPS on the Internet. diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index 043d920a58e..4bfa3d3e409 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -8,7 +8,6 @@ ha_release: 0.63 ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - - '@dgomes' - '@gjohansson-ST' - '@dougiteixeira' ha_domain: sql @@ -186,6 +185,31 @@ WHERE ``` Use `state` as column for value. +### State of an entity x time ago + +If you want to extract the state of an entity from a day, hour, or minute ago, the query is: + +```sql +SELECT + states.state +FROM + states + INNER JOIN states_meta ON + states.metadata_id = states_meta.metadata_id +WHERE + states_meta.entity_id = 'sensor.temperature_in' + AND last_updated_ts <= strftime('%s', 'now', '-1 day') +ORDER BY + last_updated_ts DESC +LIMIT + 1; +``` + +Replace `-1 day` with the target offset, for example, `-1 hour`. +Use `state` as column for value. + +Keep in mind that, depending on the update frequency of your sensor and other factors, this may not be a 100% accurate reflection of the actual situation you are measuring. Since your database won’t necessarily have a value saved exactly 24 hours ago, use “>=” or “<=” to get one of the closest values. + ### Database size #### Postgres diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown index 0fb1f959f82..56551de695d 100644 --- a/source/_integrations/stt.markdown +++ b/source/_integrations/stt.markdown @@ -1,21 +1,21 @@ --- -title: Speech-to-Text (STT) -description: Instructions on how to set up Speech-to-Text (STT) with Home Assistant. -ha_release: '0.102' +title: Speech-to-text (STT) +description: Instructions on how to set up speech-to-text (STT) with Home Assistant. +ha_release: "0.102" ha_codeowners: - - '@home-assistant/core' - - '@pvizeli' + - "@home-assistant/core" + - "@pvizeli" ha_domain: stt ha_quality_scale: internal ha_category: [] ha_integration_type: entity --- -A speech to text (STT) entity allows other integrations or applications to stream speech data to the STT API and get text back. +A speech-to-text (STT) entity allows other integrations or applications to stream speech data to the STT API and get text back. -The speech to text entities cannot be implemented manually, but can be provided by integrations. +The speech-to-text entities cannot be implemented manually, but can be provided by integrations. -## The state of a speech to text entity +## The state of a speech-to-text entity -Every speech to text entity keeps track of the timestamp of when the last time -the speech to text entity was used to process speech. +Every speech-to-text entity keeps track of the timestamp of when the last time +the speech-to-text entity was used to process speech. diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 8f6040710f7..a45354cbc1d 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -9,7 +9,6 @@ ha_category: ha_release: 0.93 ha_iot_class: Local Push ha_codeowners: - - '@tomerfi' - '@thecode' ha_domain: switcher_kis ha_platforms: diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 8e090b6b570..8ca2f81407f 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -13,6 +13,7 @@ ha_release: 0.41 ha_iot_class: Cloud Polling ha_codeowners: - '@michaelarnauts' + - '@chiefdragon' ha_domain: tado ha_config_flow: true ha_homekit: true diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown index 7af68b353ec..ddc32795e78 100644 --- a/source/_integrations/telegram_bot.markdown +++ b/source/_integrations/telegram_bot.markdown @@ -31,9 +31,12 @@ Send a notification. | `parse_mode` | yes | Parser for the message text: `markdownv2`, `html` or `markdown`. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | +| `reply_to_message_id` | yes | Mark the message as a reply to a previous message. In `telegram_callback` handling, for example, you can use {% raw %}`{{ trigger.event.data.message.message_id }}`{% endraw %} | ### Service `telegram_bot.send_photo` @@ -52,9 +55,11 @@ Send a photo. | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending photo in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_video` @@ -73,6 +78,8 @@ Send a video. | `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending video in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -93,9 +100,11 @@ Send an animation. | `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending video in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_voice` @@ -113,9 +122,11 @@ Send a voice message. | `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending voice in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_sticker` @@ -133,9 +144,11 @@ Send a sticker. | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending photo in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_document` @@ -154,9 +167,11 @@ Send a document. | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | | `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `timeout` | yes | Timeout for sending document in seconds. Will help with timeout errors (poor internet connection, etc) | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_location` @@ -168,9 +183,11 @@ Send a location. | `longitude` | no | The longitude to send. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed `chat_id`. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | +| `resize_keyboard` | yes | True/false for resizing the keyboard vertically for optimal fit. Defaults to False. | +| `one_time_keyboard` | yes | True/false for hiding the keyboard as soon as it’s been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to False. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | -| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` | +| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: {% raw %}`{{trigger.event.data.message_tag}}`{% endraw %} | ### Service `telegram_bot.send_poll` diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index b1d5b617243..1013684a707 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -35,10 +35,10 @@ scale: type: integer default: 1 name: - description: The name to use when displaying this switch. + description: The name to use when displaying this sensor. required: false type: string - default: myStrom Switch + default: Unnamed Device {% endconfiguration %} Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 9228e8ed5fc..5c929d280ea 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -113,7 +113,7 @@ sensor: type: map keys: state: - description: Defines a template to get the state of the sensor. + description: "Defines a template to get the state of the sensor. If the sensor is numeric, i.e. it has a `state_class` or a `unit_of_measurement`, the state template must render to a number or to `none`. The state template must not render to a string, including `unknown` or `unavailable`. An `availability` template may be defined to suppress rendering of the state template." required: true type: template unit_of_measurement: @@ -460,6 +460,8 @@ template: ### State based sensor changing the unit of measurement of another sensor With a Template Sensor, it's easy to convert given values into others if the unit of measurement doesn't fit your needs. +Because the sensors do math on the source sensor's state and need to render to a numeric value, an availability template is used +to suppress rendering of the state template if the source sensor does not have a valid numeric state. {% raw %} @@ -469,10 +471,12 @@ template: - name: "Transmission Down Speed" unit_of_measurement: "kB/s" state: "{{ states('sensor.transmission_down_speed')|float * 1024 }}" + availability: "{{ is_number(states('sensor.transmission_down_speed')) }}" - name: "Transmission Up Speed" unit_of_measurement: "kB/s" state: "{{ states('sensor.transmission_up_speed')|float * 1024 }}" + availability: "{{ is_number(states('sensor.transmission_up_speed')) }}" ``` {% endraw %} diff --git a/source/_integrations/time.markdown b/source/_integrations/time.markdown new file mode 100644 index 00000000000..0447f3513ba --- /dev/null +++ b/source/_integrations/time.markdown @@ -0,0 +1,31 @@ +--- +title: Time +description: Instructions on how to set up time entities within Home Assistant. +ha_category: + - Time +ha_release: '2022.12' +ha_domain: time +ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' +ha_integration_type: entity +--- + +The Time integration is built for the controlling and monitoring of times on devices. + +Time entities cannot be implemented manually, but can be provided by other integrations. If you are looking for a way to create a similar entity, please take a look at the [Date/Time helper](/integrations/input_datetime). + +## Services + +### time services + +Available services: `time.set_value` + +### Service `time.set_value` + +Set a new value for the time entity. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`'s of times to control. +| `time` | no | New time value to set. diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 0510cc73331..97beeeed51c 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -99,6 +99,15 @@ You can also use `entity_id: all` and all active timers will be started. | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | | `duration` | yes | Duration in seconds or `01:23:45` format until the timer finishes. | +### Service `timer.change` + +Change an active timer. This changes the duration of the timer with the duration given. You can also use `entity_id: all` and all active timers will be changed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | +| `duration` | no | Duration in seconds or `00:00:00` to add or subtract from the running timer. | + ### Service `timer.pause` Pause a running timer. This will retain the remaining duration for later continuation. You can also use `entity_id: all` and all active timers will be paused. diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index 02afe65620a..2c438a3c097 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -93,3 +93,11 @@ The `triggered` state also provides a state attribute called `triggered_source` The integration provides a Binary Sensor for each Total Connect zone. To see faulted zones in Home Assistant, your Total Connect account must have "Sensor Activities" enabled. Your alarm monitoring company may charge an extra fee to enable this. If available, these can be found in the Total Connect 2 web portal at **Notifications** -> **Sensor Activities**. Alternately, they can be found in the Total Connect mobile app at **More** -> **Settings** -> **Notifications** -> **Sensor Activities**. Enable each zone you want to monitor. Unmonitored zones will display as `Closed` in Home Assistant. The Total Connect API has limited zone type information. Home Assistant device class `door` is assigned to Total Connect entry/exit, perimeter, and motion zones; along with most alarm panel buttons. The sensor will appear as `True` if the zone is opened (either fault or triggered in Total Connect) and `False` if closed. Device class `smoke` is assigned to Total Connect smoke detectors and alarm panel buttons set to a "Fire No Verification" response type. The sensor will appear as `True` if smoke is detected or the respective button is pressed. Device class `gas` is assigned to Total Connect carbon monoxide detectors. The sensor will appear as `True` if carbon monoxide is detected. + +### Diagnostic Sensors + +The following diagnostic sensors are available: + +- Low Battery for Zones and Alarm Panels will be `On` if the battery is low. +- Tamper for Zones and Alarm Panels will be `On` if in a tampered state. +- Power for Alarm Panels will be `On` if main power is connected or `Off` if running on the backup battery. diff --git a/source/_integrations/tplink_omada.markdown b/source/_integrations/tplink_omada.markdown index a860c42b595..def34f540a7 100644 --- a/source/_integrations/tplink_omada.markdown +++ b/source/_integrations/tplink_omada.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@MarkGodwin' ha_domain: tplink_omada ha_platforms: + - binary_sensor - switch - update ha_integration_type: hub @@ -54,6 +55,7 @@ Controller versions 5.1.0 and later are supported. ### Internet Gateways - Firmware Update entities. +- WAN/LAN Port connectivity sensor entities. ## Device Trackers diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index 5285769032f..ece4f66635c 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -1,13 +1,13 @@ --- -title: Text-to-Speech (TTS) -description: Instructions on how to set up Text-to-Speech (TTS) with Home Assistant. +title: Text-to-speech (TTS) +description: Instructions on how to set up text-to-speech (TTS) with Home Assistant. ha_category: - Media Source - Text-to-speech ha_release: 0.35 ha_codeowners: - - '@home-assistant/core' - - '@pvizeli' + - "@home-assistant/core" + - "@pvizeli" ha_domain: tts ha_quality_scale: internal ha_platforms: @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: entity --- -Text-to-Speech (TTS) enables Home Assistant to speak to you. +Text-to-speech (TTS) enables Home Assistant to speak to you. ## Services @@ -23,7 +23,7 @@ Text-to-Speech (TTS) enables Home Assistant to speak to you. Modern platforms will create entities under the `tts` domain, where each entity represents one text-to-speech service provider. These entities may be used as targets for the `tts.speak` service. -The `tts.speak` service supports `language` and on some platforms also `options` for settings, e.g., *voice, motion, speed, etc*. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`. +The `tts.speak` service supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`. ```yaml service: tts.speak @@ -35,7 +35,7 @@ data: ### Service say (legacy) -The `say` service supports `language` and on some platforms also `options` for settings, e.g., *voice, motion, speed, etc*. The text that should be spoken is set with `message`. Since release 0.92, service name can be defined in configuration `service_name` option. +The `say` service supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`. Since release 0.92, service name can be defined in configuration `service_name` option. Say to all `media_player` entities: @@ -91,8 +91,8 @@ Returns a URL to the generated TTS file. The `engine_id` or `platform` parameter ```json { - "engine_id": "tts.amazon_polly", - "message": "I am speaking now" + "engine_id": "tts.amazon_polly", + "message": "I am speaking now" } ``` @@ -100,8 +100,8 @@ The return code is 200 if the file is generated. The message body will contain a ```json { - "path": "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3", - "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3" + "path": "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3", + "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3" } ``` @@ -134,8 +134,8 @@ The `tts` service will send an `https://` URL to the media device, which will ch The Google cast devices (Google Home, Chromecast, etc.) present the following problems: -* They [reject self-signed certificates](#self-signed-certificates). +- They [reject self-signed certificates](#self-signed-certificates). -* They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). If you are _not_ using SSL then setting an internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname. +- They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). If you are _not_ using SSL then setting an internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname. -* If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection. +- If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection. diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 1172f01af69..0cb0cca1fe8 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -135,6 +135,8 @@ If no devices show up in Home Assistant: - Incorrect username or password: Enter the correct account and password of the Tuya Smart or Smart Life app in the **Account** and **Password** fields (social login, which the Tuya Smart app allows, may not work, and thus should be avoided for use with the Home Assistant integration). Note that the app account depends on which app (Tuya Smart or Smart Life) you used to link devices on the [Tuya IoT Platform](https://iot.tuya.com/cloud/). - Incorrect country. You must select the region of your account of the Tuya Smart app or Smart Life app. + + - Some users still experience the **Permission denied** error after adding the correct app account credentials in a correctly configured project. A workaround involves adding a custom user under **Cloud** > **Development** > **Users**. "1100: param is empty": description: Empty parameter of username or app. Please fill the parameters refer to the **Configuration** part above. diff --git a/source/_integrations/voice_assistant.markdown b/source/_integrations/voice_assistant.markdown index 3c4e803adcc..9a9b09723c0 100644 --- a/source/_integrations/voice_assistant.markdown +++ b/source/_integrations/voice_assistant.markdown @@ -13,4 +13,4 @@ ha_integration_type: integration ha_quality_scale: internal --- -The Voice Assistant integration contains logic for running *pipelines*, which perform the common steps of a voice assistant like [Assist](/docs/assist/). +The Voice Assistant integration contains logic for running *pipelines*, which perform the common steps of a voice assistant like [Assist](/voice_control/). diff --git a/source/_integrations/voicerss.markdown b/source/_integrations/voicerss.markdown index f247aeab4d5..dbb4b07b045 100644 --- a/source/_integrations/voicerss.markdown +++ b/source/_integrations/voicerss.markdown @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `voicerss` text-to-speech platform uses [VoiceRSS](http://www.voicerss.org/) Text-to-Speech engine to read a text with natural sounding voices. +The `voicerss` text-to-speech platform uses [VoiceRSS](http://www.voicerss.org/) text-to-speech engine to read a text with natural sounding voices. ## Configuration diff --git a/source/_integrations/voip.markdown b/source/_integrations/voip.markdown index 5fed67787f9..240aef15ba0 100644 --- a/source/_integrations/voip.markdown +++ b/source/_integrations/voip.markdown @@ -18,10 +18,12 @@ ha_platforms: ha_config_flow: true --- -The VoIP integration enables users to talk to [Assist](/docs/assist) using an analog phone and a VoIP adapter. Currently, the system works with the [Grandstream HT801](https://amzn.to/40k7mRa). See [the tutorial](/projects/worlds-most-private-voice-assistant) for detailed instructions. +The VoIP integration enables users to talk to [Assist](/voice_control/) using an analog phone and a VoIP adapter. Currently, the system works with the [Grandstream HT801](https://amzn.to/40k7mRa). See [the tutorial](/voice_control/worlds-most-private-voice-assistant) for detailed instructions. As an alternative, the [Grandstream HT802](https://www.amazon.com/Grandstream-GS-HT802-Analog-Telephone-Adapter/dp/B01JH7MYKA/) can be used, which is basically the same as the previously mentioned HT801, but has two phone ports, of which Home Assistant currently support using only one of them. +Also, the Grandstream HT812 has been reported to work. Home Assistant supports using only one of the two phone ports. +

    Connecting a phone to Home Assistant requires an adapter. diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index 226c3f8842d..99f88931caa 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -27,7 +27,7 @@ Notes: ## Manual Polling -Some users want more control over polling intervals. To use more granular polling, you can disable automated polling. Go to {% my integrations title="**Settings** > **Devices & Services**" %}, and on the **Waze Travel Time** integration, select the 3 dots. Then, select **System options** and toggle the button to disable polling. To manually trigger a polling request, call the [`homeassistant.update_entity` service](/integrations/homeassistant/#service-homeassistantupdate_entity) as needed, either manually or via automations. +Some users want more control over polling intervals. To use more granular polling, you can disable automated polling. Go to {% my integrations title="**Settings** > **Devices & Services**" %}, and on the **Waze Travel Time** integration, select the cogwheel. On the integration entry, select the three dots. Then, select **System options** and toggle the button to disable polling. To manually trigger a polling request, call the [`homeassistant.update_entity` service](/integrations/homeassistant/#service-homeassistantupdate_entity) as needed, either manually or via automations. ## Example using dynamic destination diff --git a/source/_integrations/whisper.markdown b/source/_integrations/whisper.markdown new file mode 100644 index 00000000000..7c497e78460 --- /dev/null +++ b/source/_integrations/whisper.markdown @@ -0,0 +1,21 @@ +--- +title: Whisper +description: Connect and control your Whisper devices using the Wyoming Protocol integration +ha_category: + - Voice +ha_domain: whisper +ha_release: '2023.5' +ha_integration_type: virtual +ha_supporting_domain: wyoming +ha_supporting_integration: Wyoming Protocol +ha_codeowners: + - '@balloob' + - '@synesthesiam' +ha_config_flow: true +ha_platforms: + - stt + - tts +ha_iot_class: Local Push +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/wiz.markdown b/source/_integrations/wiz.markdown index fcd79394edb..310903f511e 100644 --- a/source/_integrations/wiz.markdown +++ b/source/_integrations/wiz.markdown @@ -37,7 +37,7 @@ These devices have been sold under at least the following brands: - [Atom Lighting](https://atomlighting.com.au/) - [ATX LED](https://atxledinc.com/) - [Brilliant](https://www.brilliantlightsource.com/) -- [Designers Fountain](https://designersftn.com/default.dmx) +- [Designers Fountain](https://designersfountain.com/) - [Evoluziona](https://tecnolite.mx/) - [Fischer & Honsel](https://fischer-honsel.com/) - [Gauss](https://gauss.ru/smartlight/products/) @@ -47,12 +47,12 @@ These devices have been sold under at least the following brands: - [Lednify](https://lednify.com/) - [Leyton](https://www.leyton-lighting.co.uk/) - [Liteline](https://www.liteline.com/page/oncloud) -- [Lutec](https://www.lutec.com/highlight/wiz) +- [Lutec](https://www.lutec.com/segments/connected) - [Philips Smart LED lights with WiZ Connected](https://www.usa.lighting.philips.com/consumer/smart-wifi-led) - [Spex](https://spexlighting.com/pages/smart-lights) - [SLV](https://www.slv.com/) - [Trenz](https://trenzlighting.com/pages/smart-lights) -- [Trio](https://wiz.trio-lighting.com/en/) +- [Trio](https://wiz.trio-lighting.com/) - [Wofi](https://wofi-wiz.com/) The integration can report the state of occupancy sensors that have been linked to a device. @@ -61,8 +61,8 @@ The integration can report the state of occupancy sensors that have been linked ## Connect WiZ devices to your network -To connect a WiZ device to your Wi-Fi network, please follow the instructions in the [WiZ app](https://www.wizconnected.com/en/consumer/app/) (available for iOS and Android). -If you have further questions, please have a look at the [WiZ Support Page](https://www.wizconnected.com/en/consumer/support/). +To connect a WiZ device to your Wi-Fi network, please follow the instructions in the [WiZ app](https://www.wizconnected.com/en-us/explore-wiz/app) (available for iOS and Android). +If you have further questions, please have a look at the [WiZ Support Page](https://www.wizconnected.com/en-us/support/faq). ### Enable local connectivity diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index db41fed3a51..f84f5351c91 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -47,6 +47,8 @@ Add holidays will only take dates formatted with `YYYY-MM-DD`. Remove holidays will take dates formatted with `YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`. +The offset can be used to see if future days are workdays. For example, put `1` to see if tomorrow is a workday. + ## Automation example Example usage for automation: diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 6ea6b53f066..5edb8a8adc9 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -16,7 +16,7 @@ ha_platforms: ha_config_flow: true --- -The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/docs/assist) to use a variety of local [speech-to-text](/integrations/stt/) and [text-to-speech](/integrations/tts/) systems, such as: +The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/) and [text-to-speech](/integrations/tts/) systems, such as: * Whisper {% my supervisor_addon badge addon="core_whisper" %} * Piper {% my supervisor_addon badge addon="core_piper" %} diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 2f3a4b48422..69b4071e394 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -219,12 +219,12 @@ Supported devices: | Air Purifier 2S | zhimi.airpurifier.mc1 | | | Air Purifier Super | zhimi.airpurifier.sa1 | | | Air Purifier Super 2 | zhimi.airpurifier.sa2 | | -| Air Purifier 3 (2019) | zhimi.airpurifier.ma4 | | +| Air Purifier 3 (2019) | zhimi.airpurifier.ma4 | AC-M6-SC | | Air Purifier 3H (2019) | zhimi.airpurifier.mb3 | | | Air Purifier 3C | zhimi.airpurifier.mb4 | | | Air Purifier ZA1 | zhimi.airpurifier.za1 | | -| Air Purifier 4 | zhimi.airp.mb5 | | -| Air Purifier 4 PRO | zhimi.airp.vb4 | | +| Air Purifier 4 | zhimi.airp.mb5 | AC-M16-SC | +| Air Purifier 4 PRO | zhimi.airp.vb4 | AC-M15-SC | | Air Fresh A1 | dmaker.airfresh.a1 | MJXFJ-150-A1 | | Air Fresh VA2 | zhimi.airfresh.va2 | | | Air Fresh VA4 | zhimi.airfresh.va4 | | diff --git a/source/_integrations/yale_home.markdown b/source/_integrations/yale_home.markdown new file mode 100644 index 00000000000..71a1b5ab8ce --- /dev/null +++ b/source/_integrations/yale_home.markdown @@ -0,0 +1,30 @@ +--- +title: Yale Home +description: Connect and control your Yale Home devices using the August integration +ha_category: + - Binary Sensor + - Button + - Camera + - Doorbell + - Lock + - Sensor +ha_release: 0.64 +ha_domain: yale_home +ha_integration_type: virtual +ha_supporting_domain: august +ha_supporting_integration: August +ha_codeowners: + - '@bdraco' +ha_config_flow: true +ha_platforms: + - binary_sensor + - button + - camera + - diagnostics + - lock + - sensor +ha_iot_class: Cloud Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/yalexs_ble.markdown b/source/_integrations/yalexs_ble.markdown index 8533280f507..76363ad7e38 100644 --- a/source/_integrations/yalexs_ble.markdown +++ b/source/_integrations/yalexs_ble.markdown @@ -50,26 +50,35 @@ These devices do not send updates, but can be locked and unlocked. - MD-04I (Yale Conexis L1, Yale Conexis L2) - YRCB-490 (Yale Smart Cabinet Lock) +## Troubleshooting + +Lock operation requires setting up an encrypted connection highly sensitive to latency. It is recommended to use a [High-Performance Bluetooth adapter](/integrations/bluetooth/#known-working-high-performance-adapters) or [ESPHome Bluetooth proxy](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) for stable operation. + ## Push updates Some locks only send push updates when they have an active HomeKit pairing. If your lock is not sending push updates, ensure it's paired with a HomeKit using an iOS device or the HomeKit controller integration. The lock cannot be paired via HomeKit Controller and the Yale Access Bluetooth integration on the same Home Assistant instance as they will both try to access the lock simultaneously and fail. One easy way to fix this is to create a new/second home in the Apple Home app and add the lock to that new home. Push updates should occur as intended after the lock is added. -Alternatively, call the `homeassistant.update_entity` service to force the integration to update the lock state. +Alternatively, call the `homeassistant.update_entity` service to force the integration to update the lock state, or enable the always connected option. + +{% include integrations/option_flow.md %} + +If the lock does not support push updates via advertisements or you want lock operation to be more responsive, you can enable always connected mode. Always connected will cause the lock to stay connected to Home Assistant via Bluetooth, which will use more battery. + +If the lock does not support push updates via advertisements or you want lock operation to be more responsive, you can enable always connected mode. Always connected will cause the lock to stay connected to Home Assistant via Bluetooth, which will use more battery. ## Door Sensors The lock must be calibrated in the Yale Access App for the door sensors to function correctly. If the door sensor has an unknown state or is not updating, try recalibrating the lock in the app. - ## Obtaining the offline key The offline key and slot number are required to operate the lock. These credentials can be found in multiple places depending on the lock brand and model. -### Yale Access or August Cloud +### Yale Access, Yale Home, or August Cloud -The [August](/integrations/august) integration can automatically provision the offline key if the configured account has the key loaded. You may need to create or use a non-primary existing account with owner-level access to the lock, as not all accounts will have the key loaded. +The [August](/integrations/august) integration can automatically provision the offline key if the configured account has the key loaded. You may need to create or use a non-primary existing account with owner-level access to the lock, as not all accounts will have the key loaded. If the lock was not discovered by Home Assistant when the cloud integration was loaded, reload the cloud integration once the lock has been discovered. If the offline key can automatically be provisioned, you will not be asked to enter it and the integration should be automatically added, configured and running. diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index ef5c542ace0..b175ea27823 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -34,7 +34,7 @@ The Yamaha MusicCast integration implements the grouping services. There are som ## Play Media functionality -The MusicCast integration supports the Home Assistant media browser for all streaming services, your device supports. For services such as Deezer, you have to log in using the official MusicCast app. In addition, local HTTP URLs can be played back using this service. This includes the Home Assistant text to speech services. +The MusicCast integration supports the Home Assistant media browser for all streaming services, your device supports. For services such as Deezer, you have to log in using the official MusicCast app. In addition, local HTTP URLs can be played back using this service. This includes the Home Assistant text-to-speech services. It is also possible to recall NetUSB presets using the play media service. To do so "presets:" has to be used as `media_content_id` in the service call. diff --git a/source/_integrations/yandextts.markdown b/source/_integrations/yandextts.markdown index 60d474cda56..43f8c75ff6d 100644 --- a/source/_integrations/yandextts.markdown +++ b/source/_integrations/yandextts.markdown @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `yandextts` text-to-speech platform uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) Text-to-Speech engine to read a text with natural sounding voices. +The `yandextts` text-to-speech platform uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) text-to-speech engine to read a text with natural sounding voices.

    This integration is working only with old API keys. For the new API keys, this integration cannot be used. diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown index 754a86a1445..f1a674cde01 100644 --- a/source/_integrations/yolink.markdown +++ b/source/_integrations/yolink.markdown @@ -56,3 +56,4 @@ The integration is tested and verified for the following devices from YoLink: * YS5707 (Dimmer) * YS6801/2 (MultiOutlet) * YS3604 (FlexFob) +* YS7106 (PowerFailureAlar) diff --git a/source/_integrations/youtube.markdown b/source/_integrations/youtube.markdown new file mode 100644 index 00000000000..779b8f77c42 --- /dev/null +++ b/source/_integrations/youtube.markdown @@ -0,0 +1,68 @@ +--- +title: YouTube +description: Instructions on how to integrate YouTube within Home Assistant. +ha_category: + - Sensor +ha_release: '2023.6' +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@joostlek' +ha_domain: youtube +ha_platforms: + - sensor +ha_integration_type: service +--- + +The YouTube integration allows you to connect YouTube channels to Home Assistant. + +## Prerequisites + +You need to configure developer credentials to allow Home Assistant to access your Google Account. +These credentials are the same as the ones for [Nest](/integrations/nest), [Google Mail](/integrations/google_mail) and [Google Sheets](/integrations/google_sheets). +These are not the same as the one for [Google Calendar](/integrations/google). +If you have already set up the correct credentials, you can do step 1 and then skip to step 13 on the below instructions. + +{% details "Generate Client ID and Client Secret" %} + +This section explains how to generate a Client ID and Client Secret on +[Google Developers Console](https://console.cloud.google.com/apis/library/youtube.googleapis.com). + +1. First, go to the Google Developers Console to enable the [YouTube Data API v3](https://console.cloud.google.com/apis/library/youtube.googleapis.com?project=home-assistant-17698) +2. The wizard will ask you to choose a project to manage your application. Select a project and select **Continue**. +3. Verify that your YouTube Data API v3 was enabled and select **Go to credentials**. +4. Navigate to **APIs & Services** (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials) +5. Click on the field on the left of the screen, **OAuth Consent Screen**. +6. Select **External** and **Create**. +7. Set the **App Name** (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*. +8. You then need to select a **Support email**. To do this, from the dropdown menu, select your email address. +9. You finally need to complete the section: **Developer contact information**. To do this, enter your email address (the same as above is fine). +10. Scroll to the bottom and select **Save and Continue**. You don't have to fill out anything else, or it may enable additional review. +11. You will then be automatically taken to the **Scopes** page. You do not need to add any scopes here, so select **Save and Continue** to move to the **Optional info** page. You do not need to add anything to the **Optional info** page, so select **Save and Continue**, which will take you to the **Summary** page. Select **Back to Dashboard**. +12. Select **OAuth consent screen** again and set *Publish Status* to **Production**. Otherwise your credentials will expire every 7 days. +13. Make sure **Publishing status** is set to production. +14. Select **Credentials** in the menu on the left-hand side of the screen, then select **Create credentials** (at the top of the screen), then select **OAuth client ID**. +15. Set the Application type to **Web application** and give this credential set a name (like "Home Assistant Credentials"). +16. Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**. This is not a placeholder and is the URI that must be used. +17. You will then be presented with a pop-up saying **OAuth client created** showing **Your Client ID** and **Your Client Secret**. Make a note of these (for example, copy and paste them into a text editor), as you will need them shortly. Once you have noted these strings, select **OK**. If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**. To view both the **Client ID** and **Client secret**, select the pencil icon. This will take you to the settings page for these credentials, and the information will be on the right-hand side of the page. +18. Double-check that the **YouTube Data API v3** has been automatically enabled. To do this, select **Library** from the menu, then search for **YouTube Data API v3**. If it is enabled, you will see **API Enabled** with a green tick next to it. If it is not enabled, then enable it. + +{% enddetails %} + +{% include integrations/config_flow.md %} + +The integration setup will next give you instructions to enter the [Application Credentials](/integrations/application_credentials/) (OAuth Client ID and Client Secret) and authorize Home Assistant to connect to YouTube. + +{% details "OAuth and Device Authorization steps" %} + +1. Continue through the steps of selecting the account you want to authorize. + +2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed. + +3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Select **Continue**. + +4. The page will now display **Link account to Home Assistant?**, note **Your instance URL**. If this is not correct, refer to [My Home Assistant](/integrations/my). If everything looks good, select **Link Account**. + +5. You may close the window, and return back to Home Assistant where you should see a **Success!** message from Home Assistant. + +{% enddetails %} diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 241b8495495..fd002a20bc1 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -272,6 +272,8 @@ Note: `cluster_id: 25` may also be `cluster_id: 0x0019`. The two are synonymous. ### Defining Zigbee channel to use +Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*". These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment. + ZHA prefers to use Zigbee channel 15 by default. You can change this using YAML configuration, but this only works if there's no existing network. To change the channel for an existing network, radio has to be factory reset and a new network to be formed. This requires re-pairing of all the devices. @@ -283,13 +285,13 @@ zha: channels: [15, 20, 25] # Channel mask ``` -This is a good reference for channel selection for [Zigbee and WiFi coexistance](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence). +Note! The best practice is to not change the Zigbee channel from the ZHA default. Also, the related troubleshooting segments mentioned in the tip above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel). -The Zigbee specification standards divide the 2.4Ghz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels, it will usually depend on the hardware and firmware age as well as devices power ratings. +MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistance](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence). -The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices that are limited to only being compatible with the ZLL (Zigbee Light Link) channels as well as lessen the chance of Wi-Fi networks interfering too much with the Zigbee network. Note that especially using Zigbee channels 11, 24, 25, or 26 on your Zigbee Coordinator could mean it will probably not be accessible to older devices as those Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. +The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings. -Regardless, note that the best practice recommendation is, however, not to change the Zigbee channel from default as not all Zigbee devices support all channels. If you have issues with overlapping frequencies, then it will generally be a better idea to just change Wi-Fi channels on your Wi-Fi Router or all your Wi-Fi Access Points instead. +The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels. Some devices, for example, are limited to only being compatible with ZLL (Zigbee Light Link) channels. It is therefore especially not recommended to use Zigbee channels 11, 24, 25, or 26 on your Zigbee coordinator. These Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. If using those channels, your coordinator may not be usable with older Zigbee devices. ### Modifying the device type @@ -380,27 +382,37 @@ This service disables a lock code on a Zigbee lock. ## Adding devices -To add a new device: +Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*" for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment. -1. Go to the **Integrations** panel, find the **Zigbee Home Automation** integration that was added by the configuration steps above, and select **Configure**. -1. Click on the plus button at the bottom right corner to start a scan for new devices. -1. Reset your Zigbee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). It might take a few seconds for the devices to appear. You can click on **Show logs** for more verbose output. +**To add a new Zigbee device:** + +1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. +1. On the **Zigbee Home Automation** integration select the cogwheel, the select **Configure**. +1. To start a scan for new devices, on the bottom right corner of the screen, select **Add device**. +1. Reset your Zigbee devices to factory default settings according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times; switches usually have a reset button/pin). It might take a few seconds for the devices to appear. You can click on **Show logs** for more verbose output. 1. Once the device is found, it will appear on that page and will be automatically added to your devices. You can optionally change its name and add it to an area (you can change this later). You can search again to add another device, or you can go back to the list of added devices. -### Using router devices +### Using router devices to add more devices -You use routers to increase the number of Zigbee devices that can be used in a network. The total number of Zigbee devices that you have on a Zigbee network depends on a few things, but you should know that Zigbee coordinator hardware and firmware only plays a larger role in Zigbee networks with a lot of devices. More important is how many directly connected devices ("direct children") versus how many routers are connected to your Zigbee coordinator. Zigpy library which ZHA uses has an upper limit. This is 32 direct children, but if your Zigbee coordinator hardware is powerful enough then you can still have hundreds of Zigbee devices connected through routers. +Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender"). -Even the least powerful Zigbee coordinator hardware supported by Zigpy is CC2530/2531 and its default firmware, only supports 20 devices connected directly to the coordinator. However, by having routers in your Zigbee network, the mesh network size can be extended. You can assume that most, if not all mains/AC-powered devices, e.g., wall-plugs and always powered-on lightbulbs in your Zigbee network can serve as a router. You can even use CC2530/CC2531 with router firmware, as additional routers (which in their turn have a limit of 21 devices). +Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available. -An example using the default CC2531 coordinator firmware + two CC2531 routers; Your device limit will be: +All Zigbee coordinator firmware will only allow you to directly connect a certain amount of devices. That limit is set for two reasons; firstly, to not overload the Zigbee coordinator, and secondly, to encourage your Zigbee network to quickly begin to utilize a "[mesh networking](https://en.wikipedia.org/wiki/Mesh_networking)" topology instead of only a "[star network](https://en.wikipedia.org/wiki/Star_network)" topology. -- Coordinator: 15 devices - 2 routers = 13 -- Router one: + 21 devices -- Router two: + 21 devices -- Total device limit = **55 devices** +The total number of Zigbee devices that you can have on a Zigbee network depends on a few things. The Zigbee coordinator hardware and its firmware only play a larger role in Zigbee networks with a lot of devices. More important is the number of directly connected devices ("direct children") versus the number of routers that are connected to your Zigbee coordinator. The Zigpy library, which the ZHA integration depends on, has an upper limit that is 32 direct children, but you can still have hundreds of Zigbee devices in total connected indirectly through routes via Zigbee router devices. -### Binding and unbinding +In this theoretical example, a CC2652-based Zigbee coordinator has three CC2530 Zigbee router devices for a total limit of 77 devices: + +- Coordinator: 32 Zigbee End devices - 3 routers = 29 +- Router one: + 16 devices +- Router two: + 16 devices +- Router three: + 16 devices +- Total device limit = **77 devices** + +In practice, you will likely need to add a lot more Zigbee router devices than in this example in order to extend the coverage of the network to reach that many devices. + +## Binding and unbinding ZHA support for binding and unbinding. Binding is an action in Zigbee which defines relations between two Zigbee devices, specific endpoints, and cluster id. It provides a mechanism for attaching an endpoint on one Zigbee node to one or more endpoints on another Zigbee node or Zigbee group (a group of Zigbee devices). @@ -435,15 +447,34 @@ ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart ### Knowing which devices are supported -There is no official compatibility list of supported devices for the simple reason that practically all devices Zigbee Home Automation that are fully compliant with the standards and specifications as set by the [Zigbee Alliance](https://zigbeealliance.org) should technically be compatible with this ZHA integration. The fact remains, however, that some hardware manufacturers do not always fully comply with each set specification, which can cause a few devices to only partially work or not work at all with ZHA, but developers can create workarounds for such issues via a solution for 'ZHA exception and deviation handling' that this implementation features. See that section for more information. +Home Assistant's ZHA integration supports all standard Zigbee device types. It should be compatible with most Zigbee devices as long as they fully conform to the official ZCL (Zigbee Cluster Library) specifications defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/). There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA integration. -Tip to new users is that, while there is no official list of supported devices, some ZHA users take comfort that blakadder maintains an unofficial Zigbee Device Compatibility Repository which anyone can submit compatibility reports to, it can be found at [zigbee.blakadder.com](https://zigbee.blakadder.com) and currently contains independent compatibility lists and device pairing tips for several home automation gateway/bridge/hub software, including but not limited to open source Zigbee implementations such as; ZHA, Tasmota, Zigbee2MQTT, and ZiGate. +Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the integration. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on _How to add support for new and unsupported devices_. -### ZHA exception and deviation handling +For clarification, normally only devices that do not fully conform to CSA's ZCL specifications that will not present all standard attributes as entities for configuration in the ZHA integration. Zigbee devices that only use the standard clusters and attributes that are Zigbee specifications set by the Connectivity Standards Alliance should not need custom device handlers. -Home Assistant's ZHA integration already supports most standard device types out-of-the-box as long as they follow the official Zigbee specifications, but for devices that manufacturers have not properly not fully Zigbee compatible, the ZHA integration has implemented a library called "[ZHA Device Handlers (also known as "zha-quirk")](https://github.com/zigpy/zha-device-handlers)" that handle and resolve compliance issues via custom conversion/translation of Zigbee parameters (clusters and attributes) for specific devices which do not conform with the Zigbee standards. +Before continuing with this section: If a device does not join/pair at all, read the troubleshooting sections about how to avoid pairing/connection difficulties, interference avoidance, and network range/coverage optimization. -The few devices that will, for example, not join/pair properly or, while joined/paired, do not present all attributes in the ZHA integration likely deviate from the Zigbee specifications set by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/). These devices may therefore require the creation of a bug report by a device owner, supplying debug logs. The device owner may need to actively assist in troubleshooting by providing the information developers need to create custom ZHA Device Handlers. +Tip to new Zigbee users: Checkout [blakadder's unofficial Zigbee Device Compatibility Repository](https://zigbee.blakadder.com). Anyone can help maintain the site by submitting device compatibility information to it. The repository contains independent community member's reports or device-specific pairing tips for several home automation gateway/bridge/hub software, including open-source Zigbee implementations, such as ZHA, Zigbee2MQTT, and Tasmota (Zigbee2Tasmota). + +#### How to add support for new and unsupported devices + +If your Zigbee device pairs/joins successfully with the ZHA integration but does not show all of the expected entities: +1. Try to re-pair/re-join the device several times. +2. Checkout the troubleshooting section. +3. Still not working? You may need a custom device handler. This handler will have exception handling code to work around device-specific issues. + +For devices that do not follow the standard defined in the CSA's ZCL (Zigbee Cluster Library), the ZHA integration relies on a project called "[ZHA Device Handlers (also known as "zha-quirk")](https://github.com/zigpy/zha-device-handlers)". It contains device-specific Python scripts called "quirks". These scripts can resolve compliance and interoperability issues by implementing on-the-fly conversion of custom Zigbee configurations or by implementing manufacturer-specific features for specific devices. + +People familiar with other Zigbee gateway solutions for home automation may know similar concepts of using custom Zigbee device handlers/converters for non-standard devices. For example, [Zigbee2MQTT (and IoBroker) uses zigbee-herdsman converters](https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html) and [SmartThings Classics (Legacy) platform has Hub Connected Device Handlers](https://developer.smartthings.com/docs/devices/hub-connected/legacy). + +If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues): +1. Sign in to GitHub. +2. Select **New issue** and follow the instructions. + * New device support requests require the device signature + diagnostic information. + * You may also need to actively help in further testing or provide additional information to the volunteering developers. + +Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA. ### Best practices to avoid pairing/connection difficulties @@ -518,8 +549,8 @@ When reporting issues, please provide the following information in addition to i 1. Debug logs for the issue, see [debug logging](#debug-logging) 2. Model of Zigbee radio being used -3. If issue is related to a specific Zigbee device, provide both "Zigbee Device Signature" and "Diagnostics" information. - * Both the "Zigbee Device Signature" and "Diagnostics" information can be found by clicking **Settings** -> **Devices & Services** -> **Zigbee Home Automation** (click **Configure**) -> **Devices** (pick your device) -> Click "**Zigbee Device Signature**" and "**Download Diagnostics**" respectively. +3. If the issue is related to a specific Zigbee device, provide both the **Zigbee Device Signature** and the **Diagnostics** information. + * Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & Services**" %}. On the **Zigbee Home Automation** integration, select the cogwheel. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively. ### Debug logging diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index f6d76728d99..d2321a86d30 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -42,6 +42,7 @@ ha_platforms: - update ha_integration_type: hub ha_zeroconf: true +ha_quality_scale: platinum --- The Z-Wave integration allows you to control a Z-Wave network via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver. @@ -73,12 +74,11 @@ Use this My button: {% my config_flow_start badge domain="zwave_js" %}, or follow these steps: * Browse to your Home Assistant instance. -* In the sidebar click on _**{% my config icon %}**_. -* From the configuration menu select: _**{% my integrations %}**_. -* In the bottom right, click on the - _**{% my config_flow_start icon domain="zwave_js" %}**_ button. -* From the list, search and select _**"Z-Wave"**_. -* Follow the instructions on screen to complete the set up. +* Go to **{% my integrations title="Settings > Devices & Services" %}**. +* In the bottom right, select the + **{% my config_flow_start icon domain="zwave_js" %}** button. +* From the list, select **Z-Wave**. +* Follow the instructions on screen to complete the setup. {% enddetails %} @@ -99,10 +99,10 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta ### Adding a new device to the Z-Wave network 1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. In the Z-Wave integration, select **Configure**. +1. In the Z-Wave integration, select the cogwheel, then select **Configure**. 1. Select **Add device**. * The Z-Wave controller is now in inclusion mode. -1. If your device supports SmartStart, select **Scan QR code** and scan the QR code on your device. +1. If your device supports SmartStart (700 series controller), select **Scan QR code** and scan the QR code on your device. 1. If your device does not support SmartStart, set the device in inclusion mode. Refer to the device manual to see how this is done. * If your device is included using S2 security, you may be prompted to enter a PIN number provided with your device. Often, this PIN is provided with the documentation _and_ is also printed on the device itself. For more information on secure inclusion, refer to [this section](/integrations/zwave_js/#should-i-use-secure-inclusion). 1. The UI should confirm that the device was added. After a short while (seconds to minutes), the entities should also be created. @@ -118,7 +118,7 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta ### Removing a device from the Z-Wave network 1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. In the Z-Wave integration, select **Configure**. +1. In the Z-Wave integration, select the cogwheel, then select **Configure**. 1. Select **Remove device**, then **Start exclusion**. * The Z-Wave controller is now in exclusion mode. 1. Put the device you want to remove in exclusion mode. Refer to its manual how this is done. @@ -132,6 +132,7 @@ The Z-Wave integration provides several special entities, some of which are avai 1. **Node status** sensor: This sensor shows the node status for a given Z-Wave device. The sensor is disabled by default. The available node statuses are explained in the [Z-Wave JS documentation](https://zwave-js.github.io/node-zwave-js/#/api/node?id=status). They can be used in state change automations. For example to ping a device when it is dead, or refresh values when it wakes up. 2. **Ping** button: This button can be pressed to ping a device. It is an alternative to the `zwave_js.ping` service. +3. **Controller/node statistics** sensors: Z-Wave JS collects statistics about communications between [nodes](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot) and the [controller](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot). The statistics can be used to troubleshoot RF issues in your environment. These statistics are available in the network configuration and device info panels. But they are also available as sensors which are disabled by default. ### Conditional entities @@ -825,9 +826,9 @@ After ensuring you are using an extension cable, perform a network heal. The combination of these two steps corrects a large number of reported difficulties. -#### I have an Aeotec Gen5 controller, and it isn't detected on my Raspberry Pi 4? +#### I have an Aeotec Gen5 controller, and it isn't detected on my Raspberry Pi 4? -The first-generation Gen5 controller has a known bug when plugged into a Pi 4 and possibly other systems. Aeotec released the Gen5+ stick to correct this bug. Gen5 users can plug their sticks into a USB 2.0 hub in order to overcome the issue. +The first-generation Gen5 controller has a known bug when plugged into a Pi 4 and possibly other systems. Aeotec released the Gen5+ stick to correct this bug. Gen5 users can plug their sticks into a USB 2.0 hub in order to overcome the issue. #### I do not see any entities created for my device in Home Assistant @@ -857,21 +858,24 @@ If the interview is complete, then the device does not yet have a device file fo #### How do I get a dump of the current network state? -When trying to determine why something isn't working as you expect, or when reporting an issue with the integration, it is helpful to know what Z-Wave JS sees as the current state of your Z-Wave network. To get a dump of your current network state, follow the menu: +When trying to determine why something isn't working as you expect, or when reporting an issue with the integration, it is helpful to know what Z-Wave JS sees as the current state of your Z-Wave network. To get a dump of your current network state, follow these steps: -{% my integrations title="**Settings** -> **Devices & Services**" %} -> **Z-Wave** -> **...** -> **Download diagnostics** +1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. +1. On the **Z-Wave** integration, select the cogwheel, then select the three dots. +1. From he dropdown menu, select **Download diagnostics**. ### Interference issues -Many users have reported issues with interference when the USB stick was directly connected to the machine (proximity). If you are having issues try to use a short USB 2.0 A male to female extension cord. +Many users have reported issues with interference when the USB stick was directly connected to the machine (proximity). If you are having issues, try to use a short USB 2.0 A (male to female) extension cord. #### How to access the Z-Wave logs -Z-Wave JS writes details to its logs. To access these logs go to the following. +Z-Wave JS writes details to its logs. To access these logs, follow these steps: - **Settings** -> **Devices & Services** -> **Integrations(tab)** -> **Z-Wave (CONFIGURE)** -> **Logs(tab)** - -You need to keep this browser tab open for logging to be active. +1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. +1. On the **Z-Wave** integration, select the cogwheel, then select **Configure**. +1. Open the **Logs** tab. +1. Make sure to keep this browser tab open. Otherwise the logging is not active. ## Z-Wave terminology diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 0953c14e315..fb3d74c5845 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -15,7 +15,7 @@ og_image: /images/blog/2016-12-0.35/social.png This will be the last release of 2016 as our developers are taking a well deserved break. We will be back in 2017! -## Text to Speech +## Text-to-speech With the addition of a [text-to-speech][tts] component by [@pvizeli] we have been able to bring Home Assistant to a whole new level. The text-to-speech component will take in any text and will play it on a media player that supports to play media. We have tested this on Sonos, Chromecast, and Google Home. [https://www.youtube.com/watch?v=Ke0QuoJ4tRM](https://www.youtube.com/watch?v=Ke0QuoJ4tRM) @@ -72,7 +72,7 @@ http: ``` - Fix exit hanging on OS X with async logging ([@balloob]) - - Fix Text to speech clearing cache ([@pvizeli]) + - Fix text-to-speech clearing cache ([@pvizeli]) - Allow setting a base API url in HTTP component ([@balloob]) - Fix occasional errors in automation ([@pvizeli]) diff --git a/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown b/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown index 2472f0ebd13..ce92aa79fff 100644 --- a/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown +++ b/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown @@ -76,7 +76,7 @@ We have a lot of ideas! We are not going to make any promises but here are some - Google Home / Google Assistant Smart Home skill - Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant. - Encrypted backups of your Hass.io data -- Text to speech powered by AWS Polly +- Text-to-speech powered by AWS Polly - Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud. - IFTTT integration - Alexa shopping list integration diff --git a/source/_posts/2020-11-06-android-300-release.markdown b/source/_posts/2020-11-06-android-300-release.markdown index a20b3cf3387..009eba74352 100644 --- a/source/_posts/2020-11-06-android-300-release.markdown +++ b/source/_posts/2020-11-06-android-300-release.markdown @@ -90,7 +90,7 @@ There have been several improvements to notifications as well. - An event gets sent upon a notification being [cleared](https://companion.home-assistant.io/docs/notifications/notification-cleared) along with all notification data. - Notifications can make use of the alarm stream to bypass a device's ringer mode setting. This can be useful if there is an important event such as an alarm being triggered. Make sure to check the updated Android examples on the [companion site](https://companion.home-assistant.io/docs/notifications/critical-notifications). -- [Text To Speech notifications](https://companion.home-assistant.io/docs/notifications/notifications-basic#text-to-speech-notifications), with the ability to use the alarm stream if desired. By default it will use the device's music stream. There is also an additional option to temporarily change the volume level to the maximum level while speaking, the level would then restored to what it was previously. +- [Text-to-speech notifications](https://companion.home-assistant.io/docs/notifications/notifications-basic#text-to-speech-notifications), with the ability to use the alarm stream if desired. By default it will use the device's music stream. There is also an additional option to temporarily change the volume level to the maximum level while speaking, the level would then restored to what it was previously. - New device [commands](https://companion.home-assistant.io/docs/notifications/notification-commands) to control your phone: broadcasting an intent to another app, controlling Do Not Disturb and ringer mode. - Opening another app with an [actionable notification](https://companion.home-assistant.io/docs/notifications/actionable-notifications#building-automations-for-notification-actions), make sure to follow the Android examples. diff --git a/source/_posts/2020-12-13-release-202012.markdown b/source/_posts/2020-12-13-release-202012.markdown index 51bf78761da..3b90e473eb0 100644 --- a/source/_posts/2020-12-13-release-202012.markdown +++ b/source/_posts/2020-12-13-release-202012.markdown @@ -125,7 +125,7 @@ inspiring others. ## New neural voices for Nabu Casa Cloud TTS If you have a [Nabu Casa Home Assistant Cloud][cloud] subscription, this release -brings in some really nice goodness for you. The Text-to-Speech service offered +brings in some really nice goodness for you. The text-to-speech service offered by Nabu Casa has been extended and now supports a lot of new voices in many different languages. diff --git a/source/_posts/2021-02-03-release-20212.markdown b/source/_posts/2021-02-03-release-20212.markdown index e8c45c7b81d..744cad17bec 100644 --- a/source/_posts/2021-02-03-release-20212.markdown +++ b/source/_posts/2021-02-03-release-20212.markdown @@ -256,13 +256,13 @@ Screenshot of the text selectors. Screenshot of the object selector, giving a YAML input field.

    -## Cloud Text to Speech settings +## Cloud text-to-speech settings -Nabu Casa has been offering an amazing text to speech service for a while now, +Nabu Casa has been offering an amazing text-to-speech service for a while now, yet it was hard to find, and even harder to setup and use. To fix this, a new settings UI has been added where you can select the default -language and gender to use for the text to speech service, so you no longer have +language and gender to use for the text-to-speech service, so you no longer have to attach that to every service call. You can find it in the Home Assistant Cloud panel. diff --git a/source/_posts/2021-04-30-community-highlights.markdown b/source/_posts/2021-04-30-community-highlights.markdown index 955d1d5c7ef..9c13ec9ba29 100644 --- a/source/_posts/2021-04-30-community-highlights.markdown +++ b/source/_posts/2021-04-30-community-highlights.markdown @@ -1,6 +1,6 @@ --- title: "Community Highlights: 19th edition" -description: "Schedule your vacuum cleaning robot with a blueprint, show the robot status with a card and get started with open source Text To Speech systems" +description: "Schedule your vacuum cleaning robot with a blueprint, show the robot status with a card and get started with open source text-to-speech systems" date: 2021-04-30 00:00:00 date_formatted: "April 30, 2021" author: Klaas Schoute @@ -91,7 +91,7 @@ well-known models that are now available on the market. Maybe the name still sounds fairly unknown to you, but [OpenTTS](https://github.com/synesthesiam/hassio-addons) is an add-on, which gives you the possibility to use multiple open source -Text to Speech systems. So that you can eventually have text spoken on: for +text-to-speech systems. So that you can eventually have text spoken on: for example, a Google Home speaker. [synesthesiam](https://github.com/synesthesiam) recently released a new version of OpenTTS and you can install it as an add-on in Home Assistant. diff --git a/source/_posts/2021-05-21-community-highlights.markdown b/source/_posts/2021-05-21-community-highlights.markdown index 2578dddcd05..515db485f60 100644 --- a/source/_posts/2021-05-21-community-highlights.markdown +++ b/source/_posts/2021-05-21-community-highlights.markdown @@ -24,7 +24,7 @@ Information on [how to share](#got-a-tip-for-the-next-edition). Are you one of those who always leave the doors open? Then this week we have a nice blueprint for you! [BasTijs](https://community.home-assistant.io/u/bastijs ) -has made a blueprint that announces through text to speech in the house, +has made a blueprint that announces through text-to-speech in the house, that a door is open and only stops when the door is closed again. {% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/door-open-tts-announcer/266252" %} diff --git a/source/_posts/2021-11-03-release-202111.markdown b/source/_posts/2021-11-03-release-202111.markdown index 50d2c70594f..4ceb2d3322f 100644 --- a/source/_posts/2021-11-03-release-202111.markdown +++ b/source/_posts/2021-11-03-release-202111.markdown @@ -827,7 +827,7 @@ and thus can be safely removed from your YAML configuration after upgrading. {% enddetails %} -{% details "Microsoft Text-to-Speech (TTS)" %} +{% details "Microsoft text-to-speech (TTS)" %} The default voice is changed to `JennyNeural`; The previous default `ZiraRUS` diff --git a/source/_posts/2022-03-02-release-20223.markdown b/source/_posts/2022-03-02-release-20223.markdown index 2db2f287913..c22892dd417 100644 --- a/source/_posts/2022-03-02-release-20223.markdown +++ b/source/_posts/2022-03-02-release-20223.markdown @@ -111,7 +111,7 @@ So, this release will bring in a bunch of new media sources. Your Cameras! Your Lovelace Dashboards! You can just pick one of your cameras or Lovelace dashboards and "Play" them on a supported device -(like a Google Nest Hub or television). But also text to speech! +(like a Google Nest Hub or television). But also text-to-speech! Screenshot showing playing TTS as a media action diff --git a/source/_posts/2022-05-04-release-20225.markdown b/source/_posts/2022-05-04-release-20225.markdown index 71c8e9e874d..ec992e35922 100644 --- a/source/_posts/2022-05-04-release-20225.markdown +++ b/source/_posts/2022-05-04-release-20225.markdown @@ -1562,7 +1562,7 @@ Home Assistant startup, instead of to "unknown". {% enddetails %} -{% details "Text-to-Speech (TTS)" %} +{% details "text-to-speech (TTS)" %} The TTS `base_url` option is deprecated. Please, configure internal/external URL instead. diff --git a/source/_posts/2022-12-20-year-of-voice.markdown b/source/_posts/2022-12-20-year-of-voice.markdown index 7d7093d095a..90b98e262e7 100644 --- a/source/_posts/2022-12-20-year-of-voice.markdown +++ b/source/_posts/2022-12-20-year-of-voice.markdown @@ -44,7 +44,7 @@ With Home Assistant we want to make a privacy and locally focused smart home ava With Home Assistant we prefer to get the things we’re building in the user's hands as early as possible. Even basic functionality allows users to find things that work and don’t work, allowing us to address the direction if needed. -A voice assistant has a lot of different parts: hot word detection, speech to text, intent recognition, intent execution, text to speech. Making each work in every language is a lot of work. The most important part is the intent recognition and intent execution. We need to be able to understand your commands and execute them. +A voice assistant has a lot of different parts: hot word detection, speech-to-text, intent recognition, intent execution, text-to-speech. Making each work in every language is a lot of work. The most important part is the intent recognition and intent execution. We need to be able to understand your commands and execute them. We started gathering these command sentences in our new [intents repository](https://github.com/home-assistant/intents). It will soon power the existing [conversation integration](/integrations/conversation) in Home Assistant, allowing you to use our app to write and say commands. diff --git a/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown b/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown index 01e67f1e223..67fb3bf7159 100644 --- a/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown +++ b/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown @@ -32,7 +32,7 @@ We want Assist to be as accessible to as many people as possible. To do this, we Assist is enabled by default in the Home Assistant 2023.2 release. Tap the new Assist icon Assist icon at the top right of the dashboard to use it. -[Assist documentation.](https://www.home-assistant.io/docs/assist/) +[Assist documentation.](https://www.home-assistant.io/voice_control/) Screenshot of the Assist dialog @@ -40,7 +40,7 @@ Assist is enabled by default in the Home Assistant 2023.2 release. Tap the new A We want to make it as easy as possible to use Assist. To enable this for Android users, we have added a new tile to the Android Wear app. A simple swipe from the clock face will show the assist button and allows you to send voice commands. -[Assist on Android Wear documentation.](https://www.home-assistant.io/docs/assist/android/) +[Assist on Android Wear documentation.](https://www.home-assistant.io/voice_control/android/) _The tile is available in [Home Assistant Companion for Android 2023.1.1](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)._ @@ -50,7 +50,7 @@ _The tile is available in [Home Assistant Companion for Android 2023.1.1](https: For Apple devices we have been able to create a fully hands-free experience by integrating with Siri. This is powered by a new Apple Shortcut action called Assist, which is part of the Home Assistant app. This shortcut action can also be manually triggered from your Mac taskbar, iPhone home screen or Apple Watch complication. We have two ready-made shortcuts that users can import from the documentation with a single tap to unlock these features. -[Assist via Siri and Apple Shortcuts documentation.](https://www.home-assistant.io/docs/assist/apple/) +[Assist via Siri and Apple Shortcuts documentation.](https://www.home-assistant.io/voice_control/apple/) _The Assist shortcut is available in [Home Assistant Companion for iOS 2023.2](https://apps.apple.com/us/app/home-assistant/id1099568401?itsct=apps_box_badge&itscg=30200). Mac version is awaiting approval._ @@ -66,7 +66,7 @@ With Home Assistant we believe that every home is uniquely yours and that [techn Assist includes support for custom sentences, responses and intents, allowing you to achieve all of the above, and more. We've designed the custom sentence format in a way that it can be easily shared with the community. -Read [the documentation](https://www.home-assistant.io/docs/assist/custom_sentences) on how to get started. +Read [the documentation](https://www.home-assistant.io/voice_control/custom_sentences) on how to get started. _In a future release we're planning on adding a user interface to customize and import sentences._ @@ -92,8 +92,7 @@ For Year of the Voice - Chapter 1 we focused on building intent recognition into We will continue collecting home automation sentences for all languages ([anyone can help!](https://developers.home-assistant.io/docs/voice/intent-recognition/)). Updates will be included with every major release of Home Assistant. -Our next step is integrating Speech-to-Text and Text-to-Speech with Assist. We don't have a timeline yet when that will be ready. Stay tuned! - +Our next step is integrating speech-to-text and text-to-speech with Assist. We don't have a timeline yet when that will be ready. Stay tuned! ## Credits A lot of people have worked very hard to make all of the above possible. diff --git a/source/_posts/2023-02-01-release-20232.markdown b/source/_posts/2023-02-01-release-20232.markdown index 1e60a072aaa..99ee1998b6e 100644 --- a/source/_posts/2023-02-01-release-20232.markdown +++ b/source/_posts/2023-02-01-release-20232.markdown @@ -89,7 +89,7 @@ Go ahead, it is enabled by default; just tap the new Assist icon at the top right of your dashboard to start using it. Oh, and we are also releasing some fun stuff we've cooked up along the way! -[Read more about Assist](/docs/assist/) and other released voice features in the +[Read more about Assist](/voice_control/) and other released voice features in the [Chapter 1: Assist](/blog/2023/01/26/year-of-the-voice-chapter-1/) blogpost and a [video presentation (including live demos) on YouTube](https://www.youtube.com/live/ixgNT3RETPg). diff --git a/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown b/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown index 5da1c972739..383050a3a2a 100644 --- a/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown +++ b/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown @@ -27,7 +27,7 @@ _To watch the video presentation of this blog post, including live demos, check [Chapter 1]: https://www.home-assistant.io/blog/2023/01/26/year-of-the-voice-chapter-1/ [45 languages]: https://home-assistant.github.io/intents/ [live-stream]: https://youtube.com/live/Tk-pnm7FY7c?feature=share -[assist]: /docs/assist/ +[assist]: /voice_control/ @@ -52,7 +52,7 @@ Screenshot of the new Assist debug tool.

    [Assist Pipeline integration]: https://www.home-assistant.io/integrations/assist_pipeline/ -[Assist dialog]: /docs/assist/ +[Assist dialog]: /voice_control/ ## Voice Assistant powered by Home Assistant Cloud @@ -131,7 +131,7 @@ Today we’re launching support for building voice assistants using ESPHome. Con We’ve been focusing on the [M5STACK ATOM Echo][atom-echo] for testing and development. For $13 it comes with a microphone and a speaker in a nice little box. We’ve created a tutorial to turn this device into a voice remote directly from your browser! -[Tutorial: create a $13 voice remote for Home Assistant.](https://www.home-assistant.io/projects/thirteen-usd-voice-remote/) +[Tutorial: create a $13 voice remote for Home Assistant.](https://www.home-assistant.io/voice_control/thirteen-usd-voice-remote/) [ESPHome Voice Assistant documentation.](https://esphome.io/components/voice_assistant.html) @@ -152,7 +152,7 @@ By configuring off-hook autodial, your phone will automatically call Home Assist We’ve focused our initial efforts on supporting [the Grandstream HT801 Voice-over-IP box][ht801]. It works with any phone with an RJ11 connector, and connects directly to Home Assistant. There is no need for an extra server. -[Tutorial: create your own World’s Most Private Voice Assistant](https://www.home-assistant.io/projects/worlds-most-private-voice-assistant/) +[Tutorial: create your own World’s Most Private Voice Assistant](https://www.home-assistant.io/voice_control/worlds-most-private-voice-assistant/)

    diff --git a/source/_posts/2023-05-03-release-20235.markdown b/source/_posts/2023-05-03-release-20235.markdown index 69c2596893e..33efa5c1459 100644 --- a/source/_posts/2023-05-03-release-20235.markdown +++ b/source/_posts/2023-05-03-release-20235.markdown @@ -49,6 +49,8 @@ Enjoy the release! - [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) - [Release 2023.5.1 - May 4](#release-202351---may-4) - [Release 2023.5.2 - May 5](#release-202352---may-5) +- [Release 2023.5.3 - May 14](#release-202353---may-14) +- [Release 2023.5.4 - May 23](#release-202354---may-23) - [Need help? Join the community!](#need-help-join-the-community) - [Breaking Changes](#breaking-changes) - [Farewell to the following](#farewell-to-the-following) @@ -85,10 +87,10 @@ To help you get started, we made sure the documentation is perfect, including some cool project tutorials to jump-start your own private voice assistant journey: -- [The world's most private voice assistant](/projects/worlds-most-private-voice-assistant/) -- [Giving your voice assistant a Super Mario personality using OpenAI](/projects/worlds-most-private-voice-assistant/#give-your-voice-assistant-personality-using-the-openai-integration) -- [Installing a local Assist pipeline](/docs/assist/voice_remote_local_assistant/) -- [The $13 tiny ESPHome-based voice assistant](/projects/thirteen-usd-voice-remote/) +- [The world's most private voice assistant](/voice_control/worlds-most-private-voice-assistant/) +- [Giving your voice assistant a Super Mario personality using OpenAI](/voice_control/worlds-most-private-voice-assistant/#give-your-voice-assistant-personality-using-the-openai-integration) +- [Installing a local Assist pipeline](/voice_control/voice_remote_local_assistant/) +- [The $13 tiny ESPHome-based voice assistant](/voice_control/thirteen-usd-voice-remote/) If you missed [last week's live stream](https://www.youtube.com/watch?v=Tk-pnm7FY7c), be sure to check it out. It is full of live demos and detailed explanations @@ -121,7 +123,7 @@ manage the entity's aliases. Screenshot showing the new expose entities tab in the voice assistants menu. -This currently supports our [Assist](/docs/assist), and Amazon Alexa and +This currently supports our [Assist](/voice_control/), and Amazon Alexa and Google Assistant via Home Assistant Cloud. ## Improved entity setting @@ -275,7 +277,7 @@ findability. This one is new: [@tronikos]: https://github.com/tronikos [android tv remote]: /integrations/androidtv_remote [Anova]: /integrations/anova -[assist]: /docs/assist +[assist]: /voice_control/ [Intellifire]: /integrations/intellifire [Monessen]: /integrations/monessen [RAPT Bluetooth]: /integrations/rapt_ble @@ -406,6 +408,239 @@ The following integrations are now available via the Home Assistant UI: [transmission docs]: /integrations/transmission/ [zha docs]: /integrations/zha/ +## Release 2023.5.3 - May 14 + +- Roborock continue on failed mqtt disconnect ([@Lash-L] - [#92502]) ([roborock docs]) +- Bump bimmer_connected to 0.13.3 ([@rikroe] - [#92648]) ([bmw_connected_drive docs]) +- Fix parallel_updates being acquired too late for entity executor jobs ([@bdraco] - [#92681]) +- Always request at least one zone for multi-zone LIFX devices ([@bdraco] - [#92683]) ([lifx docs]) +- Fix onvif reauth when device returns a http 401/403 error ([@bdraco] - [#92690]) ([onvif docs]) +- Bump `aionotion` to 2023.05.1 ([@bachya] - [#92697]) ([notion docs]) +- Bump pyoverkiz to 1.7.8 ([@iMicknl] - [#92702]) ([overkiz docs]) +- Bump aiowebostv to 0.3.3 to fix Python 3.11 support ([@thecode] - [#92736]) ([webostv docs]) +- Update deprecated functions in SIA ([@eavanvalkenburg] - [#92737]) ([sia docs]) +- Bump aioesphomeapi to 3.7.4 to fix proxied BLE connections not retrying right away on error ([@bdraco] - [#92741]) ([esphome docs]) +- Increase timeout to 30 seconds for Mazda integration ([@bdr99] - [#92744]) ([mazda docs]) +- Fix zwave_js services example data ([@karwosts] - [#92748]) ([zwave_js docs]) +- Bump asyncsleepiq to 1.3.5 ([@kbickar] - [#92759]) ([sleepiq docs]) +- Update aioairzone to v0.5.3 ([@Noltari] - [#92780]) ([airzone docs]) +- Fix race in Alexa async_enable_proactive_mode ([@emontnemery] - [#92785]) ([alexa docs]) +- Fix Airzone Auto operation mode ([@Noltari] - [#92796]) ([airzone docs]) +- Update aioairzone to v0.5.5 ([@Noltari] - [#92812]) ([airzone docs]) +- Don't try to restore unavailable nor unknown states ([@dgomes] - [#92825]) ([integration docs]) +- Bump sonos-websocket to 0.1.1 ([@jjlawren] - [#92834]) ([sonos docs]) +- Allow "no" to match "nb" in language util ([@synesthesiam] - [#92862]) +- Bump ZHA dependencies ([@puddly] - [#92870]) ([zha docs]) +- Add ONVIF services to diagnostics ([@bdraco] - [#92878]) ([onvif docs]) +- Bump UPB integration library to 0.5.4 ([@gwww] - [#92879]) ([upb docs]) +- Bump bluetooth-auto-recovery to 1.2.0 ([@bdraco] - [#92893]) ([bluetooth docs]) +- Fix already_configured string in workday ([@gjohansson-ST] - [#92901]) ([workday docs]) +- Fix uptime sensor deviation detection in Fritz!Tools ([@mib1185] - [#92907]) ([fritz docs]) +- Bump volvooncall to 0.10.3 to fix sensor type error ([@decompil3d] - [#92913]) ([volvooncall docs]) +- Bump eternalegypt to 0.0.16 ([@tkdrob] - [#92919]) ([netgear_lte docs]) +- Bump python-vehicle to 1.0.1 ([@joostlek] - [#92933]) ([rdw docs]) +- Fix remove of device when surveillance station is not used in Synology DSM ([@mib1185] - [#92957]) ([synology_dsm docs]) +- Bump reolink-aio to 0.5.15 ([@starkillerOG] - [#92979]) ([reolink docs]) +- Bump bellows to 0.35.5 to fix Aqara Zigbee connectivity issue ([@puddly] - [#92999]) ([zha docs]) +- Disable cleanup_closed for aiohttp.TCPConnector with cpython 3.11.1+ ([@bdraco] - [#93013]) +- Fix sslv2/sslv3 with unverified connections ([@bdraco] - [#93037]) +- Fix a series of bugs due to Notion API changes ([@bachya] - [#93039]) ([notion docs]) + +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92502]: https://github.com/home-assistant/core/pull/92502 +[#92513]: https://github.com/home-assistant/core/pull/92513 +[#92610]: https://github.com/home-assistant/core/pull/92610 +[#92648]: https://github.com/home-assistant/core/pull/92648 +[#92681]: https://github.com/home-assistant/core/pull/92681 +[#92683]: https://github.com/home-assistant/core/pull/92683 +[#92690]: https://github.com/home-assistant/core/pull/92690 +[#92697]: https://github.com/home-assistant/core/pull/92697 +[#92702]: https://github.com/home-assistant/core/pull/92702 +[#92736]: https://github.com/home-assistant/core/pull/92736 +[#92737]: https://github.com/home-assistant/core/pull/92737 +[#92741]: https://github.com/home-assistant/core/pull/92741 +[#92744]: https://github.com/home-assistant/core/pull/92744 +[#92748]: https://github.com/home-assistant/core/pull/92748 +[#92759]: https://github.com/home-assistant/core/pull/92759 +[#92780]: https://github.com/home-assistant/core/pull/92780 +[#92785]: https://github.com/home-assistant/core/pull/92785 +[#92796]: https://github.com/home-assistant/core/pull/92796 +[#92812]: https://github.com/home-assistant/core/pull/92812 +[#92825]: https://github.com/home-assistant/core/pull/92825 +[#92834]: https://github.com/home-assistant/core/pull/92834 +[#92862]: https://github.com/home-assistant/core/pull/92862 +[#92870]: https://github.com/home-assistant/core/pull/92870 +[#92878]: https://github.com/home-assistant/core/pull/92878 +[#92879]: https://github.com/home-assistant/core/pull/92879 +[#92893]: https://github.com/home-assistant/core/pull/92893 +[#92901]: https://github.com/home-assistant/core/pull/92901 +[#92907]: https://github.com/home-assistant/core/pull/92907 +[#92913]: https://github.com/home-assistant/core/pull/92913 +[#92919]: https://github.com/home-assistant/core/pull/92919 +[#92933]: https://github.com/home-assistant/core/pull/92933 +[#92957]: https://github.com/home-assistant/core/pull/92957 +[#92979]: https://github.com/home-assistant/core/pull/92979 +[#92999]: https://github.com/home-assistant/core/pull/92999 +[#93013]: https://github.com/home-assistant/core/pull/93013 +[#93037]: https://github.com/home-assistant/core/pull/93037 +[#93039]: https://github.com/home-assistant/core/pull/93039 +[@Lash-L]: https://github.com/Lash-L +[@Noltari]: https://github.com/Noltari +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@decompil3d]: https://github.com/decompil3d +[@dgomes]: https://github.com/dgomes +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gwww]: https://github.com/gwww +[@iMicknl]: https://github.com/iMicknl +[@jjlawren]: https://github.com/jjlawren +[@joostlek]: https://github.com/joostlek +[@karwosts]: https://github.com/karwosts +[@kbickar]: https://github.com/kbickar +[@mib1185]: https://github.com/mib1185 +[@puddly]: https://github.com/puddly +[@rikroe]: https://github.com/rikroe +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[airzone docs]: /integrations/airzone/ +[alexa docs]: /integrations/alexa/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[cloud docs]: /integrations/cloud/ +[esphome docs]: /integrations/esphome/ +[fritz docs]: /integrations/fritz/ +[frontend docs]: /integrations/frontend/ +[integration docs]: /integrations/integration/ +[lifx docs]: /integrations/lifx/ +[mazda docs]: /integrations/mazda/ +[netgear_lte docs]: /integrations/netgear_lte/ +[notion docs]: /integrations/notion/ +[onvif docs]: /integrations/onvif/ +[overkiz docs]: /integrations/overkiz/ +[rdw docs]: /integrations/rdw/ +[reolink docs]: /integrations/reolink/ +[roborock docs]: /integrations/roborock/ +[sia docs]: /integrations/sia/ +[sleepiq docs]: /integrations/sleepiq/ +[sonos docs]: /integrations/sonos/ +[synology_dsm docs]: /integrations/synology_dsm/ +[upb docs]: /integrations/upb/ +[volvooncall docs]: /integrations/volvooncall/ +[webostv docs]: /integrations/webostv/ +[workday docs]: /integrations/workday/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ + +## Release 2023.5.4 - May 23 + +- Fix weather handling in zamg ([@killer0071234] - [#85635]) ([zamg docs]) +- Fix onvif cameras that cannot parse relative time ([@bdraco] - [#92711]) ([onvif docs]) (dependency) +- Update solax state class for sensors with no units ([@MichaelMraka] - [#92914]) ([solax docs]) +- Fix NWS error with no observation ([@MatthewFlamm] - [#92997]) ([nws docs]) +- Increase timeout to 30 seconds for homeassistant_alerts integration ([@N3rdix] - [#93089]) ([homeassistant_alerts docs]) +- Fix ONVIF cameras that change the xaddr for the pull point service ([@bdraco] - [#93104]) ([onvif docs]) +- Bump pyunifiprotect to 4.9.0 ([@bdraco] - [#93106]) ([unifiprotect docs]) (dependency) +- Fix last imap message is not reset on empty search ([@jbouwh] - [#93119]) ([imap docs]) +- Bump `accuweather` to version 0.5.2 ([@bieniu] - [#93130]) ([accuweather docs]) (dependency) +- Better handling of source sensor unavailability in Riemman Integration ([@dgomes] - [#93137]) ([integration docs]) +- Bump `regenmaschine` to 2023.05.1 ([@bachya] - [#93139]) ([rainmachine docs]) (dependency) +- Bump pyatv to 0.11.0 ([@bdraco] - [#93172]) ([apple_tv docs]) +- Fix china login for bmw_connected_drive ([@rikroe] - [#93180]) ([bmw_connected_drive docs]) +- Add Fan and Dry HVAC modes to Advantage Air MyTemp preset ([@Bre77] - [#93189]) ([advantage_air docs]) +- Disconnect yale access locks at the stop event ([@bdraco] - [#93192]) ([august docs]) ([yalexs_ble docs]) (dependency) +- Add support for Yale Home brand to august ([@bdraco] - [#93214]) ([august docs]) +- Bump async-upnp-client to 0.33.2 ([@StevenLooman] - [#93329]) (dependency) +- Bump `aionotion` to 2023.05.5 ([@bachya] - [#93334]) ([notion docs]) +- Bump zwave-js-server-python to 0.48.1 ([@raman325] - [#93342]) ([zwave_js docs]) (dependency) +- Bump glances_api to 0.4.2 ([@freeDom-] - [#93352]) ([glances docs]) +- Fix august configuration url with Yale Home brand ([@bdraco] - [#93361]) ([august docs]) (dependency) +- Bump httpx to 0.24.1 ([@epenet] - [#93396]) (dependency) +- Fix non threadsafe call xiaomi_aqara ([@bdraco] - [#93405]) ([xiaomi_aqara docs]) +- Bump Matter server library to 3.4.1 and address changes ([@marcelveldt] - [#93411]) ([matter docs]) (dependency) +- Fix race in tracking pending writes in recorder ([@bdraco] - [#93414]) ([recorder docs]) + +[#85635]: https://github.com/home-assistant/core/pull/85635 +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92513]: https://github.com/home-assistant/core/pull/92513 +[#92610]: https://github.com/home-assistant/core/pull/92610 +[#92711]: https://github.com/home-assistant/core/pull/92711 +[#92914]: https://github.com/home-assistant/core/pull/92914 +[#92997]: https://github.com/home-assistant/core/pull/92997 +[#93066]: https://github.com/home-assistant/core/pull/93066 +[#93089]: https://github.com/home-assistant/core/pull/93089 +[#93104]: https://github.com/home-assistant/core/pull/93104 +[#93106]: https://github.com/home-assistant/core/pull/93106 +[#93119]: https://github.com/home-assistant/core/pull/93119 +[#93130]: https://github.com/home-assistant/core/pull/93130 +[#93137]: https://github.com/home-assistant/core/pull/93137 +[#93139]: https://github.com/home-assistant/core/pull/93139 +[#93172]: https://github.com/home-assistant/core/pull/93172 +[#93180]: https://github.com/home-assistant/core/pull/93180 +[#93189]: https://github.com/home-assistant/core/pull/93189 +[#93192]: https://github.com/home-assistant/core/pull/93192 +[#93214]: https://github.com/home-assistant/core/pull/93214 +[#93329]: https://github.com/home-assistant/core/pull/93329 +[#93334]: https://github.com/home-assistant/core/pull/93334 +[#93342]: https://github.com/home-assistant/core/pull/93342 +[#93352]: https://github.com/home-assistant/core/pull/93352 +[#93361]: https://github.com/home-assistant/core/pull/93361 +[#93396]: https://github.com/home-assistant/core/pull/93396 +[#93405]: https://github.com/home-assistant/core/pull/93405 +[#93411]: https://github.com/home-assistant/core/pull/93411 +[#93414]: https://github.com/home-assistant/core/pull/93414 +[@Bre77]: https://github.com/Bre77 +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@MichaelMraka]: https://github.com/MichaelMraka +[@N3rdix]: https://github.com/N3rdix +[@StevenLooman]: https://github.com/StevenLooman +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@dgomes]: https://github.com/dgomes +[@epenet]: https://github.com/epenet +[@freeDom-]: https://github.com/freeDom- +[@frenck]: https://github.com/frenck +[@jbouwh]: https://github.com/jbouwh +[@killer0071234]: https://github.com/killer0071234 +[@marcelveldt]: https://github.com/marcelveldt +[@raman325]: https://github.com/raman325 +[@rikroe]: https://github.com/rikroe +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[apple_tv docs]: /integrations/apple_tv/ +[august docs]: /integrations/august/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[cloud docs]: /integrations/cloud/ +[frontend docs]: /integrations/frontend/ +[glances docs]: /integrations/glances/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[imap docs]: /integrations/imap/ +[integration docs]: /integrations/integration/ +[lifx docs]: /integrations/lifx/ +[matter docs]: /integrations/matter/ +[notion docs]: /integrations/notion/ +[nws docs]: /integrations/nws/ +[onvif docs]: /integrations/onvif/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[solax docs]: /integrations/solax/ +[unifiprotect docs]: /integrations/unifiprotect/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[zamg docs]: /integrations/zamg/ +[zwave_js docs]: /integrations/zwave_js/ + ## Need help? Join the community! Home Assistant has a great community of users who are all more than willing diff --git a/source/_posts/2023-06-07-release-20236.markdown b/source/_posts/2023-06-07-release-20236.markdown new file mode 100644 index 00000000000..e7979838c3d --- /dev/null +++ b/source/_posts/2023-06-07-release-20236.markdown @@ -0,0 +1,869 @@ +--- +layout: post +title: "2023.6: Network storage, favorite light colors, new integrations dashboard" +description: "Add and use network storage, the integrations dashboard got a revamp, add your favorite colors to your lights, copy & paste support for automations, blazing speed through Python 3.11, and Matter and Z-Wave updates." +date: 2023-06-07 00:00:00 +date_formatted: "June 7, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2023-06/social.png +--- + + + +Home Assistant Core 2023.6! 🎉 + +Get ready for a classic, old-fashioned, jam-packed release! 🤯 + +I am excited about so many things being shipped in this release that it is +hard to pick a favorite 😅 This release has it all. + +Being able to directly use and back up my Home Assistant configuration to my +network storage is absolutely incredible! But I also really enjoy the new and +clean integrations dashboard and pages. + +The feature that greatly improved the Home Approval Factor in my household +is definitely the addition of the new favorite colors in the light dialogs 🎨 + +Enjoy the release! + +../Frenck + + + +- [Connect and use your existing network storage](#connect-and-use-your-existing-network-storage) +- [Integrations dashboard \& pages](#integrations-dashboard--pages) +- [Light entity dialog improvements: favorite colors](#light-entity-dialog-improvements-favorite-colors) +- [Added to the entity dialog: last changed](#added-to-the-entity-dialog-last-changed) +- [Related information](#related-information) +- [Copy 'n paste support in the automation editor](#copy-n-paste-support-in-the-automation-editor) +- [Python 3.11 and significant performance upgrades](#python-311-and-significant-performance-upgrades) +- [Matter 1.1](#matter-11) +- [Z-Wave updates](#z-wave-updates) +- [New entities! Date, time, date/time](#new-entities-date-time-datetime) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Need help? Join the community!](#need-help-join-the-community) +- [Breaking Changes](#breaking-changes) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=C1eLZLtvc_k) +7 June 2023, at 12:00 PDT / 21:00 CEST! + + + +## Connect and use your existing network storage + +Do you have a network storage in your home? Like a QNAP or Synology NAS? +This release adds the ability to add and use that storage with Home Assistant! + +This long and highly requested feature is now available when running the +Home Assistant Operating System. In the {% my storage title="**Settings** > **System** > **Storage**" %} +menu, you can now find a whole new set of controls to connect to your storage +and use it to, for example, use your network share as a media source +in Home Assistant. + +Screenshot showing two external network storages attached to Home Assistant. + +Even better: You can use it as a target for your backups so that when +Home Assistant creates a backup for you, it will store it directly on +your network storage. + +Multiple network storages are also supported; if you like, you can +easily add more. + +## Integrations dashboard & pages + +The integrations dashboard has gotten a major overhaul! + +There have been quite some usability issues with the previous version of the +integration dashboard. For example, if you use [ESPHome] with many devices, +you are undoubtedly familiar with the annoying scrolling in that little card. Or, +big error messages stretching those cards out, messing up the whole page. + +This release brings in a whole new integrations dashboard that addresses many +of these issues, aiming to provide a cleaner and more consistent experience. + +Screenshot showing the look and feel of the new integrations dashboard. + +Device based integrations, like ESPHome, are combined: no more scrolling. +A failing integration no longer stretches the layout or makes the +layout "jump" during retries. Custom integrations and integrations relying +on the cloud are now more visibly marked. + +Selecting the cog icon on the integration card will bring you to a brand new +integrations page, showing all information about the integration: + +Screenshot showing an integration page, in this case, the integration page of ESPHome. + +In the above example, the ESPHome integration page shows all devices +this integration has. All the information and options, previously squashed into +the integration dashboard, are now available here. + +These brand new integration pages are helpful in other places in Home Assistant. +For example, the device pages can now link back directly to the integration +that provided it. + +[ESPHome]: https://esphome.io + +## Light entity dialog improvements: favorite colors + +Recently we introduced new controls in the light entity dialog, and this release +iterates on the design by adding the current brightness, new controls, +and adding favorite colors! 🎨 + +Screenshot showing the improved light entity dialog, with the new favorite colors. + +Each light (or light group) has its own set of colors. These colors can +be added, changed, removed, and reorganized using drag-and-drop. To enter +edit mode, select and hold one of the colors: + +Screen recording demonstrating editing favorite colors. + +## Added to the entity dialog: last changed + +By popular request, the information on when an entity was last changed has +been added back to the new entity information dialogs. + +Not only that, [@piitaya] added a very nice easter egg! You can click on it +to toggle between the relative and absolute format! + +

    Screen recording demonstrating how to toggle between relative and absolute time.
    + +[@piitaya]: https://github.com/piitaya + +## Related information + +Which automation is using that blueprint? Well, Home Assistant can now tell you +that! On the {% my blueprints title="**Settings** > **Automations & Scenes** > **Blueprints**" %} +page, select the three dotted menu on any blueprint to discover which +automations are using that blueprint. + +Not only that, if you accidentally try to remove a blueprint that is still in use, +Home Assistant will stop you from removing it and tell you which automations +still rely on it. + +Hold on; there is more related! The related items in the entity information +dialog were improved as well. The old list of links is gone, and it now shows +a way more modern view of all related items for an entity: + +Screenshot of the improved related entity information dialog. + +Notice how it nicely links back to the new integration page here too! + +## Copy 'n paste support in the automation editor + +An amazing contribution by [@karwosts] in this release that adds cut, copy +& paste capabilities to the automation and script editors! + +You can now copy and paste any trigger, condition, and action into different +places of your automation and even paste it into a different automation +altogether! + +Screen recording demonstrating cutting & pasting a condition in the automation editor. + +[@karwosts]: https://github.com/karwosts + +## Python 3.11 and significant performance upgrades + +This release ships running on Python 3.11! In case you are wondering, what is +that? Well, Python is the language the Core of Home Assistant is written in. + +Why it matters? It is seriously faster! 🚀 + +If you run the Home Assistant Operating System or are using the Home Assistant +Container installation type: You won't have to do anything as we handle the +upgrade to Python 3.11 for you. + +And that is not all in terms of performance. We've also upgraded internal parts, +including a newer SQLite version that should be faster. Oh! And, of course, +[@bdraco] has been all over the place to optimize a lot (a lot lot). + +This release can be expected to be a lot faster (or less consuming) of resources +at runtime. + +[@bdraco]: https://github.com/bdraco + +## Matter 1.1 + +The Matter implementation within Home Assistant is now based on the freshly +released 1.1 version of the Matter standard. This brings a ton of stability +fixes and improvements, but unfortunately, no new features. + +Thanks to [@Diegorro98], we do now have support for tilt covers! Besides that, +this Home Assistant release ships with several generic bugfixes and +optimizations; we've managed to squeeze out some additional performance to +make state updates for your Matter devices lightning-fast 🚀 + +All these stability improvements to both the Matter stack and our +implementation did not go unnoticed: + + + +[@Diegorro98]: https://github.com/Diegorro98 + +## Z-Wave updates + +There has been quite a bit of progress on Z-Wave in Home Assistant. + +Thanks to [@raman325], the integration reached platinum level 🏆 on our +[quality scale]. This means the integration now does things right according +to best practices which should mean a better user experience in general. + +Have you ever turned on a Z-Wave light from the Home Assistant UI just to see +the toggle going off again after a couple of seconds, then after some more +seconds seeing it going back to on? This long-standing issue (that even got the +nickname flip/flop) for certain devices, that are slow to respond to their +state has finally been addressed. + +For those of you that like to automate everything, you can now automate not +only the Z-Wave device state but also the device configuration. We added device +configuration parameter entities so that almost every Z-Wave device setting +is now available as an entity. + +Not stopping there, we also added entities for device connection statistics, +which you can use to, for example, create a notification if a device generates +more than a certain amount of dropped messages. If you want to track +a misbehaving device, you can enable these sensors to view the history +of the connection performance. + +In the background, [@AlCalzone] is working tirelessly on the [Z-Wave JS driver], +which is the foundation of our Z-Wave integration. Among other things, some +devices are now faster to interview during addition, and more devices +can be configured. + +[Z-Wave JS driver]: https://github.com/zwave-js/node-zwave-js/ +[@raman325]: https://github.com/raman325 +[quality scale]: /docs/quality_scale/ +[@AlCalzone]: https://github.com/AlCalzone + +## New entities! Date, time, date/time + +We welcome three new entity types in this release: +[`date`](/integrations/date), [`time`](/integrations/time) & [`datetime`](/integrations/datetime). + +These entities allow integrations to provide date, time, or date/time input +controls from the UI. They are very similar to the [input datetime](/integrations/input_datetime) +helper but are available for use by integrations. + +

    +Screenshot showing the new date & time entities introduced +How the new time, date, and date/time entities will look like on your dashboards. +

    + +They are so new that no integrations are using them yet, but you can expect +to see usage in (custom) integrations of these soon! + +Thanks for creating those [@raman325]! + +## Other noteworthy changes + +There are much more easter bunnies in this release; here are some of the other +noteworthy changes this release: + +- When using services in the UI (like in the automation editor), only options + and settings available to the selected target devices & entities will be shown. + This makes the UI much cleaner! Thanks, [@emontnemery] and [@bramkragten]! +- The [Roborock] integration (introduced in the previous release) received much + love and now provides a wide range of new entities. Thanks [@Lash-L]! +- The [Android TV Remote] integration now provides a media player entity too! + Nice, [@Drafteed]! +- [KNX] now provides its own panel, allowing you to upload your KNX + project file, and offers a group monitor for live bus diagnostics. + Information from the project is also used for device triggers. + Amazing [@marvin-w] and [@farmio]! +- [@bdraco] added the option to disable Webhooks for [ONVIF] in case your + camera isn't fully following specifications. +- The [variables action] is now also available in the automation and script + editors in the UI. Thanks, [@piitaya] +- The add-on dashboard now has a search bar. Helpful, [@bramkragten]! +- The [Samsung TV] now has a remote entity, allowing you to send remote key + presses directly to your TV! Thanks [@peitschie]! +- The {% my developer_states title="States in the developer tools" %} now + uses the entity ID in the entity ID picker. Thanks, [@bramkragten]! +- [@gjohansson-ST] added a service to change a running timer helper, [@frenck] + did something similar and added a service to set the value of a counter helper. +- The [AccuWeather] integration now provides sensors for the weather condition + and solar irradiance values. Thanks, [@bieniu] +- You can now update your [QNAP QSW] directly from Home Assistant. Nice [@Noltari]! +- The [BMW Connected Drive] now allows you to toggle climate on/off and new + entities related to the charging of your car. Thanks, [@rikroe] and [@cpoulsen]! + +[@peitschie]: https://github.com/peitschie +[Samsung TV]: /integrations/samsungtv +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@cpoulsen]: https://github.com/cpoulsen +[@Drafteed]: https://github.com/Drafteed +[@emontnemery]: https://github.com/emontnemery +[@farmio]: https://github.com/farmio +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@marvin-w]: https://github.com/marvin-w +[@Lash-L]: https://github.com/Lash-L +[@Noltari]: https://github.com/@Noltari +[@piitaya]: https://github.com/piitaya +[@rikroe]: https://github.com/rikroe +[AccuWeather]: /integrations/accuweather +[Android TV Remote]: /integrations/androidtv_remote +[BMW Connected Drive]: /integrations/bmw_connected_drive +[KNX]: /integrations/knx +[ONVIF]: /integrations/onvif +[QNAP QSW]: /integrations/qnap_qsw +[Roborock]: /integrations/roborock +[variables action]: /docs/scripts/#variables + +## New Integrations + +We welcome the following new integrations in this release: + +- **[Airzone Cloud]**, added by [@Noltari]
    + Climate control for your Aidoo, Easyzone, or Flexa air conditioners. +- **[Date]**, **[Time]**, and **[Date/Time]**, added by [@raman325]
    + New entity types that allow integrations to provide date/time controls. +- **[Electra Smart]**, added by [@jafar-atili]
    + Control your Electra Air air conditioner from Home Assistant. +- **[Google Generative AI Conversation]**, added by [@tronikos]
    + A conversation agent powered by Google Generative AI. +- **[JVC Projector]**, added by [@SteveEasley]
    + You can now automate your network controllable JVC Projector. +- **[YouTube]**, added by [@joostlek]
    + Add your favorite YouTube channels as sensors. + +This release also has a new virtual integration. Virtual integrations +are stubs that are handled by other (existing) integrations to help with +findability. This one is new: + +- **[Piper]** provided by [Wyoming], added by [@frenck] +- **[Whisper]** provided by [Wyoming], added by [@frenck] +- **[Yale Home]** provided by [August], added by [@bdraco] + +[@bdraco]: https://github.com/bdraco +[@frenck]: https://github.com/frenck +[@jafar-atili]: https://github.com/jafar-atili +[@joostlek]: https://github.com/joostlek +[@Noltari]: https://github.com/Noltari +[@raman325]: https://github.com/raman325 +[@SteveEasley]: https://github.com/SteveEasley +[@tronikos]: https://github.com/tronikos +[Airzone Cloud]: /integrations/airzone_cloud +[August]: /integrations/august +[Date]: /integrations/date +[Date/Time]: /integrations/date_time +[Electra Smart]: /integrations/electrasmart +[Google Generative AI Conversation]: /integrations/google_generative_ai_conversation +[JVC Projector]: /integrations/jvc_projector +[Piper]: /integrations/piper +[Time]: /integrations/time +[Whisper]: /integrations/whisper +[Wyoming]: /integrations/wyoming +[Yale Home]: /integrations/yale_home +[YouTube]: /integrations/youtube + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[Deutscher Wetterdienst (DWD) Weather Warnings]**, done by [@andarotajo] +- **[GeoJSON]**, done by [@exxamalte] +- **[Last.fm]**, done by [@joostlek] +- **[Philips Dynalite]**, done by [@ziv1234] + +[@andarotajo]: https://github.com/andarotajo +[@exxamalte]: https://github.com/exxamalte +[@joostlek]: https://github.com/joostlek +[@ziv1234]: https://github.com/ziv1234 +[Deutscher Wetterdienst (DWD) Weather Warnings]: /integrations/dwd_weather_warnings +[GeoJSON]: /integrations/geo_json_events +[Last.fm]: /integrations/lastfm +[Philips Dynalite]: /integrations/dynalite + +## Need help? Join the community! + +Home Assistant has a great community of users who are all more than willing +to help each other out. So, join us! + +Our very active [Discord chat server](/join-chat) is an excellent place to be +at, and don't forget to join our amazing [forums](https://community.home-assistant.io/). + +Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues), +to get it fixed! Or, check [our help page](/help) for guidance for more +places you can go. + +Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter) +to get the latest news about features, things happening in our community and +other news about building an Open Home; straight into your inbox. + +## Breaking Changes + +{% details "Python" %} + +All Home Assistant versions, of which the Home Assistant project manages the +Python version for you, have been upgraded to Python 3.11. This affects +the following installation types: + +- Home Assistant Operating System +- Home Assistant Container +- Home Assistant Supervised + +This might affect you when using custom integrations, as those must be +compatible with Python 3.11. + +Furthermore, as of this release, Python 3.10 is deprecated, and support will +be removed in Home Assistant 2023.8. This **only** affects you if you are +running Home Assistant Core installation type in your own Python virtual +environment. Please update your Python version to Python 3.11. + +If you run Home Assistant OS, Home Assistant Container, or Home Assistant +Supervised, we have taken care of this for you; you will be using Python 3.11 +automatically on upgrade. + +{% enddetails %} + +{% details "APC UPS Daemon" %} + +`sensor.ups_self_test_interval` sensor now properly splits unit "days" from the +raw data. Previously, it would show `7 days` as the sensor state. +Now it shows `7` with a unit "Days". + +([@yuxincs] - [#93844]) ([documentation](/integrations/apcupsd)) + +[@yuxincs]: https://github.com/yuxincs +[#93844]: https://github.com/home-assistant/core/pull/93844 + +{% enddetails %} + +{% details "Counter" %} + +The `counter` entities no longer restore their previous manually set +configuration (using the - now deprecated - `counter.configure` service) on +Home Assistant startup. Instead, it will now use the configuration as set in +the helper configuration in the UI (or as configured YAML, if used). + +This behavior is removed, as it caused configuration issues, as the new +configuration was never applied again (but forever restored). This behavior was +out of the ordinary for Home Assistant and thus now standardized. + +The value of the counter is still restored and available across Home Assistant +restarts. + +([@frenck] - [#93344]) ([documentation](/integrations/counter)) + +[@frenck]: https://github.com/frenck +[#93344]: https://github.com/home-assistant/core/pull/93344 + +{% enddetails %} + +{% details "Command Line" %} + +The Command Line integration changes its YAML configuration format from +an old-style platform configuration to a more modern integration-style +configuration format. + +For example, if you have a binary sensor configured previously as: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: command_line + command: "cat /proc/sys/net/ipv4/ip_forward" +``` + +That same binary sensor is now configured under the `command_line` integration +configuration as: + +```yaml +# Example configuration.yaml entry +command_line: + - binary_sensor: + command: "cat /proc/sys/net/ipv4/ip_forward" +``` + +Note: While this is currently not yet a breaking change, it did raise questions +during our beta testing period. Hence we have added this as a breaking change +to provide more context. + +([@gjohansson-ST] - [#92824]) ([documentation](/integrations/command_line)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#92824]: https://github.com/home-assistant/core/pull/92824 + +{% enddetails %} + +{% details "D-Link Wi-Fi Smart Plugs" %} + +The previously deprecated YAML configuration of the D-Link Wi-Fi Smart Plugs +integration has been removed. + +D-Link Wi-Fi Smart Plugs are now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#92590]) ([documentation](/integrations/dlink)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#92590]: https://github.com/home-assistant/core/pull/92590 + +{% enddetails %} + +{% details "EDL21" %} + +The previously deprecated YAML configuration of the EDL21 +integration has been removed. + +EDL21 is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#93551]) ([documentation](/integrations/edl21)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#93551]: https://github.com/home-assistant/core/pull/93551 + +{% enddetails %} + +{% details "EZVIZ" %} + +The binary sensor providing "upgrade available" information has been removed +and replaced by a new `update` entity. If you use the binary sensor in your +automations, scripts, or dashboards, you will need to adjust them to +this change. + +([@RenierM26] - [#85377]) ([documentation](/integrations/ezviz)) + +[@RenierM26]: https://github.com/RenierM26 +[#85377]: https://github.com/home-assistant/core/pull/85377 + +{% enddetails %} + +{% details "Frontier Silicon" %} + +The previously deprecated YAML configuration of the Frontier Silicon +integration has been removed. + +Frontier Silicon is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#93552]) ([documentation](/integrations/frontier_silicon)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#93552]: https://github.com/home-assistant/core/pull/93552 + +{% enddetails %} + +{% details "Google Nest" %} + +The Google Nest YAML configuration has been fully removed. You should ensure you +have imported your configuration and credentials into the UI before upgrading. + +Nest Desktop or OOB authentication, which was previously disabled by Google, +has now been removed. + +([@allenporter] - [#92311]) ([documentation](/integrations/nest)) + +[@allenporter]: https://github.com/allenporter +[#92311]: https://github.com/home-assistant/core/pull/92311 + +{% enddetails %} + +{% details "IBM Watson TTS" %} + +Home Assistant was still using the legacy Python pip package resolver, which +has been removed. Due to upstream package conflicts, the IBM Watson TTS +integration has been disabled. + +The upstream project providing the libraries used has been notified repeatedly +in, at least, the past two years; unfortunately, without response. We had no +other choice than to disable this integration. + +([@frenck] - [#92124]) ([documentation](/integrations/watson_tts)) + +[@frenck]: https://github.com/frenck +[#91492]: https://github.com/home-assistant/core/pull/92124 + +{% enddetails %} + +{% details "IHC Controller" %} + +The default unit of measurement for manually set up sensors from IHC has been +removed. Home Assistant now assumes all sensors with a unit of measurement set +are a number. IHC sensors can be text, but because of the default unit of +measurement, there is currently no way to get text sensors from IHC working. + +This is a breaking fix because if you currently have temperature sensors +without a unit of measurement set, you will have to set this for the sensors. + +([@dingusdk] - [#91096]) ([documentation](/integrations/ihc)) + +[@dingusdk]: https://github.com/dingusdk +[#93054]: https://github.com/home-assistant/core/pull/93054 + +{% enddetails %} + +{% details "LG Netcast" %} + +LG Netcast media players no longer have fake (assumed) `playing` or `paused` +states, and those are replaced with the `on` state. + +If you used the `playing` or `paused` state in your automations, you will need +to update them to match this change. + +([@Drafteed] - [#93543]) ([documentation](/integrations/lg_netcast)) + +[@Drafteed]: https://github.com/Drafteed +[#93543]: https://github.com/home-assistant/core/pull/93543 + +{% enddetails %} + +{% details "Meteorologisk institutt (Met.no)" %} + +The weather forecast provided by the weather entity has changed. The current +day has been added to the forecast. If your automations or scripts rely +on the first day to be tomorrow, you need to adjust them. + +([@mmalina] - [#91891]) ([documentation](/integrations/met)) + +[@mmalina]: https://github.com/mmalina +[#91891]: https://github.com/home-assistant/core/pull/91891 + +{% enddetails %} + +{% details "MQTT" %} + +MQTT sensor configurations that still use `last_reset_topic` will fail. The +support was deprecated in Home Assistant 2021.11 and is now removed. Users +should use ` last_reset_value_template` instead. + +([@jbouwh] - [#93792]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#93792]: https://github.com/home-assistant/core/pull/93792 + +{% enddetails %} + +{% details "Nextcloud" %} + +The previously deprecated YAML configuration of the Nextcloud +integration has been removed. + +Nextcloud is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#93550]) ([documentation](/integrations/nextcloud)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#93550]: https://github.com/home-assistant/core/pull/93550 + +{% enddetails %} + +{% details "Obihai" %} + +The previously deprecated YAML configuration of the Obihai +integration has been removed. + +Obihai is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#93549]) ([documentation](/integrations/obihai)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#93549]: https://github.com/home-assistant/core/pull/93549 + +{% enddetails %} + +{% details "Persistent notifications" %} + +Persistent notifications are no longer stored in the state machine. This means +that we no longer create an entity for each persistent notification. + +If you used these entities in, for example, automations, scripts, or templates, +you won't be able to use these anymore. + +([@bdraco] - [#92828]) ([documentation](/integrations/persistent_notification)) + +[@bdraco]: https://github.com/bdraco +[#92828]: https://github.com/home-assistant/core/pull/92828 + +--- + +The `persistent_notification.mark_read` service has been removed. + +([@bdraco] - [#94122]) ([documentation](/integrations/persistent_notification)) + +[@bdraco]: https://github.com/bdraco +[#94122]: https://github.com/home-assistant/core/pull/94122 + +{% enddetails %} + +{% details "Rain Bird" %} + +The previously deprecated YAML configuration of the Rain Bird +integration has been removed. + +Rain Bird is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@gjohansson-ST] - [#92599]) ([documentation](/integrations/rainbird)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#92599]: https://github.com/home-assistant/core/pull/92599 + +--- + +The previously deprecated `rainbird.rain_delay` service for Rainbird has been +removed. Please update any automation or script depending on this service. + +([@gjohansson-ST] - [#92601]) ([documentation](/integrations/rainbird)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#92601]: https://github.com/home-assistant/core/pull/92601 + +{% enddetails %} + +{% details "Salda Smarty" %} + +Home Assistant was still using the legacy Python pip package resolver, which +has been removed. Due to upstream package conflicts, the Salda Smarty +integration has been disabled. + +The upstream project providing the libraries used has been notified repeatedly +in, at least, the past two years; unfortunately, without response. We had no +other choice than to disable this integration. + +([@frenck] - [#92124]) ([documentation](/integrations/smarty)) + +[@frenck]: https://github.com/frenck +[#91492]: https://github.com/home-assistant/core/pull/92124 + +{% enddetails %} + +{% details "Samsung Smart TV" %} + +The previously deprecated YAML configuration of the Samsung Smart TV +integration has been removed. + +Samsung Smart TV is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@epenet] - [#93392]) ([documentation](/integrations/samsungtv)) + +[@epenet]: https://github.com/epenet +[#93392]: https://github.com/home-assistant/core/pull/93392 + +{% enddetails %} + +{% details "Total Connect" %} + +The tampered and low battery status zone attributes have been moved into their +own dedicated binary sensors. If you use these attributes in your automations, +scripts, or dashboards, you will need to update those to reflect this change. + +([@austinmroczek] - [#73152]) ([documentation](/integrations/totalconnect)) + +[@austinmroczek]: https://github.com/austinmroczek +[#73152]: https://github.com/home-assistant/core/pull/73152 + +{% enddetails %} + +{% details "Universal Devices ISY/IoX" %} + +The previously deprecated sensor entities for Insteon devices' On Level and +Ramp Rate, as well as ISY Variable sensors, have been removed. Please use the +dedicated `number` and `select` entities instead. + +([@shbatm] - [#92255]) ([documentation](/integrations/isy994)) + +[@shbatm]: https://github.com/shbatm +[#92255]: https://github.com/home-assistant/core/pull/92255 + +{% enddetails %} + +{% details "Vallox" %} + +The previously deprecated YAML configuration of the Vallox +integration has been removed. + +Vallox is now configured via the UI. Any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@slovdahl] - [#91096]) ([documentation](/integrations/vallox)) + +[@slovdahl]: https://github.com/slovdahl +[#91096]: https://github.com/home-assistant/core/pull/91096 + +{% enddetails %} + +{% details "Z-Wave" %} + +On/Off properties for the Indicator CC are no longer discovered as entities. + +They were previously discovered as sensor entities which were not useful in +cases where you wanted to change these values, and you would need to change +the value for all three On/Off properties simultaneously in order for them to +work, which wasn't supported with our existing discovery model. + +([@raman325] - [#90248]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#90248]: https://github.com/home-assistant/core/pull/90248 + +--- + +For devices with the `Entry control` generic device class, the `Door lock mode` +config parameter no longer gets created as a `sensor` entity and will instead +get created as a `select` entity. + +([@raman325] - [#92223]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#92223]: https://github.com/home-assistant/core/pull/92223 + +--- + +The Nice IBT4ZWAVE module was previously discovered as a light, but now it is +discovered as a cover. The light entity will be permanently unavailable and can +be safely deleted. + +([@raman325] - [#93946]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#93946]: https://github.com/home-assistant/core/pull/93946 + +{% enddetails %} + +If you are a custom integration developer and want to learn about breaking +changes and new features available for your integration: Be sure to follow our +[developer blog][devblog]. The following are the most notable for this release: + +- [Recent MQTT changes to improve overall performance](https://developers.home-assistant.io/blog/2023/05/21/retained-mqtt-messages-filtered) +- [Statistics WebSocket API changes](https://developers.home-assistant.io/blog/2023/04/30/statistics_impossible_values) + +[devblog]: https://developers.home-assistant.io/blog/ + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **Goalfeed** has been removed. Their service has been discontinued. + ([@thecode] - [#94129]) + +[@thecode]: https://github.com/thecode +[#94129]: https://github.com/home-assistant/core/pull/94129 + +## All changes + +Of course, there is a lot more in this release. You can find a list of +all changes made here: [Full changelog for Home Assistant Core 2023.6](/changelogs/core-2023.6) diff --git a/source/_redirects b/source/_redirects index 9e7e5b5c2bc..650f8865c72 100644 --- a/source/_redirects +++ b/source/_redirects @@ -218,6 +218,19 @@ layout: null # Moved documentation /details/database /docs/backend/database /details/updater /docs/backend/updater +/docs/assist/ /voice_control/ +/docs/assist/android/ /voice_control/android/ +/docs/assist/apple/ /voice_control/apple/ +/docs/assist/builtin_sentences/ /voice_control/builtin_sentences/ +/docs/assist/custom_sentences/ /voice_control/custom_sentences/ +/docs/assist/using_voice_assistants_overview/ /voice_control/using_voice_assistants_overview/ +/docs/assist/voice_remote_expose_devices/ /voice_control/voice_remote_expose_devices/ +/docs/assist/voice_remote_local_assistant/ /voice_control/voice_remote_local_assistant/ +/docs/assist/troubleshooting/ /voice_control/troubleshooting/ +/docs/assist/worlds-most-private-voice-assistant/ /voice_control/worlds-most-private-voice-assistant/ +/projects/worlds-most-private-voice-assistant/ /voice_control/worlds-most-private-voice-assistant/ +/docs/assist/thirteen-usd-voice-remote/ /voice_control/thirteen-usd-voice-remote/ +/projects/thirteen-usd-voice-remote/ /voice_control/thirteen-usd-voice-remote/ /docs/backend/updater /integrations/analytics /docs/ecosystem/ios/ https://companion.home-assistant.io/ /docs/ecosystem/ios/devices_file https://companion.home-assistant.io/ @@ -376,24 +389,24 @@ layout: null /getting-started/autostart-systemd https://community.home-assistant.io/t/autostart-using-systemd/199497 # Add-ons -/addons/cec_scan https://github.com/home-assistant/hassio-addons/blob/master/cec_scan/README.md -/addons/check_config https://github.com/home-assistant/hassio-addons/blob/master/check_config/README.md -/addons/configurator https://github.com/home-assistant/hassio-addons/blob/master/configurator/README.md -/addons/dhcp_server https://github.com/home-assistant/hassio-addons/blob/master/dhcp_server/README.md -/addons/dnsmasq https://github.com/home-assistant/hassio-addons/blob/master/dnsmasq/README.md -/addons/duckdns https://github.com/home-assistant/hassio-addons/blob/master/duckdns/README.md -/addons/git_pull https://github.com/home-assistant/hassio-addons/blob/master/git_pull/README.md -/addons/google_assistant https://github.com/home-assistant/hassio-addons/blob/master/google_assistant/README.md -/addons/homematic https://github.com/home-assistant/hassio-addons/blob/master/homematic/README.md -/addons/lets_encrypt https://github.com/home-assistant/hassio-addons/blob/master/letsencrypt/README.md -/addons/mariadb https://github.com/home-assistant/hassio-addons/blob/master/mariadb/README.md -/addons/mosquitto https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/README.md -/addons/nginx_proxy https://github.com/home-assistant/hassio-addons/blob/master/nginx_proxy/README.md -/addons/rpc_shutdown https://github.com/home-assistant/hassio-addons/blob/master/rpc_shutdown/README.md -/addons/samba https://github.com/home-assistant/hassio-addons/blob/master/samba/README.md -/addons/snips https://github.com/home-assistant/hassio-addons/blob/master/snips/README.md -/addons/ssh https://github.com/home-assistant/hassio-addons/blob/master/ssh/README.md -/addons/tellstick https://github.com/home-assistant/hassio-addons/blob/master/tellstick/README.md +/addons/cec_scan https://github.com/home-assistant/addons/blob/master/cec_scan/README.md +/addons/check_config https://github.com/home-assistant/addons/blob/master/check_config/README.md +/addons/configurator https://github.com/home-assistant/addons/blob/master/configurator/README.md +/addons/dhcp_server https://github.com/home-assistant/addons/blob/master/dhcp_server/README.md +/addons/dnsmasq https://github.com/home-assistant/addons/blob/master/dnsmasq/README.md +/addons/duckdns https://github.com/home-assistant/addons/blob/master/duckdns/README.md +/addons/git_pull https://github.com/home-assistant/addons/blob/master/git_pull/README.md +/addons/google_assistant https://github.com/home-assistant/addons/blob/master/google_assistant/README.md +/addons/homematic https://github.com/home-assistant/addons/blob/master/homematic/README.md +/addons/lets_encrypt https://github.com/home-assistant/addons/blob/master/letsencrypt/README.md +/addons/mariadb https://github.com/home-assistant/addons/blob/master/mariadb/README.md +/addons/mosquitto https://github.com/home-assistant/addons/blob/master/mosquitto/README.md +/addons/nginx_proxy https://github.com/home-assistant/addons/blob/master/nginx_proxy/README.md +/addons/rpc_shutdown https://github.com/home-assistant/addons/blob/master/rpc_shutdown/README.md +/addons/samba https://github.com/home-assistant/addons/blob/master/samba/README.md +/addons/snips https://github.com/home-assistant/addons/blob/master/snips/README.md +/addons/ssh https://github.com/home-assistant/addons/blob/master/ssh/README.md +/addons/tellstick https://github.com/home-assistant/addons/blob/master/tellstick/README.md # Redirect old /demo to new demo page /demo https://demo.home-assistant.io @@ -466,6 +479,7 @@ layout: null /integrations/gearbest /more-info/removed-integration 301 /integrations/geizhals /more-info/removed-integration 301 /integrations/gntp /more-info/removed-integration 301 +/integrations/goalfeed /more-info/removed-integration 301 /integrations/gpmdp /more-info/removed-integration 301 /integrations/griddy /more-info/removed-integration 301 /integrations/hangouts /more-info/removed-integration 301 diff --git a/source/blue/index.html b/source/blue/index.html index 7925a686254..9b76f8d148b 100644 --- a/source/blue/index.html +++ b/source/blue/index.html @@ -37,6 +37,7 @@ frontpage_image: /images/frontpage/blue-frontpage.jpg

    Discontinued! The edition of the Blue was — limited. We are out of stock, with no plans to relaunch this edition.

    Sorry you missed it. The new kid on the block is Home Assistant Yellow.

    +

    Lover of ODROID? This way, please.

    You know what else is blue, pretty, and has our logo on it? Home Assistant SkyConnect.

    diff --git a/source/changelogs/core-2023.6.markdown b/source/changelogs/core-2023.6.markdown new file mode 100644 index 00000000000..99330cbc5ca --- /dev/null +++ b/source/changelogs/core-2023.6.markdown @@ -0,0 +1,1629 @@ +--- +title: Full Changelog for Home Assistant Core 2023.6 +description: Detailed changelog for the Home Assistant Core 2023.6 release +--- + +These are all the changes included in the Home Assistant Core 2023.6 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/06/07/release-20236/). + +## Full Changelog + +- Bump version to 2023.6.0dev0 ([@frenck] - [#92081]) +- Bump pylaunches from 1.3.0 to 1.4.0 ([@ludeeus] - [#92061]) +- Update syrupy to 4.0.2 ([@frenck] - [#92089]) +- Update sentry-sdk to 1.21.0 ([@frenck] - [#92087]) +- Improve TAI8570 ignore tests in onewire ([@epenet] - [#92113]) +- Use snapshot in onewire diagnostics tests ([@epenet] - [#92112]) +- Add filters to upcoming launch library launches ([@ludeeus] - [#92110]) +- Resolve warnings due to incorrectly defined entities in airthings_ble ([@doug-hoffman] - [#92097]) +- Update Home Assistant base image to 2023.04.2 - Python 3.11 ([@frenck] - [#92114]) +- Remove usbutils from machine builds ([@frenck] - [#91942]) +- Cleanup pybluez from machine builds ([@frenck] - [#92122]) +- Bump pyTibber to 0.27.2 ([@bdraco] - [#92136]) +- Remove legacy pip resolver ([@frenck] - [#92124]) +- Fix release build for armhf, exclude pandas ([@frenck] - [#92159]) +- Fix lingering timer in Axis library ([@Kane610] - [#92143]) +- Remove homeassistant from cloud dependencies ([@emontnemery] - [#92169]) +- Fix hassio with python3.11 ([@bdraco] - [#92178]) +- Remove homeassistant from conversation dependencies ([@emontnemery] - [#92170]) +- Fix lingering timer in lifx discovery ([@epenet] - [#92185]) +- Fix typo in anova integration ([@wrt54g] - [#92191]) +- Fix lingering timer in broadlink ([@epenet] - [#92179]) +- Update URLs in PR template ([@wrt54g] - [#92194]) +- Improve init type hints in enocean ([@epenet] - [#92176]) +- Add as_dict cache to Context and Event ([@bdraco] - [#92162]) +- Fix lingering timer in feedreader ([@epenet] - [#92180]) +- Fix lingering timer in qld_bushfire ([@epenet] - [#92189]) +- Use enum sensor device class in Z-Wave ([@raman325] - [#92029]) +- Cleanup onewire tests ([@epenet] - [#92117]) +- Fix incorrect entity category for isy994 sensors ([@frenck] - [#92233]) +- Fix incorrect entity category for flux_led sensors ([@frenck] - [#92234]) +- Removing self from SQL sensor CODEOWNERS ([@dgomes] - [#92250]) +- Speed up purging the database ([@bdraco] - [#92247]) +- Bump LaCrosse View to version 1.0.1 ([@IceBotYT] - [#92213]) +- Add diagnostics to LaCrosse View ([@IceBotYT] - [#92212]) +- Update pyfibaro to 0.7.1 ([@frenck] - [#92248]) +- Remove deprecated ISY994 Insteon and variable sensor entities ([@shbatm] - [#92255]) +- NextBus: Correct iot_class ([@ViViDboarder] - [#92208]) +- Update requests to 2.29.0 ([@frenck] - [#92231]) +- Add myself as codeowner to Rituals perfume genie ([@frenck] - [#92261]) +- Fix incorrect entity category for huawei_lte sensors ([@frenck] - [#92235]) +- Fix incorrect entity category for SmartThings sensors ([@frenck] - [#92232]) +- Update coverage to 7.2.4 ([@frenck] - [#92229]) +- Update orjson to 3.8.11 ([@frenck] - [#92228]) +- Remove myself from switcher_kis codeowners ([@TomerFi] - [#92277]) +- Extract Rituals Perfume Genie DataUpdateCoordinator into module ([@frenck] - [#92284]) +- Move lastfm constants to separate file ([@joostlek] - [#92289]) +- Home Connect add WasherDryer support ([@stickpin] - [#90673]) +- Use SnapshotAssertion in Renault tests ([@epenet] - [#90778]) +- Add `date` platform ([@raman325] - [#81948]) +- Avoid returning statistics columns that the metadata knows are impossible ([@bdraco] - [#92095]) +- Only store and pass around coordinator in Rituals Perfume Genie ([@frenck] - [#92298]) +- Deprecate legacy Works With Nest (again) ([@allenporter] - [#92304]) +- Add `time` platform ([@raman325] - [#81949]) +- Cleanup code from nest yaml migration and OOB auth deprecation ([@allenporter] - [#92311]) +- Bump anova version ([@Lash-L] - [#92206]) +- Improve fritz generic typing ([@cdce8p] - [#92327]) +- Migrate unique IDs of Rituals Perfume Genie ([@frenck] - [#92342]) +- Add date and time platforms to core files ([@raman325] - [#92343]) +- Bump zeroconf to 0.60.0 ([@bdraco] - [#92335]) +- Bump zeroconf to 0.61.0 ([@bdraco] - [#92424]) +- Fix lingering timer in shelly ([@epenet] - [#92466]) +- Drop tmpdir from media_source tests ([@epenet] - [#92478]) +- Add type hints to tests ([@epenet] - [#92477]) +- Fix lingering timer in kostal_plenticore ([@epenet] - [#92473]) +- Fix lingering timer in kira tests ([@epenet] - [#92471]) +- Fix lingering timer in jewish_calendar ([@epenet] - [#92470]) +- Bump zeroconf to 0.62.0 ([@bdraco] - [#92444]) +- Fix lingering timer in sabnzbd ([@epenet] - [#92462]) +- Fix lingering timer in rflink ([@epenet] - [#92460]) +- Bump dbus-fast to 1.86.0 ([@bdraco] - [#92435]) +- Move naming of entities in Rituals Perfume Genie ([@frenck] - [#92482]) +- Adjust type hints in CloudClient ([@emontnemery] - [#92465]) +- Fix lingering timer in rfxtrx ([@epenet] - [#92461]) +- Add entity descriptions to binary sensors of Rituals Perfume Genie ([@frenck] - [#92485]) +- Fix lingering timer in lifx ([@epenet] - [#92476]) +- Small improvement of assist_pipeline test coverage ([@emontnemery] - [#92115]) +- Fix lingering timer in demo geo_location ([@epenet] - [#92514]) +- Fix lingering timer in elkm1 ([@epenet] - [#92517]) +- Fix lingering timer in duckdns ([@epenet] - [#92516]) +- Fix lingering timer in cloud ([@epenet] - [#92498]) +- Add entity descriptions to numbers of Rituals Perfume Genie ([@frenck] - [#92486]) +- Add entity descriptions to switch of Rituals Perfume Genie ([@frenck] - [#92531]) +- Wait for mqtt client to become available ([@jbouwh] - [#92524]) +- Refactor multipan options flow ([@emontnemery] - [#92175]) +- Add entity descriptions to sensors of Rituals Perfume Genie ([@frenck] - [#92527]) +- Add entity descriptions to selects of Rituals Perfume Genie ([@frenck] - [#92522]) +- Add support for setting NumberMode using NumberEntityDescription ([@rrooggiieerr] - [#92427]) +- Refactor of unique ID and entity description handling in Rituals Perfume Genie ([@frenck] - [#92545]) +- Fix KeyError in rest ([@epenet] - [#92464]) +- Use selectors in Trafikverket Train ([@gjohansson-ST] - [#92554]) +- Fix lingering timer in hdmi_cec ([@epenet] - [#92579]) +- Fix lingering timer in freedns ([@epenet] - [#92572]) +- Migrate rest switch to httpx ([@epenet] - [#90768]) +- Fix switchbot binary sensor translation key ([@ollo69] - [#92557]) +- Add ability to shutdown a coordinator on STOP ([@epenet] - [#92611]) +- Remove deprecated service for rainbird ([@gjohansson-ST] - [#92601]) +- Remove yaml import rainbird ([@gjohansson-ST] - [#92599]) +- Improve and enforce type hints for imap ([@jbouwh] - [#92325]) +- Add JVC Projector integration ([@SteveEasley] - [#84748]) +- Remove issue from skybell ([@gjohansson-ST] - [#92602]) +- Remove yaml config issue from steam_online ([@gjohansson-ST] - [#92592]) +- Bump pytrafikverket to 0.3.1 ([@gjohansson-ST] - [#92425]) +- Address connection error wording in Honeywell ([@mkmer] - [#92488]) +- Dont reload integration on auth error in Aladdin Connect ([@mkmer] - [#92399]) +- Add diagnostics to devolo Home Control ([@Shutgun] - [#86069]) +- Cleanup Insteon to use Platform vs DOMAIN constants ([@teharris1] - [#92366]) +- Assemble platforms upfront in devolo Home Network ([@Shutgun] - [#80126]) +- Fix devolo home lint errors from ruff ([@farmio] - [#92649]) +- Improve internet/API error handling for BMW ([@rikroe] - [#90274]) +- Remove deprecated Vallox YAML configuration ([@slovdahl] - [#91096]) +- Add nibe heat pump water heater entities ([@elupus] - [#79099]) +- Add charging target sensor to bmw_connected_drive ([@cpoulsen] - [#92628]) +- Add media_player platform to Android TV Remote ([@Drafteed] - [#91677]) +- Remove issue from pushover ([@gjohansson-ST] - [#92595]) +- Bump anova_wifi to 0.10.0 to add better debug ([@Lash-L] - [#92686]) +- Bump pysensibo to 1.0.28 ([@gjohansson-ST] - [#92684]) +- Update pylint to 2.17.4 ([@cdce8p] - [#92703]) +- Remove dlink yaml import ([@gjohansson-ST] - [#92590]) +- Change IO_OUTLET_ENGINE sensor from Liter to Cubic Meters Per Hour in Overkiz ([@iMicknl] - [#92704]) +- Update onvif error checking to use explict None check ([@bdraco] - [#92642]) +- Minor cleanup config flow Workday ([@gjohansson-ST] - [#92163]) +- Fix lingering timer in generic_hygrostat ([@epenet] - [#92575]) +- Improve reliablity of recorder purge test ([@bdraco] - [#92641]) +- Reduce overhead to check bluetooth logging ([@bdraco] - [#92512]) +- Clean config flow for SQL ([@gjohansson-ST] - [#92332]) +- Fix radio_id can be unavailable ([@wlcrs] - [#92698]) +- Add config flow to dwd_weather_warnings ([@andarotajo] - [#91040]) +- Add diagnostic sensors for TotalConnect ([@austinmroczek] - [#73152]) +- Add AC current limit and Pre entry climatization ([@gerard33] - [#92688]) +- Add button platform to devolo Home Network ([@Shutgun] - [#85834]) +- Fix regression in Skybell ([@tkdrob] - [#92735]) +- Cleanup after removing D-Link yaml ([@tkdrob] - [#92739]) +- Bump nibe to 2.2.0 ([@elupus] - [#92740]) +- Fix regression in rainbird ([@gjohansson-ST] - [#92745]) +- Add debug logs for EDL21 ([@StephanU] - [#92763]) +- Bump pytrafikverket to 0.3.3 ([@gjohansson-ST] - [#92761]) +- Manual trigger entity and refactor command_line switch ([@gjohansson-ST] - [#91506]) +- Bump hass-nabucasa to 0.67.1 ([@emontnemery] - [#92484]) +- Merge pending MQTT subscribes to a single call to the paho client ([@jbouwh] - [#92172]) +- Lock entity options ([@gjohansson-ST] - [#88139]) +- Drop unused argument in hassio ([@epenet] - [#92820]) +- Debounce and group mqtt unsubscribes ([@jbouwh] - [#92201]) +- Fix lingering timer in hue light tests ([@epenet] - [#92858]) +- Bump panacotta to 0.2 ([@kernelpanic85] - [#92797]) +- Fix lingering timer in hassio ([@epenet] - [#92854]) +- Allow setting an entity's name by its device class ([@emontnemery] - [#90767]) +- Move raise on MQTT publish outside lock ([@jbouwh] - [#92860]) +- Bump samsungtvws to 2.6.0 ([@epenet] - [#92876]) +- Correct workday strings typo ([@arkid15r] - [#92880]) +- Add config flow to geo_json_events ([@exxamalte] - [#87062]) +- Bump azure-servicebus to 7.10.0 ([@kashifkhan] - [#92866]) +- Add minor comment to assist development in aurora_abb_powerone ([@davet2001] - [#90936]) +- Add counter.set_value service ([@frenck] - [#92863]) +- Alexa Intent: Use the 'id' field and expose nearest resolutions as variables ([@AzonInc] - [#86709]) +- Add a custom panel for KNX with a group monitor ([@farmio] - [#92355]) +- User config flow and custom panel for Dynalite integration ([@ziv1234] - [#77181]) +- Adjust link for Airthings (cloud) devices ([@LaStrada] - [#92922]) +- Fix missing f-string in async_track_utc_time_change ([@bdraco] - [#92916]) +- Update mypy to 1.3.0 ([@cdce8p] - [#92911]) +- Add model name to Airthings integration ([@LaStrada] - [#92921]) +- Fix lingering timer in flux ([@epenet] - [#92573]) +- Fix lingering timer in iaqualink ([@epenet] - [#92856]) +- Migrate rest notify to httpx ([@epenet] - [#90769]) +- Support calculating changes between consecutive sum statistics ([@emontnemery] - [#92823]) +- Add tts get engine ws command ([@bramkragten] - [#92336]) +- Mark entities from the sun as diagnostic ([@frenck] - [#92909]) +- Include data for entire periods in response to recorder/statistics_during_period ([@emontnemery] - [#92848]) +- Move Netgear LTE constants to their own file ([@tkdrob] - [#92924]) +- Move nextbus constants and utils ([@ViViDboarder] - [#92211]) +- Bump sqlalchemy to 2.0.13 ([@bdraco] - [#92936]) +- Move Netgear LTE entity to its own file ([@tkdrob] - [#92944]) +- Remove stale comment from sensor.const ([@emontnemery] - [#92974]) +- Add sensor device class volatile_organic_compounds_parts ([@emontnemery] - [#92973]) +- Speed up validating domains in templates ([@bdraco] - [#92975]) +- Add unique_id support to history_stats sensor ([@piotrtobolski] - [#92972]) +- Small speed up to validating entity ids ([@bdraco] - [#92970]) +- Minor typing adjustment in entity_platform ([@emontnemery] - [#92978]) +- Move Netgear LTE services to their own file ([@tkdrob] - [#92945]) +- Filter replaying unrelated retained MQTT messages when subscribing to share topics ([@jbouwh] - [#88826]) +- Add Airzone fan speed support ([@Noltari] - [#92840]) +- Fix yolink dimmer Incorrect state update ([@matrixd2] - [#92986]) +- Teach UnitlessRatioConverter about ppm and ppb ([@emontnemery] - [#92989]) +- Improve websocket throughput and reduce latency ([@bdraco] - [#92967]) +- Poll Reolink motion when ONVIF not available ([@starkillerOG] - [#92837]) +- Bump orjson to 3.8.12 ([@bdraco] - [#92935]) +- Adding newly supported language codes to Google TTS ([@justasrutkauskas] - [#93030]) +- fixed typo ([@imerla1] - [#93029]) +- Cache ip address stringify in zeroconf ([@bdraco] - [#92800]) +- Log last message when websocket reaches peak limit ([@bdraco] - [#93038]) +- Switch to using a ContextVar for template RenderInfo ([@bdraco] - [#93016]) +- Small performance improvements to state diff messages ([@bdraco] - [#92963]) +- Use futures instead of asyncio.Event for async_get_integrations ([@bdraco] - [#93060]) +- Add MEASUREMENT state class to Sense Voltage sensors ([@ptr727] - [#93044]) +- Bump pysml to 0.0.11 ([@StephanU] - [#93035]) +- Remove default unit of measurement in IHC sensors ([@dingusdk] - [#93054]) +- Add missing mock in wiffi tests ([@epenet] - [#93083]) +- Bump aioecowitt 2023.5.0 ([@pvizeli] - [#93094]) +- Fix lingering timer in withings ([@epenet] - [#93085]) +- Remove snapcast friendly_name attribute ([@luar123] - [#93116]) +- Bump aioesphomeapi to 13.7.5 ([@bdraco] - [#93121]) +- Bump snapcast to 2.3.3 ([@luar123] - [#93112]) +- Re-enable cleanup_closed on cpython >= 3.11.4 ([@bdraco] - [#93120]) +- Add KNX interface device trigger for telegrams ([@farmio] - [#93102]) +- Bump devolo_plc_api to 1.3.1 ([@Shutgun] - [#93099]) +- Allow wemo config entry to be unloaded ([@epenet] - [#93082]) +- Bump guppy3 to 3.1.3 ([@bdraco] - [#93124]) +- Speed up reconnects by caching state serialize ([@bdraco] - [#93050]) +- Bump PyJWT to 2.7.0 ([@bdraco] - [#93128]) +- Fix lingering timer in usgs_earthquakes_feed ([@epenet] - [#93084]) +- Update aioairzone to v0.5.6 ([@Noltari] - [#93146]) +- Huawei LTE connection management cleanups ([@scop] - [#85929]) +- Remove as_compressed_state cache ([@bdraco] - [#93169]) +- Create Google Generative AI Conversation integration ([@tronikos] - [#93156]) +- Cache generation of the service descriptions ([@bdraco] - [#93131]) +- KNX Group Monitor: Load latest 50 Telegrams on start ([@farmio] - [#93153]) +- Fix failure to register services in dynalite ([@ziv1234] - [#93069]) +- Increase size of valid entity id cache ([@bdraco] - [#93125]) +- Add missing entity attribute translations to humidifier entity component ([@frenck] - [#93206]) +- Add virtual integration: Piper ([@frenck] - [#93182]) +- Add virtual integration: Whisper ([@frenck] - [#93183]) +- Add light entity to Tuya Air Purifiers ([@Megabytemb] - [#92861]) +- Add support for SimpliSafe Smoke+CO detector ([@bachya] - [#93217]) +- Speed up signing paths ([@bdraco] - [#93127]) +- Fix lingering timer in esphome ([@epenet] - [#92533]) +- Fix lingering timers in yeelight ([@epenet] - [#92118]) +- Use entity translation in dsmr ([@elupus] - [#93017]) +- Update UpCloud config entry data on successful reconfig ([@scop] - [#68718]) +- Add option to disable webhooks in ONVIF ([@bdraco] - [#93186]) +- Add always connected option to Yale Access Bluetooth ([@bdraco] - [#93224]) +- Bump pypck to 0.7.17 ([@alengwenus] - [#93234]) +- Raise on reauth in devolo Home Network switch platform ([@Shutgun] - [#92850]) +- Capture warnings.warn and friends messages in logs ([@scop] - [#85875]) +- Bump rapt-ble to v0.1.1 ([@sairon] - [#93242]) +- Convert proximity to be async ([@bdraco] - [#93241]) +- Mark oralb devices as sleepy ([@bdraco] - [#93250]) +- Bump Roborock to 17.0 adding device specific support and bugfixes ([@Lash-L] - [#92547]) +- Add MASK wallets to Coinbase ([@TomBrien] - [#90742]) +- Add new integration to control Electra Smart HVAC devices ([@jafar-atili] - [#70361]) +- Bump pyoverkiz to 1.7.9 ([@iMicknl] - [#93275]) +- Bump sqlalchemy to 2.0.15 ([@bdraco] - [#93293]) +- Fix lookin falling back to polling too quickly ([@bdraco] - [#93227]) +- Add change service to timer ([@gjohansson-ST] - [#84775]) +- Fix import issue in Workday ([@gjohansson-ST] - [#92727]) +- Bump bimmer_connected to 0.13.6 ([@rikroe] - [#93307]) +- Fix shutdown being delayed for cancelling tasks ([@bdraco] - [#93287]) +- Fix double call to options in sensor state ([@bdraco] - [#93311]) +- Bump `accuweather` to version 1.0.0 ([@bieniu] - [#93305]) +- Fix Broadlink discovery for new RM Mini3 (again) ([@henryptung] - [#93158]) +- Bump motionblinds to 0.6.18 ([@starkillerOG] - [#93300]) +- Add support for sleepy BTHome devices ([@Ernst79] - [#92991]) +- Add zeroconf support to roomba ([@bdraco] - [#93309]) +- Improve http handler performance ([@bdraco] - [#93324]) +- Bump TwitchAPI to 3.10.0 ([@joostlek] - [#92418]) +- Add scaffolds to vscode tasks ([@Lash-L] - [#92015]) +- Fix pressure for AEMET stations close to sea level ([@Noltari] - [#87094]) +- Update sentry-sdk to 1.23.1 ([@frenck] - [#93330]) +- Update apprise to 1.4.0 ([@frenck] - [#93331]) +- Use slots for template RenderInfo ([@bdraco] - [#93337]) +- Plugwise prepare typing for binary_sensor ([@CoMPaTech] - [#93162]) +- Add advanced imap option to set custom event max message size ([@jbouwh] - [#93163]) +- Improve test coverage for zwave_js ([@raman325] - [#93262]) +- Move Hydrawise constants into const.py ([@dknowles2] - [#93357]) +- Add myself as a code owner of the Hydrawise integration ([@dknowles2] - [#93358]) +- Update zwave-me-ws version to 0.4.3 ([@lawfulchaos] - [#93348]) +- Deprecate counter.configure service ([@frenck] - [#93343]) +- Adjust counter to not restore configuration parameters ([@frenck] - [#93344]) +- Update Home Assistant base image to 2023.05.0 ([@frenck] - [#93350]) +- Move HydrawiseEntity into entity.py ([@dknowles2] - [#93359]) +- Make mqtt device_tracker state_topic optional when json_attribute_topic is used ([@jbouwh] - [#93322]) +- Improve test coverage for zwave_js.trigger ([@raman325] - [#93260]) +- Refactor zwave_js.sensor and add test coverage ([@raman325] - [#93259]) +- Bugfix and small refactor for zwave_js.device_action ([@raman325] - [#93261]) +- Refactor zwave_js.fan and add tests ([@raman325] - [#93256]) +- Bugfix and add test coverage for zwave_js.light ([@raman325] - [#93257]) +- Configurable KNX Telegram history size ([@farmio] - [#93248]) +- Use snapshots in devolo_home_control tests ([@Shutgun] - [#93202]) +- Update requests to 2.31.0 ([@frenck] - [#93363]) +- Add new sensors to AccuWeather ([@bieniu] - [#93362]) +- Plugwise add value_fn for switch ([@CoMPaTech] - [#93345]) +- Plugwise binary_sensor typing improvement ([@CoMPaTech] - [#93371]) +- Add WS command for getting a config entry ([@emontnemery] - [#93387]) +- Change snapcast to local_push ([@luar123] - [#93113]) +- Support Airzone temperature ranges (HEAT_COOL) ([@Noltari] - [#93110]) +- Bump mystrom to 2.2.0 ([@pail23] - [#93389]) +- Cleanup deprecated YAML from samsungtv ([@epenet] - [#93392]) +- Get kostal plenticore hostname id from get_settings ([@erikbadman] - [#93008]) +- Cleanup samsungtv strings ([@epenet] - [#93395]) +- Add Ezviz update entity ([@RenierM26] - [#85377]) +- Bump protobuf to 4.23.1 ([@bdraco] - [#93338]) +- Bump ifaddr to 0.2.0 ([@bdraco] - [#93377]) +- Add climate on/off for supported BMW vehicles ([@rikroe] - [#92962]) +- Improve error message for sensors with a non-numeric value ([@emontnemery] - [#93399]) +- Clean up Insteon config_flow ([@teharris1] - [#93004]) +- Remove @bachya as a Slack codeowner ([@bachya] - [#93408]) +- Add new preset to Tado to enable geofencing mode ([@chiefdragon] - [#92877]) +- Add QNAP QSW firmware update support ([@Noltari] - [#92869]) +- Add Airzone Cloud integration ([@Noltari] - [#93238]) +- Improve dwd_weather_warnings code quality ([@andarotajo] - [#92738]) +- Fix trusted_users group schema ([@patrickli] - [#92847]) +- Add Yale Home virtual integration ([@bdraco] - [#93364]) +- Plugwise add value_fn for select ([@CoMPaTech] - [#93375]) +- Airzone select improvements ([@Noltari] - [#92894]) +- Add tests for Microsoft TTS ([@daradib] - [#92215]) +- Bump ha-av to v10.1.0 ([@uvjustin] - [#93420]) +- Change utility_meter log level for invalid old state ([@ollo69] - [#93026]) +- Update quality scale of devolo Home Control ([@Shutgun] - [#92646]) +- Move Twitch constants to separate file ([@joostlek] - [#92605]) +- Add ability to unload demo integration ([@epenet] - [#92515]) +- Use SnapshotAssertion in Renault tests (part 2) ([@epenet] - [#92395]) +- Fix reference string in data disk repair ([@mdegat01] - [#93220]) +- remove template deprecated function `device_trigger.py` ([@Ludy87] - [#93419]) +- Bump PySwitchbee to 1.8.0 ([@jafar-atili] - [#92348]) +- Remove unused zwave discovery logic ([@raman325] - [#93436]) +- Add backup location and mount failed repair ([@mdegat01] - [#93126]) +- Update aioairzone-cloud to v0.1.3 ([@Noltari] - [#93443]) +- Remove legacy translations from electrasmart ([@frenck] - [#93446]) +- Enable strict type checks of cloud ([@emontnemery] - [#92576]) +- Fully Kiosk: Truncate long URLs ([@mheath] - [#92347]) +- Bump pygti and change the request for the new api version ([@vigonotion] - [#92283]) +- Implement OpenSky library ([@joostlek] - [#92814]) +- Prevent SensorEntity and RestoreEntity inheritance ([@epenet] - [#88971]) +- Add UDP listener in Lightwave ([@ColinRobbins] - [#85385]) +- Add a DataUpdateCoordinator to Hydrawise ([@dknowles2] - [#93223]) +- Fix directv attribute media_position_updated_at ([@jgrieger1] - [#92383]) +- Bump pydeconz to v112 ([@ad0p] - [#91924]) +- Fix todoist state updates ([@boralyl] - [#91915]) +- Set available state in fibaro integration ([@rappenze] - [#91893]) +- Code cleanup: Separate fibaro scene logic ([@rappenze] - [#91895]) +- Update name for Notification CC sensors and buttons ([@raman325] - [#93019]) +- Do optimistic state update for Z-Wave multilevel switch entities ([@raman325] - [#90490]) +- Add proper support for zwave_js Indicator CC ([@raman325] - [#90248]) +- Add gateway WAN/LAN port connectivity entities to TP-Link Omada ([@MarkGodwin] - [#91905]) +- Prevent firmware update error when internet blocked for Reolink camera ([@starkillerOG] - [#91738]) +- Add resize_keyboard and one_time_keyboard attributes to telegram bot service ([@Vova-SH] - [#91613]) +- Show current day in met weather forecast ([@mmalina] - [#91891]) +- Improve zwave.cover tests ([@raman325] - [#93458]) +- Update binary_sensor tests to avoid patching utcnow ([@bdraco] - [#93474]) +- Update generic_thermostat tests to avoid patching utcnow ([@bdraco] - [#93479]) +- Add Roborock Consumable sensors ([@Lash-L] - [#91972]) +- Update integration tests to avoid patching utcnow ([@bdraco] - [#93480]) +- Update derivative tests to avoid patching utcnow ([@bdraco] - [#93477]) +- Update generic_hygrostat tests to avoid patching utcnow ([@bdraco] - [#93476]) +- Prevent NumberEntity and RestoreEntity inheritance ([@epenet] - [#93467]) +- Improve TTS cache dir mocking ([@emontnemery] - [#93468]) +- Minor adjustment of tts typing ([@emontnemery] - [#93450]) +- Use call_at for events instead call_later ([@bdraco] - [#93431]) +- Fix Airzone min/max climate temperatures ([@Noltari] - [#93161]) +- Fix Roborock Sensor test failing ([@Lash-L] - [#93488]) +- Refactor zwave_js.cover ([@raman325] - [#93433]) +- Update statistics tests to avoid patching utcnow ([@bdraco] - [#93485]) +- Update light tests to avoid patching utcnow ([@bdraco] - [#93490]) +- Fix integration trapezoidal test ([@bdraco] - [#93494]) +- Update remote tests to avoid patching utcnow ([@bdraco] - [#93492]) +- Update switch tests to avoid patching utcnow ([@bdraco] - [#93491]) +- Update history tests to avoid patching utcnow ([@bdraco] - [#93487]) +- Add constraint for pyminiaudio to 1.57 ([@bdraco] - [#93501]) +- Update state helper test to avoid patching utcnow ([@bdraco] - [#93484]) +- Update statistics tests to avoid patching utcnow ([@bdraco] - [#93499]) +- Update recorder tests to avoid patching utcnow ([@bdraco] - [#93489]) +- Support volume level push updates in apple_tv integration ([@michalmo] - [#93496]) +- Update sensor tests to avoid patching utcnow ([@bdraco] - [#93497]) +- Readable paired device names for Apple TV airplay and companion protocols ([@michalmo] - [#93449]) +- Fix for missing/corrupt names of Matter devices ([@marcelveldt] - [#92073]) +- Update prometheus tests to avoid patching utcnow ([@bdraco] - [#93505]) +- Small speedup to unifiprotect attribute lookups ([@bdraco] - [#93507]) +- Improve hydrawise typing ([@cdce8p] - [#93503]) +- Bump actions/setup-python from 4.6.0 to 4.6.1 (@dependabot - [#93512]) +- YoLink Power Failure Alarm ([@matrixd2] - [#91934]) +- Fix/arest switch ([@disaster37] - [#91553]) +- Scrape Microsoft TTS supported languages ([@daradib] - [#91988]) +- Add Airzone Cloud diagnostics ([@Noltari] - [#93465]) +- Add imap custom event data template ([@jbouwh] - [#93423]) +- Add Ezviz number entity ([@RenierM26] - [#93366]) +- Add Kodi keypress event ([@starkillerOG] - [#93321]) +- Fix exception handling in Microsoft TTS ([@daradib] - [#92556]) +- Improve TTS test fixtures ([@emontnemery] - [#93517]) +- Code quality improvements and debug logs for LaCrosse View ([@IceBotYT] - [#91979]) +- Fix of cover-tilt in homekit_controller ([@badewanne1234] - [#91631]) +- Improve blueprint test fixtures ([@emontnemery] - [#93519]) +- Speed up setting state ([@bdraco] - [#93472]) +- Lastfm config flow ([@joostlek] - [#92299]) +- Add ability to send custom keys to Samsung TV ([@peitschie] - [#83439]) +- Use DEFAULT_SCAN_INTERVAL as update interval for glances ([@freeDom-] - [#93535]) +- Bump zeroconf to 0.63.0 ([@bdraco] - [#93533]) +- Update aioairzone-cloud to v0.1.6 ([@Noltari] - [#93513]) +- Revert "Allow setting an entity's name by its device class" ([@emontnemery] - [#93539]) +- Mark as `assumed_state` LG Netcast media player ([@Drafteed] - [#93543]) +- Add illuminance sensor for Shelly gen2 devices ([@bieniu] - [#93559]) +- Avoid KeyError when specifying the consumption type in Shelly integration ([@bieniu] - [#93561]) +- Add support for configuring built-in Melnor Bluetooth scheduling system ([@vanstinator] - [#93333]) +- Speed up async_active_zone by avoiding dict lookups ([@bdraco] - [#93427]) +- Significantly speed up recorder event listener ([@bdraco] - [#93532]) +- Fix not retrying on connection reset during nexia config entry setup ([@bdraco] - [#93576]) +- Significantly improve performance of conversation default_agent listening for new states ([@bdraco] - [#93577]) +- Complete persistent notifications migration ([@bdraco] - [#92828]) +- Increase timeout for test_purge_many_old_events ([@bdraco] - [#93579]) +- Add entity name translations to Rituals Perfume Genie ([@frenck] - [#92549]) +- Add type hints for stub_blueprint_populate fixture ([@jbouwh] - [#93568]) +- Remove redundant stub_blueprint_populate fixture for MQTT integration ([@jbouwh] - [#93570]) +- Remove platform yaml Frontier Silicon ([@gjohansson-ST] - [#93552]) +- Remove EDL21 YAML configuration ([@gjohansson-ST] - [#93551]) +- Remove obihai YAMl configuration ([@gjohansson-ST] - [#93549]) +- Update frontend to 20230526.0 ([@bramkragten] - [#93581]) +- Fix mill tests ([@emontnemery] - [#93596]) +- Fix sharkiq tests ([@emontnemery] - [#93597]) +- Use entity attributes in mystrom ([@pail23] - [#93591]) +- Add CONFIG_SCHEMA to analytics ([@emontnemery] - [#93598]) +- Bump androidtvremote2 to 0.0.9 ([@Drafteed] - [#93634]) +- Fix todoist end time for tasks with due date in the future ([@boralyl] - [#91874]) +- Add YouTube integration ([@joostlek] - [#92988]) +- Update aioairzone to v0.6.1 ([@Noltari] - [#93629]) +- Switch some frequently called call_laters to call_at ([@bdraco] - [#93659]) +- Use httpx instead of requests for mjpeg camera images that need digest to avoid jump to executor ([@bdraco] - [#93244]) +- Reduce overhead to filter entities in the recorder ([@bdraco] - [#93656]) +- Collapse valid state check when creating a state ([@bdraco] - [#93655]) +- Improve performance when serializing small bits of JSON ([@bdraco] - [#93653]) +- Disable polling on energy sensors ([@bdraco] - [#93651]) +- Disable polling for samsungtv remote entities ([@bdraco] - [#93650]) +- Await in sequence when we know we will be blocked by the entity platform semaphore ([@bdraco] - [#93649]) +- Disable call_soon for device tracker device registry updates ([@bdraco] - [#93638]) +- Speed up processing subscribe_events and subscribe_entites when user has read all permissions ([@bdraco] - [#93611]) +- Add event helper to dispatch device registry updates by device_id ([@bdraco] - [#93602]) +- Make diagnostics dataclasses sloted ([@bdraco] - [#93600]) +- Add reauth flow to Youtube ([@joostlek] - [#93670]) +- Add hardware model to onvif config flow discovery ([@bdraco] - [#93676]) +- Improve OpenSky typing ([@joostlek] - [#93666]) +- Use config entry setup in cast tests ([@emontnemery] - [#93595]) +- Update dialogflow URL ([@wrt54g] - [#93616]) +- Improve Youtube integration ([@joostlek] - [#93683]) +- Update xknx to 2.10.0 and knx-frontend to 2023.5.28.94855 ([@farmio] - [#93694]) +- Make cv.empty_config_schema log an error instead of raise ([@emontnemery] - [#93646]) +- Fix refactoring error with updating polling entities in sequence ([@bdraco] - [#93693]) +- Fix typo in ping ([@emontnemery] - [#93701]) +- Improve async youtube ([@joostlek] - [#93685]) +- Raise issue "does not support platform setup" ([@gjohansson-ST] - [#93585]) +- Fix typo in switcher_kis ([@emontnemery] - [#93702]) +- Restore original websocket commands for config entries ([@marvin-w] - [#93707]) +- Add Options flow to YouTube ([@joostlek] - [#93667]) +- Move yaml configuration to integration key for command_line ([@gjohansson-ST] - [#92824]) +- Do not trigger reload when unloading or reloading MQTT entry ([@jbouwh] - [#93588]) +- Switch mqtt to use async_track_device_registry_updated_event ([@bdraco] - [#93603]) +- Bump Blinkpy to 0.21.0 ([@mkmer] - [#93735]) +- Drop codeowner for radiotherm ([@bdraco] - [#93744]) +- Add Roborock Clean time sensors ([@Lash-L] - [#93637]) +- Bump pysml to 0.0.12 ([@StephanU] - [#93686]) +- Address late review comments for Command Line ([@gjohansson-ST] - [#93743]) +- Don't mock non async with AsyncMock ([@elupus] - [#93749]) +- Fix possible KeyError exception in Airzone Cloud ([@Noltari] - [#93747]) +- Access datetime.datetime and .time directly in caldav ([@scop] - [#93688]) +- Remove nextcloud YAML configuration ([@gjohansson-ST] - [#93550]) +- Add empty config schema to integrations a-c ([@emontnemery] - [#93608]) +- Reduce overhead to update unifiprotect entity ([@bdraco] - [#93725]) +- Fix unit inference for ITEMP field for APCUPSD integration ([@yuxincs] - [#93724]) +- Add overkiz control for ATLANTIC_PASS_APC_HEATING_ZONE ([@jgarec] - [#93712]) +- Make unit converter use a factory to avoid looking up the ratios each conversion ([@bdraco] - [#93706]) +- Fix onvif setup failing when unable to parse camera time ([@bdraco] - [#93677]) +- Add empty config schema to integrations p-s ([@emontnemery] - [#93700]) +- Add empty config schema to integrations i-o ([@emontnemery] - [#93698]) +- Add empty config schema to integrations d-h ([@emontnemery] - [#93645]) +- Detect attempt to setup config entry integration via YAML ([@emontnemery] - [#93589]) +- Add Aidoo sensors to Airzone Cloud ([@Noltari] - [#93541]) +- Import `util.dt` as `dt_util` in `components/[e-f]*` ([@scop] - [#93758]) +- Import `util.dt` as `dt_util` in `components/[t-z]*` ([@scop] - [#93763]) +- Import `util.dt` as `dt_util` in `components/[g-i]*` ([@scop] - [#93759]) +- Import `util.dt` as `dt_util` in `components/[a-d]*` ([@scop] - [#93756]) +- Import `util.dt` as `dt_util` in `components/[k-o]*` ([@scop] - [#93760]) +- Import `util.dt` as `dt_util` in `components/[p-s]*` ([@scop] - [#93761]) +- Add `datetime` platform ([@raman325] - [#81943]) +- Ensure state update after BMW remote service execution ([@rikroe] - [#93745]) +- Add entity name translations to Buienradar ([@joostlek] - [#91511]) +- Reduce overhead to match homekit zeroconf discoveries ([@bdraco] - [#93753]) +- Bump pydaikin 2.9.1 ([@mover85] - [#93635]) +- Add charging switch to BMW Connected Drive ([@rikroe] - [#93737]) +- Reduce overhead to fetch integrations ([@bdraco] - [#93767]) +- Avoid dict comp in statistic_during_period if there is no conversion ([@bdraco] - [#93699]) +- Add a filter to the tasmota device registry listener ([@bdraco] - [#93640]) +- Update pydantic to 1.10.8 ([@cdce8p] - [#93772]) +- Fix failing todoist test that used timezone before set by fixture ([@allenporter] - [#93775]) +- Remove unneeded icon for Roborock sensor ([@Lash-L] - [#93774]) +- Speed up creating automations ([@bdraco] - [#93776]) +- Use entity attributes in Obihai sensor ([@gjohansson-ST] - [#93564]) +- Adapt otbr to upstream openthread REST API changes ([@emontnemery] - [#93544]) +- Add WebServer sensors to Airzone Cloud ([@Noltari] - [#93757]) +- Fix broken URL in MQTT discovery log message ([@bdr99] - [#93778]) +- Bump python-otbr-api to 2.1.0 ([@emontnemery] - [#93790]) +- Add tilt support to Matter cover ([@Diegorro98] - [#92256]) +- Delay release of HA Python release until Docker is ready ([@frenck] - [#93798]) +- Teach search about blueprints ([@emontnemery] - [#78535]) +- Deduplicate Thread datasets based on EXTPANID ([@emontnemery] - [#93795]) +- Sonos setup fails with unhandled exceptions on discovery messages ([@PeteRager] - [#90648]) +- Add support for Window Covering CC ([@raman325] - [#93314]) +- Fix race in rfxtrx config flow ([@emontnemery] - [#93804]) +- Add zwave config parameter entities ([@raman325] - [#92223]) +- Deprecate Python 3.10 ([@frenck] - [#93794]) +- Add more information to Roborock Status ([@Lash-L] - [#93636]) +- Add translations to Roborock fan speed ([@Lash-L] - [#93801]) +- Fix switch acting as toggle in Sensibo ([@gjohansson-ST] - [#93810]) +- Remove outdated HAOS check from bluetooth ([@bdraco] - [#93809]) +- Fix double state write on camera added to hass when rtsp_to_webrtc is present ([@bdraco] - [#93806]) +- Use deployment environment in GitHub build actions ([@frenck] - [#93800]) +- Add ssl_verify option to imap integration ([@jbouwh] - [#93811]) +- Add zwave_js node statistics sensors ([@raman325] - [#91714]) +- Add docker config repair for supervisor issue ([@mdegat01] - [#93820]) +- Bump intents to 2023.5.30 ([@synesthesiam] - [#93822]) +- Don't skip chunk before speech ([@synesthesiam] - [#93825]) +- Import `util.dt` as `dt_util` in remaining tests, enforce with ruff ([@scop] - [#93765]) +- Get nightly intents from new intents-package repo ([@frenck] - [#93826]) +- Fix false reolink ONVIF webhook warning ([@starkillerOG] - [#91015]) +- Add speech detection and conversation_id to esphome voice assistant ([@jesserockz] - [#93578]) +- Fix error if a `custom_sentences` file is empty ([@tetele] - [#93530]) +- Directly check string representation of sensor states in APCUPSD tests ([@yuxincs] - [#93783]) +- Update iotawattpy to use our own fork ([@agners] - [#93830]) +- Use ReadOnlyDict for entity registry options ([@bdraco] - [#93824]) +- Speed up setting up event trackers ([@bdraco] - [#93823]) +- Add coordinator to dwd_weather_warnings ([@andarotajo] - [#93720]) +- Remove mqtt sensor support for `last_reset_topic` ([@jbouwh] - [#93792]) +- Add Switch platform to Roborock ([@Lash-L] - [#93833]) +- Add a debounce to ld2410 to prevent it from overwhelming the state machine with many devices ([@bdraco] - [#93819]) +- Translate entity names for Yale Smart Living ([@gjohansson-ST] - [#93560]) +- Translate config flow for sensor measurement option in group ([@gjohansson-ST] - [#87374]) +- Add translation for Trafikverket Weatherstation sensor ([@gjohansson-ST] - [#87315]) +- Obihai to have common unique_ids with DHCP or without ([@ejpenney] - [#91239]) +- Reolink autotrack streams for TrackMix and high/low resolution snapshots ([@starkillerOG] - [#90591]) +- Migrate restore_state helper to use registry loading pattern ([@bdraco] - [#93773]) +- Calculate \_attr_native_value when no restore state and appliance is running in Whirlpool ([@mkmer] - [#88559]) +- Language codes for Hebrew ([@leranp] - [#93681]) +- Bump zwave-js-server-python to 0.49.0 ([@raman325] - [#93835]) +- Add non coordinated Entity to Roborock ([@Lash-L] - [#93841]) +- Swallow error 40000 for songpal power on/off ([@rytilahti] - [#80563]) +- Rename confusing device info in Roborock ([@Lash-L] - [#93843]) +- Support zwave config parameters not on endpoint 0 ([@raman325] - [#93383]) +- Remove MQTT platform schema warnings ([@jbouwh] - [#93785]) +- Add issue when integration key YAML not supported ([@gjohansson-ST] - [#93807]) +- Drop incorrect CONFIG_SCHEMA from the homeassistant integration ([@emontnemery] - [#93850]) +- Improve no-yaml warning ([@emontnemery] - [#93851]) +- Add empty config schema to integrations t-z ([@emontnemery] - [#93853]) +- Cleanup unnecessary pylance warnings ([@raman325] - [#93849]) +- Subscribe to device registry changes from entities ([@emontnemery] - [#93601]) +- Rework mqtt climate platform to simplify implementation water_heater platform ([@jbouwh] - [#93751]) +- Fix Timer change service ([@gjohansson-ST] - [#93469]) +- Fix event typing ([@cdce8p] - [#93859]) +- Add support for Energy Production CC sensors ([@raman325] - [#93839]) +- Improve Z-Wave support for Ultraviolet multilevel sensor values ([@raman325] - [#93848]) +- Bump ZHA quirks ([@dmulcahey] - [#93860]) +- Use library constants for Airzone Cloud diagnostics ([@Noltari] - [#93858]) +- Add support for "days" unit for STESTI sensor in APCUPSD integration ([@yuxincs] - [#93844]) +- Add Status indicator light switch to Roborock ([@Lash-L] - [#93842]) +- Glances: Improve performance ([@freeDom-] - [#93852]) +- Matter cover position improvements ([@Diegorro98] - [#92278]) +- Block legacy get-mac in preference of getmac ([@mark007] - [#87712]) +- Standardize spelling of TTS and STT ([@c0ffeeca7] - [#93857]) +- Add time component to Melnor Bluetooth integration ([@vanstinator] - [#93652]) +- Simplify get pipeline method ([@balloob] - [#93865]) +- Add error handling for all zwave_js service calls ([@raman325] - [#93846]) +- Give zwave_js platinum quality score ([@raman325] - [#93845]) +- Update knx-frontend to 2023.5.31.141540 ([@farmio] - [#93864]) +- Update frontend to 20230531.0 ([@bramkragten] - [#93862]) +- Move Z-Wave refresh value service out of task ([@raman325] - [#93866]) +- Always update Filter sensors attr on new_state ([@dgomes] - [#89096]) +- Delay filter integration until after HA has started ([@dgomes] - [#91034]) +- Update aioairzone-cloud to v0.1.7 ([@Noltari] - [#93871]) +- Increase Zigbee command retries ([@puddly] - [#93877]) +- Bump frontend to 20230601.0 ([@balloob] - [#93884]) +- Add `silabs_multiprotocol` platform ([@emontnemery] - [#92904]) +- Fix LaMetric Config Flow for SKY ([@spyfly] - [#93483]) +- Raise exception instead of hide in logs on zha write ([@elupus] - [#93571]) +- Make RestoreStateData.async_get_instance backwards compatible ([@bdraco] - [#93924]) +- Update frontend to 20230601.1 ([@bramkragten] - [#93927]) +- Fix onvif cameras that use basic auth with no password ([@bdraco] - [#93928]) +- Bump python-onvif-zeep to 3.1.9 ([@bdraco] - [#93930]) +- Bump pyunifiprotect to 4.9.1 ([@bdraco] - [#93931]) +- Fix states not being translated in voice assistants ([@tetele] - [#93572]) +- Make Riemann sum sensors restore last valid state ([@dgomes] - [#93674]) +- Update pyipp to 0.13.0 ([@ctalkington] - [#93886]) +- Update netdata to 1.1.0, set longer timeout ([@automaton82] - [#93937]) +- Fix august aiohttp session being closed out from under it ([@bdraco] - [#93942]) +- Bump aiohomekit to 2.6.4 ([@bdraco] - [#93943]) +- Make Z-Wave device IBT4ZWAVE discoverable as a cover ([@raman325] - [#93946]) +- Improve logic for zwave_js.lock.is_locked attr ([@raman325] - [#93947]) +- Add scan interval to Command Line ([@gjohansson-ST] - [#93752]) +- Catch Google Sheets api error ([@tkdrob] - [#93979]) +- Fix error in tibber while fetching latest statistics ([@tronikos] - [#93998]) +- Add video id to youtube sensor state attributes ([@joostlek] - [#93668]) +- Show the sensor state using the coordinatordata instead of initial data ([@joostlek] - [#94008]) +- Bump xiaomi-ble to 0.17.2 ([@Ernst79] - [#94011]) +- Android TV Remote: Abort zeroconf if mac address is missing ([@tronikos] - [#94026]) +- Remove update_before_add from binary_sensor in Command Line ([@gjohansson-ST] - [#94040]) +- Update pynuki to 1.6.2 ([@pree] - [#94041]) +- Fix zwave_js.update entity restore logic ([@raman325] - [#94043]) +- Bump zeroconf to 0.64.0 ([@bdraco] - [#94052]) +- Don't add Roborock switches if it is not supported ([@Lash-L] - [#94069]) +- Bump intents to 2023.6.5 ([@synesthesiam] - [#94077]) +- Update frontend to 20230605.0 ([@bramkragten] - [#94083]) +- Fix reload service in Command Line ([@gjohansson-ST] - [#94085]) +- Include port info in the ZHA websocket settings response ([@puddly] - [#93934]) +- Add missing translation keys for Roborock mop intensity ([@Lash-L] - [#94088]) +- Bump aiounifi to v48 - Fix fail to initialise due to board_rev not exist ([@Kane610] - [#94093]) +- fix: Bump melnor-bluetooth to fix deadlock ([@vanstinator] - [#94098]) +- Add diagnostics to Roborock ([@Lash-L] - [#94099]) +- Update aioairzone to v0.6.3 and fix issue with latest firmware update ([@Noltari] - [#94100]) +- Bump Roborock to 0.21.0 ([@Lash-L] - [#94035]) +- Bump python-roborock to 23.4 ([@Lash-L] - [#94111]) +- Verify persistant notifications can be dismissed by the id they are created with ([@bdraco] - [#94112]) +- Update frontend to 20230606.0 ([@bramkragten] - [#94119]) +- Remove `mark_read` service from persistent_notification ([@bdraco] - [#94122]) +- Revert "Increase Zigbee command retries (#93877)" ([@puddly] - [#94123]) +- Bump aiobafi6 to 0.8.2 ([@jfroy] - [#94125]) +- Remove goalfeed integration ([@thecode] - [#94129]) +- Correct zha device classes for voc and pm25 ([@elupus] - [#94130]) +- Fix multiple smart detects firing at once for UniFi Protect ([@AngellusMortis] - [#94133]) +- Bump waqiasync to 1.1.0 ([@balloob] - [#94136]) + +[#68718]: https://github.com/home-assistant/core/pull/68718 +[#70361]: https://github.com/home-assistant/core/pull/70361 +[#73152]: https://github.com/home-assistant/core/pull/73152 +[#77181]: https://github.com/home-assistant/core/pull/77181 +[#78535]: https://github.com/home-assistant/core/pull/78535 +[#79099]: https://github.com/home-assistant/core/pull/79099 +[#80126]: https://github.com/home-assistant/core/pull/80126 +[#80563]: https://github.com/home-assistant/core/pull/80563 +[#81943]: https://github.com/home-assistant/core/pull/81943 +[#81948]: https://github.com/home-assistant/core/pull/81948 +[#81949]: https://github.com/home-assistant/core/pull/81949 +[#83439]: https://github.com/home-assistant/core/pull/83439 +[#84748]: https://github.com/home-assistant/core/pull/84748 +[#84775]: https://github.com/home-assistant/core/pull/84775 +[#85377]: https://github.com/home-assistant/core/pull/85377 +[#85385]: https://github.com/home-assistant/core/pull/85385 +[#85834]: https://github.com/home-assistant/core/pull/85834 +[#85875]: https://github.com/home-assistant/core/pull/85875 +[#85929]: https://github.com/home-assistant/core/pull/85929 +[#86069]: https://github.com/home-assistant/core/pull/86069 +[#86709]: https://github.com/home-assistant/core/pull/86709 +[#87062]: https://github.com/home-assistant/core/pull/87062 +[#87094]: https://github.com/home-assistant/core/pull/87094 +[#87315]: https://github.com/home-assistant/core/pull/87315 +[#87374]: https://github.com/home-assistant/core/pull/87374 +[#87712]: https://github.com/home-assistant/core/pull/87712 +[#88139]: https://github.com/home-assistant/core/pull/88139 +[#88559]: https://github.com/home-assistant/core/pull/88559 +[#88826]: https://github.com/home-assistant/core/pull/88826 +[#88971]: https://github.com/home-assistant/core/pull/88971 +[#89096]: https://github.com/home-assistant/core/pull/89096 +[#90248]: https://github.com/home-assistant/core/pull/90248 +[#90274]: https://github.com/home-assistant/core/pull/90274 +[#90490]: https://github.com/home-assistant/core/pull/90490 +[#90591]: https://github.com/home-assistant/core/pull/90591 +[#90648]: https://github.com/home-assistant/core/pull/90648 +[#90673]: https://github.com/home-assistant/core/pull/90673 +[#90742]: https://github.com/home-assistant/core/pull/90742 +[#90767]: https://github.com/home-assistant/core/pull/90767 +[#90768]: https://github.com/home-assistant/core/pull/90768 +[#90769]: https://github.com/home-assistant/core/pull/90769 +[#90778]: https://github.com/home-assistant/core/pull/90778 +[#90936]: https://github.com/home-assistant/core/pull/90936 +[#91015]: https://github.com/home-assistant/core/pull/91015 +[#91034]: https://github.com/home-assistant/core/pull/91034 +[#91040]: https://github.com/home-assistant/core/pull/91040 +[#91096]: https://github.com/home-assistant/core/pull/91096 +[#91239]: https://github.com/home-assistant/core/pull/91239 +[#91506]: https://github.com/home-assistant/core/pull/91506 +[#91511]: https://github.com/home-assistant/core/pull/91511 +[#91553]: https://github.com/home-assistant/core/pull/91553 +[#91613]: https://github.com/home-assistant/core/pull/91613 +[#91631]: https://github.com/home-assistant/core/pull/91631 +[#91677]: https://github.com/home-assistant/core/pull/91677 +[#91714]: https://github.com/home-assistant/core/pull/91714 +[#91738]: https://github.com/home-assistant/core/pull/91738 +[#91874]: https://github.com/home-assistant/core/pull/91874 +[#91891]: https://github.com/home-assistant/core/pull/91891 +[#91893]: https://github.com/home-assistant/core/pull/91893 +[#91895]: https://github.com/home-assistant/core/pull/91895 +[#91905]: https://github.com/home-assistant/core/pull/91905 +[#91915]: https://github.com/home-assistant/core/pull/91915 +[#91924]: https://github.com/home-assistant/core/pull/91924 +[#91934]: https://github.com/home-assistant/core/pull/91934 +[#91942]: https://github.com/home-assistant/core/pull/91942 +[#91972]: https://github.com/home-assistant/core/pull/91972 +[#91979]: https://github.com/home-assistant/core/pull/91979 +[#91988]: https://github.com/home-assistant/core/pull/91988 +[#92015]: https://github.com/home-assistant/core/pull/92015 +[#92029]: https://github.com/home-assistant/core/pull/92029 +[#92061]: https://github.com/home-assistant/core/pull/92061 +[#92073]: https://github.com/home-assistant/core/pull/92073 +[#92081]: https://github.com/home-assistant/core/pull/92081 +[#92087]: https://github.com/home-assistant/core/pull/92087 +[#92089]: https://github.com/home-assistant/core/pull/92089 +[#92095]: https://github.com/home-assistant/core/pull/92095 +[#92097]: https://github.com/home-assistant/core/pull/92097 +[#92110]: https://github.com/home-assistant/core/pull/92110 +[#92112]: https://github.com/home-assistant/core/pull/92112 +[#92113]: https://github.com/home-assistant/core/pull/92113 +[#92114]: https://github.com/home-assistant/core/pull/92114 +[#92115]: https://github.com/home-assistant/core/pull/92115 +[#92117]: https://github.com/home-assistant/core/pull/92117 +[#92118]: https://github.com/home-assistant/core/pull/92118 +[#92122]: https://github.com/home-assistant/core/pull/92122 +[#92124]: https://github.com/home-assistant/core/pull/92124 +[#92136]: https://github.com/home-assistant/core/pull/92136 +[#92143]: https://github.com/home-assistant/core/pull/92143 +[#92159]: https://github.com/home-assistant/core/pull/92159 +[#92162]: https://github.com/home-assistant/core/pull/92162 +[#92163]: https://github.com/home-assistant/core/pull/92163 +[#92169]: https://github.com/home-assistant/core/pull/92169 +[#92170]: https://github.com/home-assistant/core/pull/92170 +[#92172]: https://github.com/home-assistant/core/pull/92172 +[#92175]: https://github.com/home-assistant/core/pull/92175 +[#92176]: https://github.com/home-assistant/core/pull/92176 +[#92178]: https://github.com/home-assistant/core/pull/92178 +[#92179]: https://github.com/home-assistant/core/pull/92179 +[#92180]: https://github.com/home-assistant/core/pull/92180 +[#92185]: https://github.com/home-assistant/core/pull/92185 +[#92189]: https://github.com/home-assistant/core/pull/92189 +[#92191]: https://github.com/home-assistant/core/pull/92191 +[#92194]: https://github.com/home-assistant/core/pull/92194 +[#92201]: https://github.com/home-assistant/core/pull/92201 +[#92206]: https://github.com/home-assistant/core/pull/92206 +[#92208]: https://github.com/home-assistant/core/pull/92208 +[#92211]: https://github.com/home-assistant/core/pull/92211 +[#92212]: https://github.com/home-assistant/core/pull/92212 +[#92213]: https://github.com/home-assistant/core/pull/92213 +[#92215]: https://github.com/home-assistant/core/pull/92215 +[#92223]: https://github.com/home-assistant/core/pull/92223 +[#92228]: https://github.com/home-assistant/core/pull/92228 +[#92229]: https://github.com/home-assistant/core/pull/92229 +[#92231]: https://github.com/home-assistant/core/pull/92231 +[#92232]: https://github.com/home-assistant/core/pull/92232 +[#92233]: https://github.com/home-assistant/core/pull/92233 +[#92234]: https://github.com/home-assistant/core/pull/92234 +[#92235]: https://github.com/home-assistant/core/pull/92235 +[#92247]: https://github.com/home-assistant/core/pull/92247 +[#92248]: https://github.com/home-assistant/core/pull/92248 +[#92250]: https://github.com/home-assistant/core/pull/92250 +[#92255]: https://github.com/home-assistant/core/pull/92255 +[#92256]: https://github.com/home-assistant/core/pull/92256 +[#92261]: https://github.com/home-assistant/core/pull/92261 +[#92277]: https://github.com/home-assistant/core/pull/92277 +[#92278]: https://github.com/home-assistant/core/pull/92278 +[#92283]: https://github.com/home-assistant/core/pull/92283 +[#92284]: https://github.com/home-assistant/core/pull/92284 +[#92289]: https://github.com/home-assistant/core/pull/92289 +[#92298]: https://github.com/home-assistant/core/pull/92298 +[#92299]: https://github.com/home-assistant/core/pull/92299 +[#92304]: https://github.com/home-assistant/core/pull/92304 +[#92311]: https://github.com/home-assistant/core/pull/92311 +[#92325]: https://github.com/home-assistant/core/pull/92325 +[#92327]: https://github.com/home-assistant/core/pull/92327 +[#92332]: https://github.com/home-assistant/core/pull/92332 +[#92335]: https://github.com/home-assistant/core/pull/92335 +[#92336]: https://github.com/home-assistant/core/pull/92336 +[#92342]: https://github.com/home-assistant/core/pull/92342 +[#92343]: https://github.com/home-assistant/core/pull/92343 +[#92347]: https://github.com/home-assistant/core/pull/92347 +[#92348]: https://github.com/home-assistant/core/pull/92348 +[#92355]: https://github.com/home-assistant/core/pull/92355 +[#92366]: https://github.com/home-assistant/core/pull/92366 +[#92383]: https://github.com/home-assistant/core/pull/92383 +[#92395]: https://github.com/home-assistant/core/pull/92395 +[#92399]: https://github.com/home-assistant/core/pull/92399 +[#92418]: https://github.com/home-assistant/core/pull/92418 +[#92424]: https://github.com/home-assistant/core/pull/92424 +[#92425]: https://github.com/home-assistant/core/pull/92425 +[#92427]: https://github.com/home-assistant/core/pull/92427 +[#92435]: https://github.com/home-assistant/core/pull/92435 +[#92444]: https://github.com/home-assistant/core/pull/92444 +[#92460]: https://github.com/home-assistant/core/pull/92460 +[#92461]: https://github.com/home-assistant/core/pull/92461 +[#92462]: https://github.com/home-assistant/core/pull/92462 +[#92464]: https://github.com/home-assistant/core/pull/92464 +[#92465]: https://github.com/home-assistant/core/pull/92465 +[#92466]: https://github.com/home-assistant/core/pull/92466 +[#92470]: https://github.com/home-assistant/core/pull/92470 +[#92471]: https://github.com/home-assistant/core/pull/92471 +[#92473]: https://github.com/home-assistant/core/pull/92473 +[#92476]: https://github.com/home-assistant/core/pull/92476 +[#92477]: https://github.com/home-assistant/core/pull/92477 +[#92478]: https://github.com/home-assistant/core/pull/92478 +[#92482]: https://github.com/home-assistant/core/pull/92482 +[#92484]: https://github.com/home-assistant/core/pull/92484 +[#92485]: https://github.com/home-assistant/core/pull/92485 +[#92486]: https://github.com/home-assistant/core/pull/92486 +[#92488]: https://github.com/home-assistant/core/pull/92488 +[#92498]: https://github.com/home-assistant/core/pull/92498 +[#92512]: https://github.com/home-assistant/core/pull/92512 +[#92514]: https://github.com/home-assistant/core/pull/92514 +[#92515]: https://github.com/home-assistant/core/pull/92515 +[#92516]: https://github.com/home-assistant/core/pull/92516 +[#92517]: https://github.com/home-assistant/core/pull/92517 +[#92522]: https://github.com/home-assistant/core/pull/92522 +[#92524]: https://github.com/home-assistant/core/pull/92524 +[#92527]: https://github.com/home-assistant/core/pull/92527 +[#92531]: https://github.com/home-assistant/core/pull/92531 +[#92533]: https://github.com/home-assistant/core/pull/92533 +[#92545]: https://github.com/home-assistant/core/pull/92545 +[#92547]: https://github.com/home-assistant/core/pull/92547 +[#92549]: https://github.com/home-assistant/core/pull/92549 +[#92554]: https://github.com/home-assistant/core/pull/92554 +[#92556]: https://github.com/home-assistant/core/pull/92556 +[#92557]: https://github.com/home-assistant/core/pull/92557 +[#92572]: https://github.com/home-assistant/core/pull/92572 +[#92573]: https://github.com/home-assistant/core/pull/92573 +[#92575]: https://github.com/home-assistant/core/pull/92575 +[#92576]: https://github.com/home-assistant/core/pull/92576 +[#92579]: https://github.com/home-assistant/core/pull/92579 +[#92590]: https://github.com/home-assistant/core/pull/92590 +[#92592]: https://github.com/home-assistant/core/pull/92592 +[#92595]: https://github.com/home-assistant/core/pull/92595 +[#92599]: https://github.com/home-assistant/core/pull/92599 +[#92601]: https://github.com/home-assistant/core/pull/92601 +[#92602]: https://github.com/home-assistant/core/pull/92602 +[#92605]: https://github.com/home-assistant/core/pull/92605 +[#92611]: https://github.com/home-assistant/core/pull/92611 +[#92628]: https://github.com/home-assistant/core/pull/92628 +[#92641]: https://github.com/home-assistant/core/pull/92641 +[#92642]: https://github.com/home-assistant/core/pull/92642 +[#92646]: https://github.com/home-assistant/core/pull/92646 +[#92649]: https://github.com/home-assistant/core/pull/92649 +[#92684]: https://github.com/home-assistant/core/pull/92684 +[#92686]: https://github.com/home-assistant/core/pull/92686 +[#92688]: https://github.com/home-assistant/core/pull/92688 +[#92698]: https://github.com/home-assistant/core/pull/92698 +[#92703]: https://github.com/home-assistant/core/pull/92703 +[#92704]: https://github.com/home-assistant/core/pull/92704 +[#92727]: https://github.com/home-assistant/core/pull/92727 +[#92735]: https://github.com/home-assistant/core/pull/92735 +[#92738]: https://github.com/home-assistant/core/pull/92738 +[#92739]: https://github.com/home-assistant/core/pull/92739 +[#92740]: https://github.com/home-assistant/core/pull/92740 +[#92745]: https://github.com/home-assistant/core/pull/92745 +[#92761]: https://github.com/home-assistant/core/pull/92761 +[#92763]: https://github.com/home-assistant/core/pull/92763 +[#92797]: https://github.com/home-assistant/core/pull/92797 +[#92800]: https://github.com/home-assistant/core/pull/92800 +[#92814]: https://github.com/home-assistant/core/pull/92814 +[#92820]: https://github.com/home-assistant/core/pull/92820 +[#92823]: https://github.com/home-assistant/core/pull/92823 +[#92824]: https://github.com/home-assistant/core/pull/92824 +[#92828]: https://github.com/home-assistant/core/pull/92828 +[#92837]: https://github.com/home-assistant/core/pull/92837 +[#92840]: https://github.com/home-assistant/core/pull/92840 +[#92847]: https://github.com/home-assistant/core/pull/92847 +[#92848]: https://github.com/home-assistant/core/pull/92848 +[#92850]: https://github.com/home-assistant/core/pull/92850 +[#92854]: https://github.com/home-assistant/core/pull/92854 +[#92856]: https://github.com/home-assistant/core/pull/92856 +[#92858]: https://github.com/home-assistant/core/pull/92858 +[#92860]: https://github.com/home-assistant/core/pull/92860 +[#92861]: https://github.com/home-assistant/core/pull/92861 +[#92863]: https://github.com/home-assistant/core/pull/92863 +[#92866]: https://github.com/home-assistant/core/pull/92866 +[#92869]: https://github.com/home-assistant/core/pull/92869 +[#92876]: https://github.com/home-assistant/core/pull/92876 +[#92877]: https://github.com/home-assistant/core/pull/92877 +[#92880]: https://github.com/home-assistant/core/pull/92880 +[#92894]: https://github.com/home-assistant/core/pull/92894 +[#92904]: https://github.com/home-assistant/core/pull/92904 +[#92909]: https://github.com/home-assistant/core/pull/92909 +[#92911]: https://github.com/home-assistant/core/pull/92911 +[#92916]: https://github.com/home-assistant/core/pull/92916 +[#92921]: https://github.com/home-assistant/core/pull/92921 +[#92922]: https://github.com/home-assistant/core/pull/92922 +[#92924]: https://github.com/home-assistant/core/pull/92924 +[#92935]: https://github.com/home-assistant/core/pull/92935 +[#92936]: https://github.com/home-assistant/core/pull/92936 +[#92944]: https://github.com/home-assistant/core/pull/92944 +[#92945]: https://github.com/home-assistant/core/pull/92945 +[#92962]: https://github.com/home-assistant/core/pull/92962 +[#92963]: https://github.com/home-assistant/core/pull/92963 +[#92967]: https://github.com/home-assistant/core/pull/92967 +[#92970]: https://github.com/home-assistant/core/pull/92970 +[#92972]: https://github.com/home-assistant/core/pull/92972 +[#92973]: https://github.com/home-assistant/core/pull/92973 +[#92974]: https://github.com/home-assistant/core/pull/92974 +[#92975]: https://github.com/home-assistant/core/pull/92975 +[#92978]: https://github.com/home-assistant/core/pull/92978 +[#92986]: https://github.com/home-assistant/core/pull/92986 +[#92988]: https://github.com/home-assistant/core/pull/92988 +[#92989]: https://github.com/home-assistant/core/pull/92989 +[#92991]: https://github.com/home-assistant/core/pull/92991 +[#93004]: https://github.com/home-assistant/core/pull/93004 +[#93008]: https://github.com/home-assistant/core/pull/93008 +[#93016]: https://github.com/home-assistant/core/pull/93016 +[#93017]: https://github.com/home-assistant/core/pull/93017 +[#93019]: https://github.com/home-assistant/core/pull/93019 +[#93026]: https://github.com/home-assistant/core/pull/93026 +[#93029]: https://github.com/home-assistant/core/pull/93029 +[#93030]: https://github.com/home-assistant/core/pull/93030 +[#93035]: https://github.com/home-assistant/core/pull/93035 +[#93038]: https://github.com/home-assistant/core/pull/93038 +[#93044]: https://github.com/home-assistant/core/pull/93044 +[#93050]: https://github.com/home-assistant/core/pull/93050 +[#93054]: https://github.com/home-assistant/core/pull/93054 +[#93060]: https://github.com/home-assistant/core/pull/93060 +[#93069]: https://github.com/home-assistant/core/pull/93069 +[#93082]: https://github.com/home-assistant/core/pull/93082 +[#93083]: https://github.com/home-assistant/core/pull/93083 +[#93084]: https://github.com/home-assistant/core/pull/93084 +[#93085]: https://github.com/home-assistant/core/pull/93085 +[#93094]: https://github.com/home-assistant/core/pull/93094 +[#93099]: https://github.com/home-assistant/core/pull/93099 +[#93102]: https://github.com/home-assistant/core/pull/93102 +[#93110]: https://github.com/home-assistant/core/pull/93110 +[#93112]: https://github.com/home-assistant/core/pull/93112 +[#93113]: https://github.com/home-assistant/core/pull/93113 +[#93116]: https://github.com/home-assistant/core/pull/93116 +[#93120]: https://github.com/home-assistant/core/pull/93120 +[#93121]: https://github.com/home-assistant/core/pull/93121 +[#93124]: https://github.com/home-assistant/core/pull/93124 +[#93125]: https://github.com/home-assistant/core/pull/93125 +[#93126]: https://github.com/home-assistant/core/pull/93126 +[#93127]: https://github.com/home-assistant/core/pull/93127 +[#93128]: https://github.com/home-assistant/core/pull/93128 +[#93131]: https://github.com/home-assistant/core/pull/93131 +[#93146]: https://github.com/home-assistant/core/pull/93146 +[#93153]: https://github.com/home-assistant/core/pull/93153 +[#93156]: https://github.com/home-assistant/core/pull/93156 +[#93158]: https://github.com/home-assistant/core/pull/93158 +[#93161]: https://github.com/home-assistant/core/pull/93161 +[#93162]: https://github.com/home-assistant/core/pull/93162 +[#93163]: https://github.com/home-assistant/core/pull/93163 +[#93169]: https://github.com/home-assistant/core/pull/93169 +[#93182]: https://github.com/home-assistant/core/pull/93182 +[#93183]: https://github.com/home-assistant/core/pull/93183 +[#93186]: https://github.com/home-assistant/core/pull/93186 +[#93202]: https://github.com/home-assistant/core/pull/93202 +[#93206]: https://github.com/home-assistant/core/pull/93206 +[#93217]: https://github.com/home-assistant/core/pull/93217 +[#93220]: https://github.com/home-assistant/core/pull/93220 +[#93223]: https://github.com/home-assistant/core/pull/93223 +[#93224]: https://github.com/home-assistant/core/pull/93224 +[#93227]: https://github.com/home-assistant/core/pull/93227 +[#93234]: https://github.com/home-assistant/core/pull/93234 +[#93238]: https://github.com/home-assistant/core/pull/93238 +[#93241]: https://github.com/home-assistant/core/pull/93241 +[#93242]: https://github.com/home-assistant/core/pull/93242 +[#93244]: https://github.com/home-assistant/core/pull/93244 +[#93248]: https://github.com/home-assistant/core/pull/93248 +[#93250]: https://github.com/home-assistant/core/pull/93250 +[#93256]: https://github.com/home-assistant/core/pull/93256 +[#93257]: https://github.com/home-assistant/core/pull/93257 +[#93259]: https://github.com/home-assistant/core/pull/93259 +[#93260]: https://github.com/home-assistant/core/pull/93260 +[#93261]: https://github.com/home-assistant/core/pull/93261 +[#93262]: https://github.com/home-assistant/core/pull/93262 +[#93275]: https://github.com/home-assistant/core/pull/93275 +[#93287]: https://github.com/home-assistant/core/pull/93287 +[#93293]: https://github.com/home-assistant/core/pull/93293 +[#93300]: https://github.com/home-assistant/core/pull/93300 +[#93305]: https://github.com/home-assistant/core/pull/93305 +[#93307]: https://github.com/home-assistant/core/pull/93307 +[#93309]: https://github.com/home-assistant/core/pull/93309 +[#93311]: https://github.com/home-assistant/core/pull/93311 +[#93314]: https://github.com/home-assistant/core/pull/93314 +[#93321]: https://github.com/home-assistant/core/pull/93321 +[#93322]: https://github.com/home-assistant/core/pull/93322 +[#93324]: https://github.com/home-assistant/core/pull/93324 +[#93330]: https://github.com/home-assistant/core/pull/93330 +[#93331]: https://github.com/home-assistant/core/pull/93331 +[#93333]: https://github.com/home-assistant/core/pull/93333 +[#93337]: https://github.com/home-assistant/core/pull/93337 +[#93338]: https://github.com/home-assistant/core/pull/93338 +[#93343]: https://github.com/home-assistant/core/pull/93343 +[#93344]: https://github.com/home-assistant/core/pull/93344 +[#93345]: https://github.com/home-assistant/core/pull/93345 +[#93348]: https://github.com/home-assistant/core/pull/93348 +[#93350]: https://github.com/home-assistant/core/pull/93350 +[#93357]: https://github.com/home-assistant/core/pull/93357 +[#93358]: https://github.com/home-assistant/core/pull/93358 +[#93359]: https://github.com/home-assistant/core/pull/93359 +[#93362]: https://github.com/home-assistant/core/pull/93362 +[#93363]: https://github.com/home-assistant/core/pull/93363 +[#93364]: https://github.com/home-assistant/core/pull/93364 +[#93366]: https://github.com/home-assistant/core/pull/93366 +[#93371]: https://github.com/home-assistant/core/pull/93371 +[#93375]: https://github.com/home-assistant/core/pull/93375 +[#93377]: https://github.com/home-assistant/core/pull/93377 +[#93383]: https://github.com/home-assistant/core/pull/93383 +[#93387]: https://github.com/home-assistant/core/pull/93387 +[#93389]: https://github.com/home-assistant/core/pull/93389 +[#93392]: https://github.com/home-assistant/core/pull/93392 +[#93395]: https://github.com/home-assistant/core/pull/93395 +[#93399]: https://github.com/home-assistant/core/pull/93399 +[#93408]: https://github.com/home-assistant/core/pull/93408 +[#93419]: https://github.com/home-assistant/core/pull/93419 +[#93420]: https://github.com/home-assistant/core/pull/93420 +[#93423]: https://github.com/home-assistant/core/pull/93423 +[#93427]: https://github.com/home-assistant/core/pull/93427 +[#93431]: https://github.com/home-assistant/core/pull/93431 +[#93433]: https://github.com/home-assistant/core/pull/93433 +[#93436]: https://github.com/home-assistant/core/pull/93436 +[#93443]: https://github.com/home-assistant/core/pull/93443 +[#93446]: https://github.com/home-assistant/core/pull/93446 +[#93449]: https://github.com/home-assistant/core/pull/93449 +[#93450]: https://github.com/home-assistant/core/pull/93450 +[#93458]: https://github.com/home-assistant/core/pull/93458 +[#93465]: https://github.com/home-assistant/core/pull/93465 +[#93467]: https://github.com/home-assistant/core/pull/93467 +[#93468]: https://github.com/home-assistant/core/pull/93468 +[#93469]: https://github.com/home-assistant/core/pull/93469 +[#93472]: https://github.com/home-assistant/core/pull/93472 +[#93474]: https://github.com/home-assistant/core/pull/93474 +[#93476]: https://github.com/home-assistant/core/pull/93476 +[#93477]: https://github.com/home-assistant/core/pull/93477 +[#93479]: https://github.com/home-assistant/core/pull/93479 +[#93480]: https://github.com/home-assistant/core/pull/93480 +[#93483]: https://github.com/home-assistant/core/pull/93483 +[#93484]: https://github.com/home-assistant/core/pull/93484 +[#93485]: https://github.com/home-assistant/core/pull/93485 +[#93487]: https://github.com/home-assistant/core/pull/93487 +[#93488]: https://github.com/home-assistant/core/pull/93488 +[#93489]: https://github.com/home-assistant/core/pull/93489 +[#93490]: https://github.com/home-assistant/core/pull/93490 +[#93491]: https://github.com/home-assistant/core/pull/93491 +[#93492]: https://github.com/home-assistant/core/pull/93492 +[#93494]: https://github.com/home-assistant/core/pull/93494 +[#93496]: https://github.com/home-assistant/core/pull/93496 +[#93497]: https://github.com/home-assistant/core/pull/93497 +[#93499]: https://github.com/home-assistant/core/pull/93499 +[#93501]: https://github.com/home-assistant/core/pull/93501 +[#93503]: https://github.com/home-assistant/core/pull/93503 +[#93505]: https://github.com/home-assistant/core/pull/93505 +[#93507]: https://github.com/home-assistant/core/pull/93507 +[#93512]: https://github.com/home-assistant/core/pull/93512 +[#93513]: https://github.com/home-assistant/core/pull/93513 +[#93517]: https://github.com/home-assistant/core/pull/93517 +[#93519]: https://github.com/home-assistant/core/pull/93519 +[#93530]: https://github.com/home-assistant/core/pull/93530 +[#93532]: https://github.com/home-assistant/core/pull/93532 +[#93533]: https://github.com/home-assistant/core/pull/93533 +[#93535]: https://github.com/home-assistant/core/pull/93535 +[#93539]: https://github.com/home-assistant/core/pull/93539 +[#93541]: https://github.com/home-assistant/core/pull/93541 +[#93543]: https://github.com/home-assistant/core/pull/93543 +[#93544]: https://github.com/home-assistant/core/pull/93544 +[#93549]: https://github.com/home-assistant/core/pull/93549 +[#93550]: https://github.com/home-assistant/core/pull/93550 +[#93551]: https://github.com/home-assistant/core/pull/93551 +[#93552]: https://github.com/home-assistant/core/pull/93552 +[#93559]: https://github.com/home-assistant/core/pull/93559 +[#93560]: https://github.com/home-assistant/core/pull/93560 +[#93561]: https://github.com/home-assistant/core/pull/93561 +[#93564]: https://github.com/home-assistant/core/pull/93564 +[#93568]: https://github.com/home-assistant/core/pull/93568 +[#93570]: https://github.com/home-assistant/core/pull/93570 +[#93571]: https://github.com/home-assistant/core/pull/93571 +[#93572]: https://github.com/home-assistant/core/pull/93572 +[#93576]: https://github.com/home-assistant/core/pull/93576 +[#93577]: https://github.com/home-assistant/core/pull/93577 +[#93578]: https://github.com/home-assistant/core/pull/93578 +[#93579]: https://github.com/home-assistant/core/pull/93579 +[#93581]: https://github.com/home-assistant/core/pull/93581 +[#93585]: https://github.com/home-assistant/core/pull/93585 +[#93588]: https://github.com/home-assistant/core/pull/93588 +[#93589]: https://github.com/home-assistant/core/pull/93589 +[#93591]: https://github.com/home-assistant/core/pull/93591 +[#93595]: https://github.com/home-assistant/core/pull/93595 +[#93596]: https://github.com/home-assistant/core/pull/93596 +[#93597]: https://github.com/home-assistant/core/pull/93597 +[#93598]: https://github.com/home-assistant/core/pull/93598 +[#93600]: https://github.com/home-assistant/core/pull/93600 +[#93601]: https://github.com/home-assistant/core/pull/93601 +[#93602]: https://github.com/home-assistant/core/pull/93602 +[#93603]: https://github.com/home-assistant/core/pull/93603 +[#93608]: https://github.com/home-assistant/core/pull/93608 +[#93611]: https://github.com/home-assistant/core/pull/93611 +[#93616]: https://github.com/home-assistant/core/pull/93616 +[#93629]: https://github.com/home-assistant/core/pull/93629 +[#93634]: https://github.com/home-assistant/core/pull/93634 +[#93635]: https://github.com/home-assistant/core/pull/93635 +[#93636]: https://github.com/home-assistant/core/pull/93636 +[#93637]: https://github.com/home-assistant/core/pull/93637 +[#93638]: https://github.com/home-assistant/core/pull/93638 +[#93640]: https://github.com/home-assistant/core/pull/93640 +[#93645]: https://github.com/home-assistant/core/pull/93645 +[#93646]: https://github.com/home-assistant/core/pull/93646 +[#93649]: https://github.com/home-assistant/core/pull/93649 +[#93650]: https://github.com/home-assistant/core/pull/93650 +[#93651]: https://github.com/home-assistant/core/pull/93651 +[#93652]: https://github.com/home-assistant/core/pull/93652 +[#93653]: https://github.com/home-assistant/core/pull/93653 +[#93655]: https://github.com/home-assistant/core/pull/93655 +[#93656]: https://github.com/home-assistant/core/pull/93656 +[#93659]: https://github.com/home-assistant/core/pull/93659 +[#93666]: https://github.com/home-assistant/core/pull/93666 +[#93667]: https://github.com/home-assistant/core/pull/93667 +[#93668]: https://github.com/home-assistant/core/pull/93668 +[#93670]: https://github.com/home-assistant/core/pull/93670 +[#93674]: https://github.com/home-assistant/core/pull/93674 +[#93676]: https://github.com/home-assistant/core/pull/93676 +[#93677]: https://github.com/home-assistant/core/pull/93677 +[#93681]: https://github.com/home-assistant/core/pull/93681 +[#93683]: https://github.com/home-assistant/core/pull/93683 +[#93685]: https://github.com/home-assistant/core/pull/93685 +[#93686]: https://github.com/home-assistant/core/pull/93686 +[#93688]: https://github.com/home-assistant/core/pull/93688 +[#93693]: https://github.com/home-assistant/core/pull/93693 +[#93694]: https://github.com/home-assistant/core/pull/93694 +[#93698]: https://github.com/home-assistant/core/pull/93698 +[#93699]: https://github.com/home-assistant/core/pull/93699 +[#93700]: https://github.com/home-assistant/core/pull/93700 +[#93701]: https://github.com/home-assistant/core/pull/93701 +[#93702]: https://github.com/home-assistant/core/pull/93702 +[#93706]: https://github.com/home-assistant/core/pull/93706 +[#93707]: https://github.com/home-assistant/core/pull/93707 +[#93712]: https://github.com/home-assistant/core/pull/93712 +[#93720]: https://github.com/home-assistant/core/pull/93720 +[#93724]: https://github.com/home-assistant/core/pull/93724 +[#93725]: https://github.com/home-assistant/core/pull/93725 +[#93735]: https://github.com/home-assistant/core/pull/93735 +[#93737]: https://github.com/home-assistant/core/pull/93737 +[#93743]: https://github.com/home-assistant/core/pull/93743 +[#93744]: https://github.com/home-assistant/core/pull/93744 +[#93745]: https://github.com/home-assistant/core/pull/93745 +[#93747]: https://github.com/home-assistant/core/pull/93747 +[#93749]: https://github.com/home-assistant/core/pull/93749 +[#93751]: https://github.com/home-assistant/core/pull/93751 +[#93752]: https://github.com/home-assistant/core/pull/93752 +[#93753]: https://github.com/home-assistant/core/pull/93753 +[#93756]: https://github.com/home-assistant/core/pull/93756 +[#93757]: https://github.com/home-assistant/core/pull/93757 +[#93758]: https://github.com/home-assistant/core/pull/93758 +[#93759]: https://github.com/home-assistant/core/pull/93759 +[#93760]: https://github.com/home-assistant/core/pull/93760 +[#93761]: https://github.com/home-assistant/core/pull/93761 +[#93763]: https://github.com/home-assistant/core/pull/93763 +[#93765]: https://github.com/home-assistant/core/pull/93765 +[#93767]: https://github.com/home-assistant/core/pull/93767 +[#93772]: https://github.com/home-assistant/core/pull/93772 +[#93773]: https://github.com/home-assistant/core/pull/93773 +[#93774]: https://github.com/home-assistant/core/pull/93774 +[#93775]: https://github.com/home-assistant/core/pull/93775 +[#93776]: https://github.com/home-assistant/core/pull/93776 +[#93778]: https://github.com/home-assistant/core/pull/93778 +[#93783]: https://github.com/home-assistant/core/pull/93783 +[#93785]: https://github.com/home-assistant/core/pull/93785 +[#93790]: https://github.com/home-assistant/core/pull/93790 +[#93792]: https://github.com/home-assistant/core/pull/93792 +[#93794]: https://github.com/home-assistant/core/pull/93794 +[#93795]: https://github.com/home-assistant/core/pull/93795 +[#93798]: https://github.com/home-assistant/core/pull/93798 +[#93800]: https://github.com/home-assistant/core/pull/93800 +[#93801]: https://github.com/home-assistant/core/pull/93801 +[#93804]: https://github.com/home-assistant/core/pull/93804 +[#93806]: https://github.com/home-assistant/core/pull/93806 +[#93807]: https://github.com/home-assistant/core/pull/93807 +[#93809]: https://github.com/home-assistant/core/pull/93809 +[#93810]: https://github.com/home-assistant/core/pull/93810 +[#93811]: https://github.com/home-assistant/core/pull/93811 +[#93819]: https://github.com/home-assistant/core/pull/93819 +[#93820]: https://github.com/home-assistant/core/pull/93820 +[#93822]: https://github.com/home-assistant/core/pull/93822 +[#93823]: https://github.com/home-assistant/core/pull/93823 +[#93824]: https://github.com/home-assistant/core/pull/93824 +[#93825]: https://github.com/home-assistant/core/pull/93825 +[#93826]: https://github.com/home-assistant/core/pull/93826 +[#93830]: https://github.com/home-assistant/core/pull/93830 +[#93833]: https://github.com/home-assistant/core/pull/93833 +[#93835]: https://github.com/home-assistant/core/pull/93835 +[#93839]: https://github.com/home-assistant/core/pull/93839 +[#93841]: https://github.com/home-assistant/core/pull/93841 +[#93842]: https://github.com/home-assistant/core/pull/93842 +[#93843]: https://github.com/home-assistant/core/pull/93843 +[#93844]: https://github.com/home-assistant/core/pull/93844 +[#93845]: https://github.com/home-assistant/core/pull/93845 +[#93846]: https://github.com/home-assistant/core/pull/93846 +[#93848]: https://github.com/home-assistant/core/pull/93848 +[#93849]: https://github.com/home-assistant/core/pull/93849 +[#93850]: https://github.com/home-assistant/core/pull/93850 +[#93851]: https://github.com/home-assistant/core/pull/93851 +[#93852]: https://github.com/home-assistant/core/pull/93852 +[#93853]: https://github.com/home-assistant/core/pull/93853 +[#93857]: https://github.com/home-assistant/core/pull/93857 +[#93858]: https://github.com/home-assistant/core/pull/93858 +[#93859]: https://github.com/home-assistant/core/pull/93859 +[#93860]: https://github.com/home-assistant/core/pull/93860 +[#93862]: https://github.com/home-assistant/core/pull/93862 +[#93864]: https://github.com/home-assistant/core/pull/93864 +[#93865]: https://github.com/home-assistant/core/pull/93865 +[#93866]: https://github.com/home-assistant/core/pull/93866 +[#93871]: https://github.com/home-assistant/core/pull/93871 +[#93877]: https://github.com/home-assistant/core/pull/93877 +[#93884]: https://github.com/home-assistant/core/pull/93884 +[#93886]: https://github.com/home-assistant/core/pull/93886 +[#93924]: https://github.com/home-assistant/core/pull/93924 +[#93927]: https://github.com/home-assistant/core/pull/93927 +[#93928]: https://github.com/home-assistant/core/pull/93928 +[#93930]: https://github.com/home-assistant/core/pull/93930 +[#93931]: https://github.com/home-assistant/core/pull/93931 +[#93934]: https://github.com/home-assistant/core/pull/93934 +[#93937]: https://github.com/home-assistant/core/pull/93937 +[#93942]: https://github.com/home-assistant/core/pull/93942 +[#93943]: https://github.com/home-assistant/core/pull/93943 +[#93946]: https://github.com/home-assistant/core/pull/93946 +[#93947]: https://github.com/home-assistant/core/pull/93947 +[#93979]: https://github.com/home-assistant/core/pull/93979 +[#93998]: https://github.com/home-assistant/core/pull/93998 +[#94008]: https://github.com/home-assistant/core/pull/94008 +[#94011]: https://github.com/home-assistant/core/pull/94011 +[#94026]: https://github.com/home-assistant/core/pull/94026 +[#94035]: https://github.com/home-assistant/core/pull/94035 +[#94040]: https://github.com/home-assistant/core/pull/94040 +[#94041]: https://github.com/home-assistant/core/pull/94041 +[#94043]: https://github.com/home-assistant/core/pull/94043 +[#94052]: https://github.com/home-assistant/core/pull/94052 +[#94069]: https://github.com/home-assistant/core/pull/94069 +[#94077]: https://github.com/home-assistant/core/pull/94077 +[#94083]: https://github.com/home-assistant/core/pull/94083 +[#94085]: https://github.com/home-assistant/core/pull/94085 +[#94088]: https://github.com/home-assistant/core/pull/94088 +[#94093]: https://github.com/home-assistant/core/pull/94093 +[#94098]: https://github.com/home-assistant/core/pull/94098 +[#94099]: https://github.com/home-assistant/core/pull/94099 +[#94100]: https://github.com/home-assistant/core/pull/94100 +[#94111]: https://github.com/home-assistant/core/pull/94111 +[#94112]: https://github.com/home-assistant/core/pull/94112 +[#94119]: https://github.com/home-assistant/core/pull/94119 +[#94122]: https://github.com/home-assistant/core/pull/94122 +[#94123]: https://github.com/home-assistant/core/pull/94123 +[#94125]: https://github.com/home-assistant/core/pull/94125 +[#94129]: https://github.com/home-assistant/core/pull/94129 +[#94130]: https://github.com/home-assistant/core/pull/94130 +[#94133]: https://github.com/home-assistant/core/pull/94133 +[#94136]: https://github.com/home-assistant/core/pull/94136 +[@AngellusMortis]: https://github.com/AngellusMortis +[@AzonInc]: https://github.com/AzonInc +[@CoMPaTech]: https://github.com/CoMPaTech +[@ColinRobbins]: https://github.com/ColinRobbins +[@Diegorro98]: https://github.com/Diegorro98 +[@Drafteed]: https://github.com/Drafteed +[@Ernst79]: https://github.com/Ernst79 +[@IceBotYT]: https://github.com/IceBotYT +[@Kane610]: https://github.com/Kane610 +[@LaStrada]: https://github.com/LaStrada +[@Lash-L]: https://github.com/Lash-L +[@Ludy87]: https://github.com/Ludy87 +[@MarkGodwin]: https://github.com/MarkGodwin +[@Megabytemb]: https://github.com/Megabytemb +[@Noltari]: https://github.com/Noltari +[@PeteRager]: https://github.com/PeteRager +[@RenierM26]: https://github.com/RenierM26 +[@Shutgun]: https://github.com/Shutgun +[@StephanU]: https://github.com/StephanU +[@SteveEasley]: https://github.com/SteveEasley +[@TomBrien]: https://github.com/TomBrien +[@TomerFi]: https://github.com/TomerFi +[@ViViDboarder]: https://github.com/ViViDboarder +[@Vova-SH]: https://github.com/Vova-SH +[@ad0p]: https://github.com/ad0p +[@agners]: https://github.com/agners +[@alengwenus]: https://github.com/alengwenus +[@allenporter]: https://github.com/allenporter +[@andarotajo]: https://github.com/andarotajo +[@arkid15r]: https://github.com/arkid15r +[@austinmroczek]: https://github.com/austinmroczek +[@automaton82]: https://github.com/automaton82 +[@bachya]: https://github.com/bachya +[@badewanne1234]: https://github.com/badewanne1234 +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@boralyl]: https://github.com/boralyl +[@bramkragten]: https://github.com/bramkragten +[@c0ffeeca7]: https://github.com/c0ffeeca7 +[@cdce8p]: https://github.com/cdce8p +[@chiefdragon]: https://github.com/chiefdragon +[@cpoulsen]: https://github.com/cpoulsen +[@ctalkington]: https://github.com/ctalkington +[@daradib]: https://github.com/daradib +[@davet2001]: https://github.com/davet2001 +[@dgomes]: https://github.com/dgomes +[@dingusdk]: https://github.com/dingusdk +[@disaster37]: https://github.com/disaster37 +[@dknowles2]: https://github.com/dknowles2 +[@dmulcahey]: https://github.com/dmulcahey +[@doug-hoffman]: https://github.com/doug-hoffman +[@ejpenney]: https://github.com/ejpenney +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@erikbadman]: https://github.com/erikbadman +[@exxamalte]: https://github.com/exxamalte +[@farmio]: https://github.com/farmio +[@freeDom-]: https://github.com/freeDom- +[@frenck]: https://github.com/frenck +[@gerard33]: https://github.com/gerard33 +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@henryptung]: https://github.com/henryptung +[@iMicknl]: https://github.com/iMicknl +[@imerla1]: https://github.com/imerla1 +[@jafar-atili]: https://github.com/jafar-atili +[@jbouwh]: https://github.com/jbouwh +[@jesserockz]: https://github.com/jesserockz +[@jfroy]: https://github.com/jfroy +[@jgarec]: https://github.com/jgarec +[@jgrieger1]: https://github.com/jgrieger1 +[@joostlek]: https://github.com/joostlek +[@justasrutkauskas]: https://github.com/justasrutkauskas +[@kashifkhan]: https://github.com/kashifkhan +[@kernelpanic85]: https://github.com/kernelpanic85 +[@lawfulchaos]: https://github.com/lawfulchaos +[@leranp]: https://github.com/leranp +[@luar123]: https://github.com/luar123 +[@ludeeus]: https://github.com/ludeeus +[@marcelveldt]: https://github.com/marcelveldt +[@mark007]: https://github.com/mark007 +[@marvin-w]: https://github.com/marvin-w +[@matrixd2]: https://github.com/matrixd2 +[@mdegat01]: https://github.com/mdegat01 +[@mheath]: https://github.com/mheath +[@michalmo]: https://github.com/michalmo +[@mkmer]: https://github.com/mkmer +[@mmalina]: https://github.com/mmalina +[@mover85]: https://github.com/mover85 +[@ollo69]: https://github.com/ollo69 +[@pail23]: https://github.com/pail23 +[@patrickli]: https://github.com/patrickli +[@peitschie]: https://github.com/peitschie +[@piotrtobolski]: https://github.com/piotrtobolski +[@pree]: https://github.com/pree +[@ptr727]: https://github.com/ptr727 +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rappenze]: https://github.com/rappenze +[@rikroe]: https://github.com/rikroe +[@rrooggiieerr]: https://github.com/rrooggiieerr +[@rytilahti]: https://github.com/rytilahti +[@sairon]: https://github.com/sairon +[@scop]: https://github.com/scop +[@shbatm]: https://github.com/shbatm +[@slovdahl]: https://github.com/slovdahl +[@spyfly]: https://github.com/spyfly +[@starkillerOG]: https://github.com/starkillerOG +[@stickpin]: https://github.com/stickpin +[@synesthesiam]: https://github.com/synesthesiam +[@teharris1]: https://github.com/teharris1 +[@tetele]: https://github.com/tetele +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[@tronikos]: https://github.com/tronikos +[@uvjustin]: https://github.com/uvjustin +[@vanstinator]: https://github.com/vanstinator +[@vigonotion]: https://github.com/vigonotion +[@wlcrs]: https://github.com/wlcrs +[@wrt54g]: https://github.com/wrt54g +[@yuxincs]: https://github.com/yuxincs +[@ziv1234]: https://github.com/ziv1234 +[accuweather docs]: /integrations/accuweather/ +[aemet docs]: /integrations/aemet/ +[airthings docs]: /integrations/airthings/ +[airthings_ble docs]: /integrations/airthings_ble/ +[airzone docs]: /integrations/airzone/ +[airzone_cloud docs]: /integrations/airzone_cloud/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alexa docs]: /integrations/alexa/ +[analytics docs]: /integrations/analytics/ +[androidtv_remote docs]: /integrations/androidtv_remote/ +[anova docs]: /integrations/anova/ +[apcupsd docs]: /integrations/apcupsd/ +[apple_tv docs]: /integrations/apple_tv/ +[apprise docs]: /integrations/apprise/ +[arest docs]: /integrations/arest/ +[arwn docs]: /integrations/arwn/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[august docs]: /integrations/august/ +[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/ +[automation docs]: /integrations/automation/ +[axis docs]: /integrations/axis/ +[azure_service_bus docs]: /integrations/azure_service_bus/ +[baf docs]: /integrations/baf/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blink docs]: /integrations/blink/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[broadlink docs]: /integrations/broadlink/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[caldav docs]: /integrations/caldav/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cloud docs]: /integrations/cloud/ +[coinbase docs]: /integrations/coinbase/ +[command_line docs]: /integrations/command_line/ +[config docs]: /integrations/config/ +[conversation docs]: /integrations/conversation/ +[counter docs]: /integrations/counter/ +[daikin docs]: /integrations/daikin/ +[date docs]: /integrations/date/ +[datetime docs]: /integrations/datetime/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[derivative docs]: /integrations/derivative/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[diagnostics docs]: /integrations/diagnostics/ +[dialogflow docs]: /integrations/dialogflow/ +[directv docs]: /integrations/directv/ +[dlink docs]: /integrations/dlink/ +[dsmr docs]: /integrations/dsmr/ +[duckdns docs]: /integrations/duckdns/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[dynalite docs]: /integrations/dynalite/ +[ecowitt docs]: /integrations/ecowitt/ +[edl21 docs]: /integrations/edl21/ +[electraac docs]: /integrations/electraac/ +[elkm1 docs]: /integrations/elkm1/ +[emulated_hue docs]: /integrations/emulated_hue/ +[energy docs]: /integrations/energy/ +[enocean docs]: /integrations/enocean/ +[esphome docs]: /integrations/esphome/ +[ezviz docs]: /integrations/ezviz/ +[feedreader docs]: /integrations/feedreader/ +[fibaro docs]: /integrations/fibaro/ +[filter docs]: /integrations/filter/ +[flux docs]: /integrations/flux/ +[flux_led docs]: /integrations/flux_led/ +[freedns docs]: /integrations/freedns/ +[fritz docs]: /integrations/fritz/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[generic docs]: /integrations/generic/ +[generic_hygrostat docs]: /integrations/generic_hygrostat/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geo_json_events docs]: /integrations/geo_json_events/ +[glances docs]: /integrations/glances/ +[goalfeed docs]: /integrations/goalfeed/ +[google_assistant docs]: /integrations/google_assistant/ +[google_cloud docs]: /integrations/google_cloud/ +[google_generative_ai_conversation docs]: /integrations/google_generative_ai_conversation/ +[google_sheets docs]: /integrations/google_sheets/ +[group docs]: /integrations/group/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[history docs]: /integrations/history/ +[history_stats docs]: /integrations/history_stats/ +[home_connect docs]: /integrations/home_connect/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ +[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit_controller docs]: /integrations/homekit_controller/ +[honeywell docs]: /integrations/honeywell/ +[http docs]: /integrations/http/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[humidifier docs]: /integrations/humidifier/ +[hvv_departures docs]: /integrations/hvv_departures/ +[hydrawise docs]: /integrations/hydrawise/ +[iaqualink docs]: /integrations/iaqualink/ +[ihc docs]: /integrations/ihc/ +[imap docs]: /integrations/imap/ +[input_datetime docs]: /integrations/input_datetime/ +[insteon docs]: /integrations/insteon/ +[integration docs]: /integrations/integration/ +[iotawatt docs]: /integrations/iotawatt/ +[ipp docs]: /integrations/ipp/ +[isy994 docs]: /integrations/isy994/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[jvc_projector docs]: /integrations/jvc_projector/ +[kef docs]: /integrations/kef/ +[kira docs]: /integrations/kira/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[lacrosse_view docs]: /integrations/lacrosse_view/ +[lametric docs]: /integrations/lametric/ +[lastfm docs]: /integrations/lastfm/ +[launch_library docs]: /integrations/launch_library/ +[lcn docs]: /integrations/lcn/ +[ld2410_ble docs]: /integrations/ld2410_ble/ +[lg_netcast docs]: /integrations/lg_netcast/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[lightwave docs]: /integrations/lightwave/ +[lock docs]: /integrations/lock/ +[logbook docs]: /integrations/logbook/ +[logger docs]: /integrations/logger/ +[lookin docs]: /integrations/lookin/ +[matter docs]: /integrations/matter/ +[media_source docs]: /integrations/media_source/ +[melnor docs]: /integrations/melnor/ +[met docs]: /integrations/met/ +[microsoft docs]: /integrations/microsoft/ +[mill docs]: /integrations/mill/ +[mjpeg docs]: /integrations/mjpeg/ +[motion_blinds docs]: /integrations/motion_blinds/ +[mqtt docs]: /integrations/mqtt/ +[mqtt_eventstream docs]: /integrations/mqtt_eventstream/ +[mqtt_statestream docs]: /integrations/mqtt_statestream/ +[mycroft docs]: /integrations/mycroft/ +[mystrom docs]: /integrations/mystrom/ +[nest docs]: /integrations/nest/ +[netdata docs]: /integrations/netdata/ +[netgear_lte docs]: /integrations/netgear_lte/ +[network docs]: /integrations/network/ +[nexia docs]: /integrations/nexia/ +[nextbus docs]: /integrations/nextbus/ +[nextcloud docs]: /integrations/nextcloud/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[nuki docs]: /integrations/nuki/ +[number docs]: /integrations/number/ +[obihai docs]: /integrations/obihai/ +[onewire docs]: /integrations/onewire/ +[onvif docs]: /integrations/onvif/ +[opensky docs]: /integrations/opensky/ +[oralb docs]: /integrations/oralb/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[persistent_notification docs]: /integrations/persistent_notification/ +[ping docs]: /integrations/ping/ +[piper docs]: /integrations/piper/ +[plugwise docs]: /integrations/plugwise/ +[profiler docs]: /integrations/profiler/ +[prometheus docs]: /integrations/prometheus/ +[proximity docs]: /integrations/proximity/ +[pushover docs]: /integrations/pushover/ +[qld_bushfire docs]: /integrations/qld_bushfire/ +[qnap_qsw docs]: /integrations/qnap_qsw/ +[radiotherm docs]: /integrations/radiotherm/ +[rainbird docs]: /integrations/rainbird/ +[rapt_ble docs]: /integrations/rapt_ble/ +[recorder docs]: /integrations/recorder/ +[remote docs]: /integrations/remote/ +[renault docs]: /integrations/renault/ +[reolink docs]: /integrations/reolink/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roborock docs]: /integrations/roborock/ +[roomba docs]: /integrations/roomba/ +[sabnzbd docs]: /integrations/sabnzbd/ +[safe_mode docs]: /integrations/safe_mode/ +[samsungtv docs]: /integrations/samsungtv/ +[script docs]: /integrations/script/ +[search docs]: /integrations/search/ +[sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[simplisafe docs]: /integrations/simplisafe/ +[skybell docs]: /integrations/skybell/ +[smartthings docs]: /integrations/smartthings/ +[smarty docs]: /integrations/smarty/ +[snapcast docs]: /integrations/snapcast/ +[songpal docs]: /integrations/songpal/ +[sonos docs]: /integrations/sonos/ +[sql docs]: /integrations/sql/ +[ssdp docs]: /integrations/ssdp/ +[statistics docs]: /integrations/statistics/ +[steam_online docs]: /integrations/steam_online/ +[stream docs]: /integrations/stream/ +[stt docs]: /integrations/stt/ +[sun docs]: /integrations/sun/ +[switch docs]: /integrations/switch/ +[switchbee docs]: /integrations/switchbee/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[system_health docs]: /integrations/system_health/ +[tado docs]: /integrations/tado/ +[tag docs]: /integrations/tag/ +[tasmota docs]: /integrations/tasmota/ +[telegram_bot docs]: /integrations/telegram_bot/ +[template docs]: /integrations/template/ +[thread docs]: /integrations/thread/ +[tibber docs]: /integrations/tibber/ +[time docs]: /integrations/time/ +[timer docs]: /integrations/timer/ +[todoist docs]: /integrations/todoist/ +[totalconnect docs]: /integrations/totalconnect/ +[tplink_omada docs]: /integrations/tplink_omada/ +[trace docs]: /integrations/trace/ +[trafikverket_ferry docs]: /integrations/trafikverket_ferry/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[twitch docs]: /integrations/twitch/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[upcloud docs]: /integrations/upcloud/ +[usb docs]: /integrations/usb/ +[usgs_earthquakes_feed docs]: /integrations/usgs_earthquakes_feed/ +[utility_meter docs]: /integrations/utility_meter/ +[vallox docs]: /integrations/vallox/ +[vilfo docs]: /integrations/vilfo/ +[voip docs]: /integrations/voip/ +[wake_on_lan docs]: /integrations/wake_on_lan/ +[waqi docs]: /integrations/waqi/ +[watson_tts docs]: /integrations/watson_tts/ +[webhook docs]: /integrations/webhook/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whirlpool docs]: /integrations/whirlpool/ +[whisper docs]: /integrations/whisper/ +[wiffi docs]: /integrations/wiffi/ +[withings docs]: /integrations/withings/ +[workday docs]: /integrations/workday/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_ble docs]: /integrations/xiaomi_ble/ +[yale_home docs]: /integrations/yale_home/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[yeelight docs]: /integrations/yeelight/ +[yolink docs]: /integrations/yolink/ +[youtube docs]: /integrations/youtube/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave_js docs]: /integrations/zwave_js/ +[zwave_me docs]: /integrations/zwave_me/ diff --git a/source/common-tasks/os.markdown b/source/common-tasks/os.markdown index 6f4e629c12f..550a6b6345c 100644 --- a/source/common-tasks/os.markdown +++ b/source/common-tasks/os.markdown @@ -13,6 +13,7 @@ This section will provide guides to some common tasks and information which you {% include common-tasks/configuration_check.md %} {% include common-tasks/file_access.md %} {% include common-tasks/backups.md %} +{% include common-tasks/network_storage.md %} {% include common-tasks/commandline.md %} {% include common-tasks/lost_password.md %} {% include common-tasks/third-party-addons.md %} diff --git a/source/common-tasks/supervised.markdown b/source/common-tasks/supervised.markdown index f7305e00783..f5f816d19eb 100644 --- a/source/common-tasks/supervised.markdown +++ b/source/common-tasks/supervised.markdown @@ -11,6 +11,7 @@ installation_name: Supervised {% include common-tasks/configuration_check.md %} {% include common-tasks/file_access.md %} {% include common-tasks/backups.md %} +{% include common-tasks/network_storage.md %} {% include common-tasks/commandline.md %} {% include common-tasks/lost_password.md %} {% include common-tasks/third-party-addons.md %} \ No newline at end of file diff --git a/source/docs/index.markdown b/source/docs/index.markdown index 08ebc44746c..358064b51a5 100644 --- a/source/docs/index.markdown +++ b/source/docs/index.markdown @@ -37,6 +37,12 @@ The documentation covers beginner to advanced topics around the installation, se
    Android and iOS
    + +
    + +
    +
    Voice control
    +

    diff --git a/source/examples/index.markdown b/source/examples/index.markdown index 8190d71582d..ed4f75ad7dd 100644 --- a/source/examples/index.markdown +++ b/source/examples/index.markdown @@ -21,7 +21,7 @@ A great place to find popular configurations is on this ## Popular Blueprints -This is a list of the most popular [blueprints](/integrations/blueprint) in the [Blueprint Exchange category on the forums](https://www.home-assistant.io/get-blueprints). +This is a list of the most popular [blueprints](/docs/automation/using_blueprints/) in the [Blueprint Exchange category on the forums](https://www.home-assistant.io/get-blueprints). {% for post in site.data.blueprint_exchange_data limit:25 %} diff --git a/source/getting-started/concepts-terminology.markdown b/source/getting-started/concepts-terminology.markdown index a031fc8e550..9fd4aac1130 100644 --- a/source/getting-started/concepts-terminology.markdown +++ b/source/getting-started/concepts-terminology.markdown @@ -13,7 +13,7 @@ Customizable pages to display information connected to and available in Home Ass Software that allows Home Assistant to connect to other software and platforms. For example, a product by Philips called Hue would use the Philips Hue integration and allow Home Assistant to talk to the hardware controller Hue Bridge. Any connected and Home Assistant compatible devices to the Hue Bridge would appear in Home Assistant as [devices](#devices--entities). -![Integrations](/images/getting-started/integrations.png) +![Integrations](/images/getting-started/integrations-new.png) A full list of compatible integrations can be found [here](/integrations). diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index 2c88007da72..48a17e6902f 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -5,18 +5,41 @@ description: "Instructions to get Home Assistant configured." Alright, you made it here. The tough part is done. -With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and select **create account**. +After entering the Home Assistant device's address in your browser's address bar, the preparation screen is shown. Depending on your hardware, preparation may take a while. -![Set your username and password.](/images/getting-started/username.png) +![Home Assistant preparation](/images/getting-started/onboarding_preparing_01.png) -Next, you can enter a name for your home and set your location and unit system. Select **Detect** to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually. +To show the logs, select the blue pulsing circle. +![Home Assistant preparation](/images/getting-started/onboarding_preparing_show_logs.png) -![Set your location, time zone, and unit system.](/images/getting-started/location.png) +With Home Assistant installed, it's time to set up the basics. -Once you are done, click **Next**. In this screen, Home Assistant will show any {% term devices %} that it has discovered on your network. Don't be alarmed if you see fewer items than shown below; you can always manually add devices later. +In this step, you will create the owner account of Home Assistant. This account is an administrator account. It will always be able to change everything. + +1. Enter a name, username, and password. Select **Create account**. -![Discovery of devices on your network.](/images/getting-started/devices.png) + ![Set your username and password.](/images/getting-started/username.png) -Finally, click **Finish**. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. +1. Enter a name for your home and define the location specific settings and the language of the user interface. + * To automatically populate these settings, select **Detect**. + * If you'd rather not send your location, you can set these values manually. + + ![Define your location specific settings.](/images/getting-started/onboarding_location.png) + +1. Select which information you are willing to share. + * Sharing is disabled by default. However, we would like to encourage you to share some of this data. + * This information helps us to find out which platforms we need to support and where to focus our efforts. + * The data is anonymized and aggregated. To see the charts we generate out of this data, take a look at our [analytics page](https://analytics.home-assistant.io/). + + ![Share anonymized data](/images/getting-started/onboarding_share_anonymized_info.png) + +1. Once you are done, select **Next**. + * Home Assistant will then show any {% term devices %} it has discovered on your network. + * Don't be alarmed if you see fewer items than shown below; you can always manually add devices later. + + ![Discovery of devices on your network.](/images/getting-started/onboarding_devices.png) + +1. Finally, select **Finish**. + * Now you're brought to the Home Assistant web interface. This screen will show all of your devices. {% include getting-started/next_step.html step="Concepts & Terminologies" link="/getting-started/concepts-terminology/" %} diff --git a/source/help/index.markdown b/source/help/index.markdown index 1d543e03304..67511627956 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -91,4 +91,4 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). [twitter]: https://twitter.com/home_assistant [facebook]: https://www.facebook.com/homeassistantio [reddit]: https://reddit.com/r/homeassistant -[discord]: https://discord.gg/c5DvZ4e +[discord]: /join-chat diff --git a/source/images/assist/m5stack-atom-echo-discovered-03.png b/source/images/assist/m5stack-atom-echo-discovered-03.png deleted file mode 100644 index 0f24c6a09df..00000000000 Binary files a/source/images/assist/m5stack-atom-echo-discovered-03.png and /dev/null differ diff --git a/source/images/assist/m5stack-atom-echo-discovered-33.png b/source/images/assist/m5stack-atom-echo-discovered-33.png new file mode 100644 index 00000000000..b0738836f7e Binary files /dev/null and b/source/images/assist/m5stack-atom-echo-discovered-33.png differ diff --git a/source/images/assist/m5stack-atom-echo-discovered-new-03.png b/source/images/assist/m5stack-atom-echo-discovered-new-03.png new file mode 100644 index 00000000000..9200f7061a0 Binary files /dev/null and b/source/images/assist/m5stack-atom-echo-discovered-new-03.png differ diff --git a/source/images/assist/piper-whisper-install-02.png b/source/images/assist/piper-whisper-install-02.png deleted file mode 100644 index e522b18e867..00000000000 Binary files a/source/images/assist/piper-whisper-install-02.png and /dev/null differ diff --git a/source/images/assist/piper-whisper-install-03.png b/source/images/assist/piper-whisper-install-03.png deleted file mode 100644 index ee1f5eef138..00000000000 Binary files a/source/images/assist/piper-whisper-install-03.png and /dev/null differ diff --git a/source/images/assist/piper-whisper-install-new-02.png b/source/images/assist/piper-whisper-install-new-02.png new file mode 100644 index 00000000000..6ab915a6f70 Binary files /dev/null and b/source/images/assist/piper-whisper-install-new-02.png differ diff --git a/source/images/assist/piper-whisper-install-new-03.png b/source/images/assist/piper-whisper-install-new-03.png new file mode 100644 index 00000000000..b7fe1da11f9 Binary files /dev/null and b/source/images/assist/piper-whisper-install-new-03.png differ diff --git a/source/images/assist/tts_action.png b/source/images/assist/tts_action.png new file mode 100644 index 00000000000..3fbee5f8574 Binary files /dev/null and b/source/images/assist/tts_action.png differ diff --git a/source/images/assist/tts_enter_text.png b/source/images/assist/tts_enter_text.png new file mode 100644 index 00000000000..b3710aae1eb Binary files /dev/null and b/source/images/assist/tts_enter_text.png differ diff --git a/source/images/assist/tts_select_media_player.png b/source/images/assist/tts_select_media_player.png new file mode 100644 index 00000000000..7e6fe819e02 Binary files /dev/null and b/source/images/assist/tts_select_media_player.png differ diff --git a/source/images/assist/tts_select_media_source.png b/source/images/assist/tts_select_media_source.png new file mode 100644 index 00000000000..80b4486e234 Binary files /dev/null and b/source/images/assist/tts_select_media_source.png differ diff --git a/source/images/assist/tts_select_piper.png b/source/images/assist/tts_select_piper.png new file mode 100644 index 00000000000..528ce128ad5 Binary files /dev/null and b/source/images/assist/tts_select_piper.png differ diff --git a/source/images/blog/2023-06/cut-copy-past-automations.gif b/source/images/blog/2023-06/cut-copy-past-automations.gif new file mode 100644 index 00000000000..ca4cdf68108 Binary files /dev/null and b/source/images/blog/2023-06/cut-copy-past-automations.gif differ diff --git a/source/images/blog/2023-06/edit-favorite-colors.gif b/source/images/blog/2023-06/edit-favorite-colors.gif new file mode 100644 index 00000000000..711355141d0 Binary files /dev/null and b/source/images/blog/2023-06/edit-favorite-colors.gif differ diff --git a/source/images/blog/2023-06/integration-page.png b/source/images/blog/2023-06/integration-page.png new file mode 100644 index 00000000000..edd0f1dd16b Binary files /dev/null and b/source/images/blog/2023-06/integration-page.png differ diff --git a/source/images/blog/2023-06/integrations-dashboard.png b/source/images/blog/2023-06/integrations-dashboard.png new file mode 100644 index 00000000000..cc0dbed4bb7 Binary files /dev/null and b/source/images/blog/2023-06/integrations-dashboard.png differ diff --git a/source/images/blog/2023-06/light-dialog-favorite-colors.png b/source/images/blog/2023-06/light-dialog-favorite-colors.png new file mode 100644 index 00000000000..8cc401bffa5 Binary files /dev/null and b/source/images/blog/2023-06/light-dialog-favorite-colors.png differ diff --git a/source/images/blog/2023-06/network-storage.png b/source/images/blog/2023-06/network-storage.png new file mode 100644 index 00000000000..3958c63b1ef Binary files /dev/null and b/source/images/blog/2023-06/network-storage.png differ diff --git a/source/images/blog/2023-06/new-date-time-entities.png b/source/images/blog/2023-06/new-date-time-entities.png new file mode 100644 index 00000000000..d9af6d3a5f4 Binary files /dev/null and b/source/images/blog/2023-06/new-date-time-entities.png differ diff --git a/source/images/blog/2023-06/related-information.png b/source/images/blog/2023-06/related-information.png new file mode 100644 index 00000000000..ccadb10ab61 Binary files /dev/null and b/source/images/blog/2023-06/related-information.png differ diff --git a/source/images/blog/2023-06/social.png b/source/images/blog/2023-06/social.png new file mode 100644 index 00000000000..88ac491e111 Binary files /dev/null and b/source/images/blog/2023-06/social.png differ diff --git a/source/images/blog/2023-06/toggle-last-changed.gif b/source/images/blog/2023-06/toggle-last-changed.gif new file mode 100644 index 00000000000..790a1263811 Binary files /dev/null and b/source/images/blog/2023-06/toggle-last-changed.gif differ diff --git a/source/images/getting-started/devices.png b/source/images/getting-started/devices.png deleted file mode 100644 index 4ba559107b8..00000000000 Binary files a/source/images/getting-started/devices.png and /dev/null differ diff --git a/source/images/getting-started/integrations-new.png b/source/images/getting-started/integrations-new.png new file mode 100644 index 00000000000..15e92e6ef0d Binary files /dev/null and b/source/images/getting-started/integrations-new.png differ diff --git a/source/images/getting-started/integrations.png b/source/images/getting-started/integrations.png deleted file mode 100644 index e77c42f40d2..00000000000 Binary files a/source/images/getting-started/integrations.png and /dev/null differ diff --git a/source/images/getting-started/location.png b/source/images/getting-started/location.png deleted file mode 100644 index 0d8f5996c32..00000000000 Binary files a/source/images/getting-started/location.png and /dev/null differ diff --git a/source/images/getting-started/onboarding_devices.png b/source/images/getting-started/onboarding_devices.png new file mode 100644 index 00000000000..b6d4737188b Binary files /dev/null and b/source/images/getting-started/onboarding_devices.png differ diff --git a/source/images/getting-started/onboarding_location.png b/source/images/getting-started/onboarding_location.png new file mode 100644 index 00000000000..ebd995e3b70 Binary files /dev/null and b/source/images/getting-started/onboarding_location.png differ diff --git a/source/images/getting-started/onboarding_preparing_01.png b/source/images/getting-started/onboarding_preparing_01.png new file mode 100644 index 00000000000..c7e50ce044e Binary files /dev/null and b/source/images/getting-started/onboarding_preparing_01.png differ diff --git a/source/images/getting-started/onboarding_preparing_show_logs.png b/source/images/getting-started/onboarding_preparing_show_logs.png new file mode 100644 index 00000000000..c78d0afb11b Binary files /dev/null and b/source/images/getting-started/onboarding_preparing_show_logs.png differ diff --git a/source/images/getting-started/onboarding_share_anonymized_info.png b/source/images/getting-started/onboarding_share_anonymized_info.png new file mode 100644 index 00000000000..e9e8a40f58f Binary files /dev/null and b/source/images/getting-started/onboarding_share_anonymized_info.png differ diff --git a/source/images/screenshots/network-storage/change_backup_dark.png b/source/images/screenshots/network-storage/change_backup_dark.png new file mode 100644 index 00000000000..6231188c0f4 Binary files /dev/null and b/source/images/screenshots/network-storage/change_backup_dark.png differ diff --git a/source/images/screenshots/network-storage/change_backup_light.png b/source/images/screenshots/network-storage/change_backup_light.png new file mode 100644 index 00000000000..bfe646bbb74 Binary files /dev/null and b/source/images/screenshots/network-storage/change_backup_light.png differ diff --git a/source/images/screenshots/network-storage/connect_dark.png b/source/images/screenshots/network-storage/connect_dark.png new file mode 100644 index 00000000000..76547789c03 Binary files /dev/null and b/source/images/screenshots/network-storage/connect_dark.png differ diff --git a/source/images/screenshots/network-storage/connect_light.png b/source/images/screenshots/network-storage/connect_light.png new file mode 100644 index 00000000000..604bb2bc015 Binary files /dev/null and b/source/images/screenshots/network-storage/connect_light.png differ diff --git a/source/images/screenshots/network-storage/list_dark.png b/source/images/screenshots/network-storage/list_dark.png new file mode 100644 index 00000000000..2128484865e Binary files /dev/null and b/source/images/screenshots/network-storage/list_dark.png differ diff --git a/source/images/screenshots/network-storage/list_light.png b/source/images/screenshots/network-storage/list_light.png new file mode 100644 index 00000000000..6614983a29b Binary files /dev/null and b/source/images/screenshots/network-storage/list_light.png differ diff --git a/source/more-info/unsupported/docker_version.markdown b/source/more-info/unsupported/docker_version.markdown index 60f6b3afca7..8b139877f55 100644 --- a/source/more-info/unsupported/docker_version.markdown +++ b/source/more-info/unsupported/docker_version.markdown @@ -5,20 +5,20 @@ description: "More information on why Docker version marks the installation as u ## The issue -The version that is needed by the Supervisor, depends on the features it needs -for it to work properly. +The version that is needed by the Supervisor depends on the features it needs +to work properly. The current minimum supported version of Docker is: `20.10.17`. -However, the feature set changes and improves over time and therefore, the minimal -required version may change in the future. When that happens, it will be communicated -before we publish a version that will require you to upgrade Docker. +However, the feature set changes and improves over time. Therefore, the minimal +required version may change. When that happens, it will be communicated +before we publish a version that requires you to upgrade Docker. ## The solution -If you are running an older version of our Home Assistant OS, update it the -{% my configuration title="Configuration" %} panel. +If you are running an older version of Home Assistant OS, +{% my updates title="update" %} it. -If this is not our Home Assistant OS, you need to manually update Docker on your -host for instructions on how to do that, check the official +If this is not Home Assistant OS, you need to manually update Docker on your +host. For instructions on how to do that, check the official [Docker documentation](https://docs.docker.com/engine/install/debian/). diff --git a/source/skyconnect/index.html b/source/skyconnect/index.html index e36da2cdb5d..ff003239a03 100644 --- a/source/skyconnect/index.html +++ b/source/skyconnect/index.html @@ -327,6 +327,24 @@ frontpage_image: /images/skyconnect/skyconnect-cover.png + +
    +
    +
    🇩🇪
    +
    mediarath
    +
    Located in Germany
    +
    + + + +
    +
    + + +
    +
    +
    🇸🇰
    +
    SmarterHOME
    +
    Located in Slovakia
    +
    + + + +
    +
    + mean an expansion rule. The view these rules, search for `expansion_rules` in the [_common.yaml](https://github.com/home-assistant/intents/blob/main/sentences/en/_common.yaml) file. - * The syntax is explained in detail in the [template sentence syntax documentation](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax). + * The syntax is explained in detail in the [template sentence syntax documentation](https://developers.home-assistant.io/docs/voice_control/intent-recognition/template-sentence-syntax). diff --git a/source/docs/assist/custom_sentences.markdown b/source/voice_control/custom_sentences.markdown similarity index 100% rename from source/docs/assist/custom_sentences.markdown rename to source/voice_control/custom_sentences.markdown diff --git a/source/docs/assist/index.markdown b/source/voice_control/index.markdown similarity index 70% rename from source/docs/assist/index.markdown rename to source/voice_control/index.markdown index 166a7033422..de97cccee5b 100644 --- a/source/docs/assist/index.markdown +++ b/source/voice_control/index.markdown @@ -4,15 +4,19 @@ title: Assist - Talking to Home Assistant Assist logo -Assist is our feature to allow 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. You can use the [built-in sentences](/docs/assist/builtin_sentences) to control entities and areas, or [create your own](/docs/assist/custom_sentences). +Assist is our feature to allow 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. + +_Want to use Home Assistant with Google Assistant or Amazon Alexa? Get started with [Home Assistant Cloud](https://www.nabucasa.com/config/)._ + +With Assist, you can use the [built-in sentences](/voice_control/builtin_sentences) to control entities and areas, or [create your own](/voice_control/custom_sentences). [List of supported languages.](https://developers.home-assistant.io/docs/voice/intent-recognition/supported-languages) Assist is available to use on most platforms that can interface with Home Assistant. Look for the Assist icon Assist icon: - Inside the Home Assistant app in the top-right corner -- On Apple devices via [Siri and Assist shortcuts](/docs/assist/apple) -- On Wear OS watches using [Assist tile](/docs/assist/android) +- On Apple devices via [Siri and Assist shortcuts](/voice_control/apple) +- On Wear OS watches using [Assist tile](/voice_control/android) Did Assist not understand your sentence? [Contribute them.](https://developers.home-assistant.io/docs/voice/intent-recognition/) diff --git a/source/projects/thirteen-usd-voice-remote.markdown b/source/voice_control/thirteen-usd-voice-remote.markdown similarity index 86% rename from source/projects/thirteen-usd-voice-remote.markdown rename to source/voice_control/thirteen-usd-voice-remote.markdown index 51b1ce37198..204ce205f1e 100644 --- a/source/projects/thirteen-usd-voice-remote.markdown +++ b/source/voice_control/thirteen-usd-voice-remote.markdown @@ -12,7 +12,7 @@ your smart home. Issue commands and get responses! ## Required material * Home Assistant 2023.5 or later -* [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/docs/assist/voice_remote_local_assistant) +* [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) * The password to your 2.4 GHz Wi-Fi network * Chrome (or a Chromium-based browser like Edge) on desktop (not Android/iOS) * [M5Stack ATOM Echo Development Kit](https://shop.m5stack.com/products/atom-echo-smart-speaker-dev-kit?ref=NabuCasa) @@ -55,16 +55,18 @@ Before you can use this device with Home Assistant, you need to install a bit of ![Set up ESPHome](/images/assist/esp32-atom-flash-07.png) 1. To add the newly discovered device, select the ATOM Echo from the list. * Add your ATOM Echo to a room and select **Finish**. -1. You should now see a new **M5Stack Atom Echo** integration. - ![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-03.png) +2. You should now see the **ESPHome** integration. + ![New ESPHome device discovered](/images/assist/m5stack-atom-echo-discovered-33.png) +3. Select the cogwheel. Under **Devices**, you should see the **M5Stack Atom Echo** listed. + ![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-new-03.png) * Your ATOM Echo is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply. -1. Congratulations! You can now voice control Home Assistant using a button with build-in microphone. Now give some commands. +4. Congratulations! You can now voice control Home Assistant using a button with build-in microphone. Now give some commands. ## Controlling Home Assistant over the ATOM Echo 1. Press and hold the button on your ATOM Echo. * The LED should light up in blue. -1. Say a [supported voice command](/docs/assist/builtin_sentences/). For example, *Turn off the light in the kitchen*. +1. Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. * Make sure you’re using the area name exactly as you defined it in Home Assistant. * You can also ask a question, such as * *Is the front door locked?* @@ -78,4 +80,4 @@ Before you can use this device with Home Assistant, you need to install a bit of Are things not working as expected? -* Checkout the [general troubleshooting section for Assist](/docs/assist/troubleshooting/). \ No newline at end of file +* Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting/). \ No newline at end of file diff --git a/source/docs/assist/troubleshooting.markdown b/source/voice_control/troubleshooting.markdown similarity index 95% rename from source/docs/assist/troubleshooting.markdown rename to source/voice_control/troubleshooting.markdown index fd7e65e42c1..e402d4cb04e 100644 --- a/source/docs/assist/troubleshooting.markdown +++ b/source/voice_control/troubleshooting.markdown @@ -26,10 +26,9 @@ This section lists a few steps that may help you troubleshoot issues with Assist 1. Check if it worked. ![Open the pipeline debug dialog](/images/assist/assistant-debug-pipeline-03.png) * If the phrase does not work, try a variant. For example, if *Turn off the light* doesn't work, try: *Turn off the lights in the kitchen*. - * Check if your phrase is [supported](/docs/assist/builtin_sentences/). + * Check if your phrase is [supported](/voice_control/builtin_sentences/). * Make sure you are using the name of the area as it is defined in Home Assistant. If you have a room called *bathroom*, the phrase *Turning on the lights in the bath* won’t work. - ## I do not see any assistant If under {% my voice_assistants title="**Settings** > **Voice assistants**" %} you do not see any assistants, you are not using the default configuration. The image below shows the **Assist** section. @@ -42,4 +41,3 @@ If the **Assist** section is missing entirely, you need to add the following to # Example configuration.yaml entry assist_pipeline: ``` - \ No newline at end of file diff --git a/source/voice_control/using_tts_in_automation.markdown b/source/voice_control/using_tts_in_automation.markdown new file mode 100644 index 00000000000..ac50746bf2a --- /dev/null +++ b/source/voice_control/using_tts_in_automation.markdown @@ -0,0 +1,40 @@ +--- +title: "Using Piper TTS in automations" +--- + +This procedure shows you how to create a text-to-speech {% term action %}. For this, we use our local text-to-speech engine, Piper, and the media player {% term service %}. Home Assistant can then speak to you over your media player as part of an {% term automation %}. + +1. Go to **{% my automations title="Settings > Automations & Scenes" %}**, and select **Create automation**. +1. Select **Create new automation**, then **Add action**. +1. From the drop-down menu, select **Play media** and select the media player you want to use for this automation. + ![Select your media player](/images/assist/tts_select_media_player.png) +1. Select **Pick media**, then, select **Text-to-speech**. + ![Select your media source](/images/assist/tts_select_media_source.png) +1. To use fully local text-to-speech processing, select **Piper**. + ![Select Piper](/images/assist/tts_select_piper.png) +1. Enter the text you want to hear for this automation. + ![Enter text to be spoken](/images/assist/tts_enter_text.png) +1. Your text-to-speech action is now ready to be used in your script or automation. + ![Enter text to be spoken](/images/assist/tts_action.png) +1. Save your action. +1. If you want, you can edit this service in YAML. + + ```yaml + service: media_player.play_media + target: + entity_id: media_player.m5stack_atom_echo_a61920 + data: + media_content_id: media-source://tts/tts.piper?message=Your+coffee+is+ready%21+Enjoy. + media_content_type: provider + metadata: + title: Your coffee is ready! Enjoy. + thumbnail: https://brands.home-assistant.io/_/tts/logo.png + media_class: app + children_media_class: null + navigateIds: + - {} + - media_content_type: app + media_content_id: media-source://tts + - media_content_type: provider + media_content_id: media-source://tts/tts.piper?message=Your+coffee+is+ready%21+Enjoy. + ``` diff --git a/source/voice_control/using_voice_assistants_overview.markdown b/source/voice_control/using_voice_assistants_overview.markdown new file mode 100644 index 00000000000..1b20011f103 --- /dev/null +++ b/source/voice_control/using_voice_assistants_overview.markdown @@ -0,0 +1,19 @@ +--- +title: "Using voice assistants - overview" +--- + +We are in [chapter two](/blog/2023/04/27/year-of-the-voice-chapter-2/) of Home Assistant's Year of the Voice. +We can now turn speech into text and text back into speech. Wake word detection is not yet supported. + +The video below provides a good overview of what is currently possible with voice assistants. It shows you the following: + +* How to voice-control devices using the Assist button, an [analog phone](/voice_control/worlds-most-private-voice-assistant/), or an [ATOM Echo](/voice_control/thirteen-usd-voice-remote/). +* How to [expose devices to Assist](/voice_control/voice_remote_expose_devices/). +* How to set up a [local voice assistant](/voice_control/voice_remote_local_assistant/). +* The video also shows the differences in processing speed. It compares: + * Home Assistant Cloud versus local processing, + * local processing on more or less powerful hardware. + + + + diff --git a/source/docs/assist/voice_remote_expose_devices.markdown b/source/voice_control/voice_remote_expose_devices.markdown similarity index 100% rename from source/docs/assist/voice_remote_expose_devices.markdown rename to source/voice_control/voice_remote_expose_devices.markdown diff --git a/source/docs/assist/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown similarity index 57% rename from source/docs/assist/voice_remote_local_assistant.markdown rename to source/voice_control/voice_remote_local_assistant.markdown index 52a84101ba3..472606376ab 100644 --- a/source/docs/assist/voice_remote_local_assistant.markdown +++ b/source/voice_control/voice_remote_local_assistant.markdown @@ -8,46 +8,48 @@ For each component you can choose from different options. We have prepared a spe The speech-to-text option is [Whisper](https://github.com/openai/whisper). It's an open source AI model that supports [various languages](https://github.com/openai/whisper#available-models-and-languages). We use a forked version called [faster-whisper](https://github.com/guillaumekln/faster-whisper). On a Raspberry Pi 4, it takes around 8 seconds to process incoming voice commands. On an Intel NUC it is done in under a second. -For text-to-speech we have developed [Piper](https://github.com/rhasspy/piper). Piper is a fast, local neural text to speech system that sounds great and is optimized for the Raspberry Pi 4. It supports [many languages](https://rhasspy.github.io/piper-samples/). On a Raspberry Pi, using medium quality models, it can generate 1.6s of voice in a second. +For text-to-speech we have developed [Piper](https://github.com/rhasspy/piper). Piper is a fast, local neural text-to-speech system that sounds great and is optimized for the Raspberry Pi 4. It supports [many languages](https://rhasspy.github.io/piper-samples/). On a Raspberry Pi, using medium quality models, it can generate 1.6s of voice in a second. ## Installing a local Assist pipeline For the quickest way to get your local Assist pipeline started, follow these steps: 1. Install the add-ons to convert text into speech and vice versa. - * Install the {% my supervisor_addon addon="core_whisper" title="**Whisper**" %} and the {% my supervisor_addon addon="core_piper" title="**Piper**" %} add-ons. - ![Install the Whisper and Piper add-ons](/images/assist/piper-whisper-install-01.png) - * Start both add-ons. - * Once the add-ons are started, head over to the integrations under {% my integrations title="**Settings** > **Devices & Services**" %}. - * You should now see Piper and Whisper being discovered by the [Wyoming integration](/integrations/wyoming/). - ![Whisper and Piper integrations](/images/assist/piper-whisper-install-02.png) - * For both integrations, select **Configure**. - * Once the setup is complete, you should see both Piper and Whisper in one integration. - ![Whisper and Piper integration](/images/assist/piper-whisper-install-03.png) - * **Whisper** converts speech into text. - * **Piper** converts text into speech. - * **Wyoming** is the protocol they are both using to communicate. -1. Setup your assistant. - * Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and select **Add assistant**. - ![Enter a name for your voice assistant](/images/assist/piper-whisper-install-05.png) + - Install the {% my supervisor_addon addon="core_whisper" title="**Whisper**" %} and the {% my supervisor_addon addon="core_piper" title="**Piper**" %} add-ons. + ![Install the Whisper and Piper add-ons](/images/assist/piper-whisper-install-01.png) + - Start both add-ons. + - Once the add-ons are started, head over to the integrations under {% my integrations title="**Settings** > **Devices & Services**" %}. + - You should now see Piper and Whisper being discovered by the [Wyoming integration](/integrations/wyoming/). + ![Whisper and Piper integrations](/images/assist/piper-whisper-install-new-02.png) + - For both integrations, select **Configure**. + - Once the setup is complete, you should see both Piper and Whisper in one integration. + + ![Whisper and Piper integration](/images/assist/piper-whisper-install-new-03.png) + - **Whisper** converts speech into text. + - **Piper** converts text into speech. + - **Wyoming** is the protocol they are both using to communicate. +2. Setup your assistant. - * **Troubleshooting**: If you do not see any assistants here, you are not using the default configuration. In this case, you need to add the following to your `configuration.yaml` file: + - Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and select **Add assistant**. + ![Enter a name for your voice assistant](/images/assist/piper-whisper-install-05.png) + + - **Troubleshooting**: If you do not see any assistants here, you are not using the default configuration. In this case, you need to add the following to your `configuration.yaml` file: + + ```yaml + # Example configuration.yaml entry + assist_pipeline: + ``` + + - Enter a name. You can pick any name that is meaningful to you. + - Select the language that you want to speak. + - Under **Conversation agent**, select **Home Assistant**. + - Under **Speech-to-text**, select **faster-whisper**. + - Under **Text-to-speech**, select **piper**. + - Depending on your language, you may be able to select different language variants. - ```yaml - # Example configuration.yaml entry - assist_pipeline: - ``` - - * Enter a name. You can pick any name that is meaningful to you. - * Select the language that you want to speak. - * Under **Conversation agent**, select **Home Assistant**. - * Under **Speech-to-text**, select **faster-whisper**. - * Under **Text-to-speech**, select **piper**. - * Depending on your language, you may be able to select different language variants. 1. That's it. You ensured your voice commands can be processed locally on your device. -1. If you haven't done so yet, [expose your devices to Assist](/docs/assist/voice_remote_expose_devices/#exposing-your-devices). - * Otherwise you won't be able to control them by voice. - +1. If you haven't done so yet, [expose your devices to Assist](/voice_control/voice_remote_expose_devices/#exposing-your-devices). + - Otherwise you won't be able to control them by voice. ## Fine-tuning Whisper and Piper for your setup diff --git a/source/projects/worlds-most-private-voice-assistant.markdown b/source/voice_control/worlds-most-private-voice-assistant.markdown similarity index 94% rename from source/projects/worlds-most-private-voice-assistant.markdown rename to source/voice_control/worlds-most-private-voice-assistant.markdown index 5a5f38c57bd..02674a4ca7f 100644 --- a/source/projects/worlds-most-private-voice-assistant.markdown +++ b/source/voice_control/worlds-most-private-voice-assistant.markdown @@ -53,14 +53,14 @@ your smart home and issue commands and get responses. * You should now hear the message *This is your smart home speaking. Your phone is connected, but you must configure it within Home Assistant.* * The integration should now include a device and entities. ![Voice over IP integration with device and entities](/images/assist/voip_device_available.png) - * Don't hear the voice? Try these [troubleshooting steps](/projects/worlds-most-private-voice-assistant/#troubleshoot-grandstream). + * Don't hear the voice? Try these [troubleshooting steps](/voice_control/worlds-most-private-voice-assistant/#troubleshoot-grandstream). 1. Allow calls. * Calls from new devices are blocked by default since voice commands could be used to control sensitive devices, such as locks and garage doors. * In the **Voice over IP** integration, select the **device** link. * To allow this phone to control your smart home, under **Configuration**, enable **Allow calls**. ![Voice over IP integration - allow calls](/images/assist/voip_configuration.png) 1. Congratulations! You set up your analog phone to work with Home Assistant. Now pick up the phone and control your device. - * Say a [supported voice command](/docs/assist/builtin_sentences/). For example, *Turn off the light in the kitchen*. + * Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. * You can also ask a question, such as * *Is the front door locked?* * *Which lights are on in the living room?* @@ -114,7 +114,7 @@ If you’re unable to call Home Assistant, confirm the following settings in you **Symptom** You were able to control Home Assistant over the phone but it no longer works. When picking up the phone, no sound is played. -The [debug information](/docs/assist/troubleshooting#view-debug-information) shows no runs. +The [debug information](/voice_control/troubleshooting#view-debug-information) shows no runs. **Potential remedy** 1. Log onto the Grandstream *Device Configuration* software. @@ -127,7 +127,7 @@ The [debug information](/docs/assist/troubleshooting#view-debug-information) sho Are things still not working as expected? -* Checkout the [general troubleshooting section for Assist](/docs/assist/troubleshooting). +* Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting). ## About the analog phone