diff --git a/Dockerfile b/.devcontainer/Dockerfile similarity index 76% rename from Dockerfile rename to .devcontainer/Dockerfile index a5c00fa85ad..ed7283a0f35 100644 --- a/Dockerfile +++ b/.devcontainer/Dockerfile @@ -3,6 +3,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/ruby:${VARIANT} ARG NODE_VERSION="lts/*" RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1" +RUN su vscode -c "/usr/local/rvm/bin/rvm fix-permissions" # Locale env vars ENV \ @@ -17,7 +18,3 @@ RUN \ ack \ && echo "en_US UTF-8" > /etc/locale.gen \ && locale-gen en_US.UTF-8 - -# Install the specific version of bundler we need -COPY Gemfile.lock ./ -RUN gem install bundler -v `awk 'c&&c--;/BUNDLED WITH/{c=1}' Gemfile.lock` \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9db615d42bc..c34491e5358 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,16 +1,19 @@ { "name": "home-assistant.io", "build": { - "dockerfile": "../Dockerfile", + "dockerfile": "./Dockerfile", "context": "..", "args": { - "VARIANT": "2.7", - "NODE_VERSION": "18" + "VARIANT": "3.1", + "NODE_VERSION": "20" } }, "appPort": [4000], "onCreateCommand": "bundle install && npm install", - "containerEnv": { "DEVCONTAINER": "true" }, + "containerEnv": { + "DEVCONTAINER": "true", + "BUNDLE_PATH": "vendor/bundle" + }, "customizations": { "vscode": { "extensions": [ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c147b84c11a..0e94eee4c6b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: - name: Setting up Node.js uses: actions/setup-node@v4.0.1 with: - node-version: 16.x + node-version: 20 cache: "npm" - name: Install dependencies run: npm install @@ -29,7 +29,7 @@ jobs: - name: Setting up Node.js uses: actions/setup-node@v4.0.1 with: - node-version: 16.x + node-version: 20 cache: "npm" - name: Install dependencies run: npm install diff --git a/.ruby-version b/.ruby-version index 37c2961c243..0aec50e6ede 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.2 +3.1.4 diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 199390c8fce..f2b8a48dbe1 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,7 +4,7 @@ "editorconfig.editorconfig", "GitHub.vscode-pull-request-github", "mrmlnc.vscode-scss", - "rebornix.Ruby", + "Shopify.ruby-lsp", "streetsidesoftware.code-spell-checker", "taichi.vscode-textlint", "yzhang.markdown-all-in-one" diff --git a/CODEOWNERS b/CODEOWNERS index 162f6bae087..2d100b931d2 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -16,6 +16,8 @@ source/_integrations/adax.markdown @danielhiversen source/_integrations/adguard.markdown @frenck source/_integrations/advantage_air.markdown @Bre77 source/_integrations/aemet.markdown @Noltari +source/_integrations/aep_ohio.markdown @tronikos +source/_integrations/aep_texas.markdown @tronikos source/_integrations/agent_dvr.markdown @ispysoftware source/_integrations/air_quality.markdown @home-assistant/core source/_integrations/airly.markdown @bieniu @@ -32,7 +34,7 @@ source/_integrations/aladdin_connect.markdown @mkmer source/_integrations/alarm_control_panel.markdown @home-assistant/core source/_integrations/alert.markdown @home-assistant/core @frenck source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh -source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy +source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh source/_integrations/amberelectric.markdown @madpilot source/_integrations/ambiclimate.markdown @danielhiversen source/_integrations/ambient_station.markdown @bachya @@ -45,9 +47,11 @@ source/_integrations/androidtv_remote.markdown @tronikos @Drafteed source/_integrations/anova.markdown @Lash-L source/_integrations/anthemav.markdown @hyralex source/_integrations/anwb_energie.markdown @klaasnicolaas +source/_integrations/aosmith.markdown @bdr99 source/_integrations/apache_kafka.markdown @bachya source/_integrations/apcupsd.markdown @yuxincs source/_integrations/api.markdown @home-assistant/core +source/_integrations/appalachianpower.markdown @tronikos source/_integrations/apple_tv.markdown @postlund source/_integrations/application_credentials.markdown @home-assistant/core source/_integrations/apprise.markdown @caronc @@ -87,6 +91,7 @@ source/_integrations/blebox.markdown @bbx-a @riokuu source/_integrations/blink.markdown @fronzbot @mkmer source/_integrations/bliss_automation.markdown @starkillerOG source/_integrations/bloc_blinds.markdown @starkillerOG +source/_integrations/blue_current.markdown @Floris272 @gleeuwen source/_integrations/bluemaestro.markdown @bdraco source/_integrations/blueprint.markdown @home-assistant/core source/_integrations/bluesound.markdown @thrawnarn @@ -113,6 +118,7 @@ source/_integrations/button.markdown @home-assistant/core source/_integrations/calendar.markdown @home-assistant/core source/_integrations/camera.markdown @home-assistant/core source/_integrations/cast.markdown @emontnemery +source/_integrations/ccm15.markdown @ocalvo source/_integrations/cert_expiry.markdown @jjlawren source/_integrations/circuit.markdown @braam source/_integrations/cisco_ios.markdown @fbradyirl @@ -121,7 +127,7 @@ source/_integrations/cisco_webex_teams.markdown @fbradyirl source/_integrations/climate.markdown @home-assistant/core source/_integrations/cloud.markdown @home-assistant/cloud source/_integrations/cloudflare.markdown @ludeeus @ctalkington -source/_integrations/co2signal.markdown @jpbede +source/_integrations/co2signal.markdown @jpbede @VIKTORVAV99 source/_integrations/coinbase.markdown @tombrien source/_integrations/color_extractor.markdown @GenericStudent source/_integrations/comed.markdown @tronikos @@ -177,6 +183,7 @@ source/_integrations/doorbird.markdown @oblogic7 @bdraco @flacjacket source/_integrations/dooya.markdown @starkillerOG source/_integrations/dormakaba_dkey.markdown @emontnemery source/_integrations/dremel_3d_printer.markdown @tkdrob +source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr_reader.markdown @depl0y @glodenox source/_integrations/duotecno.markdown @cereal2nd @@ -205,7 +212,7 @@ source/_integrations/emulated_kasa.markdown @kbickar source/_integrations/energie_vanons.markdown @klaasnicolaas source/_integrations/energy.markdown @home-assistant/core source/_integrations/energyzero.markdown @klaasnicolaas -source/_integrations/enigma2.markdown @fbradyirl +source/_integrations/enigma2.markdown @autinerd source/_integrations/enmax.markdown @tronikos source/_integrations/enocean.markdown @bdurrer source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @dgomes @joostlek @catsmanac @@ -237,6 +244,7 @@ source/_integrations/firmata.markdown @DaAwesomeP source/_integrations/fitbit.markdown @allenporter source/_integrations/fivem.markdown @Sander0542 source/_integrations/fjaraskupan.markdown @elupus +source/_integrations/flexit_bacnet.markdown @lellky @piotrbulinski source/_integrations/flexom.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/flick_electric.markdown @ZephireNZ source/_integrations/flipr.markdown @cnico @@ -246,7 +254,7 @@ source/_integrations/flux_led.markdown @icemanch source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck source/_integrations/forked_daapd.markdown @uvjustin source/_integrations/fortios.markdown @kimfrellsen -source/_integrations/foscam.markdown @skgsergio +source/_integrations/foscam.markdown @skgsergio @krmarien source/_integrations/freebox.markdown @hacf-fr @Quentame source/_integrations/freedompro.markdown @stefano055415 source/_integrations/fritz.markdown @mammuth @AaronDavidSchneider @chemelli74 @mib1185 @@ -255,6 +263,7 @@ source/_integrations/fritzbox_callmonitor.markdown @cdce8p source/_integrations/fronius.markdown @farmio source/_integrations/frontend.markdown @home-assistant/frontend source/_integrations/frontier_silicon.markdown @wlcrs +source/_integrations/fujitsu_anywair.markdown @Bre77 source/_integrations/fully_kiosk.markdown @cgarwood source/_integrations/garages_amsterdam.markdown @klaasnicolaas source/_integrations/gardena_bluetooth.markdown @elupus @@ -308,6 +317,7 @@ source/_integrations/hisense_aehw4a1.markdown @bannhead source/_integrations/history.markdown @home-assistant/core source/_integrations/hive.markdown @Rendili @KJonline source/_integrations/hlk_sw16.markdown @jameshilliard +source/_integrations/holiday.markdown @jrieger source/_integrations/home_connect.markdown @DavidMStraub source/_integrations/home_plus_control.markdown @chemaaa source/_integrations/homeassistant.markdown @home-assistant/core @@ -344,6 +354,7 @@ source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/imap.markdown @jbouwh source/_integrations/improv_ble.markdown @emontnemery source/_integrations/incomfort.markdown @zxdavb +source/_integrations/indianamichiganpower.markdown @tronikos source/_integrations/influxdb.markdown @mdegat01 source/_integrations/inkbird.markdown @bdraco source/_integrations/input_boolean.markdown @home-assistant/core @@ -379,13 +390,13 @@ source/_integrations/keba.markdown @dannerph source/_integrations/keenetic_ndms2.markdown @foxel source/_integrations/kef.markdown @basnijholt source/_integrations/kegtron.markdown @Ernst79 +source/_integrations/kentuckypower.markdown @tronikos source/_integrations/keyboard_remote.markdown @bendavid @lanrat source/_integrations/keymitt_ble.markdown @spycle source/_integrations/kitchen_sink.markdown @home-assistant/core source/_integrations/kmtronic.markdown @dgomes source/_integrations/knx.markdown @Julius2342 @farmio @marvin-w source/_integrations/kodi.markdown @OnFreund -source/_integrations/komfovent.markdown @ProstoSanja source/_integrations/konnected.markdown @heythisisnate source/_integrations/kostal_plenticore.markdown @stegm source/_integrations/kraken.markdown @eifinger @@ -537,7 +548,7 @@ source/_integrations/opower.markdown @tronikos source/_integrations/oralb.markdown @bdraco @Lash-L source/_integrations/oru.markdown @bvlaicu source/_integrations/oru_opower.markdown @tronikos -source/_integrations/osoenergy @osohotwateriot +source/_integrations/osoenergy.markdown @osohotwateriot source/_integrations/otbr.markdown @home-assistant/core source/_integrations/ourgroceries.markdown @OnFreund source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev @@ -573,9 +584,10 @@ source/_integrations/prometheus.markdown @knyar source/_integrations/prosegur.markdown @dgomes source/_integrations/proximity.markdown @mib1185 source/_integrations/proxmoxve.markdown @jhollowe @Corbeno -source/_integrations/prusalink.markdown @balloob +source/_integrations/prusalink.markdown @balloob @Skaronator source/_integrations/ps4.markdown @ktnrg45 source/_integrations/pse.markdown @tronikos +source/_integrations/psoklahoma.markdown @tronikos source/_integrations/pure_energie.markdown @klaasnicolaas source/_integrations/purpleair.markdown @bachya source/_integrations/push.markdown @dgomes @@ -583,7 +595,7 @@ source/_integrations/pushbullet.markdown @engrbm87 source/_integrations/pushover.markdown @engrbm87 source/_integrations/pvoutput.markdown @frenck source/_integrations/pvpc_hourly_pricing.markdown @azogue -source/_integrations/qbittorrent.markdown @geoffreylagaisse +source/_integrations/qbittorrent.markdown @geoffreylagaisse @finder39 source/_integrations/qingping.markdown @bdraco @skgsergio source/_integrations/qld_bushfire.markdown @exxamalte source/_integrations/qnap.markdown @disforw @@ -607,6 +619,7 @@ source/_integrations/rdw.markdown @frenck @joostlek source/_integrations/recollect_waste.markdown @bachya source/_integrations/recorder.markdown @home-assistant/core source/_integrations/recovery_mode.markdown @home-assistant/core +source/_integrations/refoss.markdown @ashionky source/_integrations/rejseplanen.markdown @DarkFox source/_integrations/remote.markdown @home-assistant/core source/_integrations/renault.markdown @epenet @@ -614,6 +627,7 @@ source/_integrations/renson.markdown @jimmyd-be source/_integrations/reolink.markdown @starkillerOG source/_integrations/repairs.markdown @home-assistant/core source/_integrations/repetier.markdown @ShadowBr0ther +source/_integrations/rest_command.markdown @jpbede source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/rflink.markdown @javicalle source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221 @@ -641,6 +655,7 @@ source/_integrations/scene.markdown @home-assistant/core source/_integrations/schedule.markdown @home-assistant/core source/_integrations/schlage.markdown @dknowles2 source/_integrations/schluter.markdown @prairieapps +source/_integrations/scl.markdown @tronikos source/_integrations/scrape.markdown @fabaff @gjohansson-ST source/_integrations/screenaway.markdown @starkillerOG source/_integrations/screenlogic.markdown @dieselrabbit @bdraco @@ -724,10 +739,12 @@ source/_integrations/stt.markdown @home-assistant/core source/_integrations/subaru.markdown @G-Two source/_integrations/suez_water.markdown @ooii source/_integrations/sun.markdown @Swamp-Ig +source/_integrations/sunweg.markdown @rokam source/_integrations/supla.markdown @mwegrzynek source/_integrations/surepetcare.markdown @benleb @danielhiversen +source/_integrations/swepco.markdown @tronikos source/_integrations/swiss_hydrological_data.markdown @fabaff -source/_integrations/swiss_public_transport.markdown @fabaff +source/_integrations/swiss_public_transport.markdown @fabaff @miaucl source/_integrations/switch.markdown @home-assistant/core source/_integrations/switch_as_x.markdown @home-assistant/core source/_integrations/switchbee.markdown @jafar-atili @@ -741,9 +758,11 @@ 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 @chiefdragon +source/_integrations/systemmonitor.markdown @gjohansson-ST +source/_integrations/tado.markdown @michaelarnauts @chiefdragon @erwindouna source/_integrations/tag.markdown @balloob @dmulcahey source/_integrations/tailscale.markdown @frenck +source/_integrations/tailwind.markdown @frenck source/_integrations/tami4.markdown @Guy293 source/_integrations/tankerkoenig.markdown @guillempages @mib1185 source/_integrations/tapsaff.markdown @bazwilliams @@ -752,6 +771,7 @@ source/_integrations/tautulli.markdown @ludeeus @tkdrob source/_integrations/tellduslive.markdown @fredrike source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core source/_integrations/tesla_wall_connector.markdown @einarhauks +source/_integrations/tessie.markdown @Bre77 source/_integrations/text.markdown @home-assistant/core source/_integrations/tfiac.markdown @fredrike @mellado source/_integrations/thermobeacon.markdown @bdraco @@ -788,6 +808,7 @@ source/_integrations/twitch.markdown @joostlek source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/unifi.markdown @Kane610 +source/_integrations/unifi_direct.markdown @tofuSCHNITZEL source/_integrations/unifiled.markdown @florisvdk source/_integrations/unifiprotect.markdown @AngellusMortis @bdraco source/_integrations/upb.markdown @gwww @@ -811,7 +832,7 @@ source/_integrations/venstar.markdown @garbled1 @jhollowe source/_integrations/vermont_castings.markdown @jeeftor source/_integrations/versasense.markdown @imstevenxyz source/_integrations/version.markdown @ludeeus -source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey +source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey @cdnninja source/_integrations/vicare.markdown @CFenner source/_integrations/vilfo.markdown @ManneW source/_integrations/vivotek.markdown @HarlemSquirrel diff --git a/Gemfile b/Gemfile index 47c3b7df813..0ac5a5572b1 100644 --- a/Gemfile +++ b/Gemfile @@ -4,12 +4,14 @@ ruby '> 2.5.0' group :development do gem 'rake', '13.1.0' - gem 'jekyll', '4.3.2' + gem 'jekyll', '4.3.3' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' + gem 'rubocop', '1.59.0' + gem 'ruby-lsp', '0.13.2' end group :jekyll_plugins do @@ -19,8 +21,8 @@ group :jekyll_plugins do gem 'jekyll-toc', '0.18.0' end -gem 'sinatra', '3.1.0' -gem 'nokogiri', '1.15.5' +gem 'sinatra', '3.2.0' +gem 'nokogiri', '1.16.0' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/Gemfile.lock b/Gemfile.lock index c3463c6b54a..384c368fae4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,8 @@ GEM specs: addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + base64 (0.2.0) chunky_png (1.4.0) colorator (1.1.0) commonmarker (0.23.10) @@ -23,14 +25,13 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - eventmachine (1.2.7-x64-mingw32) ffi (1.16.3) forwardable-extended (2.6.0) - google-protobuf (3.25.1) + google-protobuf (3.25.1-x86_64-linux) http_parser.rb (0.8.0) i18n (1.14.1) concurrent-ruby (~> 1.0) - jekyll (4.3.2) + jekyll (4.3.3) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -58,54 +59,76 @@ GEM nokogiri (~> 1.12) jekyll-watch (2.2.1) listen (~> 3.0) + json (2.7.1) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) + language_server-protocol (3.17.0.3) liquid (4.0.4) listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - mini_portile2 (2.8.5) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.15.5) - mini_portile2 (~> 2.8.2) + nokogiri (1.16.0-x86_64-linux) racc (~> 1.4) + parallel (1.24.0) + parser (3.2.2.4) + ast (~> 2.4.1) + racc pathutil (0.16.2) forwardable-extended (~> 2.6) + prism (0.19.0) public_suffix (5.0.4) racc (1.7.3) rack (2.2.8) - rack-protection (3.1.0) + rack-protection (3.2.0) + base64 (>= 0.1.0) rack (~> 2.2, >= 2.2.4) + rainbow (3.1.1) rake (13.1.0) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) + regexp_parser (2.8.3) rexml (3.2.6) rouge (4.2.0) + rubocop (1.59.0) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.2.2.4) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.30.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + ruby-lsp (0.13.2) + language_server-protocol (~> 3.17.0) + prism (>= 0.19.0, < 0.20) + sorbet-runtime (>= 0.5.5685) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) - sass-embedded (1.63.6) - google-protobuf (~> 3.23) - rake (>= 13.0.0) - sass-embedded (1.63.6-x64-mingw32) - google-protobuf (~> 3.23) + sass-embedded (1.69.7-x86_64-linux-gnu) + google-protobuf (~> 3.25) sass-globbing (1.1.5) sass (>= 3.1) - sassc (2.1.0) + sassc (2.1.0-x86_64-linux) ffi (~> 1.9) - sassc (2.1.0-x64-mingw32) - ffi (~> 1.9) - sinatra (3.1.0) + sinatra (3.2.0) mustermann (~> 3.0) rack (~> 2.2, >= 2.2.4) - rack-protection (= 3.1.0) + rack-protection (= 3.2.0) tilt (~> 2.0) + sorbet-runtime (0.5.11175) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -118,21 +141,22 @@ GEM webrick (1.8.1) PLATFORMS - ruby - x64-mingw32 + x86_64-linux DEPENDENCIES compass (= 1.0.3) - jekyll (= 4.3.2) + jekyll (= 4.3.3) jekyll-commonmark (= 1.4.0) jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.18.0) - nokogiri (= 1.15.5) + nokogiri (= 1.16.0) rake (= 13.1.0) + rubocop (= 1.59.0) + ruby-lsp (= 0.13.2) sass-globbing (= 1.1.5) sassc (= 2.1.0) - sinatra (= 3.1.0) + sinatra (= 3.2.0) stringex (= 2.8.6) tzinfo (~> 2.0) tzinfo-data @@ -141,4 +165,4 @@ RUBY VERSION ruby 2.6.2p47 BUNDLED WITH - 2.2.28 + 2.5.3 diff --git a/_config.yml b/_config.yml index 1f6e90df54e..602bdb5d3ee 100644 --- a/_config.yml +++ b/_config.yml @@ -108,10 +108,10 @@ social: account: "https://fosstodon.org/@homeassistant" # Home Assistant release details -current_major_version: 2023 -current_minor_version: 12 -current_patch_version: 4 -date_released: 2023-12-27 +current_major_version: 2024 +current_minor_version: 1 +current_patch_version: 0 +date_released: 2024-01-03 # 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/source/_dashboards/conditional.markdown b/source/_dashboards/conditional.markdown index d025ed9d71b..9c4d23f1696 100644 --- a/source/_dashboards/conditional.markdown +++ b/source/_dashboards/conditional.markdown @@ -7,12 +7,7 @@ description: The Conditional card displays another card based on conditions. The conditional card displays another card based on conditions. -

- Screenshot of the conditional card - Screenshot of the conditional card. -

- -Note: if there are multiple conditions there will be treated as an 'and' condition. This means that for the card to show, _all_ conditions must be met. +![Screenshot of the conditional card](/images/dashboards/conditional_card.gif) {% include dashboard/edit_dashboard.md %} Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions. @@ -40,6 +35,7 @@ card: ## Examples +Only show when all the conditions are met: ```yaml type: conditional conditions: @@ -62,6 +58,25 @@ card: - light.bed_light ``` +Example condition where only one of the conditions needs to be met: +```yaml +type: conditional +conditions: + - condition: or + conditions: + - condition: state + entity: binary_sensor.co_alert + state: 'on' + - condition: state + entity: binary_sensor.rookmelder + state: 'on' +card: + type: entities + entities: + - binary_sensor.co_alert + - binary_sensor.rookmelder +``` + ## Card conditions ### State diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index d3f2adda226..6cd47527289 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -3,7 +3,7 @@ title: "YAML" description: "Details about YAML to configure Home Assistant." --- -Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. +Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. YAML might take a while to get used to but is powerful in allowing you to express complex configurations. While more and more integrations are configured through the UI, for some, you will add code in your [`configuration.yaml`](/docs/configuration/) file to specify its settings. @@ -21,15 +21,15 @@ notify: The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. **Beware that if you specify duplicate keys, the last value for a key is used**. -Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` integration. +In YAML, indentation is important for specifying relationships. Indented lines are nested inside lines that are one level higher. In the above example, `platform: pushbullet` is a property of (nested inside) the `notify` integration. -Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. +Getting the right indentation can be tricky if you're not using an editor with a fixed-width font. Tabs are not allowed to be used for indentation. The convention is to use 2 spaces for each level of indentation. -You can use the online service [YAML Validator](https://codebeautify.org/yaml-validator/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. +To check if your YAML syntax is correct before loading it into Home Assistant, you can use the third-party service [YAML Validator](https://codebeautify.org/yaml-validator/) (not maintained by the Home Assistant community).
-Please pay attention to not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in either a [separate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this security problem. +Pay attention to not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in either a [separate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this security problem.
@@ -76,7 +76,7 @@ example: #### Default value -If an environment variable is not set, you can fallback to a default value. +If an environment variable is not set, you can fall back to a default value. ```yaml example: diff --git a/source/_integrations/aep_ohio.markdown b/source/_integrations/aep_ohio.markdown index db10a6ca436..257a024d6ac 100644 --- a/source/_integrations/aep_ohio.markdown +++ b/source/_integrations/aep_ohio.markdown @@ -4,7 +4,7 @@ description: Get energy usage from AEP Ohio using the Opower integration ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: aep_ohio ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/aep_texas.markdown b/source/_integrations/aep_texas.markdown index e469c2647ae..34a6774cac4 100644 --- a/source/_integrations/aep_texas.markdown +++ b/source/_integrations/aep_texas.markdown @@ -4,7 +4,7 @@ description: Get energy usage from AEP Texas using the Opower integration ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: aep_texas ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown index ce995ea79ff..e557c2f6380 100644 --- a/source/_integrations/aladdin_connect.markdown +++ b/source/_integrations/aladdin_connect.markdown @@ -14,6 +14,7 @@ ha_integration_type: integration ha_codeowners: - '@mkmer' ha_config_flow: true +ha_quality_scale: platinum --- The Aladdin Connect integration lets you control Genie Aladdin Connect garage doors through Home Assistant. diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 850b6e6fce9..4e0db15cff8 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -1044,7 +1044,6 @@ Only temperature sensors are configured at this time. - _"Alexa, what's the temperature in the kitchen?"_ - _"Alexa, what's the upstairs temperature?"_ -- _"Alexa, what's the temperature of my ex-girlfriend's heart?"_ ### Switch, Input Boolean diff --git a/source/_integrations/aosmith.markdown b/source/_integrations/aosmith.markdown index 18068974298..1e5adfd8f92 100644 --- a/source/_integrations/aosmith.markdown +++ b/source/_integrations/aosmith.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_codeowners: - '@bdr99' ha_platforms: + - sensor - water_heater ha_integration_type: integration --- @@ -45,4 +46,4 @@ The following sensor entities are available: ## Disclaimer -This integration is not affiliated with or endorsed by A. O. Smith. \ No newline at end of file +This integration is not affiliated with or endorsed by A. O. Smith. diff --git a/source/_integrations/appalachianpower.markdown b/source/_integrations/appalachianpower.markdown index 4a881938339..f42024c5c3e 100644 --- a/source/_integrations/appalachianpower.markdown +++ b/source/_integrations/appalachianpower.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Appalachian Power using the Opower integratio ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: appalachianpower ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/aruba.markdown b/source/_integrations/aruba.markdown index 0778e577d8a..55741baae04 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -16,6 +16,9 @@ This platform allows you to detect presence by looking at connected devices to a Supported devices (tested): - Aruba AP-105 +- Aruba AP-505 +- Aruba AP-515 +- Aruba IAP-315 - Aruba IAP-335 - Aruba Instant IAP-275 diff --git a/source/_integrations/blue_current.markdown b/source/_integrations/blue_current.markdown index 966dc07af93..fe29c46ff7f 100644 --- a/source/_integrations/blue_current.markdown +++ b/source/_integrations/blue_current.markdown @@ -2,8 +2,8 @@ title: Blue Current description: Instructions on how to integrate Blue Current charge points within Home Assistant. ha_category: - - Sensor - Car + - Sensor ha_release: 2024.1 ha_iot_class: Cloud Push ha_config_flow: true @@ -13,6 +13,7 @@ ha_codeowners: ha_domain: blue_current ha_platforms: - sensor +ha_integration_type: integration --- [Blue Current](https://www.bluecurrent.nl/) is an Dutch company that makes electric car chargers. diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 5688534a7d8..5333a18235c 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -14,6 +14,7 @@ ha_domain: braviatv ha_config_flow: true ha_platforms: - button + - diagnostics - media_player - remote ha_ssdp: true diff --git a/source/_integrations/ccm15.markdown b/source/_integrations/ccm15.markdown index 267a7becd1e..2a8dc78990c 100644 --- a/source/_integrations/ccm15.markdown +++ b/source/_integrations/ccm15.markdown @@ -9,10 +9,9 @@ ha_config_flow: true ha_codeowners: - '@ocalvo' ha_domain: ccm15 -ha_quality_scale: platinum -ha_dhcp: true ha_platforms: - climate + - diagnostics ha_integration_type: integration --- diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown index dafd88f8ff1..250ddfdf566 100644 --- a/source/_integrations/co2signal.markdown +++ b/source/_integrations/co2signal.markdown @@ -15,6 +15,7 @@ ha_config_flow: true ha_integration_type: service ha_codeowners: - '@jpbede' + - '@VIKTORVAV99' --- The `Electricity Maps` sensor platform (formerly known as CO2Signal) queries the [Electricity Maps](https://www.electricitymaps.com/) API for the CO2 intensity of a specific region. Data can be collected for your home by using the latitude/longitude or a country code. This API uses the same data as . Not all countries/regions in the world are supported, so please consult the app to check local availability. diff --git a/source/_integrations/cribl.markdown b/source/_integrations/cribl.markdown index e0d9019a8f8..3490909392a 100644 --- a/source/_integrations/cribl.markdown +++ b/source/_integrations/cribl.markdown @@ -3,7 +3,6 @@ title: Cribl description: Send events to Cribl. ha_category: - History -ha_iot_class: Local Push ha_release: 0.13 ha_domain: cribl ha_supporting_domain: splunk diff --git a/source/_integrations/dormakaba_dkey.markdown b/source/_integrations/dormakaba_dkey.markdown index f490e7bb799..a35f3599af6 100644 --- a/source/_integrations/dormakaba_dkey.markdown +++ b/source/_integrations/dormakaba_dkey.markdown @@ -28,6 +28,6 @@ In addition to a lock entity, each added dKey lock will also have:
-The Dormakaba dKey lock is currently not working with USB dongles or built-in Bluetooth radios, only [ESPHome Bluetooth proxies](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) work reliably. +The Dormakaba dKey lock is currently not working with USB dongles or built-in Bluetooth radios, only [ESPHome Bluetooth proxies](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) configured to allow active connections work reliably.
diff --git a/source/_integrations/enigma2.markdown b/source/_integrations/enigma2.markdown index 372fb9f703e..10b0bf20a4a 100644 --- a/source/_integrations/enigma2.markdown +++ b/source/_integrations/enigma2.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: '0.90' ha_iot_class: Local Polling ha_codeowners: - - '@fbradyirl' + - '@autinerd' ha_domain: enigma2 ha_platforms: - media_player diff --git a/source/_integrations/enmax.markdown b/source/_integrations/enmax.markdown index ddf7e10784a..e0dba77b7a7 100644 --- a/source/_integrations/enmax.markdown +++ b/source/_integrations/enmax.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Enmax Energy using the Opower integration ha_category: - Energy - Sensor -ha_release: '2023.10' +ha_release: 2023.8 ha_domain: enmax ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/flexit_bacnet.markdown b/source/_integrations/flexit_bacnet.markdown index bff795e24ba..393f3885b4d 100644 --- a/source/_integrations/flexit_bacnet.markdown +++ b/source/_integrations/flexit_bacnet.markdown @@ -1,5 +1,5 @@ --- -title: Flexit BACnet +title: Flexit Nordic (BACnet) description: Instructions on how to integrate Flexit air handling unit into Home Assistant. ha_category: - Climate @@ -8,7 +8,11 @@ ha_iot_class: Local Polling ha_domain: flexit_bacnet ha_platforms: - climate -ha_integration_type: integration +ha_integration_type: device +ha_codeowners: + - '@lellky' + - '@piotrbulinski' +ha_config_flow: true --- Integrates [Flexit](https://www.flexit.no/en/) Nordic series air handling unit into Home Assistant. diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index 51eaecbe76f..c229a681bb4 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -7,6 +7,7 @@ ha_iot_class: Local Polling ha_release: 0.7.3 ha_codeowners: - '@skgsergio' + - '@krmarien' ha_domain: foscam ha_config_flow: true ha_platforms: diff --git a/source/_integrations/fujitsu_anywair.markdown b/source/_integrations/fujitsu_anywair.markdown index 8157c8cd3ea..9b3d166d297 100644 --- a/source/_integrations/fujitsu_anywair.markdown +++ b/source/_integrations/fujitsu_anywair.markdown @@ -1,21 +1,34 @@ --- title: Fujitsu anywAIR -description: Instructions on how to integrate Fujitsu anywAIR controller into Home Assistant. +description: Connect and control your Fujitsu anywAIR devices using the Advantage Air integration ha_category: + - Binary switch - Climate - Cover - Light - Sensor + - Switch + - Update - Update ha_release: 0.117 -ha_iot_class: Local Polling -ha_config_flow: true ha_domain: fujitsu_anywair ha_supporting_domain: advantage_air ha_supporting_integration: Advantage Air +ha_integration_type: virtual ha_codeowners: - '@Bre77' -ha_integration_type: virtual +ha_config_flow: true +ha_platforms: + - binary_sensor + - climate + - cover + - diagnostics + - light + - select + - sensor + - switch + - update +ha_iot_class: Local Polling --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/goodwe.markdown b/source/_integrations/goodwe.markdown index b7946059cd8..9220e4fe4b4 100644 --- a/source/_integrations/goodwe.markdown +++ b/source/_integrations/goodwe.markdown @@ -13,6 +13,7 @@ ha_codeowners: ha_domain: goodwe ha_platforms: - button + - diagnostics - number - select - sensor diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 3063255ff78..d9f5fb77a2c 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -13,7 +13,7 @@ ha_config_flow: true ha_integration_type: integration --- -This is a sensor to collect information from your Growatt inverters using [Growatt server](https://server.growatt.com/) by default. It is possible to specify an alternative endpoint server at configuration time e.g., [SMTEN](https://server.smten.com/). +This is a sensor to collect information from your Growatt inverters using [Growatt server](https://server.growatt.com/) by default. It is possible to specify an alternative endpoint server at configuration time e.g., [SMTEN](https://server.smten.com/). To see the latest supported servers, add the integration in Home Assistant to see the configuration options. This will log into your Growatt account and grab the first "Plant", after which it collects the inverters on this plant and creates sensors for these inverters as well as total sensors. diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown index 7f3a44c8aa9..2e948d66857 100644 --- a/source/_integrations/idasen_desk.markdown +++ b/source/_integrations/idasen_desk.markdown @@ -16,7 +16,6 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@abmantis' -ha_quality_scale: silver --- The IKEA IDÅSEN integration allows you to connect your IKEA Idåsen motorized desk to Home Assistant, making it possible to control the desk height and also monitor height changes from the physical controller. diff --git a/source/_integrations/indianamichiganpower.markdown b/source/_integrations/indianamichiganpower.markdown index ed7cd4b5071..bacb278d251 100644 --- a/source/_integrations/indianamichiganpower.markdown +++ b/source/_integrations/indianamichiganpower.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Indiana Michigan Power using the Opower integ ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: indianamichiganpower ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/kentuckypower.markdown b/source/_integrations/kentuckypower.markdown index f6e38adb837..83a5aad1c9d 100644 --- a/source/_integrations/kentuckypower.markdown +++ b/source/_integrations/kentuckypower.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Kentucky Power using the Opower integration ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: kentuckypower ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown index 75fcb248439..a49a8b97ae3 100644 --- a/source/_integrations/modem_callerid.markdown +++ b/source/_integrations/modem_callerid.markdown @@ -23,6 +23,14 @@ This integration also offers a button to pick up and then hang up the call to pr {% include integrations/config_flow.md %} +## Compatibility + +Reported models with this integration include that work: +- [StarTech.com USB56KEMH2](https://www.startech.com/en-us/networking-io/usb56kemh2) + +Devices that did not work: +- [StarTech.com USB56KEM3](https://www.startech.com/en-us/networking-io/usb56kem3) + ## Examples An example automation: diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown index 8522c73aa3f..41970ddd18f 100644 --- a/source/_integrations/netgear_lte.markdown +++ b/source/_integrations/netgear_lte.markdown @@ -17,8 +17,6 @@ ha_platforms: ha_codeowners: - '@tkdrob' 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/octoprint.markdown b/source/_integrations/octoprint.markdown index 0d756a69aad..60a28cdb2d6 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -58,8 +58,8 @@ verify ssl: {% endconfiguration_basic %} ### API key -For the integration to work, please check that in Octoprint, the plugin Discovery is enabled and in the settings -> printer notifications menu pop-ups are enabled. -The Octoprint integration will attempt to register itself via the [application keys plugin](https://docs.octoprint.org/en/master/bundledplugins/appkeys.html). After submitting the configuration UI in Home Assistant, open the Octoprint UI and click allow on the prompt. +For the integration to work, please check that in Octoprint, the [Discovery Plugin](https://docs.octoprint.org/en/master/bundledplugins/discovery.html) is enabled and in the **Settings** -> **Printer Notifications** menu that **Enable popups** is checked. +The Octoprint integration will attempt to register itself via the [Application Keys Plugin](https://docs.octoprint.org/en/master/bundledplugins/appkeys.html). After submitting the configuration UI in Home Assistant, open the Octoprint UI and click allow on the prompt. ## Binary sensor @@ -71,6 +71,7 @@ The OctoPrint integration provides the following binary sensors: ## Sensor The OctoPrint integration lets you monitor various states of your 3D printer and its print jobs. + Supported sensors: - Current Printer State diff --git a/source/_integrations/opnsense.markdown b/source/_integrations/opnsense.markdown index 06df9f5645a..381548a3e38 100644 --- a/source/_integrations/opnsense.markdown +++ b/source/_integrations/opnsense.markdown @@ -14,7 +14,7 @@ ha_platforms: ha_integration_type: integration --- -[OPNsense](https://opnsense.org/) is an open source HardenedBSD based firewall +[OPNsense](https://opnsense.org/) is an open source FreeBSD based firewall and routing platform. There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/osoenergy.markdown b/source/_integrations/osoenergy.markdown index 15882fec703..896a08baf7c 100644 --- a/source/_integrations/osoenergy.markdown +++ b/source/_integrations/osoenergy.markdown @@ -1,7 +1,7 @@ --- title: OSO Energy description: Instructions on how to integrate OSO Energy devices with Home Assistant. -ha_release: "2024.1" +ha_release: '2024.1' ha_category: - Sensor - Water Heater diff --git a/source/_integrations/peco.markdown b/source/_integrations/peco.markdown index 6de605ecfc5..e8483457470 100644 --- a/source/_integrations/peco.markdown +++ b/source/_integrations/peco.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@IceBotYT' ha_domain: peco ha_platforms: + - binary_sensor - sensor ha_integration_type: integration --- diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index c4a65a1a457..3760b5ccd81 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -51,10 +51,10 @@ This sensor is enabled by default. The default polling interval is 30 seconds. The sensor exposes the different round trip times in milliseconds measured by `ping` as attributes: -- `round_trip_time_mdev` -- `round_trip_time_avg` -- `round_trip_time_min` -- `round_trip_time_max` +- `round_trip_time_mdev` - the standard deviation +- `round_trip_time_avg` - the average round trip time +- `round_trip_time_min` - the shortest round trip time +- `round_trip_time_max` - the longest round trip time
When run on Windows systems, the round trip time attributes are rounded to the nearest millisecond and the mdev value is unavailable. @@ -70,4 +70,4 @@ The device tracker is disabled by default and can be enabled in the UI. Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own.
-See the [person integration page](/integrations/person/) for instructions on how to configure the people to be tracked. \ No newline at end of file +See the [person integration page](/integrations/person/) for instructions on how to configure the people to be tracked. diff --git a/source/_integrations/portlandgeneral.markdown b/source/_integrations/portlandgeneral.markdown index 4c84466ecee..02a76d7f407 100644 --- a/source/_integrations/portlandgeneral.markdown +++ b/source/_integrations/portlandgeneral.markdown @@ -1,16 +1,16 @@ --- title: Portland General Electric (PGE) -description: Get energy usage from Portland General Electric (PGE) using the Opower integration +description: Connect and control your Portland General Electric (PGE) devices using the Opower integration ha_category: - Energy - Sensor -ha_release: 2023.9 +ha_release: 2023.8 ha_domain: portlandgeneral ha_integration_type: virtual ha_supporting_domain: opower ha_supporting_integration: Opower ha_codeowners: - - '@jrigling' + - '@tronikos' ha_config_flow: true ha_platforms: - sensor diff --git a/source/_integrations/prusalink.markdown b/source/_integrations/prusalink.markdown index 7314fba00e0..2134255988c 100644 --- a/source/_integrations/prusalink.markdown +++ b/source/_integrations/prusalink.markdown @@ -18,21 +18,21 @@ ha_platforms: ha_dhcp: true --- -The PrusaLink integration allows you to monitor your [Prusa 3D printer](https://www.prusa3d.com) and its progress with your Home Assistant installation. This integration works with Prusa MINI, Prusa MK3.9/MK4 and Prusa XL. It does not work with the older Raspberry Pi Prusa Link printers. +The PrusaLink integration allows you to monitor your [Prusa 3D printer](https://www.prusa3d.com) and its progress with your Home Assistant installation. This integration works with Prusa MINI/MINI+, Prusa MK3.9/MK4 and Prusa XL. It does not work with the older Raspberry Pi based Prusa Link printers. -This integration has been updated to utilize the latest v1 API endpoints, which require firmware version 4.7.0 or later. If you own a Prusa Mini, please make sure your printer is running firmware 5.1.0 or a more recent version. Firmware versions 4.7.x and 5.0.x are not available for this model. +This integration has been updated to utilize the latest v1 API endpoints, which require firmware version 4.7.0 or later. If you own a Prusa MINI/MINI+, please make sure your printer is running firmware 5.1.0 or a more recent version. Firmware versions 4.7.x and 5.0.x are not available for this model. Firmware update guides can be found here: - - [Prusa Mini](https://help.prusa3d.com/article/firmware-updating-mini-mini_124784) - - [Prusa MK4/XL](https://help.prusa3d.com/article/how-to-update-firmware-mk4-xl_453086) + - [Prusa MINI/MINI+](https://help.prusa3d.com/article/firmware-updating-mini-mini_124784) + - [Prusa MK3.9/MK4/XL](https://help.prusa3d.com/article/how-to-update-firmware-mk4-xl_453086) To obtain the hostname, username, and password: - On your printer, navigate to **Settings** > **Network** > **PrusaLink**. - Find the device's **IP address**. Alternatively, you can look for the printer's IP address or hostname on your router. - Note that for some models, the username may not be visible, as it is hardcoded to `maker`. - - Depending on your model, the entry may not be called **Password**, but **API key**. + - Depending on your model, the password entry may not be called **Password**, but **API key**. {% include integrations/config_flow.md %} diff --git a/source/_integrations/psoklahoma.markdown b/source/_integrations/psoklahoma.markdown index 38c622a6552..17ae4af69c0 100644 --- a/source/_integrations/psoklahoma.markdown +++ b/source/_integrations/psoklahoma.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Public Service Company of Oklahoma (PSO) usin ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: psoklahoma ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index 2d9e18fefc5..aa2368dc10a 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -56,4 +56,3 @@ response_variable: torrents ``` The response data contains the field `torrent_info` which contains a dictionary of torrents. The name of the torrents are the keys. - diff --git a/source/_integrations/radio_browser.markdown b/source/_integrations/radio_browser.markdown index edbedf8e5bb..8e0abc377bc 100644 --- a/source/_integrations/radio_browser.markdown +++ b/source/_integrations/radio_browser.markdown @@ -25,4 +25,3 @@ To start the Radio Browser, in Home Assistant, go to **Media** > **Radio Browser You can also use the Radio Browser in automations. When creating an automation, use the **Play Media** action to pick a station from the directory. This allows you for example to create an automation that starts playing your favorite radio station on your Cast devices. - diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown index 52c4a1747dc..1daf7bd0ee3 100644 --- a/source/_integrations/rest_command.markdown +++ b/source/_integrations/rest_command.markdown @@ -7,6 +7,8 @@ ha_release: 0.36 ha_iot_class: Local Push ha_domain: rest_command ha_integration_type: integration +ha_codeowners: + - '@jpbede' --- This integration can expose regular REST commands as services. Services can be called from a [script] or in [automation]. diff --git a/source/_integrations/scl.markdown b/source/_integrations/scl.markdown index 031933d62fe..c8eec6aba8c 100644 --- a/source/_integrations/scl.markdown +++ b/source/_integrations/scl.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Seattle City Light (SCL) using the Opower int ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: scl ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown index 7a1711fda4c..50f9be120b8 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -3,12 +3,12 @@ title: StarLine description: Instructions on how to setup your StarLine account with Home Assistant. ha_category: - Binary sensor + - Button - Car - Lock - Presence detection - Sensor - Switch - - Button ha_release: 0.103 ha_iot_class: Cloud Polling ha_config_flow: true @@ -17,11 +17,11 @@ ha_codeowners: ha_domain: starline ha_platforms: - binary_sensor + - button - device_tracker - lock - sensor - switch - - button ha_integration_type: integration --- diff --git a/source/_integrations/swepco.markdown b/source/_integrations/swepco.markdown index 28a16270c65..521d6c8019c 100644 --- a/source/_integrations/swepco.markdown +++ b/source/_integrations/swepco.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Southwestern Electric Power Company (SWEPCO) ha_category: - Energy - Sensor -ha_release: 2024.1 +ha_release: 2023.8 ha_domain: swepco ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/systemmonitor.markdown b/source/_integrations/systemmonitor.markdown index 3ec3caf7f00..33d2481e08f 100644 --- a/source/_integrations/systemmonitor.markdown +++ b/source/_integrations/systemmonitor.markdown @@ -10,6 +10,8 @@ ha_config_flow: true ha_platforms: - sensor ha_integration_type: integration +ha_codeowners: + - '@gjohansson-ST' --- The System monitor integration allows you to monitor disk usage, diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 548103d42b8..f0187342d61 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -14,6 +14,7 @@ ha_iot_class: Cloud Polling ha_codeowners: - '@michaelarnauts' - '@chiefdragon' + - '@erwindouna' ha_domain: tado ha_config_flow: true ha_homekit: true diff --git a/source/_integrations/tailwind.markdown b/source/_integrations/tailwind.markdown index b81ae5446c9..cfba164ecfc 100644 --- a/source/_integrations/tailwind.markdown +++ b/source/_integrations/tailwind.markdown @@ -14,8 +14,11 @@ ha_platforms: - binary_sensor - button - cover + - diagnostics - number ha_integration_type: device +ha_quality_scale: platinum +ha_dhcp: true --- The Tailwind integration integrates [Tailwind](https://gotailwind.com/) diff --git a/source/_integrations/tankerkoenig.markdown b/source/_integrations/tankerkoenig.markdown index 5e455bd445c..9f2cbe704c5 100755 --- a/source/_integrations/tankerkoenig.markdown +++ b/source/_integrations/tankerkoenig.markdown @@ -12,6 +12,7 @@ ha_codeowners: - '@mib1185' ha_platforms: - binary_sensor + - diagnostics - sensor ha_config_flow: true ha_integration_type: integration diff --git a/source/_integrations/tessie.markdown b/source/_integrations/tessie.markdown index 9d95bb59f26..c0773fd858e 100644 --- a/source/_integrations/tessie.markdown +++ b/source/_integrations/tessie.markdown @@ -27,7 +27,9 @@ ha_platforms: - lock - media_player - number + - select - sensor + - switch - update ha_integration_type: integration --- diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 041e4e4f2d2..60acde7ac07 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -107,7 +107,7 @@ Change an active timer. This changes the duration of the timer with the duration ### 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. +Pause a running timer. This will retain the remaining duration for later continuation. To resume a timer use the `timer.start` service without passing a duration. You can also use `entity_id: all` and all active timers will be paused. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 31832f55d20..776db5da820 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -3,8 +3,8 @@ title: Trend description: Instructions on how to integrate Trend binary sensors into Home Assistant. ha_category: - Binary sensor - - Utility - Helper + - Utility ha_release: 0.28 ha_iot_class: Calculated ha_quality_scale: internal diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index ce42a8a3b38..44b835b7b6b 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -9,6 +9,8 @@ ha_domain: unifi_direct ha_platforms: - device_tracker ha_integration_type: integration +ha_codeowners: + - '@tofuSCHNITZEL' --- This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ui.com/products/#unifi). This device tracker differs from [Ubiquiti UniFi](/integrations/unifi) because it doesn't require the UniFi Network application. diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 5eb34fc687d..63357f48574 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -53,11 +53,11 @@ This {% term integration %} supports all UniFi OS Consoles that can run UniFi Pr - Any UniFi "Dream" device (**[UDMPRO](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro)**, **[UDR](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-router)**, or **[UDMSE](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-machine-se)**), _except the base UniFi Dream Machine/UDM_ - UniFi Cloud Key Gen2 Plus (**[UCKP](https://store.ui.com/collections/unifi-protect-nvr/products/unifi-cloudkey-plus)**) firmware version v2.0.24+ -UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware `[v2.0.24](https://community.ui.com/releases/UniFi-Cloud-Key-Firmware-2-0-24/b6684f1e-8542-4660-bc0b-74e0634448e8)` or newer. +UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware [`v2.0.24`](https://community.ui.com/releases/UniFi-Cloud-Key-Firmware-2-0-24/b6684f1e-8542-4660-bc0b-74e0634448e8) or newer. ### Software support -The absolute **minimal** software version is `[v1.20.0](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011)` for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported. +The absolute **minimal** software version is [`v1.20.0`](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011) for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported.
diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 12fbb5cf385..9bbea366fd1 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -14,7 +14,6 @@ ha_domain: utility_meter ha_platforms: - select - sensor -ha_config_flow: true ha_integration_type: helper --- diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index 20cbc05459e..d072126f5ca 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -12,6 +12,7 @@ ha_codeowners: - '@markperdue' - '@webdjoe' - '@thegardenmonkey' + - '@cdnninja' ha_domain: vesync ha_platforms: - diagnostics diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 714c7fa52ca..a589f9c0b0e 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -192,4 +192,4 @@ weather.toronto_forecast: temperature: 0 ``` -{% enddetails %} \ No newline at end of file +{% enddetails %} diff --git a/source/_integrations/whisper.markdown b/source/_integrations/whisper.markdown index 7c497e78460..dd40789effb 100644 --- a/source/_integrations/whisper.markdown +++ b/source/_integrations/whisper.markdown @@ -15,6 +15,7 @@ ha_config_flow: true ha_platforms: - stt - tts + - wake_word ha_iot_class: Local Push --- diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index b2fdbb7abf6..a2c1992f27d 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -11,10 +11,14 @@ ha_codeowners: ha_domain: wyoming ha_integration_type: integration ha_platforms: + - binary_sensor + - number + - select - stt + - switch - tts - - wake_word ha_config_flow: true +ha_zeroconf: true --- The **Wyoming** {% term 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/), [text-to-speech](/integrations/tts/), and [wake-word-detection](/integrations/wake_word/) systems, such as: diff --git a/source/_posts/2024-01-03-release-20241.markdown b/source/_posts/2024-01-03-release-20241.markdown new file mode 100644 index 00000000000..46e8c6875e7 --- /dev/null +++ b/source/_posts/2024-01-03-release-20241.markdown @@ -0,0 +1,579 @@ +--- +layout: post +title: "2024.1: Happy automating!" +description: "Happy New Year! 🥂 2024.1 starts with many UI improvements to our automation editor, due date and description support for to-do items, a brand new valve entity, and more card features!" +date: 2024-01-03 00:00:00 +date_formatted: "January 3, 2024" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2024-01/social.png +--- + + + +Happy New Year! 🍾 + +We wish you, and all the loved ones around you, all the best for 2024! 🥂 + +I cannot think of a better way to start the new year: Home Assistant Core 2024.1! 🎉 + +This release is fairly small, as expected; we are just coming out of the holiday +season. However, it does contain some nice improvements and +features to be excited about and a stunning total of 13 new integrations! + +My favorite: the automation editor changes. It had quite a bunch of user +interface tweaks. Most are focused on making it friendlier and easier to use +for new and long-term users, making it quicker to find the right trigger, +condition, or action. + +I greatly like this improved experience, and I hope you do too! + +Enjoy the release! + +../Frenck + + + +- [Automation editor improvements](#automation-editor-improvements) + - [Improved empty automations dashboard](#improved-empty-automations-dashboard) + - [Guidance when creating a new automation](#guidance-when-creating-a-new-automation) + - [Building blocks](#building-blocks) + - [Improved trigger, condition \& action buttons](#improved-trigger-condition--action-buttons) + - [Unified actions](#unified-actions) +- [Description \& due date support for to-do list items](#description--due-date-support-for-to-do-list-items) +- [New entity type: Valve](#new-entity-type-valve) +- [Swappable current/target on thermostat \& humidifier cards](#swappable-currenttarget-on-thermostat--humidifier-cards) +- [New card features](#new-card-features) +- [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) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=dRwzSkKYIDs) +3 January 2024, at 12:00 PST / 21:00 CET! + + + +## Automation editor improvements + +The automation editor got some love for this release, with many small +improvements to make it easier for both new and long-time users. + +As there are many small improvements, let’s go over them individually. + +PS: One quick note: all changes are UI changes, meaning that these changes +do not affect the underlying automation configuration. All your existing +automations will continue to work as they did before. + +### Improved empty automations dashboard + +If you start with Home Assistant, visiting the automations dashboard would +result in an empty page. That is not very helpful if you see this for the +first time. So, we’ve improved that! + +You are now greeted by the little automation robot that explains what an +automation is and references to the documentation that can help you get started. + +Screenshot showing an empty automations dashboard, explaining what automations are. + +A small but effective improvement to help new users get started. We have also +applied this same improvement to the scripts and scenes dashboards. + +### Guidance when creating a new automation + +When starting a new automation from scratch, you used to be greeted by some, +possibly, new terminology and almost a blank page with some buttons to +add triggers, conditions or actions. As a new user, this immediately imposes +a challenge: what do I need to do? + +You guessed it: We have slightly improved that. We have changed the big headers +to be more descriptive and less technical. We have also added some help text to +explain each section, including examples of what they can be used for. + +Screenshot showing descriptions on what each section in an automation is and can be used for. + +Don’t worry; we’ll hide the explanation once you add elements to the sections +to keep the overview of existing automations as clean as possible. + +### Building blocks + +You might have noticed in the screenshots above the conditions and actions have +a new button next to them: **+ Add building block**. + +Selecting these new buttons allows you to add logical elements to your +automation or scripts, like **And**, **Or**, **If-then**, **Choose**, etc. + +These used to be mixed in with the conditions and actions but now have their +own dedicated button. It makes it easier to find them and declutters the +list of conditions and actions. + +Screenshot showing the new dialog that allows you to add logical building blocks to automations. + +Notice how this now opens up a dialog? A dialog gives us more space to describe +what each building block does and room for a search box to find the one you need. + +### Improved trigger, condition & action buttons + +The bigger change can be found in the buttons to add a trigger, conditions, +or actions to your automation. This change was not just aimed at new users +but also long-time users. + +All these buttons are used to give a dropdown that allows you to select the +type of trigger, condition, or action you want to add. This dropdown has been +replaced by a new dialog similar to the one we just saw for the building blocks. + +Like the building block, it describes what each trigger, condition, +or action does. These descriptions are important, as they help you understand +what they do. + +Screenshot showing the new add trigger dialog, which displayed the most common triggers first. + +If you add an element, we will first show you the most used +triggers/conditions/actions by our community. We now have all others neatly +grouped. For actions, we took it a step further and unified them with +service calls. + +### Unified actions + +If you have been using Home Assistant for a while, you are probably familiar +with the “service call”-action that you can add to your automation. But, +honestly, what is a “service call”? It is a bit of a technical term that is +especially confusing for newer users. You just want to turn on a light, right? + +This release unifies those “service calls” with all other actions, meaning +there is no “service call” anymore; that layer has been refactored from the UI. +Instead, you add an action and select the action you want to take, for example, +turn on a light. + +Screenshot showing the new add action dialog, which now shows all possible actions, including services. + +This means that if you add an action, you see all actions (including all +service calls), categorized, with description, and searchable! Being able +to search through all available actions is a huge improvement. + +Screenshot showing the new add action dialog utilizing the search function to find whatever you need. + +By default, just like with the triggers and conditions, we show you the most +used actions first and the actions for the entities you have on your system. +All others are neatly grouped by integration in the **Other actions** section. + +Screenshot showing the new add action dialog that neatly groups all other actions that integrations provide. + +## Description & due date support for to-do list items + +The to-do list integration keeps getting better and better. This release adds +support for descriptions and due dates! + +If the integration you are using supports it, you can now add descriptions to +each task on your list. It fully supports the Markdown markup to add links, +bold text, etc. If due dates (or due date + time) are supported, you can +set these. + +Screenshot showing the new to-do item dialog, where you now can set a description and a URL. + +As shown in the screenshot above, there is a whole new dialog to adjust +your to-do item. But this is not the only change. The list itself has been +improved as well. + +Screenshot showing the improve to-do dashboard, showing descriptions and highlighting overdue items. + +It is much cleaner, all big text boxes are gone, and each item is nicely +formatted, including an excerpt of the description and the due date. If the due +date is overdue, it will be highlighted. + +## New entity type: Valve + +A brand new entity type has been added to Home Assistant: Valve! + +Integrations can use this entity type to expose valves, such as a valve on +a radiator, pool, sprinkler system, and main house gas or water line. + +Screenshot showing a valve entity in the Home Assistant UI. + +Currently, the [Shelly integration] supports it and now provides a `valve` entity +for the Valve addon for Shelly Gas. Additionally, support for it has been +added to [MQTT], and the valve entities also work with Amazon Alexa +and Google Assistant. + +Tip: Do you have a switch entity that controls a valve? You can now change the +entity type to valve in the entity settings. + +[Shelly integration]: /integrations/shelly +[MQTT]: integrations/valve.mqtt + +## Swappable current/target on thermostat & humidifier cards + +By popular demand, the thermostat and humidifier cards now support setting +current temperature/humidity as the primary information to show on the +card. + +You can enable the **show current temperature as primary information** option +in the card, which will result in the target temperature being swapped with the +current temperature in the card. + +Screenshot showing two thermostat cards. One has the setpoint as a primary temperature, the other the current temperature. + +## New card features + +Last year, we saw many new features added to the cards, so let's start +the new year with some more! + +[@Quentame] added the climate fan mode card feature. This feature can be +used with both the thermostat and the tile card: + +Screenshot showing the new fan mode card feature that can be used on the tile and thermostat cards. + +Also new is the update actions card feature. This addition by [@piitaya] allows +you to add buttons to a card to trigger update actions when pressed. + +Screenshot showing the new update card feature the can be used on the tile card. + +[@piitaya]: https://github.com/piitaya +[@Quentame]: https://github.com/Quentame + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other +noteworthy changes this release: + +- Two brand new [template functions] have been added this release: `median` and + `statistical_mode`. Thanks, [@TheFes]! +- [@bieniu] added support for the brand new Shelly 3rd generation devices to + the [Shelly] integration. Nice! +- A long-time shutdown bug has been fixed: You can now run automations triggered + when Home Assistant shuts down. This could, for example, be used to send + yourself a notification when that happens. Thanks, [@tetele]! +- Created your own fan controller using [ESPHome]? You can now add preset modes + to it! Thanks, [@mill1000]! +- The [ping] integration now has the option to configure the number of seconds + that must elapse before considering a disconnected device "not at home". + Awesome, [@jpbede]! +- Looking for the ZAMG integration? It has been renamed to [GeoSphere Austria]. + Thanks, [@killer0071234]! +- Got one of those Sonos amps? [@jjlawren] added support for the subwoofer + crossover setting to the [Sonos] integration. Nice! +- [@tkdrob] added support for the new calendar entity to the [Radarr] integration. + So you can see the release schedules straight from Home Assistant. Awesome! +- You can now configure the minimal number of samples the [trend] helper uses. + It allows you to make it less sensitive when there is not that much data. + Thanks, [@jpbede]! +- Got cold toes in bed? [@kbickar] to the rescue! He added support for + foot warmers to the [SleepIQ] integration. Nice! + +[@bieniu]: https://github.com/bieniu +[@jjlawren]: https://github.com/jjlawren +[@jpbede]: https://github.com/jpbede +[@kbickar]: https://github.com/kbickar +[@killer0071234]: https://github.com/killer0071234 +[@mill1000]: https://github.com/mill1000 +[@tetele]: https://github.com/tetele +[@TheFes]: https://github.com/TheFes +[@tkdrob]: https://github.com/tkdrob +[ESPHome]: /integrations/esphome +[GeoSphere Austria]: /integrations/zamg +[ping]: /integrations/ping +[Radarr]: /integrations/radarr +[Shelly]: /integrations/shelly +[SleepIQ]: /integrations/sleepiq +[Sonos]: /integrations/sonos +[template functions]: /docs/configuration/templating/#numeric-functions-and-filters +[trend]: /integrations/trend + +## New integrations + +We welcome the following new integrations in this release: + +- **[A. O. Smith]**, added by [@bdr99]
+ Integrate and control your A. O. Smith water heater. +- **[Blue Current]**, added by [@Floris272]
+ Monitor your Blue Current EV charger charge point(s). +- **[DROP]**, added by [@pfrazer]
+ Manage your DROP Smart Water System with Home Assistant. +- **[Flexit Nordic (BACnet)]**, added by [@lellky]
+ Control and monitor your Flexit Nordic series air handling units. +- **[Holiday]**, added by [@jrieger]
+ Add holiday calendars to Home Assistant for powering automations. +- **[Midea CCM15 AC Controller]**, added by [@ocalvo]
+ Use your AC connected to a Midea CCM15 AC Controller. +- **[OSO Energy]**, added by [@osohotwateriot]
+ Use your OSO Energy water heater with Home Assistant. +- **[Sun WEG]**, added by [@rokam]
+ Collect and monitor energy production data from your Sun WEG inverter. +- **[Tailwind]**, added by [@frenck]
+ Operate your garage door openers connected to a Tailwind smart garage door controller. +- **[Tessie]**, added by [@Bre77]
+ Integrate, monitor and control your Tesla vehicle connected to the Tessie platform. +- **[Refoss]**, added by [@ashionky]
+ Use your Refoss smart devices directly with Home Assistant. +- **[Valve]**, added by [@cibernox]
+ An entity type for valves, which can be used by integrations to expose valves. +- **[Vogel's MotionMount]**, added by [@RJPoelstra]
+ Control the position of your Vogel's MotionMount TV mount. + +[@ashionky]: https://github.com/ashionky +[@bdr99]: https://github.com/bdr99 +[@Bre77]: https://github.com/Bre77 +[@cibernox]: https://github.com/cibernox +[@Floris272]: https://github.com/Floris272 +[@frenck]: https://github.com/frenck +[@jrieger]: https://github.com/jrieger +[@lellky]: https://github.com/lellky +[@ocalvo]: https://github.com/ocalvo +[@osohotwateriot]: https://github.com/osohotwateriot +[@pfrazer]: https://github.com/pfrazer +[@RJPoelstra]: https://github.com/RJPoelstra +[@rokam]: https://github.com/rokam +[A. O. Smith]: /integrations/aosmith +[Blue Current]: /integrations/blue_current +[DROP]: /integrations/drop_connect +[Flexit Nordic (BACnet)]: /integrations/flexit_bacnet +[Holiday]: /integrations/holiday +[Midea CCM15 AC Controller]: /integrations/ccm15 +[OSO Energy]: /integrations/osoenergy +[Refoss]: /integrations/refoss +[Sun WEG]: /integrations/sunweg +[Tailwind]: /integrations/tailwind +[Tessie]: /integrations/tessie +[Valve]: /integrations/valve +[Vogel's MotionMount]: /integrations/motionmount + +This release also has a new virtual integration. Virtual integrations are stubs +that are handled by other (existing) integrations to help with findability. +The following virtual integrations have been added: + +- **[AEP Ohio]**, provided by [Opower] +- **[AEP Texas]**, provided by [Opower] +- **[Appalachian Power]**, provided by [Opower] +- **[Fujitsu anywAIR]**, provided by [Advantage Air] +- **[Indiana Michigan Power]**, provided by [Opower] +- **[Kentucky Power]**, provided by [Opower] +- **[Public Service Company of Oklahoma (PSO)]**, provided by [Opower] +- **[Seattle City Light]**, provided by [Opower] +- **[Southwestern Electric Power Company (SWEPCO)]**, provided by [Opower] + +[Advantage Air]: /integrations/advantage_air +[AEP Ohio]: /integrations/aep_ohio +[AEP Texas]: /integrations/aep_texas +[Appalachian Power]: /integrations/appalachianpower +[Fujitsu anywAIR]: /integrations/fujitsu_anywair +[Indiana Michigan Power]: /integrations/indianamichiganpower +[Kentucky Power]: /integrations/kentuckypower +[Opower]: /integrations/opower +[Public Service Company of Oklahoma (PSO)]: /integrations/psoklahoma +[Seattle City Light]: /integrations/scl +[Southwestern Electric Power Company (SWEPCO)]: /integrations/swepco + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[Netgear LTE]**, done by [@tkdrob] +- **[StreamLabs]**, done by [@joostlek] +- **[Suez Water]**, done by [@joostlek] +- **[Swiss public transport]**, done by [@miaucl] +- **[System Monitor]**, done by [@gjohansson-ST] +- **[Trend]**, done by [@jpbede] + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@miaucl]: https://github.com/miaucl +[@tkdrob]: https://github.com/tkdrob +[Netgear LTE]: /integrations/netgear_lte +[StreamLabs]: /integrations/streamlabswater +[Suez Water]: /integrations/suez_water +[Swiss public transport]: /integrations/swiss_public_transport +[System Monitor]: /integrations/systemmonitor +[Trend]: /integrations/trend + +## 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. + +## Backward-incompatible changes + +{% details "Blink" %} + +The service calls of Blink have been adjusted. This affects +`blink.trigger_camera`, `blink.save_video` and `blink.save_recent_clips`. + +This change will require these service calls to be updated with a `target` for +the camera and by removing `name` from `data` of the blink service calls. + +For example, service call before 2023.11: + +```yaml +service: blink.save_video +data: + name: Front door + filename: test.mp4 +``` + +Service call after 2023.11 and before 2024.1: + +```yaml +service: blink.save_video +data: + device_id: 87dc3b85c18ee84f8c322a95e8230eb2 + name: Front door + filename: test.mp4 +``` + +New service call: +```yaml +service: blink.save_video +target: + entity_id: + - camera.front_door +data: + filename: test.mp4 +``` + +--- + +The `blink.send_pin` service now uses an integration/configuration entry selector: + +Example service call before 2023.11: + +```yaml +service: blink.send_pin +data: + pin: "1234" +``` + +Service call after 2023.11 and before 2024.1: + +```yaml +service: blink.send_pin +data: + pin: "1234" + device_id: 87dc3b85c18ee84f8c322a95e8230eb2 +``` + + New service call: + +```yaml +service: blink.send_pin +data: + config_entry_id: a1bee602deade2b09bc522749bbce48e + pin: "1234" +``` + +--- + +The `blink.blink_update` service is deprecated and will be removed in 2024.7.0. +Use the `homeassistant.update_entity` service instead. + +([@mkmer] - [#105413]) ([documentation](/integrations/blink)) + +[@mkmer]: https://github.com/mkmer +[#105413]: https://github.com/home-assistant/core/pull/105413 + +{% enddetails %} + +{% details "Home Assistant shutdown event" %} + +The event key in the (undocumented) trigger data for the `homeassistant` trigger +platform is now the string `shutdown` for a `homeassistant` trigger configured +to fire on shutdown instead of an `Event` object. + +([@tetele] - [#91165]) ([documentation](/integrations/homeassistant)) + +[@tetele]: https://github.com/tetele +[#91165]: https://github.com/home-assistant/core/pull/91165 + +{% enddetails %} + +{% details "Modbus" %} + +Setting `swap: none` has been removed from the Modbus configuration. +It is identical to omitting it: `swap:`. + +([@janiversen] - [#104713]) ([documentation](/integrations/modbus)) + +[@janiversen]: https://github.com/janiversen +[#104713]: https://github.com/home-assistant/core/pull/104713 + +{% enddetails %} + +{% details "PrusaLink" %} + +- The printer state now contains several new statuses, most importantly + "attention", which always needs your intervention. +- Firmware 4.7.0 is now the minimum version for Prusa XL and MK4. +- Firmware 5.1.0 is now the minimum version for Prusa Mini since 4.7.x and 5.0.x + aren't available for the Mini. + +([@Skaronator] - [#103396]) ([documentation](/integrations/prusalink)) + +[@Skaronator]: https://github.com/Skaronator +[#103396]: https://github.com/home-assistant/core/pull/103396 + +{% enddetails %} + +{% details "Reolink" %} + +The Reolink `Infrared lights in night mode` entity has been migrated from +the `light` to the `switch` domain. + +This means the entity ID also changed, and automations and dashboards may need +to be adjusted to use the new entity ID. + +If you want to go back to the light domain, use the +[switch_as_x "Show as" option](/integrations/switch_as_x/#change-device-type-of-a-switch-from-the-existing-entity) +on the new `Infrared lights in night mode` switch entity and select light. + +([@starkillerOG] - [#105916]) ([documentation](/integrations/reolink)) + +[@starkillerOG]: https://github.com/starkillerOG +[#105916]: https://github.com/home-assistant/core/pull/105916 + +{% enddetails %} + +{% details "Shelly" %} + +The minimum supported firmware version for generation 1 devices is 1.11.0 (2021-07-15). +The minimum supported firmware version for generation 2 devices is 1.0.0 (2023-08-03). + +You must update your devices to the firmware versions listed or newer. + +([@bieniu] - [#105384]) ([documentation](/integrations/shelly)) + +[@bieniu]: https://github.com/bieniu +[#105384]: https://github.com/home-assistant/core/pull/105384 + +{% 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: + +- [Changes to EntityDescription data classes](https://developers.home-assistant.io/blog/2023/12/11/entity-description-changes/) +- [Config entry now supports minor versions](https://developers.home-assistant.io/blog/2023/12/18/config-entry-minor-version/) +- [Deprecated constants create a log entry](https://developers.home-assistant.io/blog/2023/12/19/constant-deprecation/) +- [Deprecating all magic numbers for supported features](https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation/) + +[devblog]: https://developers.home-assistant.io/blog/ + +## 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 2024.1](/changelogs/core-2024.1) diff --git a/source/changelogs/core-2024.1.markdown b/source/changelogs/core-2024.1.markdown new file mode 100644 index 00000000000..a8c7ce3c9d8 --- /dev/null +++ b/source/changelogs/core-2024.1.markdown @@ -0,0 +1,1579 @@ +--- +title: Full changelog for Home Assistant Core 2024.1 +description: Detailed changelog for the Home Assistant Core 2024.1 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2024.1 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2024/01/03/release-20241/). + +## All changes + +- Bump version to 2024.1.0dev0 ([@frenck] - [#104746]) +- Add faa_delays to strict typing ([@joostlek] - [#104720]) +- Move Faa delays state attributes to entity description ([@joostlek] - [#104748]) +- Add entity translations to faa_delays ([@joostlek] - [#104749]) +- Add strict typing to push bullet ([@engrbm87] - [#99538]) +- Reolink cleanup when CAM disconnected from NVR ([@starkillerOG] - [#103888]) +- Migrate GDACS to has entity name ([@joostlek] - [#104733]) +- Add common reolink entity description ([@starkillerOG] - [#104142]) +- Cleanup Reolink formatting (late review) ([@starkillerOG] - [#104793]) +- Make the minimum number of samples used by the trend sensor configurable ([@jpbede] - [#101102]) +- Add Flexit bacnet integration ([@lellky] - [#104275]) +- Add significant Change support for remote ([@mib1185] - [#104627]) +- Add codeowner to vesync ([@cdnninja] - [#104809]) +- Bump evohome-async to 0.4.9 ([@zxdavb] - [#103660]) +- Added typing for return value for async_migrate func. ([@sergeymaysak] - [#104828]) +- Improve decorator type annotations ([@cdce8p] - [#104821]) +- Improve decorator type annotations [matter] ([@cdce8p] - [#104822]) +- Improve decorator type annotations [sabnzbd] ([@cdce8p] - [#104823]) +- Improve decorator type annotations [core] ([@cdce8p] - [#104826]) +- Always create APCUPS device ([@joostlek] - [#104716]) +- Improve decorator type annotations [sensibo] ([@cdce8p] - [#104824]) +- Use orjson to load HomeWizard test fixtures ([@frenck] - [#104832]) +- Vesync constant cleanup ([@cdnninja] - [#104842]) +- Let executor CI test pass under worse conditions ([@jbouwh] - [#104849]) +- Change pytest fixture scope from core fixtures ([@frenck] - [#104831]) +- Add temperature to the light color mode parameter fallbacks ([@nmaggioni] - [#86026]) +- Bump bluetooth-data-tools to 0.16.0 ([@bdraco] - [#104854]) +- Fix powerwall typing ([@cdce8p] - [#104875]) +- Migrate to using faster monotonic_time_coarse from bluetooth-data-tools ([@bdraco] - [#104882]) +- Reolink only fetch data for enabled entities ([@starkillerOG] - [#104157]) +- Adjust roku type hint ([@cdce8p] - [#104877]) +- Improve decorator type annotations [esphome] ([@cdce8p] - [#104878]) +- Correct SerialException import in dsmr, firmata, landysgyr_heat_meater and rfxtrx integrations ([@jbouwh] - [#104889]) +- Add number entities for program temperature in ViCare integration ([@CFenner] - [#103960]) +- Add alarm sensor to Aurora ABB ([@davet2001] - [#104503]) +- Add MELCloud token refresh upon firmware upgrade ([@erwindouna] - [#104391]) +- Refactor bluetooth scanners for better seperation of concerns ([@bdraco] - [#104909]) +- Bump python-holidays to 0.37 ([@jrieger] - [#104937]) +- Remove CONF_PRECISION remainder from dsmr ([@jbouwh] - [#104919]) +- Add Holiday integration ([@jrieger] - [#103795]) +- Bump bluetooth-data-tools to 1.17.0 ([@bdraco] - [#104935]) +- Relocate base Bluetooth scanner code into an external library ([@bdraco] - [#104930]) +- Bump plexapi to 4.15.6 ([@jjlawren] - [#104949]) +- Add StreamLabsWater to strict typing ([@joostlek] - [#104957]) +- Bump habluetooth to 0.4.0 ([@bdraco] - [#104958]) +- Use constants in config flow scaffold ([@joostlek] - [#104964]) +- Fix bug in config flow scaffold ([@joostlek] - [#104965]) +- Add virtual integration Fujitsu anywAIR ([@Bre77] - [#102978]) +- Bump habluetooth to 0.5.1 ([@bdraco] - [#104969]) +- Bump evohome-async to 0.4.13 ([@zxdavb] - [#104960]) +- Bump screenlogicpy to v0.10.0 ([@dieselrabbit] - [#104866]) +- Remove monotonic_time_coarse datetime helper ([@bdraco] - [#104892]) +- Update balboa strings.json ([@Betacart] - [#104977]) +- Bump dbus-fast to 2.20.0 ([@bdraco] - [#104978]) +- Squeezebox to Synology DSM: add host field description ([@c0ffeeca7] - [#104864]) +- Add telegram message timestamp to event data ([@mdunda] - [#87493]) +- Allow passing breaks_in_ha_version to deprecation helper decorators ([@emontnemery] - [#104985]) +- Add scaling utils for brightness and fanspeed ([@jbouwh] - [#104753]) +- Bump opower==0.0.40 ([@tronikos] - [#104986]) +- Move config_per_platform and extract_domain_configs to config.py ([@emontnemery] - [#104989]) +- Remove "swap: none" from modbus ([@janiversen] - [#104713]) +- Refactor lock default code handling ([@jbouwh] - [#104807]) +- Make `cv.string` return subclasses of str as is ([@emontnemery] - [#103916]) +- Reverse component path ([@emontnemery] - [#104087]) +- Avoid double URL creation for hassio ingress ([@bdraco] - [#105052]) +- Bump habluetooth to 0.6.1 ([@bdraco] - [#105029]) +- Make season types translatable ([@jpbede] - [#105027]) +- Remove breaks_in_ha_version from deprecated YAML classes ([@emontnemery] - [#105062]) +- Deprecate and remove lazy_error from modbus ([@janiversen] - [#105037]) +- Add fields cancelled & extra to result of the departure HVV sensor ([@tzahari] - [#105030]) +- Improve matrix typing ([@cdce8p] - [#105067]) +- Add optional dsmr timestamp sensor ([@dupondje] - [#104979]) +- Use modern platform path when reporting platform config errors ([@emontnemery] - [#104238]) +- Add domain key config validation ([@emontnemery] - [#104242]) +- Add calendar entity to Radarr ([@tkdrob] - [#79077]) +- Finish scaffold config flow with either abort or create entry ([@joostlek] - [#105012]) +- Remove logic converting empty or falsy YAML to empty dict ([@emontnemery] - [#103912]) +- Improve yamaha tests ([@emontnemery] - [#105077]) +- Move local bluetooth scanner code into habluetooth library ([@bdraco] - [#104970]) +- Update energyzero lib to v2.0.0 ([@klaasnicolaas] - [#105080]) +- Improve raise contains mocks ([@emontnemery] - [#105078]) +- Add significant Change support for weather ([@mib1185] - [#104840]) +- Move Bluetooth advertisement tracker to habluetooth library ([@bdraco] - [#105083]) +- Split bluetooth manager so it can be extracted into the habluetooth lib ([@bdraco] - [#105015]) +- Increase frequency of weatherkit updates ([@tjhorner] - [#105094]) +- Bump renson library to version 1.7.1 ([@jimmyd-be] - [#105096]) +- Trigger Home Assistant shutdown automations right before the stop event instead of during it ([@tetele] - [#91165]) +- Update easyenergy lib to v2.0.0 ([@klaasnicolaas] - [#105108]) +- Bump aioesphomeapi to 19.3.0 ([@bdraco] - [#105114]) +- Bump habluetooth to 0.8.0 ([@bdraco] - [#105109]) +- Fix flakey logbook tests ([@bdraco] - [#105111]) +- Bump actions/setup-python from 4.7.1 to 4.8.0 (@dependabot - [#105117]) +- bump evohome-async to 0.4.15 ([@zxdavb] - [#105119]) +- Address late review for Holiday ([@jrieger] - [#105121]) +- Add Huawei LTE network mode select ([@scop] - [#104614]) +- Use freezegun in utility_meter tests ([@jpbede] - [#105123]) +- Bump python-opensky to 1.0.0 ([@joostlek] - [#105131]) +- Improve decorator type annotations [zwave_js] ([@cdce8p] - [#104825]) +- Add preset modes to ESPHome fan entities ([@mill1000] - [#103781]) +- Modernize and cleanup trend tests ([@jpbede] - [#105010]) +- Add Modbus fan speed support ([@cian] - [#104577]) +- Add extra tests for HomeWizard for unsupported entity creation ([@DCSBL] - [#105149]) +- Bump actions/setup-python from 4.8.0 to 5.0.0 (@dependabot - [#105193]) +- Use brightness scaling util in HomeWizard Number entity ([@DCSBL] - [#105147]) +- Add custom services for renson fans ([@jimmyd-be] - [#94497]) +- Add Seattle City Light virtual integration via Opower ([@dewdropawoo] - [#104997]) +- Bump easyenergy lib to v2.1.0 ([@klaasnicolaas] - [#105224]) +- Bump energyzero lib to v2.1.0 ([@klaasnicolaas] - [#105228]) +- Migrate auth tests to use freezegun ([@jpbede] - [#105243]) +- Use freezegun in cert_expiry tests ([@jpbede] - [#105125]) +- Migrate Gree to has entity name ([@joostlek] - [#104739]) +- Migrate non-component tests to use freezegun/freezer ([@jpbede] - [#105142]) +- Add Wyoming satellite audio settings ([@synesthesiam] - [#105261]) +- Add OSO Energy integration ([@osohotwateriot] - [#70365]) +- Bump actions/stale from 8.0.0 to 9.0.0 (@dependabot - [#105275]) +- Bump github/codeql-action from 2.22.8 to 2.22.9 (@dependabot - [#105274]) +- Bump habluetooth to 0.10.0 ([@bdraco] - [#105118]) +- Adjust stale bot policy for PRs ([@frenck] - [#105280]) +- Remove workaround for default lock code in Matter ([@oyvindwe] - [#105173]) +- Update yarl to 1.9.4 ([@frenck] - [#105282]) +- Replace apcaccess dependency with aioapcaccess in apcupsd ([@yuxincs] - [#104571]) +- Migrate samsungtv tests to use freezegun ([@jpbede] - [#105286]) +- Add support for accessing Squeezebox over over https ([@rajlaud] - [#95088]) +- Add A. O. Smith integration ([@bdr99] - [#104976]) +- Migrate homeassistant component tests to use freezegun ([@jpbede] - [#105333]) +- Add myself as code owner for co2signal ([@VIKTORVAV99] - [#105302]) +- Replace aiohttp mock with patch in Advantage Air ([@Bre77] - [#104932]) +- Fix SSLCipherList typing error in IMAP coordinator ([@vexofp] - [#105362]) +- Sun WEG integration ([@rokam] - [#88272]) +- Migrate template tests to use freezegun ([@jpbede] - [#105341]) +- Make network fixture scoped to session to speed up tests ([@bdraco] - [#105353]) +- Migrate gree tests to use freezegun ([@jpbede] - [#105340]) +- Fix the ruff-format error ([@Bre77] - [#105376]) +- Update freezegun to 1.3.1 ([@cdce8p] - [#105377]) +- Migrate unifi tests to use freezegun ([@jpbede] - [#105343]) +- Add data descriptions to Reolink ([@starkillerOG] - [#105298]) +- Bump `aioshelly` to version 7.0.0 ([@bieniu] - [#105384]) +- Avoid ffmpeg subprocess for many component tests ([@bdraco] - [#105354]) +- Migrate time_date tests to use freezegun ([@jpbede] - [#105409]) +- Prevent duplicate default SSLContext instances ([@vexofp] - [#105348]) +- Remove zwave_js device on device reset ([@raman325] - [#104291]) +- Accept HTTP 200 through 206 as success for RESTful Switch ([@vexofp] - [#105358]) +- Add Tessie Integration ([@Bre77] - [#104684]) +- Migrate roku tests to use freezegun ([@jpbede] - [#105418]) +- Make API init async in Minecraft Server ([@elmurato] - [#105403]) +- Add reauth to Tessie ([@Bre77] - [#105419]) +- Migrate mqtt tests to use freezegun ([@jpbede] - [#105414]) +- Improve Amazon Alexa endpoint validation ([@frenck] - [#105287]) +- Add reauth to A. O. Smith integration ([@bdr99] - [#105320]) +- Bump pylitejet to v0.6.0 ([@joncar] - [#105472]) +- Migrate tag & tts tests to use freezegun ([@jpbede] - [#105411]) +- Migrate octoprint tests to use freezegun ([@jpbede] - [#105408]) +- Migrate sonarr tests to use freezegun ([@jpbede] - [#105410]) +- Bump python-holidays to 0.38 ([@jrieger] - [#105482]) +- Make Workday UI setup nicer ([@gjohansson-ST] - [#105407]) +- Bump openai end switch from dall-e-2 to dall-e-3 ([@Shulyaka] - [#104998]) +- Follow Alpine 3.18 raspberrypi package updates ([@agners] - [#105486]) +- Reduce modbus validator for "swap" (remove special handling) ([@janiversen] - [#105021]) +- Improve test of config entry store ([@emontnemery] - [#105487]) +- Update typing-extensions to 4.9.0 ([@cdce8p] - [#105490]) +- Correctly report unavailable battery for value 255 of percentage ([@elupus] - [#104566]) +- Make it possible to inherit EntityDescription in frozen and mutable dataclasses ([@emontnemery] - [#105211]) +- Add typing in Melcloud config flow ([@erwindouna] - [#105510]) +- Relocate Bluetooth manager to habluetooth library ([@bdraco] - [#105110]) +- Add config flow to Suez water ([@joostlek] - [#104730]) +- Add Fastdotcom DataUpdateCoordinator ([@erwindouna] - [#104839]) +- Add support for Shelly Gen3 devices ([@bieniu] - [#104874]) +- Remove unneeded class _EntityDescriptionBase ([@emontnemery] - [#105518]) +- Improve tests in Tessie ([@Bre77] - [#105430]) +- Updates V2C sensor icons ([@dgomes] - [#105534]) +- Bump sigstore/cosign-installer from 3.2.0 to 3.3.0 (@dependabot - [#105537]) +- Bump anyio to 4.1.0 ([@bdraco] - [#105529]) +- Update stale doc strings in entity platform tests ([@jbouwh] - [#105526]) +- Migrate device_sun_light_trigger tests to use freezegun ([@jpbede] - [#105520]) +- Migrate geonetnz_* tests to use freezegun ([@jpbede] - [#105521]) +- Bump bluetooth libraries ([@bdraco] - [#105522]) +- Add minor version to config entries ([@emontnemery] - [#105479]) +- Add Fast.com Device Info ([@erwindouna] - [#105528]) +- Add Tado error handling to fetching devices ([@erwindouna] - [#105546]) +- Patch aiohttp server app router freeze in tests ([@MartinHjelmare] - [#105555]) +- Add Suez Water to strict typing ([@joostlek] - [#105559]) +- Use mocked entity platform for lock service tests ([@jbouwh] - [#105020]) +- Add Airvisual pro to strict typing ([@joostlek] - [#105568]) +- Add support for Happy Eyeballs to homekit_controller ([@bdraco] - [#105454]) +- Bump dbus-fast to 2.21.0 ([@bdraco] - [#105536]) +- Bump aiohomekit to 3.1.0 ([@bdraco] - [#105584]) +- Bump aioesphomeapi to 20.0.0 ([@bdraco] - [#105586]) +- Migrate homematicip_cloud tests to use freezegun ([@jpbede] - [#105592]) +- Bump PyTado to 0.17.0 ([@erwindouna] - [#105573]) +- Add Apprise to strict typing ([@joostlek] - [#105575]) +- Add Aranet to strict typing ([@joostlek] - [#105577]) +- Add Android IP webcam to strict typing ([@joostlek] - [#105570]) +- Add Fastdotcom service ([@erwindouna] - [#105553]) +- Improve FrozenOrThawed ([@emontnemery] - [#105541]) +- Refactor all Bluetooth scanners to inherit from BaseHaRemoteScanner ([@bdraco] - [#105523]) +- Add Adax to strict typing ([@joostlek] - [#105562]) +- Mark more entities secondary on Fully Kiosk Browser ([@frenck] - [#105595]) +- Bump `brother` library, use `pysnmp-lextudio` with SNMP integration ([@bieniu] - [#105591]) +- Bump aioesphomeapi to 20.1.0 ([@bdraco] - [#105602]) +- Add sensor platform to A. O. Smith integration ([@bdr99] - [#105604]) +- Bump aioesphomeapi to 21.0.0 ([@bdraco] - [#105609]) +- Bump github/codeql-action from 2.22.9 to 2.22.10 (@dependabot - [#105620]) +- Add diagnostics platform to BraviaTV ([@bieniu] - [#105603]) +- Refactor Bluetooth scanners to avoid the need to pass a callback ([@bdraco] - [#105607]) +- Allow inheriting `FrozenOrThawed` with custom init ([@emontnemery] - [#105624]) +- Fix entity descriptions in philips_js ([@emontnemery] - [#105625]) +- Reduce code duplication in Suez config flow ([@joostlek] - [#105558]) +- Use issue registry fixture ([@joostlek] - [#105633]) +- Add diagnostics download to goodwe integration ([@mletenay] - [#102928]) +- Improve cloud http api tests ([@MartinHjelmare] - [#105610]) +- Clean cloud client fixture from cloud http api tests ([@MartinHjelmare] - [#105649]) +- Deduplicate constants A-D ([@joostlek] - [#105638]) +- Migrate demo test to use freezegun ([@jpbede] - [#105644]) +- Fix goodwe tests ([@emontnemery] - [#105653]) +- Avoid mutating entity descriptions in efergy ([@emontnemery] - [#105626]) +- Avoid mutating entity descriptions in lidarr ([@emontnemery] - [#105628]) +- Avoid mutating entity descriptions in airthings_ble ([@emontnemery] - [#105627]) +- Add country code constant ([@joostlek] - [#105640]) +- Avoid mutating entity descriptions in melcloud ([@emontnemery] - [#105629]) +- Deduplicate constants E-Z ([@joostlek] - [#105657]) +- Add volume_step property to MediaPlayerEntity ([@emontnemery] - [#105574]) +- Keep capabilities up to date in the entity registry ([@emontnemery] - [#101748]) +- Migrate homekit_controller tests to use freezegun ([@jpbede] - [#105646]) +- Use Textselector in Trafikverket Camera ([@gjohansson-ST] - [#105677]) +- Set volume_step in sonos media_player ([@emontnemery] - [#105671]) +- Add error translations for Sensibo ([@gjohansson-ST] - [#105600]) +- Add error translations to Yale Smart Living ([@gjohansson-ST] - [#105678]) +- Set volume_step in enigma2 media_player ([@emontnemery] - [#105669]) +- Bump zeroconf to 0.129.0 ([@bdraco] - [#105701]) +- Remove context_recent_time property from entity base class ([@emontnemery] - [#105652]) +- Remove device_state_attributes property from entity base class ([@emontnemery] - [#105650]) +- Bump iammeter to 0.2.1 ([@yangbo1979] - [#95885]) +- Remove cloud details from assist pipeline ([@MartinHjelmare] - [#105687]) +- Allow multiple configs for srp energy ([@briglx] - [#96573]) +- Avoid mutating entity descriptions in efergy tests ([@emontnemery] - [#105717]) +- Replace Starline horn switch with button ([@Anonym-tsk] - [#105728]) +- Bump bluetooth-data-tools to 1.18.0 ([@bdraco] - [#105685]) +- Bump sunweg to 2.0.1 ([@rokam] - [#105613]) +- Add France to picnic countries ([@slhad] - [#105722]) +- Small speed up to data entry flow steps ([@bdraco] - [#105713]) +- Migrate ESPHome bleak implementation to bleak-esphome library ([@bdraco] - [#105611]) +- Include Envoy firmware version in Enphase diagnostics ([@cgarwood] - [#105742]) +- Bump bleak-esphome to 0.3.0 ([@bdraco] - [#105748]) +- Bump pytrafikverket to 0.3.9.2 ([@gjohansson-ST] - [#105752]) +- Bump brottsplatskartan 1.0.5 ([@gjohansson-ST] - [#105759]) +- Refactor cloud assist pipeline ([@MartinHjelmare] - [#105723]) +- Set volume_step in monoprice media_player ([@emontnemery] - [#105670]) +- Set volume_step in bluesound media_player ([@emontnemery] - [#105672]) +- Set volume_step in aquostv media_player ([@emontnemery] - [#105665]) +- Set volume_step in clementine media_player ([@emontnemery] - [#105666]) +- Set volume_step in cmus media_player ([@emontnemery] - [#105667]) +- Avoid mutating entity descriptions in solaredge tests ([@emontnemery] - [#105718]) +- Fix mqtt tests modifying globals ([@jbouwh] - [#105774]) +- Partly migrate Plex to has entity name ([@joostlek] - [#98841]) +- Bump opower to 0.0.41 ([@tronikos] - [#105791]) +- Add data descriptions to MQTT config flow. ([@jbouwh] - [#105301]) +- Fix translation keys in Tessie ([@Bre77] - [#105824]) +- Quality fixes for Tessie ([@Bre77] - [#105838]) +- Add Binary Sensor platform to Tessie ([@Bre77] - [#105421]) +- Bump soco to 0.30.0 ([@jjlawren] - [#105823]) +- Add Unifi device state for additional diagnostics ([@JosephBlock] - [#105138]) +- Reduce overhead to connect dispatcher ([@bdraco] - [#105715]) +- Allow inheriting base component entity descriptions in frozen dataclasses ([@emontnemery] - [#105512]) +- Update pre-commit to 3.6.0 ([@cdce8p] - [#105856]) +- Update coverage to 7.3.3 ([@cdce8p] - [#105855]) +- Update feedparser to 6.0.11 ([@cdce8p] - [#105857]) +- Ensure bluetooth auto recovery does not run in tests ([@bdraco] - [#105841]) +- Bump glances-api to 0.5.0 ([@cohenchris] - [#105813]) +- Bump bthome_ble to 3.3.1 ([@Ernst79] - [#105834]) +- Bump qingping_ble to 0.9.0 ([@Ernst79] - [#105876]) +- Fix cloud tests doing socket I/O ([@bdraco] - [#105874]) +- Bump aiodiscover to 1.6.0 ([@bdraco] - [#105885]) +- Bump bluetooth-adapters to 0.16.2 ([@bdraco] - [#105878]) +- Refactor ESPHome Bluetooth connection logic to prepare for esphome-bleak ([@bdraco] - [#105747]) +- Migrate file test to use freezegun ([@jpbede] - [#105892]) +- Bump zeroconf to 0.130.0 ([@bdraco] - [#105868]) +- Bump bleak-esphome to 0.4.0 ([@bdraco] - [#105909]) +- Remove bluetooth-data-tools dep from ESPHome ([@bdraco] - [#105912]) +- Use library constants instead of literals in Evohome ([@zxdavb] - [#105039]) +- Bump lru-dict to 1.3.0 ([@bdraco] - [#105914]) +- Add first TypeVarTuple annotations ([@cdce8p] - [#105379]) +- Implement Review Feedback for Tessie ([@Bre77] - [#105937]) +- Bump pyasuswrt to 0.1.21 ([@ollo69] - [#105922]) +- Bump asyncsleepiq to v1.4.0 ([@kbickar] - [#105939]) +- Address late review comments for A. O. Smith reauth ([@bdr99] - [#105941]) +- Add Tailwind integration ([@frenck] - [#105926]) +- Add prices service calls for easyEnergy ([@klaasnicolaas] - [#105175]) +- Add AndroidTV remote to strict typing ([@joostlek] - [#105571]) +- Add Tailwind zeroconf discovery ([@frenck] - [#105949]) +- Set volume_step in frontier_silicon media_player ([@emontnemery] - [#105953]) +- Reolink change ir to switch ([@starkillerOG] - [#105916]) +- Add reauth support to Tailwind ([@frenck] - [#105959]) +- Bump opower to 0.1.0 ([@tronikos] - [#105957]) +- Improve rfxtrx typing ([@cdce8p] - [#105966]) +- Fix easyenergy async_setup_services declaration ([@edenhaus] - [#105947]) +- Avoid mutating entity descriptions in solaredge ([@emontnemery] - [#105974]) +- Avoid mutating entity descriptions in tomorrowio ([@emontnemery] - [#105975]) +- Avoid mutating entity descriptions in onewire ([@emontnemery] - [#105970]) +- Avoid mutating entity descriptions in radarr ([@emontnemery] - [#105972]) +- Avoid mutating entity descriptions in ovo_energy ([@emontnemery] - [#105971]) +- Fix typo in deprecated comment ([@mkmer] - [#105969]) +- Add diagnostics platform to Tailwind ([@frenck] - [#105965]) +- Bump google-generativeai to 0.3.1 ([@tronikos] - [#105783]) +- Remove HaAsyncServiceBrowser from zeroconf ([@bdraco] - [#105881]) +- Add button platform to Tailwind integration ([@frenck] - [#105961]) +- Migrate directv test to use freezegun ([@jpbede] - [#105894]) +- Add significant Change support for camera ([@mib1185] - [#105866]) +- Improve logging util typing ([@cdce8p] - [#105968]) +- Allow step size any for number selector in slider mode ([@emontnemery] - [#105978]) +- Rename zamg to GeoSphere Austria ([@killer0071234] - [#105494]) +- Add DHCP discovery to Tailwind ([@frenck] - [#105981]) +- Improve Transmission Entity description class ([@engrbm87] - [#105924]) +- Avoid mutating entity descriptions in screenlogic ([@emontnemery] - [#105983]) +- Add Valve integration ([@cibernox] - [#102184]) +- Avoid mutating entity descriptions in unifiprotect ([@emontnemery] - [#105976]) +- Avoid mutating entity descriptions in sunweg ([@emontnemery] - [#105982]) +- Add new price sensors with API token access to pvpc hourly pricing ([@azogue] - [#85769]) +- Add PLC PHY rates as sensor to devolo Home Network ([@Shutgun] - [#87039]) +- Set aiohttp shutdown_timeout on AppRunner instead of TCPSite ([@cdce8p] - [#105973]) +- Add significant change helper check_valid_float ([@mib1185] - [#106005]) +- Remove leftover logging in onewire ([@epenet] - [#105986]) +- Avoid mutating entity descriptions in screenlogic ([@emontnemery] - [#106022]) +- Fix entity descriptions in upnp ([@emontnemery] - [#106023]) +- Avoid mutating entity descriptions in sunweg tests ([@emontnemery] - [#106024]) +- Update enigma2 codeowners ([@autinerd] - [#106000]) +- Bump Roborock to 0.38.0 ([@Lash-L] - [#106025]) +- Upgrade gardena_bluetooth to 1.4.1 ([@elupus] - [#106017]) +- Freeze integration entity descriptions ([@emontnemery] - [#105984]) +- Clean up device registry for doors that no longer exist in Aladdin Connect ([@mkmer] - [#99743]) +- Fix opower for AEP utilities ([@tronikos] - [#106010]) +- Correct logic in honeywell for cleaning up stale devices ([@mkmer] - [#106018]) +- Add significant Change support for alarm control panel ([@mib1185] - [#106021]) +- Bump devolo_home_control_api to 0.18.3 ([@Shutgun] - [#106035]) +- Remove ipma entity description required fields mixin ([@jpbede] - [#106039]) +- Remove gree switch entity description required fields mixin ([@jpbede] - [#105849]) +- Add significant Change support for water heater ([@mib1185] - [#106003]) +- Add binary sensor platform to Tailwind integration ([@frenck] - [#106033]) +- Remove sun entity description required fields mixin ([@jpbede] - [#105848]) +- Add myself as code owner for rest_command ([@jpbede] - [#106047]) +- Use freezegun in ign_sismologia test ([@jpbede] - [#106051]) +- Use freezegun in nsw_rural_fire_service_feed test ([@jpbede] - [#106050]) +- Use freezegun in qld_bushfire test ([@jpbede] - [#106049]) +- Use freezegun in image_upload test ([@jpbede] - [#106045]) +- Add significant Change support for climate ([@mib1185] - [#106020]) +- Use check_valid_float helper in significant change support of sensor and weather ([@mib1185] - [#106013]) +- Workday create repair if named holiday missing ([@gjohansson-ST] - [#101201]) +- Deprecate binary sensor device class constants ([@edenhaus] - [#105736]) +- Add cover platform to Tailwind integration ([@frenck] - [#106042]) +- Bump hass-nabucasa from 0.74.0 to 0.75.1 ([@ludeeus] - [#105958]) +- Update gotailwind to 0.2.2 ([@frenck] - [#106054]) +- Add dir_with_deprecated_constants function to deprecation helper ([@edenhaus] - [#106059]) +- Move common function for testing derepcation constants to util ([@edenhaus] - [#106063]) +- Upgrade Prusa Link to new Digest Authentication and /v1/ API ([@Skaronator] - [#103396]) +- Improve tests for easyEnergy ([@klaasnicolaas] - [#105989]) +- Deprecate deprecated automation constants ([@edenhaus] - [#106067]) +- Add valve support to switch_as_x ([@emontnemery] - [#105988]) +- Bump async-upnp-client to 0.38.0 ([@chishm] - [#105980]) +- Small cleanup in Tailwind ([@frenck] - [#106073]) +- Bump switchbot-api to 1.3.0 ([@raww] - [#105594]) +- Bump aioesphomeapi to 21.0.1 ([@bdraco] - [#106079]) +- Move shared enigma2 constants ([@autinerd] - [#106064]) +- Add MQTT valve platform ([@jbouwh] - [#105766]) +- Add Starline Service Mode switch ([@Anonym-tsk] - [#105741]) +- Use patch.dict in deprecation test "test_check_if_deprecated_constant" ([@edenhaus] - [#106117]) +- Add water_heater to alexa ([@jbouwh] - [#106011]) +- Deprecate deprecated remote constants ([@edenhaus] - [#106116]) +- Deprecate deprecated number constants ([@edenhaus] - [#106114]) +- Bump zeroconf to 0.131.0 ([@bdraco] - [#106037]) +- Deprecate deprecated fan constants ([@edenhaus] - [#106111]) +- Deprecate deprecated cover constants ([@edenhaus] - [#106098]) +- Deprecate deprecated humidifier constants ([@edenhaus] - [#106112]) +- Deprecate deprecated device tracker constants ([@edenhaus] - [#106099]) +- Deprecate deprecated lock constants ([@edenhaus] - [#106113]) +- Deprecate deprecated alarm control panel constants ([@edenhaus] - [#106058]) +- Move prusalink migration to async_migrate_entry and use a minor version bump ([@edenhaus] - [#106109]) +- Deprecate deprecated siren constants ([@edenhaus] - [#106121]) +- Improve error mqtt valve error logging ([@jbouwh] - [#106129]) +- Add note on overkiz measurement sensor fix ([@jbouwh] - [#105141]) +- Add water_heater to google_assistant ([@jbouwh] - [#105915]) +- Update Ruff to 0.1.8, avoid linter/formatter conflicts ([@scop] - [#106080]) +- Remove unneeded usage of run_callback_threadsafe in entity helper ([@bdraco] - [#106138]) +- Deprecate deprecated climate constants ([@edenhaus] - [#106096]) +- Deprecate deprecated sensor constants ([@edenhaus] - [#106120]) +- Break out the ESPHome Bluetooth scanner connection logic into bleak-esphome ([@bdraco] - [#105908]) +- Fix ESPHome Bluetooth diagnostics ([@bdraco] - [#106151]) +- Add climate platform to Tessie ([@Bre77] - [#105420]) +- Add switch platform to Tessie ([@Bre77] - [#106153]) +- Add virtual integrations for AEP utilities supported by opower ([@tronikos] - [#106146]) +- Add Select platform to Tessie ([@Bre77] - [#105423]) +- Update habluetooth to 2.0.0 ([@bdraco] - [#106145]) +- Bump SunWEG to 2.0.3 ([@rokam] - [#106135]) +- Refactor media_player test classes ([@emontnemery] - [#105630]) +- Bump bluetooth-data-tools to 1.19.0 ([@bdraco] - [#106156]) +- Add flags to EntityDescriptions in Tessie ([@Bre77] - [#105847]) +- Improve performance of dhcp integration client processing ([@bdraco] - [#106137]) +- Allow Fronius devices to be deleted ([@farmio] - [#106141]) +- Refactor ranging utils for mqtt cover ([@jbouwh] - [#105739]) +- Migrate google related tests to use freezegun ([@jpbede] - [#105552]) +- Fix typo's en and improve language on MQTT data descriptions ([@jbouwh] - [#106165]) +- Add update platform to Tessie ([@Bre77] - [#106093]) +- Remove warning message on BMW initialization ([@rikroe] - [#106169]) +- Make evohome strictly typed ([@zxdavb] - [#106012]) +- Remove gios sensor description required fields mixin ([@jpbede] - [#106174]) +- Move cloud stt engine to config entry ([@MartinHjelmare] - [#99608]) +- Improve entity tests ([@emontnemery] - [#106175]) +- Add Energyzero get_gas_prices and get_energy_price services ([@iamrgroot] - [#101374]) +- Bump pyvlx to 0.2.21 ([@DeerMaximum] - [#105800]) +- Improve performance of dhcp on high activity networks ([@bdraco] - [#105884]) +- Swiss public transport config flow ([@miaucl] - [#105648]) +- Bump httpx to 0.26.0 and httpcore to 1.0.2 ([@Shulyaka] - [#106194]) +- Update mypy to 1.8.0 ([@cdce8p] - [#106189]) +- Bump python-opendata-transport to 0.4.0 ([@miaucl] - [#106199]) +- Skip logging deprecated constant if the calling integration couldn't be indentified ([@edenhaus] - [#106181]) +- Fix lacrosse view sensor units ([@killercode] - [#106203]) +- Bump aiohttp-zlib-ng to 0.1.2 ([@bdraco] - [#106193]) +- Use call_soon_threadsafe in face processing of image_processing ([@jpbede] - [#106168]) +- Deprecate legacy_templates ([@edenhaus] - [#105556]) +- Add device tracker to Tessie ([@Bre77] - [#105428]) +- Add button platform to Tessie ([@Bre77] - [#106210]) +- Bump pylitejet to v0.6.2 ([@joncar] - [#106222]) +- Quality improvements for Tessie ([@Bre77] - [#106218]) +- Add lock platform to Tessie ([@Bre77] - [#106216]) +- Add cover platform to Tessie ([@Bre77] - [#105422]) +- Deprecate deprecated device_registry helper constants ([@edenhaus] - [#106227]) +- Deprecate deprecated water_heater constants ([@edenhaus] - [#106226]) +- Deprecate deprecated switch constants ([@edenhaus] - [#106225]) +- Increase version default timeout from 10 to 30 seconds ([@N3rdix] - [#106158]) +- Add number platform to Tessie ([@Bre77] - [#106205]) +- Add integration for Vogel's MotionMount ([@RJPoelstra] - [#103498]) +- Add media player platform to Tessie ([@Bre77] - [#106214]) +- Add valve support to Amazon Alexa ([@jbouwh] - [#106053]) +- Add Refoss integration ([@ashionky] - [#100573]) +- Add starline binary sensors ([@Anonym-tsk] - [#105724]) +- Add DROP integration ([@pfrazer] - [#104319]) +- Don't make huawei_lte entity classes dataclasses ([@emontnemery] - [#106160]) +- Update coverage to 7.3.4 ([@cdce8p] - [#106233]) +- Add consider home interval to ping ([@jpbede] - [#104881]) +- Update pytest warnings filter ([@cdce8p] - [#106234]) +- Return multiple trains in Trafikverket Train ([@gjohansson-ST] - [#106206]) +- Add location selector to Islamic prayer times ([@engrbm87] - [#105911]) +- Clean up swiss public transport ([@joostlek] - [#106245]) +- Add bluecurrent integration ([@Floris272] - [#82483]) +- Add full test coverage to Trafikverket Train ([@gjohansson-ST] - [#106247]) +- Log when swiss_public_transport loses connection ([@miaucl] - [#106200]) +- Add foscam coordinator ([@krmarien] - [#92665]) +- Add support for re-ordering Google Tasks ([@allenporter] - [#104769]) +- Add binary sensors to drop_connect integration ([@pfrazer] - [#106248]) +- Improve cloud binary sensor tests ([@MartinHjelmare] - [#106238]) +- Add support for caching entity properties ([@emontnemery] - [#100601]) +- Filter by supported features for todo services ([@bramkragten] - [#106241]) +- Reduce Life360 update time by fetching Places & Members in parallel ([@pnbruckner] - [#106277]) +- Add support for attribute caching to the humidifier platform ([@bdraco] - [#106271]) +- Add support for attribute caching to the number platform ([@bdraco] - [#106254]) +- Add subwoofer crossover support to Sonos Amp devices ([@jjlawren] - [#106290]) +- Add support for attribute caching to the update platform ([@bdraco] - [#106261]) +- Improve cloud system health tests ([@MartinHjelmare] - [#106235]) +- Fix flaky Tailwind tests by fixing via_device ([@frenck] - [#106294]) +- Deprecate deprecated camera constants ([@edenhaus] - [#106095]) +- Add significant Change support for humidifier ([@mib1185] - [#106015]) +- Reduce zeroconf matcher complexity ([@bdraco] - [#105880]) +- Bump github/codeql-action from 2.22.10 to 3.22.12 (@dependabot - [#106221]) +- Add support for attribute caching to the lock platform ([@bdraco] - [#106275]) +- Add support for attribute caching to the remote platform ([@bdraco] - [#106274]) +- Add support for attribute caching to the button platform ([@bdraco] - [#106259]) +- Add support for attribute caching to the text platform ([@bdraco] - [#106262]) +- Add support for attribute caching to ToggleEntity ([@bdraco] - [#106272]) +- Add support for attribute caching to the binary_sensor platform ([@bdraco] - [#106253]) +- Add support for attribute caching to the sensor platform ([@bdraco] - [#106252]) +- Add significant Change support for vacuum ([@mib1185] - [#106002]) +- Deprecate deprecated data entry flow constants ([@edenhaus] - [#106229]) +- Add support for attribute caching to the fan platform ([@bdraco] - [#106269]) +- Add diagnostics support to Tankerkoenig ([@mib1185] - [#106301]) +- Apply units of measure provided in API when available in LaCrosse View ([@doggkruse] - [#106299]) +- Rework entity description functions in Tessie ([@Bre77] - [#106287]) +- Fix mqtt valve is not resetting opening or closing state ([@jbouwh] - [#106240]) +- Restructure enigma2 integration to use async ([@autinerd] - [#104206]) +- Improve mikrotik error handling ([@Marco98] - [#106244]) +- Add switches to drop_connect integration ([@pfrazer] - [#106264]) +- Add valve platform support to google_assistant ([@jbouwh] - [#106139]) +- Fix feedreader date comparison to allow RSS entries with identical timestamps ([@mattmattmatt] - [#104925]) +- Add energy usage sensor to A. O. Smith integration ([@bdr99] - [#105616]) +- ISY994: remove reference to reload service ([@c0ffeeca7] - [#106302]) +- Add support for attribute caching to the cover platform ([@bdraco] - [#106268]) +- Add support for attribute caching to the alarm_control_panel platform ([@bdraco] - [#106265]) +- Add support for attribute caching to the light platform ([@bdraco] - [#106260]) +- Add support for attribute caching to the select platform ([@bdraco] - [#106255]) +- Improve typing on drop_connect switch entity description ([@jbouwh] - [#106314]) +- Add entity translations to Steamist ([@joostlek] - [#96182]) +- Update psutil to 5.9.7 ([@frenck] - [#106295]) +- Deprecate some deprecated const constants ([@edenhaus] - [#106230]) +- Add support for attribute caching to the switch platform ([@bdraco] - [#106258]) +- New integration Midea ccm15 climate ([@ocalvo] - [#94824]) +- Ensure MQTT attributes are bound to the respective platform entity ([@bdraco] - [#106316]) +- Add support for attribute caching to the climate platform ([@bdraco] - [#106266]) +- Update test data for screenlogic ([@dieselrabbit] - [#106325]) +- Use shorthand attributes in enigma2 ([@autinerd] - [#106318]) +- Remove unnecessary async_add_job in face processing of image_processing ([@jpbede] - [#106323]) +- Add support for attribute caching to the camera platform ([@bdraco] - [#106256]) +- Fix native_step in number not looking at _attr_native_step ([@bdraco] - [#106327]) +- Add 4 more entities in V2C Trydan EVSE ([@dgomes] - [#105531]) +- Add support for attribute caching to the event platform ([@bdraco] - [#106330]) +- Optimize use_device_name check in base entity class ([@bdraco] - [#106209]) +- Add support for attribute caching to the media_player platform ([@bdraco] - [#106257]) +- Add support for attribute caching to the image platform ([@bdraco] - [#106333]) +- Add support for attribute caching to the siren platform ([@bdraco] - [#106337]) +- Add support for attribute caching to the weather platform ([@bdraco] - [#106334]) +- Add support for attribute caching to the lawn_mower platform ([@bdraco] - [#106335]) +- Add support for attribute caching to the water_heater platform ([@bdraco] - [#106336]) +- Add support for attribute caching to the date platform ([@bdraco] - [#106338]) +- Add support for attribute caching to the time platform ([@bdraco] - [#106339]) +- Add support for attribute caching to the datetime platform ([@bdraco] - [#106340]) +- Add support for attribute caching to the todo platform ([@bdraco] - [#106341]) +- Add Airnow to strict typing ([@joostlek] - [#105566]) +- Add diagnostics to ccm15 ([@joostlek] - [#106329]) +- Add support for attribute caching to the vacuum platform ([@bdraco] - [#106332]) +- Bump openwebifpy to 4.0.2 ([@autinerd] - [#106345]) +- Bump temperusb to 1.6.1 ([@davet2001] - [#106346]) +- Add select platform to drop_connect integration ([@pfrazer] - [#106309]) +- Deprecate parameter "retries" in modbus ([@janiversen] - [#105024]) +- Split out shared screenlogic switch code ([@dieselrabbit] - [#106344]) +- Add missing sensors for Shelly Pro Dimmer 2PM ([@bieniu] - [#105008]) +- Add delay to manual refresh in Advantage Air ([@Bre77] - [#104918]) +- Add full coverage to Fast.com ([@gjohansson-ST] - [#105596]) +- Add data model to Tessie ([@Bre77] - [#106285]) +- Enable toggle on valve/cover start in google_assistant ([@jbouwh] - [#106378]) +- Use identity checks for sensor device class enums ([@bdraco] - [#106383]) +- Avoid clearing the attr cache in setter when nothing has changed ([@bdraco] - [#106384]) +- Bump getmac 0.9.4 ([@mari8i] - [#106321]) +- Add config flow to Netgear LTE ([@tkdrob] - [#93002]) +- Bump zwave-js-server-python to 0.55.1 ([@raman325] - [#105502]) +- Use shorthand attrs for more tplink light attributes ([@bdraco] - [#106399]) +- Add valve platform for Shelly Gas Valve ([@bieniu] - [#106087]) +- Cache media player url hashing ([@bdraco] - [#106400]) +- Avoid recreating a set each time sensor unit_of_measurement is called ([@bdraco] - [#106401]) +- Improve drop_connect typing ([@cdce8p] - [#106404]) +- Switch unifi_direct to external library ([@tofuSCHNITZEL] - [#105046]) +- Move cloud binary sensor to config entry ([@MartinHjelmare] - [#106409]) +- Fix pytest test collection warning ([@cdce8p] - [#106405]) +- Add alarm platform to Comelit ([@chemelli74] - [#104718]) +- Add config flow to System Monitor ([@gjohansson-ST] - [#104906]) +- Add missing translations to Tessie Button platform ([@Bre77] - [#106232]) +- Fix freeze entity description ([@chemelli74] - [#106418]) +- Use faster contains check in camera for stream feature ([@bdraco] - [#106429]) +- Add config flow to Streamlabs water ([@joostlek] - [#104962]) +- Add more binary sensors to Tessie ([@Bre77] - [#106212]) +- Add install to Tessie update platform ([@Bre77] - [#106352]) +- Use faster contains check in climate ([@bdraco] - [#106430]) +- Use faster contains check in fan ([@bdraco] - [#106431]) +- Add Support for SleepIQ Foot Warmers ([@kbickar] - [#105931]) +- Handle Auto Fan and MyFan in Advantage Air ([@Bre77] - [#95594]) +- Use faster contains check in media_player ([@bdraco] - [#106434]) +- Handle failed updates in Tessie ([@Bre77] - [#106450]) +- Move Trunks from Button to Cover in Tessie ([@Bre77] - [#106448]) +- Add names to all Tessie entities ([@Bre77] - [#106267]) +- Deprecate deprecated core constants ([@edenhaus] - [#106456]) +- Use faster contains check in vacuum ([@bdraco] - [#106437]) +- Use faster contains check in remote ([@bdraco] - [#106435]) +- Use faster contains check in update ([@bdraco] - [#106436]) +- Use faster contains check in humidifier ([@bdraco] - [#106433]) +- Add attr caching support to the geo_location platform ([@bdraco] - [#106432]) +- Improve cloud tts tests ([@MartinHjelmare] - [#106427]) +- Use faster contains check in water_heater ([@bdraco] - [#106438]) +- Raise HomeAssistantError if event is triggered with invalid event_type ([@jbouwh] - [#106357]) +- Use translation placeholders in Swiss public transport ([@joostlek] - [#106416]) +- Deprecate deprecated unit of measurement constants ([@edenhaus] - [#106455]) +- Raise ServiceValidationError on invalid select option ([@jbouwh] - [#106350]) +- Add qBittorrent torrent sensors ([@finder39] - [#105781]) +- Flip around Tailwind locked out binary sensor ([@frenck] - [#106457]) +- Remove IP / mDNS validation in airq integration setup ([@Sibgatulin] - [#106326]) +- Update quality scale for Aladdin ([@mkmer] - [#99342]) +- Revert "Raise HomeAssistantError if event is triggered with invalid event_type" ([@frenck] - [#106458]) +- Add error handling to Tailwind service methods ([@frenck] - [#106463]) +- Fix Comelit alarm state ([@chemelli74] - [#106466]) +- Fix update platform in Tessie ([@Bre77] - [#106465]) +- Mark Tailwind a platinum quality integration ([@frenck] - [#106468]) +- Bump millheater to 0.11.8 ([@Danielhiversen] - [#106464]) +- Add preselect_remember_me to `/auth/providers` ([@edenhaus] - [#106462]) +- Fix RainMachine bugs ([@kingy444] - [#106231]) +- Fix MQTT retained event messages should be discarded ([@jbouwh] - [#106425]) +- Add translation to ServiceValidationError in Lock ([@gjohansson-ST] - [#105746]) +- Add typing to config flow A ([@joostlek] - [#105721]) +- Add coordinator to Swiss public transport ([@miaucl] - [#106278]) +- Improve glances tests ([@engrbm87] - [#106402]) +- Add significant Change support for fan ([@mib1185] - [#105867]) +- Add significant Change support for media player ([@mib1185] - [#105999]) +- Add supports_response to ServiceRegistry.register() ([@rikroe] - [#106164]) +- Changed setup of easyEnergy services ([@klaasnicolaas] - [#106288]) +- Add translatable title to Persistent Notification ([@steffenrapp] - [#104661]) +- Allow clearing To-do list item extended fields ([@allenporter] - [#106208]) +- Fix Hydrawise watering time duration unit ([@dknowles2] - [#105919]) +- Revert "Add preselect_remember_me to `/auth/providers`" ([@frenck] - [#106472]) +- Fix roon volume truncation bug ([@pavoni] - [#105696]) +- Use entity descriptions in Netgear LTE ([@joostlek] - [#106414]) +- Adjust the GitHub config flow ([@ludeeus] - [#105295]) +- Bump PyViCare to 2.32.0 ([@CFenner] - [#106467]) +- Fix Generic Camera interval calculation ([@dschall] - [#105820]) +- Use snapshot assertion in homekit_controller diagnostics tests ([@jpbede] - [#105647]) +- Refactor Tado to use OAuth in the DeviceTracker ([@erwindouna] - [#102610]) +- Add config flow to trend ([@jpbede] - [#99761]) +- Implement mode validation in Climate entity component ([@gjohansson-ST] - [#105745]) +- Add device to swiss public transport ([@miaucl] - [#106475]) +- Jinja filter and function for `median` and `statistical_mode` ([@TheFes] - [#105554]) +- Remove initial entity update from swiss_public_transport ([@miaucl] - [#106478]) +- Remove hardcoded bits from LiteJet integration ([@joncar] - [#106281]) +- Delay all ZHA polling until initialization of entities has completed ([@dmulcahey] - [#105814]) +- Add Comelit alarm zones sensor ([@chemelli74] - [#106421]) +- Add significant Change support for number ([@mib1185] - [#105863]) +- Add more fine grained control over Matter server commissioning for the Companion apps ([@marcelveldt] - [#106237]) +- Add more Withings measurement sensors ([@joostlek] - [#105561]) +- Fix Starline attributes timezone ([@Anonym-tsk] - [#105645]) +- Match ZHA Custom ClusterHandler on a Custom Cluster using a unique id for the quirk ([@Caius-Bonus] - [#101709]) +- Add query type validation independent of declaration position for SQL ([@dougiteixeira] - [#105921]) +- Update frontend to 20231227.0 ([@bramkragten] - [#106486]) +- Check and register cloud hook if needed for mobile_app ([@edenhaus] - [#106461]) +- Add significant Change support for cover ([@mib1185] - [#106016]) +- Bump aiohttp-zlib-ng to 0.1.3 ([@bdraco] - [#106489]) +- Add Color Night Vision switch for UniFi Protect ([@cmsimike] - [#106500]) +- Bump zwave-js-server-python to 0.55.2 ([@MartinHjelmare] - [#106496]) +- Bump ZHA quirks to 109 and add associated configuration entities ([@dmulcahey] - [#106492]) +- Add ZHA configuration number entity to set/get thermostat cluster local temperature offset ([@theorlangur] - [#105765]) +- Opentherm gateway: Set unit of measurement for count sensors ([@bajansen] - [#106313]) +- Synchronize and cache Generic Camera still image fetching ([@dschall] - [#105821]) +- Add AsusWrt temperature sensors provided by http protocol ([@ollo69] - [#105692]) +- Move services to entity services in blink ([@mkmer] - [#105413]) +- Skip activating/deactivating Vicare standby preset ([@barche] - [#106476]) +- Handle AttributeError in ViCare integration ([@CFenner] - [#106470]) +- Avoid changing state of reduced preset in ViCare integration ([@CFenner] - [#105642]) +- Use correct state for emulated_hue covers ([@Tho85] - [#106516]) +- Fix Tessie honk button ([@Bre77] - [#106518]) +- Fix run errors in Tessie ([@Bre77] - [#106521]) +- Add missing disks to Systemmonitor ([@gjohansson-ST] - [#106541]) +- Bump python-holidays to 0.39 ([@gjohansson-ST] - [#106550]) +- Remove default value from modbus retries ([@janiversen] - [#106551]) +- Fix holiday HA language not supported ([@gjohansson-ST] - [#106554]) +- Update frontend to 20231228.0 ([@bramkragten] - [#106556]) +- Replace dash in language if needed ([@gjohansson-ST] - [#106559]) +- Remove default value for modbus lazy_error ([@janiversen] - [#106561]) +- Only check known attributes in significant change support ([@mib1185] - [#106572]) +- Bump plexapi to 4.15.7 ([@jjlawren] - [#106576]) +- Revert "Set volume_step in aquostv media_player" ([@emontnemery] - [#106577]) +- Revert "Set volume_step in clementine media_player" ([@emontnemery] - [#106578]) +- Revert "Set volume_step in cmus media_player" ([@emontnemery] - [#106579]) +- Revert "Set volume_step in monoprice media_player" ([@emontnemery] - [#106580]) +- Revert "Set volume_step in sonos media_player" ([@emontnemery] - [#106581]) +- Revert "Set volume_step in bluesound media_player" ([@emontnemery] - [#106582]) +- Revert "Set volume_step in frontier_silicon media_player" ([@emontnemery] - [#106583]) +- Systemmonitor always load imported disks ([@gjohansson-ST] - [#106546]) +- Cleanup Sonos subscription used during setup ([@jjlawren] - [#106575]) +- Revert "Set volume_step in enigma2 media_player" ([@emontnemery] - [#106584]) +- Bump aiohomekit to 3.1.1 ([@bdraco] - [#106591]) +- Update platform back-compat for custom components without UpdateEntityFeature ([@bdraco] - [#106528]) +- Camera platform back-compat for custom components without CameraEntityFeature ([@bdraco] - [#106529]) +- Rename domain aepohio to aep_ohio ([@tronikos] - [#106536]) +- Move aeptexas to aep_texas ([@joostlek] - [#106595]) +- Fix Netgear LTE halting startup ([@tkdrob] - [#106598]) +- Add helper to report deprecated entity supported features magic numbers ([@bdraco] - [#106602]) +- Fix count bug in qBittorrent ([@finder39] - [#106603]) +- Climate platform back-compat for custom components without ClimateEntityFeature ([@bdraco] - [#106605]) +- Fan platform back-compat for custom components without FanEntityFeature ([@bdraco] - [#106607]) +- Water heater platform back-compat for custom components without WaterHeaterEntityFeature ([@bdraco] - [#106608]) +- Remote platform back-compat for custom components without RemoteEntityFeature ([@bdraco] - [#106609]) +- Humidifier platform back-compat for custom components without HumidifierEntityFeature ([@bdraco] - [#106613]) +- Vacuum platform back-compat for custom components without VacuumEntityFeature ([@bdraco] - [#106614]) +- Media player platform back-compat for custom components without MediaPlayerEntityFeature ([@bdraco] - [#106616]) +- Add deprecation warning for cover supported features when using magic numbers ([@bdraco] - [#106618]) +- Add deprecation warning for alarm_control_panel supported features when using magic numbers ([@bdraco] - [#106619]) +- Add deprecation warning for lock supported features when using magic numbers ([@bdraco] - [#106620]) +- Add deprecation warning for siren supported features when using magic numbers ([@bdraco] - [#106621]) +- Migrate light entity to use contains for LightEntityFeature with deprecation warnings ([@bdraco] - [#106622]) +- Fix missing await when running shutdown jobs ([@emontnemery] - [#106632]) +- Ensure it's safe to call Entity.__repr__ on non added entity ([@emontnemery] - [#106032]) +- Fix typo in Blink strings ([@Betacart] - [#106641]) +- Fixed native apparent temperature in WeatherEntity ([@kukulich] - [#106645]) +- Fix yolink entity descriptions ([@emontnemery] - [#106649]) +- Use set instead of list in Systemmonitor ([@gjohansson-ST] - [#106650]) +- Handle no permission for disks in Systemmonitor ([@gjohansson-ST] - [#106653]) +- Fix changed_variables in automation traces ([@emontnemery] - [#106665]) +- Bump thermobeacon-ble to 0.6.2 ([@bdraco] - [#106676]) +- Bump roombapy to 1.6.10 ([@bdraco] - [#106678]) +- Bump asyncsleepiq to v1.4.1 ([@kbickar] - [#106682]) +- Fix missed cached_property for hvac_mode in climate ([@bdraco] - [#106692]) +- Pin lxml to 4.9.4 ([@bdraco] - [#106694]) +- Add missing vacuum toggle service description ([@frenck] - [#106729]) +- Fix Zlinky energy polling in ZHA ([@dmulcahey] - [#106738]) +- Bump reolink_aio to 0.8.5 ([@starkillerOG] - [#106747]) +- Bump pyunifiprotect to 4.22.4 ([@bdraco] - [#106749]) +- Bump habluetooth to 2.0.1 ([@bdraco] - [#106750]) +- Bump ZHA dependencies ([@puddly] - [#106756]) +- Bump pyatmo to v8.0.2 ([@cgtobi] - [#106758]) +- Constrain dacite to at least 1.7.0 ([@Lash-L] - [#105709]) +- Fix Hydrawise data not refreshing ([@dknowles2] - [#105923]) +- Fix fints account type check ([@kilrogg] - [#106082]) +- Bump pyunifiprotect to v4.22.5 ([@AngellusMortis] - [#106781]) +- Bump pyschlage to 2023.12.1 ([@dknowles2] - [#106782]) +- Fix emulated_hue brightness check ([@bdraco] - [#106783]) +- Bump pyduotecno to 2024.1.1 ([@Cereal2nd] - [#106801]) +- Update frontend to 20240101.0 ([@bramkragten] - [#106808]) +- Bump bleak-retry-connector to 3.4.0 ([@bdraco] - [#106831]) +- Bump pySwitchbot to 0.43.0 ([@bdraco] - [#106833]) +- Bump yalexs-ble to 2.4.0 ([@bdraco] - [#106834]) +- Fix incorrect state in Yale Access Bluetooth when lock status is unknown ([@bdraco] - [#106851]) +- Map missing preset mapping for heat mode "ready" in smarttub ([@mdz] - [#106856]) +- Don't use entity_id in __repr__ of not added entity ([@emontnemery] - [#106861]) +- Changed setup of EnergyZero services ([@iamrgroot] - [#106224]) +- Move urllib3 constraint to pyproject.toml ([@autinerd] - [#106768]) +- Update switchbot to use close_stale_connections_by_address ([@bdraco] - [#106835]) +- Close stale connections in yalexs_ble to ensure setup can proceed ([@bdraco] - [#106842]) +- Bump Zigpy to 0.60.4 ([@dmulcahey] - [#106870]) +- Improve fitbit authentication error handling ([@allenporter] - [#106885]) +- Improve To-do service error handling ([@allenporter] - [#106886]) +- Update frontend to 20240102.0 ([@bramkragten] - [#106898]) +- Apply late review comments on media player ([@mib1185] - [#106727]) +- Add try-catch for invalid auth to Tado ([@erwindouna] - [#106774]) +- Bump intents to 2024.1.2 ([@synesthesiam] - [#106909]) +- Avoid triggering ping device tracker `home` after restore ([@jpbede] - [#106913]) +- Remove group_members from significant attributes in media player ([@mib1185] - [#106916]) +- Change Tado deprecation version to 2024.7.0 ([@erwindouna] - [#106938]) +- Update frontend to 20240103.0 ([@bramkragten] - [#106942]) + +[#100573]: https://github.com/home-assistant/core/pull/100573 +[#100601]: https://github.com/home-assistant/core/pull/100601 +[#101102]: https://github.com/home-assistant/core/pull/101102 +[#101201]: https://github.com/home-assistant/core/pull/101201 +[#101374]: https://github.com/home-assistant/core/pull/101374 +[#101709]: https://github.com/home-assistant/core/pull/101709 +[#101748]: https://github.com/home-assistant/core/pull/101748 +[#102184]: https://github.com/home-assistant/core/pull/102184 +[#102610]: https://github.com/home-assistant/core/pull/102610 +[#102928]: https://github.com/home-assistant/core/pull/102928 +[#102978]: https://github.com/home-assistant/core/pull/102978 +[#103396]: https://github.com/home-assistant/core/pull/103396 +[#103498]: https://github.com/home-assistant/core/pull/103498 +[#103660]: https://github.com/home-assistant/core/pull/103660 +[#103781]: https://github.com/home-assistant/core/pull/103781 +[#103795]: https://github.com/home-assistant/core/pull/103795 +[#103888]: https://github.com/home-assistant/core/pull/103888 +[#103912]: https://github.com/home-assistant/core/pull/103912 +[#103916]: https://github.com/home-assistant/core/pull/103916 +[#103960]: https://github.com/home-assistant/core/pull/103960 +[#104087]: https://github.com/home-assistant/core/pull/104087 +[#104142]: https://github.com/home-assistant/core/pull/104142 +[#104157]: https://github.com/home-assistant/core/pull/104157 +[#104206]: https://github.com/home-assistant/core/pull/104206 +[#104238]: https://github.com/home-assistant/core/pull/104238 +[#104242]: https://github.com/home-assistant/core/pull/104242 +[#104275]: https://github.com/home-assistant/core/pull/104275 +[#104291]: https://github.com/home-assistant/core/pull/104291 +[#104319]: https://github.com/home-assistant/core/pull/104319 +[#104391]: https://github.com/home-assistant/core/pull/104391 +[#104503]: https://github.com/home-assistant/core/pull/104503 +[#104566]: https://github.com/home-assistant/core/pull/104566 +[#104571]: https://github.com/home-assistant/core/pull/104571 +[#104577]: https://github.com/home-assistant/core/pull/104577 +[#104614]: https://github.com/home-assistant/core/pull/104614 +[#104627]: https://github.com/home-assistant/core/pull/104627 +[#104661]: https://github.com/home-assistant/core/pull/104661 +[#104684]: https://github.com/home-assistant/core/pull/104684 +[#104713]: https://github.com/home-assistant/core/pull/104713 +[#104716]: https://github.com/home-assistant/core/pull/104716 +[#104718]: https://github.com/home-assistant/core/pull/104718 +[#104720]: https://github.com/home-assistant/core/pull/104720 +[#104730]: https://github.com/home-assistant/core/pull/104730 +[#104733]: https://github.com/home-assistant/core/pull/104733 +[#104739]: https://github.com/home-assistant/core/pull/104739 +[#104746]: https://github.com/home-assistant/core/pull/104746 +[#104748]: https://github.com/home-assistant/core/pull/104748 +[#104749]: https://github.com/home-assistant/core/pull/104749 +[#104753]: https://github.com/home-assistant/core/pull/104753 +[#104769]: https://github.com/home-assistant/core/pull/104769 +[#104793]: https://github.com/home-assistant/core/pull/104793 +[#104807]: https://github.com/home-assistant/core/pull/104807 +[#104809]: https://github.com/home-assistant/core/pull/104809 +[#104821]: https://github.com/home-assistant/core/pull/104821 +[#104822]: https://github.com/home-assistant/core/pull/104822 +[#104823]: https://github.com/home-assistant/core/pull/104823 +[#104824]: https://github.com/home-assistant/core/pull/104824 +[#104825]: https://github.com/home-assistant/core/pull/104825 +[#104826]: https://github.com/home-assistant/core/pull/104826 +[#104828]: https://github.com/home-assistant/core/pull/104828 +[#104831]: https://github.com/home-assistant/core/pull/104831 +[#104832]: https://github.com/home-assistant/core/pull/104832 +[#104839]: https://github.com/home-assistant/core/pull/104839 +[#104840]: https://github.com/home-assistant/core/pull/104840 +[#104842]: https://github.com/home-assistant/core/pull/104842 +[#104849]: https://github.com/home-assistant/core/pull/104849 +[#104854]: https://github.com/home-assistant/core/pull/104854 +[#104864]: https://github.com/home-assistant/core/pull/104864 +[#104866]: https://github.com/home-assistant/core/pull/104866 +[#104874]: https://github.com/home-assistant/core/pull/104874 +[#104875]: https://github.com/home-assistant/core/pull/104875 +[#104877]: https://github.com/home-assistant/core/pull/104877 +[#104878]: https://github.com/home-assistant/core/pull/104878 +[#104881]: https://github.com/home-assistant/core/pull/104881 +[#104882]: https://github.com/home-assistant/core/pull/104882 +[#104889]: https://github.com/home-assistant/core/pull/104889 +[#104892]: https://github.com/home-assistant/core/pull/104892 +[#104906]: https://github.com/home-assistant/core/pull/104906 +[#104909]: https://github.com/home-assistant/core/pull/104909 +[#104918]: https://github.com/home-assistant/core/pull/104918 +[#104919]: https://github.com/home-assistant/core/pull/104919 +[#104925]: https://github.com/home-assistant/core/pull/104925 +[#104930]: https://github.com/home-assistant/core/pull/104930 +[#104932]: https://github.com/home-assistant/core/pull/104932 +[#104935]: https://github.com/home-assistant/core/pull/104935 +[#104937]: https://github.com/home-assistant/core/pull/104937 +[#104949]: https://github.com/home-assistant/core/pull/104949 +[#104957]: https://github.com/home-assistant/core/pull/104957 +[#104958]: https://github.com/home-assistant/core/pull/104958 +[#104960]: https://github.com/home-assistant/core/pull/104960 +[#104962]: https://github.com/home-assistant/core/pull/104962 +[#104964]: https://github.com/home-assistant/core/pull/104964 +[#104965]: https://github.com/home-assistant/core/pull/104965 +[#104969]: https://github.com/home-assistant/core/pull/104969 +[#104970]: https://github.com/home-assistant/core/pull/104970 +[#104976]: https://github.com/home-assistant/core/pull/104976 +[#104977]: https://github.com/home-assistant/core/pull/104977 +[#104978]: https://github.com/home-assistant/core/pull/104978 +[#104979]: https://github.com/home-assistant/core/pull/104979 +[#104985]: https://github.com/home-assistant/core/pull/104985 +[#104986]: https://github.com/home-assistant/core/pull/104986 +[#104989]: https://github.com/home-assistant/core/pull/104989 +[#104997]: https://github.com/home-assistant/core/pull/104997 +[#104998]: https://github.com/home-assistant/core/pull/104998 +[#105008]: https://github.com/home-assistant/core/pull/105008 +[#105010]: https://github.com/home-assistant/core/pull/105010 +[#105012]: https://github.com/home-assistant/core/pull/105012 +[#105015]: https://github.com/home-assistant/core/pull/105015 +[#105020]: https://github.com/home-assistant/core/pull/105020 +[#105021]: https://github.com/home-assistant/core/pull/105021 +[#105024]: https://github.com/home-assistant/core/pull/105024 +[#105027]: https://github.com/home-assistant/core/pull/105027 +[#105029]: https://github.com/home-assistant/core/pull/105029 +[#105030]: https://github.com/home-assistant/core/pull/105030 +[#105037]: https://github.com/home-assistant/core/pull/105037 +[#105039]: https://github.com/home-assistant/core/pull/105039 +[#105046]: https://github.com/home-assistant/core/pull/105046 +[#105052]: https://github.com/home-assistant/core/pull/105052 +[#105062]: https://github.com/home-assistant/core/pull/105062 +[#105067]: https://github.com/home-assistant/core/pull/105067 +[#105077]: https://github.com/home-assistant/core/pull/105077 +[#105078]: https://github.com/home-assistant/core/pull/105078 +[#105080]: https://github.com/home-assistant/core/pull/105080 +[#105083]: https://github.com/home-assistant/core/pull/105083 +[#105094]: https://github.com/home-assistant/core/pull/105094 +[#105096]: https://github.com/home-assistant/core/pull/105096 +[#105108]: https://github.com/home-assistant/core/pull/105108 +[#105109]: https://github.com/home-assistant/core/pull/105109 +[#105110]: https://github.com/home-assistant/core/pull/105110 +[#105111]: https://github.com/home-assistant/core/pull/105111 +[#105114]: https://github.com/home-assistant/core/pull/105114 +[#105117]: https://github.com/home-assistant/core/pull/105117 +[#105118]: https://github.com/home-assistant/core/pull/105118 +[#105119]: https://github.com/home-assistant/core/pull/105119 +[#105121]: https://github.com/home-assistant/core/pull/105121 +[#105123]: https://github.com/home-assistant/core/pull/105123 +[#105125]: https://github.com/home-assistant/core/pull/105125 +[#105131]: https://github.com/home-assistant/core/pull/105131 +[#105138]: https://github.com/home-assistant/core/pull/105138 +[#105141]: https://github.com/home-assistant/core/pull/105141 +[#105142]: https://github.com/home-assistant/core/pull/105142 +[#105147]: https://github.com/home-assistant/core/pull/105147 +[#105149]: https://github.com/home-assistant/core/pull/105149 +[#105173]: https://github.com/home-assistant/core/pull/105173 +[#105175]: https://github.com/home-assistant/core/pull/105175 +[#105193]: https://github.com/home-assistant/core/pull/105193 +[#105211]: https://github.com/home-assistant/core/pull/105211 +[#105224]: https://github.com/home-assistant/core/pull/105224 +[#105228]: https://github.com/home-assistant/core/pull/105228 +[#105243]: https://github.com/home-assistant/core/pull/105243 +[#105261]: https://github.com/home-assistant/core/pull/105261 +[#105274]: https://github.com/home-assistant/core/pull/105274 +[#105275]: https://github.com/home-assistant/core/pull/105275 +[#105280]: https://github.com/home-assistant/core/pull/105280 +[#105282]: https://github.com/home-assistant/core/pull/105282 +[#105286]: https://github.com/home-assistant/core/pull/105286 +[#105287]: https://github.com/home-assistant/core/pull/105287 +[#105295]: https://github.com/home-assistant/core/pull/105295 +[#105298]: https://github.com/home-assistant/core/pull/105298 +[#105301]: https://github.com/home-assistant/core/pull/105301 +[#105302]: https://github.com/home-assistant/core/pull/105302 +[#105320]: https://github.com/home-assistant/core/pull/105320 +[#105333]: https://github.com/home-assistant/core/pull/105333 +[#105340]: https://github.com/home-assistant/core/pull/105340 +[#105341]: https://github.com/home-assistant/core/pull/105341 +[#105343]: https://github.com/home-assistant/core/pull/105343 +[#105348]: https://github.com/home-assistant/core/pull/105348 +[#105353]: https://github.com/home-assistant/core/pull/105353 +[#105354]: https://github.com/home-assistant/core/pull/105354 +[#105358]: https://github.com/home-assistant/core/pull/105358 +[#105362]: https://github.com/home-assistant/core/pull/105362 +[#105376]: https://github.com/home-assistant/core/pull/105376 +[#105377]: https://github.com/home-assistant/core/pull/105377 +[#105379]: https://github.com/home-assistant/core/pull/105379 +[#105384]: https://github.com/home-assistant/core/pull/105384 +[#105403]: https://github.com/home-assistant/core/pull/105403 +[#105407]: https://github.com/home-assistant/core/pull/105407 +[#105408]: https://github.com/home-assistant/core/pull/105408 +[#105409]: https://github.com/home-assistant/core/pull/105409 +[#105410]: https://github.com/home-assistant/core/pull/105410 +[#105411]: https://github.com/home-assistant/core/pull/105411 +[#105413]: https://github.com/home-assistant/core/pull/105413 +[#105414]: https://github.com/home-assistant/core/pull/105414 +[#105418]: https://github.com/home-assistant/core/pull/105418 +[#105419]: https://github.com/home-assistant/core/pull/105419 +[#105420]: https://github.com/home-assistant/core/pull/105420 +[#105421]: https://github.com/home-assistant/core/pull/105421 +[#105422]: https://github.com/home-assistant/core/pull/105422 +[#105423]: https://github.com/home-assistant/core/pull/105423 +[#105428]: https://github.com/home-assistant/core/pull/105428 +[#105430]: https://github.com/home-assistant/core/pull/105430 +[#105454]: https://github.com/home-assistant/core/pull/105454 +[#105472]: https://github.com/home-assistant/core/pull/105472 +[#105479]: https://github.com/home-assistant/core/pull/105479 +[#105482]: https://github.com/home-assistant/core/pull/105482 +[#105486]: https://github.com/home-assistant/core/pull/105486 +[#105487]: https://github.com/home-assistant/core/pull/105487 +[#105490]: https://github.com/home-assistant/core/pull/105490 +[#105494]: https://github.com/home-assistant/core/pull/105494 +[#105502]: https://github.com/home-assistant/core/pull/105502 +[#105510]: https://github.com/home-assistant/core/pull/105510 +[#105512]: https://github.com/home-assistant/core/pull/105512 +[#105518]: https://github.com/home-assistant/core/pull/105518 +[#105520]: https://github.com/home-assistant/core/pull/105520 +[#105521]: https://github.com/home-assistant/core/pull/105521 +[#105522]: https://github.com/home-assistant/core/pull/105522 +[#105523]: https://github.com/home-assistant/core/pull/105523 +[#105526]: https://github.com/home-assistant/core/pull/105526 +[#105528]: https://github.com/home-assistant/core/pull/105528 +[#105529]: https://github.com/home-assistant/core/pull/105529 +[#105531]: https://github.com/home-assistant/core/pull/105531 +[#105534]: https://github.com/home-assistant/core/pull/105534 +[#105536]: https://github.com/home-assistant/core/pull/105536 +[#105537]: https://github.com/home-assistant/core/pull/105537 +[#105541]: https://github.com/home-assistant/core/pull/105541 +[#105546]: https://github.com/home-assistant/core/pull/105546 +[#105552]: https://github.com/home-assistant/core/pull/105552 +[#105553]: https://github.com/home-assistant/core/pull/105553 +[#105554]: https://github.com/home-assistant/core/pull/105554 +[#105555]: https://github.com/home-assistant/core/pull/105555 +[#105556]: https://github.com/home-assistant/core/pull/105556 +[#105558]: https://github.com/home-assistant/core/pull/105558 +[#105559]: https://github.com/home-assistant/core/pull/105559 +[#105561]: https://github.com/home-assistant/core/pull/105561 +[#105562]: https://github.com/home-assistant/core/pull/105562 +[#105566]: https://github.com/home-assistant/core/pull/105566 +[#105568]: https://github.com/home-assistant/core/pull/105568 +[#105570]: https://github.com/home-assistant/core/pull/105570 +[#105571]: https://github.com/home-assistant/core/pull/105571 +[#105573]: https://github.com/home-assistant/core/pull/105573 +[#105574]: https://github.com/home-assistant/core/pull/105574 +[#105575]: https://github.com/home-assistant/core/pull/105575 +[#105577]: https://github.com/home-assistant/core/pull/105577 +[#105584]: https://github.com/home-assistant/core/pull/105584 +[#105586]: https://github.com/home-assistant/core/pull/105586 +[#105591]: https://github.com/home-assistant/core/pull/105591 +[#105592]: https://github.com/home-assistant/core/pull/105592 +[#105594]: https://github.com/home-assistant/core/pull/105594 +[#105595]: https://github.com/home-assistant/core/pull/105595 +[#105596]: https://github.com/home-assistant/core/pull/105596 +[#105600]: https://github.com/home-assistant/core/pull/105600 +[#105602]: https://github.com/home-assistant/core/pull/105602 +[#105603]: https://github.com/home-assistant/core/pull/105603 +[#105604]: https://github.com/home-assistant/core/pull/105604 +[#105607]: https://github.com/home-assistant/core/pull/105607 +[#105609]: https://github.com/home-assistant/core/pull/105609 +[#105610]: https://github.com/home-assistant/core/pull/105610 +[#105611]: https://github.com/home-assistant/core/pull/105611 +[#105613]: https://github.com/home-assistant/core/pull/105613 +[#105616]: https://github.com/home-assistant/core/pull/105616 +[#105620]: https://github.com/home-assistant/core/pull/105620 +[#105624]: https://github.com/home-assistant/core/pull/105624 +[#105625]: https://github.com/home-assistant/core/pull/105625 +[#105626]: https://github.com/home-assistant/core/pull/105626 +[#105627]: https://github.com/home-assistant/core/pull/105627 +[#105628]: https://github.com/home-assistant/core/pull/105628 +[#105629]: https://github.com/home-assistant/core/pull/105629 +[#105630]: https://github.com/home-assistant/core/pull/105630 +[#105633]: https://github.com/home-assistant/core/pull/105633 +[#105638]: https://github.com/home-assistant/core/pull/105638 +[#105640]: https://github.com/home-assistant/core/pull/105640 +[#105642]: https://github.com/home-assistant/core/pull/105642 +[#105644]: https://github.com/home-assistant/core/pull/105644 +[#105645]: https://github.com/home-assistant/core/pull/105645 +[#105646]: https://github.com/home-assistant/core/pull/105646 +[#105647]: https://github.com/home-assistant/core/pull/105647 +[#105648]: https://github.com/home-assistant/core/pull/105648 +[#105649]: https://github.com/home-assistant/core/pull/105649 +[#105650]: https://github.com/home-assistant/core/pull/105650 +[#105652]: https://github.com/home-assistant/core/pull/105652 +[#105653]: https://github.com/home-assistant/core/pull/105653 +[#105657]: https://github.com/home-assistant/core/pull/105657 +[#105665]: https://github.com/home-assistant/core/pull/105665 +[#105666]: https://github.com/home-assistant/core/pull/105666 +[#105667]: https://github.com/home-assistant/core/pull/105667 +[#105669]: https://github.com/home-assistant/core/pull/105669 +[#105670]: https://github.com/home-assistant/core/pull/105670 +[#105671]: https://github.com/home-assistant/core/pull/105671 +[#105672]: https://github.com/home-assistant/core/pull/105672 +[#105677]: https://github.com/home-assistant/core/pull/105677 +[#105678]: https://github.com/home-assistant/core/pull/105678 +[#105685]: https://github.com/home-assistant/core/pull/105685 +[#105687]: https://github.com/home-assistant/core/pull/105687 +[#105692]: https://github.com/home-assistant/core/pull/105692 +[#105696]: https://github.com/home-assistant/core/pull/105696 +[#105701]: https://github.com/home-assistant/core/pull/105701 +[#105709]: https://github.com/home-assistant/core/pull/105709 +[#105713]: https://github.com/home-assistant/core/pull/105713 +[#105715]: https://github.com/home-assistant/core/pull/105715 +[#105717]: https://github.com/home-assistant/core/pull/105717 +[#105718]: https://github.com/home-assistant/core/pull/105718 +[#105721]: https://github.com/home-assistant/core/pull/105721 +[#105722]: https://github.com/home-assistant/core/pull/105722 +[#105723]: https://github.com/home-assistant/core/pull/105723 +[#105724]: https://github.com/home-assistant/core/pull/105724 +[#105728]: https://github.com/home-assistant/core/pull/105728 +[#105736]: https://github.com/home-assistant/core/pull/105736 +[#105739]: https://github.com/home-assistant/core/pull/105739 +[#105741]: https://github.com/home-assistant/core/pull/105741 +[#105742]: https://github.com/home-assistant/core/pull/105742 +[#105745]: https://github.com/home-assistant/core/pull/105745 +[#105746]: https://github.com/home-assistant/core/pull/105746 +[#105747]: https://github.com/home-assistant/core/pull/105747 +[#105748]: https://github.com/home-assistant/core/pull/105748 +[#105752]: https://github.com/home-assistant/core/pull/105752 +[#105759]: https://github.com/home-assistant/core/pull/105759 +[#105765]: https://github.com/home-assistant/core/pull/105765 +[#105766]: https://github.com/home-assistant/core/pull/105766 +[#105774]: https://github.com/home-assistant/core/pull/105774 +[#105781]: https://github.com/home-assistant/core/pull/105781 +[#105783]: https://github.com/home-assistant/core/pull/105783 +[#105791]: https://github.com/home-assistant/core/pull/105791 +[#105800]: https://github.com/home-assistant/core/pull/105800 +[#105813]: https://github.com/home-assistant/core/pull/105813 +[#105814]: https://github.com/home-assistant/core/pull/105814 +[#105820]: https://github.com/home-assistant/core/pull/105820 +[#105821]: https://github.com/home-assistant/core/pull/105821 +[#105823]: https://github.com/home-assistant/core/pull/105823 +[#105824]: https://github.com/home-assistant/core/pull/105824 +[#105834]: https://github.com/home-assistant/core/pull/105834 +[#105838]: https://github.com/home-assistant/core/pull/105838 +[#105841]: https://github.com/home-assistant/core/pull/105841 +[#105847]: https://github.com/home-assistant/core/pull/105847 +[#105848]: https://github.com/home-assistant/core/pull/105848 +[#105849]: https://github.com/home-assistant/core/pull/105849 +[#105855]: https://github.com/home-assistant/core/pull/105855 +[#105856]: https://github.com/home-assistant/core/pull/105856 +[#105857]: https://github.com/home-assistant/core/pull/105857 +[#105863]: https://github.com/home-assistant/core/pull/105863 +[#105866]: https://github.com/home-assistant/core/pull/105866 +[#105867]: https://github.com/home-assistant/core/pull/105867 +[#105868]: https://github.com/home-assistant/core/pull/105868 +[#105874]: https://github.com/home-assistant/core/pull/105874 +[#105876]: https://github.com/home-assistant/core/pull/105876 +[#105878]: https://github.com/home-assistant/core/pull/105878 +[#105880]: https://github.com/home-assistant/core/pull/105880 +[#105881]: https://github.com/home-assistant/core/pull/105881 +[#105884]: https://github.com/home-assistant/core/pull/105884 +[#105885]: https://github.com/home-assistant/core/pull/105885 +[#105892]: https://github.com/home-assistant/core/pull/105892 +[#105894]: https://github.com/home-assistant/core/pull/105894 +[#105908]: https://github.com/home-assistant/core/pull/105908 +[#105909]: https://github.com/home-assistant/core/pull/105909 +[#105911]: https://github.com/home-assistant/core/pull/105911 +[#105912]: https://github.com/home-assistant/core/pull/105912 +[#105914]: https://github.com/home-assistant/core/pull/105914 +[#105915]: https://github.com/home-assistant/core/pull/105915 +[#105916]: https://github.com/home-assistant/core/pull/105916 +[#105919]: https://github.com/home-assistant/core/pull/105919 +[#105921]: https://github.com/home-assistant/core/pull/105921 +[#105922]: https://github.com/home-assistant/core/pull/105922 +[#105923]: https://github.com/home-assistant/core/pull/105923 +[#105924]: https://github.com/home-assistant/core/pull/105924 +[#105926]: https://github.com/home-assistant/core/pull/105926 +[#105931]: https://github.com/home-assistant/core/pull/105931 +[#105937]: https://github.com/home-assistant/core/pull/105937 +[#105939]: https://github.com/home-assistant/core/pull/105939 +[#105941]: https://github.com/home-assistant/core/pull/105941 +[#105947]: https://github.com/home-assistant/core/pull/105947 +[#105949]: https://github.com/home-assistant/core/pull/105949 +[#105953]: https://github.com/home-assistant/core/pull/105953 +[#105957]: https://github.com/home-assistant/core/pull/105957 +[#105958]: https://github.com/home-assistant/core/pull/105958 +[#105959]: https://github.com/home-assistant/core/pull/105959 +[#105961]: https://github.com/home-assistant/core/pull/105961 +[#105965]: https://github.com/home-assistant/core/pull/105965 +[#105966]: https://github.com/home-assistant/core/pull/105966 +[#105968]: https://github.com/home-assistant/core/pull/105968 +[#105969]: https://github.com/home-assistant/core/pull/105969 +[#105970]: https://github.com/home-assistant/core/pull/105970 +[#105971]: https://github.com/home-assistant/core/pull/105971 +[#105972]: https://github.com/home-assistant/core/pull/105972 +[#105973]: https://github.com/home-assistant/core/pull/105973 +[#105974]: https://github.com/home-assistant/core/pull/105974 +[#105975]: https://github.com/home-assistant/core/pull/105975 +[#105976]: https://github.com/home-assistant/core/pull/105976 +[#105978]: https://github.com/home-assistant/core/pull/105978 +[#105980]: https://github.com/home-assistant/core/pull/105980 +[#105981]: https://github.com/home-assistant/core/pull/105981 +[#105982]: https://github.com/home-assistant/core/pull/105982 +[#105983]: https://github.com/home-assistant/core/pull/105983 +[#105984]: https://github.com/home-assistant/core/pull/105984 +[#105986]: https://github.com/home-assistant/core/pull/105986 +[#105988]: https://github.com/home-assistant/core/pull/105988 +[#105989]: https://github.com/home-assistant/core/pull/105989 +[#105999]: https://github.com/home-assistant/core/pull/105999 +[#106000]: https://github.com/home-assistant/core/pull/106000 +[#106002]: https://github.com/home-assistant/core/pull/106002 +[#106003]: https://github.com/home-assistant/core/pull/106003 +[#106005]: https://github.com/home-assistant/core/pull/106005 +[#106010]: https://github.com/home-assistant/core/pull/106010 +[#106011]: https://github.com/home-assistant/core/pull/106011 +[#106012]: https://github.com/home-assistant/core/pull/106012 +[#106013]: https://github.com/home-assistant/core/pull/106013 +[#106015]: https://github.com/home-assistant/core/pull/106015 +[#106016]: https://github.com/home-assistant/core/pull/106016 +[#106017]: https://github.com/home-assistant/core/pull/106017 +[#106018]: https://github.com/home-assistant/core/pull/106018 +[#106020]: https://github.com/home-assistant/core/pull/106020 +[#106021]: https://github.com/home-assistant/core/pull/106021 +[#106022]: https://github.com/home-assistant/core/pull/106022 +[#106023]: https://github.com/home-assistant/core/pull/106023 +[#106024]: https://github.com/home-assistant/core/pull/106024 +[#106025]: https://github.com/home-assistant/core/pull/106025 +[#106032]: https://github.com/home-assistant/core/pull/106032 +[#106033]: https://github.com/home-assistant/core/pull/106033 +[#106035]: https://github.com/home-assistant/core/pull/106035 +[#106037]: https://github.com/home-assistant/core/pull/106037 +[#106039]: https://github.com/home-assistant/core/pull/106039 +[#106042]: https://github.com/home-assistant/core/pull/106042 +[#106045]: https://github.com/home-assistant/core/pull/106045 +[#106047]: https://github.com/home-assistant/core/pull/106047 +[#106049]: https://github.com/home-assistant/core/pull/106049 +[#106050]: https://github.com/home-assistant/core/pull/106050 +[#106051]: https://github.com/home-assistant/core/pull/106051 +[#106053]: https://github.com/home-assistant/core/pull/106053 +[#106054]: https://github.com/home-assistant/core/pull/106054 +[#106058]: https://github.com/home-assistant/core/pull/106058 +[#106059]: https://github.com/home-assistant/core/pull/106059 +[#106063]: https://github.com/home-assistant/core/pull/106063 +[#106064]: https://github.com/home-assistant/core/pull/106064 +[#106067]: https://github.com/home-assistant/core/pull/106067 +[#106073]: https://github.com/home-assistant/core/pull/106073 +[#106079]: https://github.com/home-assistant/core/pull/106079 +[#106080]: https://github.com/home-assistant/core/pull/106080 +[#106082]: https://github.com/home-assistant/core/pull/106082 +[#106087]: https://github.com/home-assistant/core/pull/106087 +[#106093]: https://github.com/home-assistant/core/pull/106093 +[#106095]: https://github.com/home-assistant/core/pull/106095 +[#106096]: https://github.com/home-assistant/core/pull/106096 +[#106098]: https://github.com/home-assistant/core/pull/106098 +[#106099]: https://github.com/home-assistant/core/pull/106099 +[#106109]: https://github.com/home-assistant/core/pull/106109 +[#106111]: https://github.com/home-assistant/core/pull/106111 +[#106112]: https://github.com/home-assistant/core/pull/106112 +[#106113]: https://github.com/home-assistant/core/pull/106113 +[#106114]: https://github.com/home-assistant/core/pull/106114 +[#106116]: https://github.com/home-assistant/core/pull/106116 +[#106117]: https://github.com/home-assistant/core/pull/106117 +[#106120]: https://github.com/home-assistant/core/pull/106120 +[#106121]: https://github.com/home-assistant/core/pull/106121 +[#106129]: https://github.com/home-assistant/core/pull/106129 +[#106135]: https://github.com/home-assistant/core/pull/106135 +[#106137]: https://github.com/home-assistant/core/pull/106137 +[#106138]: https://github.com/home-assistant/core/pull/106138 +[#106139]: https://github.com/home-assistant/core/pull/106139 +[#106141]: https://github.com/home-assistant/core/pull/106141 +[#106145]: https://github.com/home-assistant/core/pull/106145 +[#106146]: https://github.com/home-assistant/core/pull/106146 +[#106151]: https://github.com/home-assistant/core/pull/106151 +[#106153]: https://github.com/home-assistant/core/pull/106153 +[#106156]: https://github.com/home-assistant/core/pull/106156 +[#106158]: https://github.com/home-assistant/core/pull/106158 +[#106160]: https://github.com/home-assistant/core/pull/106160 +[#106164]: https://github.com/home-assistant/core/pull/106164 +[#106165]: https://github.com/home-assistant/core/pull/106165 +[#106168]: https://github.com/home-assistant/core/pull/106168 +[#106169]: https://github.com/home-assistant/core/pull/106169 +[#106174]: https://github.com/home-assistant/core/pull/106174 +[#106175]: https://github.com/home-assistant/core/pull/106175 +[#106181]: https://github.com/home-assistant/core/pull/106181 +[#106189]: https://github.com/home-assistant/core/pull/106189 +[#106193]: https://github.com/home-assistant/core/pull/106193 +[#106194]: https://github.com/home-assistant/core/pull/106194 +[#106199]: https://github.com/home-assistant/core/pull/106199 +[#106200]: https://github.com/home-assistant/core/pull/106200 +[#106203]: https://github.com/home-assistant/core/pull/106203 +[#106205]: https://github.com/home-assistant/core/pull/106205 +[#106206]: https://github.com/home-assistant/core/pull/106206 +[#106208]: https://github.com/home-assistant/core/pull/106208 +[#106209]: https://github.com/home-assistant/core/pull/106209 +[#106210]: https://github.com/home-assistant/core/pull/106210 +[#106212]: https://github.com/home-assistant/core/pull/106212 +[#106214]: https://github.com/home-assistant/core/pull/106214 +[#106216]: https://github.com/home-assistant/core/pull/106216 +[#106218]: https://github.com/home-assistant/core/pull/106218 +[#106221]: https://github.com/home-assistant/core/pull/106221 +[#106222]: https://github.com/home-assistant/core/pull/106222 +[#106224]: https://github.com/home-assistant/core/pull/106224 +[#106225]: https://github.com/home-assistant/core/pull/106225 +[#106226]: https://github.com/home-assistant/core/pull/106226 +[#106227]: https://github.com/home-assistant/core/pull/106227 +[#106229]: https://github.com/home-assistant/core/pull/106229 +[#106230]: https://github.com/home-assistant/core/pull/106230 +[#106231]: https://github.com/home-assistant/core/pull/106231 +[#106232]: https://github.com/home-assistant/core/pull/106232 +[#106233]: https://github.com/home-assistant/core/pull/106233 +[#106234]: https://github.com/home-assistant/core/pull/106234 +[#106235]: https://github.com/home-assistant/core/pull/106235 +[#106237]: https://github.com/home-assistant/core/pull/106237 +[#106238]: https://github.com/home-assistant/core/pull/106238 +[#106240]: https://github.com/home-assistant/core/pull/106240 +[#106241]: https://github.com/home-assistant/core/pull/106241 +[#106244]: https://github.com/home-assistant/core/pull/106244 +[#106245]: https://github.com/home-assistant/core/pull/106245 +[#106247]: https://github.com/home-assistant/core/pull/106247 +[#106248]: https://github.com/home-assistant/core/pull/106248 +[#106252]: https://github.com/home-assistant/core/pull/106252 +[#106253]: https://github.com/home-assistant/core/pull/106253 +[#106254]: https://github.com/home-assistant/core/pull/106254 +[#106255]: https://github.com/home-assistant/core/pull/106255 +[#106256]: https://github.com/home-assistant/core/pull/106256 +[#106257]: https://github.com/home-assistant/core/pull/106257 +[#106258]: https://github.com/home-assistant/core/pull/106258 +[#106259]: https://github.com/home-assistant/core/pull/106259 +[#106260]: https://github.com/home-assistant/core/pull/106260 +[#106261]: https://github.com/home-assistant/core/pull/106261 +[#106262]: https://github.com/home-assistant/core/pull/106262 +[#106264]: https://github.com/home-assistant/core/pull/106264 +[#106265]: https://github.com/home-assistant/core/pull/106265 +[#106266]: https://github.com/home-assistant/core/pull/106266 +[#106267]: https://github.com/home-assistant/core/pull/106267 +[#106268]: https://github.com/home-assistant/core/pull/106268 +[#106269]: https://github.com/home-assistant/core/pull/106269 +[#106271]: https://github.com/home-assistant/core/pull/106271 +[#106272]: https://github.com/home-assistant/core/pull/106272 +[#106274]: https://github.com/home-assistant/core/pull/106274 +[#106275]: https://github.com/home-assistant/core/pull/106275 +[#106277]: https://github.com/home-assistant/core/pull/106277 +[#106278]: https://github.com/home-assistant/core/pull/106278 +[#106281]: https://github.com/home-assistant/core/pull/106281 +[#106285]: https://github.com/home-assistant/core/pull/106285 +[#106287]: https://github.com/home-assistant/core/pull/106287 +[#106288]: https://github.com/home-assistant/core/pull/106288 +[#106290]: https://github.com/home-assistant/core/pull/106290 +[#106294]: https://github.com/home-assistant/core/pull/106294 +[#106295]: https://github.com/home-assistant/core/pull/106295 +[#106299]: https://github.com/home-assistant/core/pull/106299 +[#106301]: https://github.com/home-assistant/core/pull/106301 +[#106302]: https://github.com/home-assistant/core/pull/106302 +[#106309]: https://github.com/home-assistant/core/pull/106309 +[#106313]: https://github.com/home-assistant/core/pull/106313 +[#106314]: https://github.com/home-assistant/core/pull/106314 +[#106316]: https://github.com/home-assistant/core/pull/106316 +[#106318]: https://github.com/home-assistant/core/pull/106318 +[#106321]: https://github.com/home-assistant/core/pull/106321 +[#106323]: https://github.com/home-assistant/core/pull/106323 +[#106325]: https://github.com/home-assistant/core/pull/106325 +[#106326]: https://github.com/home-assistant/core/pull/106326 +[#106327]: https://github.com/home-assistant/core/pull/106327 +[#106329]: https://github.com/home-assistant/core/pull/106329 +[#106330]: https://github.com/home-assistant/core/pull/106330 +[#106332]: https://github.com/home-assistant/core/pull/106332 +[#106333]: https://github.com/home-assistant/core/pull/106333 +[#106334]: https://github.com/home-assistant/core/pull/106334 +[#106335]: https://github.com/home-assistant/core/pull/106335 +[#106336]: https://github.com/home-assistant/core/pull/106336 +[#106337]: https://github.com/home-assistant/core/pull/106337 +[#106338]: https://github.com/home-assistant/core/pull/106338 +[#106339]: https://github.com/home-assistant/core/pull/106339 +[#106340]: https://github.com/home-assistant/core/pull/106340 +[#106341]: https://github.com/home-assistant/core/pull/106341 +[#106344]: https://github.com/home-assistant/core/pull/106344 +[#106345]: https://github.com/home-assistant/core/pull/106345 +[#106346]: https://github.com/home-assistant/core/pull/106346 +[#106350]: https://github.com/home-assistant/core/pull/106350 +[#106352]: https://github.com/home-assistant/core/pull/106352 +[#106357]: https://github.com/home-assistant/core/pull/106357 +[#106378]: https://github.com/home-assistant/core/pull/106378 +[#106383]: https://github.com/home-assistant/core/pull/106383 +[#106384]: https://github.com/home-assistant/core/pull/106384 +[#106399]: https://github.com/home-assistant/core/pull/106399 +[#106400]: https://github.com/home-assistant/core/pull/106400 +[#106401]: https://github.com/home-assistant/core/pull/106401 +[#106402]: https://github.com/home-assistant/core/pull/106402 +[#106404]: https://github.com/home-assistant/core/pull/106404 +[#106405]: https://github.com/home-assistant/core/pull/106405 +[#106409]: https://github.com/home-assistant/core/pull/106409 +[#106414]: https://github.com/home-assistant/core/pull/106414 +[#106416]: https://github.com/home-assistant/core/pull/106416 +[#106418]: https://github.com/home-assistant/core/pull/106418 +[#106421]: https://github.com/home-assistant/core/pull/106421 +[#106425]: https://github.com/home-assistant/core/pull/106425 +[#106427]: https://github.com/home-assistant/core/pull/106427 +[#106429]: https://github.com/home-assistant/core/pull/106429 +[#106430]: https://github.com/home-assistant/core/pull/106430 +[#106431]: https://github.com/home-assistant/core/pull/106431 +[#106432]: https://github.com/home-assistant/core/pull/106432 +[#106433]: https://github.com/home-assistant/core/pull/106433 +[#106434]: https://github.com/home-assistant/core/pull/106434 +[#106435]: https://github.com/home-assistant/core/pull/106435 +[#106436]: https://github.com/home-assistant/core/pull/106436 +[#106437]: https://github.com/home-assistant/core/pull/106437 +[#106438]: https://github.com/home-assistant/core/pull/106438 +[#106448]: https://github.com/home-assistant/core/pull/106448 +[#106450]: https://github.com/home-assistant/core/pull/106450 +[#106455]: https://github.com/home-assistant/core/pull/106455 +[#106456]: https://github.com/home-assistant/core/pull/106456 +[#106457]: https://github.com/home-assistant/core/pull/106457 +[#106458]: https://github.com/home-assistant/core/pull/106458 +[#106461]: https://github.com/home-assistant/core/pull/106461 +[#106462]: https://github.com/home-assistant/core/pull/106462 +[#106463]: https://github.com/home-assistant/core/pull/106463 +[#106464]: https://github.com/home-assistant/core/pull/106464 +[#106465]: https://github.com/home-assistant/core/pull/106465 +[#106466]: https://github.com/home-assistant/core/pull/106466 +[#106467]: https://github.com/home-assistant/core/pull/106467 +[#106468]: https://github.com/home-assistant/core/pull/106468 +[#106470]: https://github.com/home-assistant/core/pull/106470 +[#106472]: https://github.com/home-assistant/core/pull/106472 +[#106475]: https://github.com/home-assistant/core/pull/106475 +[#106476]: https://github.com/home-assistant/core/pull/106476 +[#106478]: https://github.com/home-assistant/core/pull/106478 +[#106486]: https://github.com/home-assistant/core/pull/106486 +[#106489]: https://github.com/home-assistant/core/pull/106489 +[#106492]: https://github.com/home-assistant/core/pull/106492 +[#106496]: https://github.com/home-assistant/core/pull/106496 +[#106500]: https://github.com/home-assistant/core/pull/106500 +[#106516]: https://github.com/home-assistant/core/pull/106516 +[#106518]: https://github.com/home-assistant/core/pull/106518 +[#106521]: https://github.com/home-assistant/core/pull/106521 +[#106528]: https://github.com/home-assistant/core/pull/106528 +[#106529]: https://github.com/home-assistant/core/pull/106529 +[#106536]: https://github.com/home-assistant/core/pull/106536 +[#106541]: https://github.com/home-assistant/core/pull/106541 +[#106546]: https://github.com/home-assistant/core/pull/106546 +[#106550]: https://github.com/home-assistant/core/pull/106550 +[#106551]: https://github.com/home-assistant/core/pull/106551 +[#106554]: https://github.com/home-assistant/core/pull/106554 +[#106556]: https://github.com/home-assistant/core/pull/106556 +[#106559]: https://github.com/home-assistant/core/pull/106559 +[#106561]: https://github.com/home-assistant/core/pull/106561 +[#106572]: https://github.com/home-assistant/core/pull/106572 +[#106575]: https://github.com/home-assistant/core/pull/106575 +[#106576]: https://github.com/home-assistant/core/pull/106576 +[#106577]: https://github.com/home-assistant/core/pull/106577 +[#106578]: https://github.com/home-assistant/core/pull/106578 +[#106579]: https://github.com/home-assistant/core/pull/106579 +[#106580]: https://github.com/home-assistant/core/pull/106580 +[#106581]: https://github.com/home-assistant/core/pull/106581 +[#106582]: https://github.com/home-assistant/core/pull/106582 +[#106583]: https://github.com/home-assistant/core/pull/106583 +[#106584]: https://github.com/home-assistant/core/pull/106584 +[#106591]: https://github.com/home-assistant/core/pull/106591 +[#106595]: https://github.com/home-assistant/core/pull/106595 +[#106598]: https://github.com/home-assistant/core/pull/106598 +[#106602]: https://github.com/home-assistant/core/pull/106602 +[#106603]: https://github.com/home-assistant/core/pull/106603 +[#106605]: https://github.com/home-assistant/core/pull/106605 +[#106607]: https://github.com/home-assistant/core/pull/106607 +[#106608]: https://github.com/home-assistant/core/pull/106608 +[#106609]: https://github.com/home-assistant/core/pull/106609 +[#106613]: https://github.com/home-assistant/core/pull/106613 +[#106614]: https://github.com/home-assistant/core/pull/106614 +[#106616]: https://github.com/home-assistant/core/pull/106616 +[#106618]: https://github.com/home-assistant/core/pull/106618 +[#106619]: https://github.com/home-assistant/core/pull/106619 +[#106620]: https://github.com/home-assistant/core/pull/106620 +[#106621]: https://github.com/home-assistant/core/pull/106621 +[#106622]: https://github.com/home-assistant/core/pull/106622 +[#106632]: https://github.com/home-assistant/core/pull/106632 +[#106641]: https://github.com/home-assistant/core/pull/106641 +[#106645]: https://github.com/home-assistant/core/pull/106645 +[#106649]: https://github.com/home-assistant/core/pull/106649 +[#106650]: https://github.com/home-assistant/core/pull/106650 +[#106653]: https://github.com/home-assistant/core/pull/106653 +[#106665]: https://github.com/home-assistant/core/pull/106665 +[#106676]: https://github.com/home-assistant/core/pull/106676 +[#106678]: https://github.com/home-assistant/core/pull/106678 +[#106682]: https://github.com/home-assistant/core/pull/106682 +[#106692]: https://github.com/home-assistant/core/pull/106692 +[#106694]: https://github.com/home-assistant/core/pull/106694 +[#106727]: https://github.com/home-assistant/core/pull/106727 +[#106729]: https://github.com/home-assistant/core/pull/106729 +[#106738]: https://github.com/home-assistant/core/pull/106738 +[#106747]: https://github.com/home-assistant/core/pull/106747 +[#106749]: https://github.com/home-assistant/core/pull/106749 +[#106750]: https://github.com/home-assistant/core/pull/106750 +[#106756]: https://github.com/home-assistant/core/pull/106756 +[#106758]: https://github.com/home-assistant/core/pull/106758 +[#106768]: https://github.com/home-assistant/core/pull/106768 +[#106774]: https://github.com/home-assistant/core/pull/106774 +[#106781]: https://github.com/home-assistant/core/pull/106781 +[#106782]: https://github.com/home-assistant/core/pull/106782 +[#106783]: https://github.com/home-assistant/core/pull/106783 +[#106801]: https://github.com/home-assistant/core/pull/106801 +[#106808]: https://github.com/home-assistant/core/pull/106808 +[#106831]: https://github.com/home-assistant/core/pull/106831 +[#106833]: https://github.com/home-assistant/core/pull/106833 +[#106834]: https://github.com/home-assistant/core/pull/106834 +[#106835]: https://github.com/home-assistant/core/pull/106835 +[#106842]: https://github.com/home-assistant/core/pull/106842 +[#106851]: https://github.com/home-assistant/core/pull/106851 +[#106856]: https://github.com/home-assistant/core/pull/106856 +[#106861]: https://github.com/home-assistant/core/pull/106861 +[#106870]: https://github.com/home-assistant/core/pull/106870 +[#106885]: https://github.com/home-assistant/core/pull/106885 +[#106886]: https://github.com/home-assistant/core/pull/106886 +[#106898]: https://github.com/home-assistant/core/pull/106898 +[#106909]: https://github.com/home-assistant/core/pull/106909 +[#106913]: https://github.com/home-assistant/core/pull/106913 +[#106916]: https://github.com/home-assistant/core/pull/106916 +[#106938]: https://github.com/home-assistant/core/pull/106938 +[#106942]: https://github.com/home-assistant/core/pull/106942 +[#70365]: https://github.com/home-assistant/core/pull/70365 +[#79077]: https://github.com/home-assistant/core/pull/79077 +[#82483]: https://github.com/home-assistant/core/pull/82483 +[#85769]: https://github.com/home-assistant/core/pull/85769 +[#86026]: https://github.com/home-assistant/core/pull/86026 +[#87039]: https://github.com/home-assistant/core/pull/87039 +[#87493]: https://github.com/home-assistant/core/pull/87493 +[#88272]: https://github.com/home-assistant/core/pull/88272 +[#91165]: https://github.com/home-assistant/core/pull/91165 +[#92665]: https://github.com/home-assistant/core/pull/92665 +[#93002]: https://github.com/home-assistant/core/pull/93002 +[#94497]: https://github.com/home-assistant/core/pull/94497 +[#94824]: https://github.com/home-assistant/core/pull/94824 +[#95088]: https://github.com/home-assistant/core/pull/95088 +[#95594]: https://github.com/home-assistant/core/pull/95594 +[#95885]: https://github.com/home-assistant/core/pull/95885 +[#96182]: https://github.com/home-assistant/core/pull/96182 +[#96573]: https://github.com/home-assistant/core/pull/96573 +[#98841]: https://github.com/home-assistant/core/pull/98841 +[#99342]: https://github.com/home-assistant/core/pull/99342 +[#99538]: https://github.com/home-assistant/core/pull/99538 +[#99608]: https://github.com/home-assistant/core/pull/99608 +[#99743]: https://github.com/home-assistant/core/pull/99743 +[#99761]: https://github.com/home-assistant/core/pull/99761 +[@AngellusMortis]: https://github.com/AngellusMortis +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@Betacart]: https://github.com/Betacart +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@Caius-Bonus]: https://github.com/Caius-Bonus +[@Cereal2nd]: https://github.com/Cereal2nd +[@DCSBL]: https://github.com/DCSBL +[@Danielhiversen]: https://github.com/Danielhiversen +[@DeerMaximum]: https://github.com/DeerMaximum +[@Ernst79]: https://github.com/Ernst79 +[@Floris272]: https://github.com/Floris272 +[@JosephBlock]: https://github.com/JosephBlock +[@Lash-L]: https://github.com/Lash-L +[@Marco98]: https://github.com/Marco98 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@N3rdix]: https://github.com/N3rdix +[@RJPoelstra]: https://github.com/RJPoelstra +[@Shulyaka]: https://github.com/Shulyaka +[@Shutgun]: https://github.com/Shutgun +[@Sibgatulin]: https://github.com/Sibgatulin +[@Skaronator]: https://github.com/Skaronator +[@TheFes]: https://github.com/TheFes +[@Tho85]: https://github.com/Tho85 +[@VIKTORVAV99]: https://github.com/VIKTORVAV99 +[@agners]: https://github.com/agners +[@allenporter]: https://github.com/allenporter +[@ashionky]: https://github.com/ashionky +[@autinerd]: https://github.com/autinerd +[@azogue]: https://github.com/azogue +[@bajansen]: https://github.com/bajansen +[@barche]: https://github.com/barche +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@briglx]: https://github.com/briglx +[@c0ffeeca7]: https://github.com/c0ffeeca7 +[@cdce8p]: https://github.com/cdce8p +[@cdnninja]: https://github.com/cdnninja +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@chemelli74]: https://github.com/chemelli74 +[@chishm]: https://github.com/chishm +[@cian]: https://github.com/cian +[@cibernox]: https://github.com/cibernox +[@cmsimike]: https://github.com/cmsimike +[@cohenchris]: https://github.com/cohenchris +[@davet2001]: https://github.com/davet2001 +[@dewdropawoo]: https://github.com/dewdropawoo +[@dgomes]: https://github.com/dgomes +[@dieselrabbit]: https://github.com/dieselrabbit +[@dknowles2]: https://github.com/dknowles2 +[@dmulcahey]: https://github.com/dmulcahey +[@doggkruse]: https://github.com/doggkruse +[@dougiteixeira]: https://github.com/dougiteixeira +[@dschall]: https://github.com/dschall +[@dupondje]: https://github.com/dupondje +[@edenhaus]: https://github.com/edenhaus +[@elmurato]: https://github.com/elmurato +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@erwindouna]: https://github.com/erwindouna +[@farmio]: https://github.com/farmio +[@finder39]: https://github.com/finder39 +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@iamrgroot]: https://github.com/iamrgroot +[@janiversen]: https://github.com/janiversen +[@jbouwh]: https://github.com/jbouwh +[@jimmyd-be]: https://github.com/jimmyd-be +[@jjlawren]: https://github.com/jjlawren +[@joncar]: https://github.com/joncar +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@jrieger]: https://github.com/jrieger +[@kbickar]: https://github.com/kbickar +[@killer0071234]: https://github.com/killer0071234 +[@killercode]: https://github.com/killercode +[@kilrogg]: https://github.com/kilrogg +[@kingy444]: https://github.com/kingy444 +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@krmarien]: https://github.com/krmarien +[@kukulich]: https://github.com/kukulich +[@lellky]: https://github.com/lellky +[@ludeeus]: https://github.com/ludeeus +[@marcelveldt]: https://github.com/marcelveldt +[@mari8i]: https://github.com/mari8i +[@mattmattmatt]: https://github.com/mattmattmatt +[@mdunda]: https://github.com/mdunda +[@mdz]: https://github.com/mdz +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mill1000]: https://github.com/mill1000 +[@mkmer]: https://github.com/mkmer +[@mletenay]: https://github.com/mletenay +[@nmaggioni]: https://github.com/nmaggioni +[@ocalvo]: https://github.com/ocalvo +[@ollo69]: https://github.com/ollo69 +[@osohotwateriot]: https://github.com/osohotwateriot +[@oyvindwe]: https://github.com/oyvindwe +[@pavoni]: https://github.com/pavoni +[@pfrazer]: https://github.com/pfrazer +[@pnbruckner]: https://github.com/pnbruckner +[@puddly]: https://github.com/puddly +[@rajlaud]: https://github.com/rajlaud +[@raman325]: https://github.com/raman325 +[@raww]: https://github.com/raww +[@rikroe]: https://github.com/rikroe +[@rokam]: https://github.com/rokam +[@scop]: https://github.com/scop +[@sergeymaysak]: https://github.com/sergeymaysak +[@slhad]: https://github.com/slhad +[@starkillerOG]: https://github.com/starkillerOG +[@steffenrapp]: https://github.com/steffenrapp +[@synesthesiam]: https://github.com/synesthesiam +[@tetele]: https://github.com/tetele +[@theorlangur]: https://github.com/theorlangur +[@tjhorner]: https://github.com/tjhorner +[@tkdrob]: https://github.com/tkdrob +[@tofuSCHNITZEL]: https://github.com/tofuSCHNITZEL +[@tronikos]: https://github.com/tronikos +[@tzahari]: https://github.com/tzahari +[@vexofp]: https://github.com/vexofp +[@yangbo1979]: https://github.com/yangbo1979 +[@yuxincs]: https://github.com/yuxincs +[@zxdavb]: https://github.com/zxdavb diff --git a/source/images/blog/2024-01/add-action-other-integrations.png b/source/images/blog/2024-01/add-action-other-integrations.png new file mode 100644 index 00000000000..cd4210b66ac Binary files /dev/null and b/source/images/blog/2024-01/add-action-other-integrations.png differ diff --git a/source/images/blog/2024-01/add-action-search.png b/source/images/blog/2024-01/add-action-search.png new file mode 100644 index 00000000000..8061771980a Binary files /dev/null and b/source/images/blog/2024-01/add-action-search.png differ diff --git a/source/images/blog/2024-01/add-light-action.png b/source/images/blog/2024-01/add-light-action.png new file mode 100644 index 00000000000..ebc9b03227b Binary files /dev/null and b/source/images/blog/2024-01/add-light-action.png differ diff --git a/source/images/blog/2024-01/add-trigger-dialog.png b/source/images/blog/2024-01/add-trigger-dialog.png new file mode 100644 index 00000000000..9c3c642ce8d Binary files /dev/null and b/source/images/blog/2024-01/add-trigger-dialog.png differ diff --git a/source/images/blog/2024-01/automation-building-blocks.png b/source/images/blog/2024-01/automation-building-blocks.png new file mode 100644 index 00000000000..a44e47f47fd Binary files /dev/null and b/source/images/blog/2024-01/automation-building-blocks.png differ diff --git a/source/images/blog/2024-01/automation-descriptions.png b/source/images/blog/2024-01/automation-descriptions.png new file mode 100644 index 00000000000..8f54890eb75 Binary files /dev/null and b/source/images/blog/2024-01/automation-descriptions.png differ diff --git a/source/images/blog/2024-01/climate-card-change-primary-temperature.png b/source/images/blog/2024-01/climate-card-change-primary-temperature.png new file mode 100644 index 00000000000..8d76764148c Binary files /dev/null and b/source/images/blog/2024-01/climate-card-change-primary-temperature.png differ diff --git a/source/images/blog/2024-01/climate-fan-card-feature.png b/source/images/blog/2024-01/climate-fan-card-feature.png new file mode 100644 index 00000000000..2f69d4ff3c2 Binary files /dev/null and b/source/images/blog/2024-01/climate-fan-card-feature.png differ diff --git a/source/images/blog/2024-01/social.png b/source/images/blog/2024-01/social.png new file mode 100644 index 00000000000..bac68c31a55 Binary files /dev/null and b/source/images/blog/2024-01/social.png differ diff --git a/source/images/blog/2024-01/start-automating.png b/source/images/blog/2024-01/start-automating.png new file mode 100644 index 00000000000..d5b0b33fd3d Binary files /dev/null and b/source/images/blog/2024-01/start-automating.png differ diff --git a/source/images/blog/2024-01/todo-dialog.png b/source/images/blog/2024-01/todo-dialog.png new file mode 100644 index 00000000000..f3b59311946 Binary files /dev/null and b/source/images/blog/2024-01/todo-dialog.png differ diff --git a/source/images/blog/2024-01/todo-new-dashboard.png b/source/images/blog/2024-01/todo-new-dashboard.png new file mode 100644 index 00000000000..0dfa431f34a Binary files /dev/null and b/source/images/blog/2024-01/todo-new-dashboard.png differ diff --git a/source/images/blog/2024-01/update-card-feature.png b/source/images/blog/2024-01/update-card-feature.png new file mode 100644 index 00000000000..392de546235 Binary files /dev/null and b/source/images/blog/2024-01/update-card-feature.png differ diff --git a/source/images/blog/2024-01/valve-entity-type.png b/source/images/blog/2024-01/valve-entity-type.png new file mode 100644 index 00000000000..e239576591b Binary files /dev/null and b/source/images/blog/2024-01/valve-entity-type.png differ